参考 [1],可以直接用 tensor.shape.as_list() 获得 tensor 的形状,例如:

import tensorflow as tfph = tf.placeholder("float32", [None, 3])
const = tf.constant([[1, 2, 3], [4, 5, 6]])'''直接用 as_list 获得形状'''
print(ph.shape.as_list())
print(const.shape.as_list())'''以前只会这种老方法'''
with tf.Session() as sess:ph_shape = tf.shape(ph)print("placeholder shape:", sess.run(ph_shape,feed_dict={ph: [[1, 2, 3]]}))c_shape = tf.shape(const)print("constant shape:", sess.run(c_shape))

Traps

对形状带 None 的 tensor 用了 tf.squeeze 之后,as_list 报错:

ValueError: as_list() is not defined on an unknown TensorShape.

场景是:我将一个 tensor 输入到一个模型之后,输出的形状是 [None, 1, 1, 4096],后续要输入到一个 fc 层,于是先对它用了一次 tf.squeeze,但再对 squeeze 之后的 tensor 用 as_list 就报错,而如果用 tf.squeeze 之前用 as_list 就不会
可能是因为不知道有 None 那维会不会也被 squeeze 掉吧,因为对 tf.constant 用就没事。
后来是用 tf.reshape 代替 tf.squeeze 解决的:

import tensorflow as tf
import numpy as np'''对 constant'''
c = tf.constant([[[1, 2, 3]]])
print(c.shape.as_list())
c_squeeze = tf.squeeze(c)  # 对 constant 用 squeeze
print(c_squeeze.shape.as_list())  # 可以'''对 placeholder'''
ph = tf.placeholder("float32", [None, 1, 1, 3])
print(ph.shape.as_list())  # squeeze 前,可以ph_squeeze = tf.squeeze(ph)  # 对 placeholder 用 squeeze
# print(ph_squeeze.shape.as_list())  # squeeze 后,报错ph_reshape = tf.reshape(ph, [-1, ph.shape.as_list()[-1]])  # 换成 reshape
print(ph_reshape.shape.as_list())  # 可以'''老方法'''
with tf.Session() as sess:ph_squeeze_shape = tf.shape(ph_squeeze)print("ph_squeeze shape:", sess.run(ph_squeeze_shape,feed_dict={ph: np.zeros([1, 1, 1, 3])}))

TL;DR

起源是调用 tf.layers.dense 的时候,可以直接输入一个 tensor 和输出的维度,而不用指定输入的 shape,它就可以自动推断形状,让我想起 keras 写模型的时候也是这样的,我还以为在指定 fc 层的 weight 形状的时候用 tensor.shape[1] 这样的也行,结果在初始化 weight 的 tf.truncated_normal 处报错了。

References

  1. tf.keras.backend.int_shape

tensorflow获取tensor的shape相关推荐

  1. tensorflow 利用索引获取tensor特定元素

    tensorflow 利用索引获取tensor特定元素_君莫笑-CSDN博客 Tensorflow常用函数笔记_Cyiano的博客-CSDN博客_tf.greater_equal tensorflow ...

  2. 报错解决:ResourceExhaustedError: OOM when allocating tensor with shape

    报错解决:ResourceExhaustedError: OOM when allocating tensor with shape 早上在使用tensorflow时遇到如下报错: Traceback ...

  3. tensorflow 转张量类型为float_5个简单的步骤掌握Tensorflow的Tensor

    在这篇文章中,我们将深入研究Tensorflow Tensor的细节.我们将在以下五个简单步骤中介绍与Tensorflow的Tensor中相关的所有主题: 第一步:张量的定义→什么是张量? 第二步:创 ...

  4. 【Tensorflow】Tensor的比较运算

    [fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处] 测试环境:Tensorflow 1.7.0.Tensorflow 1.14.0 Tenso ...

  5. Tensorflow:输出tensor具体值

    在一些任务中,经常需要看tensor的具体值是多少,举个例子,你得查看一部分的feature map,或者是一些数据是否符合训练的预期,那么怎么查看对应tensor的具体值(⊙o⊙)? 有些小伙伴可能 ...

  6. 5个简单的步骤掌握Tensorflow的Tensor

    作者|Orhan G. Yalçın 编译|VK 来源|Towards Datas Science 如果你正在读这篇文章,我相信我们有着相似的兴趣,现在/将来也会从事类似的行业. 在这篇文章中,我们将 ...

  7. tensorflow中tensor的索引

    tensorflow中tensor的索引 1.print(sess.run(outputs[0:2,0:2,:])) 2.print(sess.run(tf.slice(outputs,[0,0,0] ...

  8. tensorflow获取可用GPU设备

    正常来说,运行下面两句会打印tensorflow能用的CPU和GPU,以及相关的设备参数 from tensorflow.python.client import device_lib print(d ...

  9. 关于tensor的shape理解

    关于tensor的shape和dimension 刚把mnist又过了一遍,突然感觉对tensor的shape有了新的理解,虽然很基础,还是想分享一下 关于tensor的维度,也就是阶啦,从认知上理解 ...

  10. pytorch(2)Tensor创建和获取tensor的size信息、torch.dtype、torch.device、torch.layout

    获取tensor的size信息 >>> import torch >>> from torch.autograd import Variable >>& ...

最新文章

  1. java ubuntu 14.04,Ubuntu 14.04安装java的方法
  2. Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
  3. html中讲关键字加粗体,关键字(词)加粗 SEO
  4. 《TCP/IP详解》笔记----第四章 ARP协议
  5. BXNA在调试显示新闻的JS?
  6. 使用搜索栏过滤collectionView(按照首字母)
  7. JQuery 之 跳出循环
  8. 出现这些迹象,说明你面试可能没戏了
  9. centos + nodejs + egg2.x 开发微信分享功能
  10. distenct oracle_oracle中distinct的用法详解
  11. 解决IIS数据库连接出错方法
  12. [HNOI2006]最短母串问题 --- AC自动机 + 隐式图搜索
  13. 2020年GitHub上的7个顶级的Java开源目推荐(强烈安利)
  14. redo log 和undo log_MySQL 持久化保障机制-redo 日志
  15. AppDynamic自定义统计异常reportError,实时显示结果
  16. 中兴机试 通信算法方向 秋招春招
  17. 【JZOJ6150】爱乐之城
  18. 原生小程序 申请小程序 - 发布流程
  19. oracle grant all语句,Oracle 生成批量 Grant 语句的 SQL
  20. 看个视频就可以日进斗金!Reaction网红,了解一下

热门文章

  1. 计算机量子化学计算焓,本科毕业论文--量子化学计算的基本原理及应用.doc
  2. 作为管理者,就不要总等着领导给你布置任务了
  3. c语言怎么用setw输出每行6个,setw和setfill控制输出间隔
  4. liunx命令大全建议粘贴到word文档可方便查询
  5. Python爬虫16-Scrapy爬取阳光政务平台信息
  6. 显著性水平 p值 z值
  7. 公众号获取access_token失败
  8. 美通社企业新闻汇总 | 2019.2.20 | 华为云新加坡大区开服;默克就提高CRISPR基因组编辑方法获首个美国专利...
  9. (10.1.3.4)UI设计,扁平化还是拟物化?
  10. 三极管共射放大电路调试