首先说明tf中tensor有两种shape,分别为static (inferred) shapedynamic (true) shape,其中static shape用于构建图,由创建这个tensor的op推断(inferred)得来,故又称inferred shape。在实际运行中,常常出现图中tensor的具体维数不确定而用placeholder代替的情况,因此static shape未必是已知的。tensor在训练过程中的实际维数被称为dynamic shape,而dynamic shape是一定的。如果该tensor的static shape未定义,则可用tf.shape()来获得其dynamic shape

1、区分x.get_shape()x = tf.shape(x)

x.get_shape()返回static shape,只有tensor有这个方法,返回是元组。
x.get_shape().as_list()是一个常用方法,经常被用于将输出转为标准的python list。
关于static shape的样例示范如下:

 x = tf.placeholder(tf.int32, shape=[4])
 print x.get_shape()
 # ==> '(4,)'

get_shape()返回了x的静态类型,4代指x是一个长度为4的向量。需要注意,get_shape()不需要放在session中即可运行。
get_shape()不同,tf.shape()的示例代码如下:

 y, _ = tf.unique(x)
 print y.get_shape()
 # ==> '(?,)'
 sess = tf.Session()
 print sess.run(y, feed_dict={x: [0, 1, 2, 3]}).shape
 # ==> '(4,)'
 print sess.run(y, feed_dict={x: [0, 0, 0, 0]}).shape
 # ==> '(1,)'

通过此代码体会两种shape的不同,需要注意tf.shape()需要在session中运行。

2、区分x.set_shape()tf.reshape()

set_shape更新tensor的static shape,不改变dynamic shape。reshape创建一个具备不同dynamic shape的新的tensor。(其实从官方说明中可以看出,这两个主要是适用场合的区别,前者用于更新图中某个tensor的shape,而后者则往往用于动态地创建一个新的tensor。)

参考:https://github.com/vahidk/EffectiveTensorflow;https://www.jianshu.com/p/2b88256ad206;https://blog.csdn.net/qq_21949357/article/details/77987928;

最新文章

  1. HDU 2010
  2. u-boot移植总结(四)u-boot-2010.09框架分析
  3. LightOJ1257 Farthest Nodes in a Tree (II)(树的点分治)
  4. CoreAnimation 核心动画二 锚点
  5. HW5.3
  6. documentElement vs body区别
  7. CSS3知识点整理(一)----基本样式
  8. Xamarin Android绑定微信SDK
  9. springMVC中数据流解析与装载
  10. MySQL使用root权限创建用户并授权
  11. SVG的学习(34—36)
  12. Impala系列:Impala查询优化
  13. Ajax发送请求,并接受字符串
  14. VMware NAT 设置原理
  15. Improved SEO with mod_rewrite
  16. OK335xS 256M 512M nand flash make ubifs hacking
  17. selenium webdriver 表格的定位方法练习
  18. ICSharpCode.SharpZipLib工具压缩与解压缩zip文件
  19. Ubuntu16.04安装wps办公软件解决文字缺失
  20. 【算法笔记】B1018 锤子剪刀布

热门文章

  1. 【代码学习】PYTHON 进程
  2. pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题
  3. SpringCloud全家桶学习之服务注册与发现及Eureka高可用集群搭建(二)
  4. js分享微信 ,微博 ,qq空间
  5. map的使用-Hdu 2648
  6. JQ - 绑定(on)/解绑(off)事件(浅显的见解)
  7. @Primary 注解的作用
  8. Kafka .net 开发入门
  9. java编码格式大讲解
  10. 取消Oracle数据库密码期限 取消用户锁定