时间:2021-05-23
#tf.shape(tensor)和tensor.shape()的区别
a=tf.zeros([4,5,4,5,6])print(type(a.shape))print(a.shape.ndims)#多少个维度print(a.shape.as_list())#返回列表print(type(tf.shape(a)))print(type(tf.shape(a)[0]))b=a.shape.as_list()c=tf.shape(a)b[1]=tf.shape(a)[1]print(b)sess=tf.Session()d=sess.run(c)print(d)outputs:<class 'tensorflow.python.framework.tensor_shape.TensorShape'>5[4, 5, 4, 5, 6]<class 'tensorflow.python.framework.ops.Tensor'><class 'tensorflow.python.framework.ops.Tensor'>[4, <tf.Tensor 'strided_slice_1:0' shape=() dtype=int32>, 4, 5, 6][4 5 4 5 6]其中tf.shape(tensor)使用的是动态的,即必须要在session中运行后才能显示出来,但是tensor.shape()是静态的,即通过定义的shape可以惊天的运行出来。
原因:在我们定义的时候,比如进行placeholder的时候我们可能会定义某些维度为None,在静态的时候是看不出来的,只能在运行的时候找到维度。
**使用:**可以在获得某些tensor的维度的时候进行检验,防止维度为None。
补充知识:tensorflow.python.framework.tensor_shape.TensorShape 类
TensorShape 是tensorflow中关于张量shape的类(class).
使用示例如下:
import tensorflow.compat.v1 as tffrom tensorflow.python.framework import tensor_shapefrom tensorflow.python.framework import constant_op tensor_test1=[10,10,10]tensor_test2 = [None,10,10] p1 = tensor_shape.as_shape(tensor_test1) # 得到的是一个类实例,该类实例包含一个属性,是 tensor_test1 的valueconst = constant_op.constant(p1.as_list()) print("type(p1) = ",type(p1))print("p1 = ",p1) # 使用p1时会自动调用p1中的value属性print("p1.is_fully_defined() = ",p1.is_fully_defined())# is_fully_defined 是 TensorShape 类的一个内部函数print("p1.ndims = ",p1.ndims) # ndims 也是TensorShape的一个属性值print("p1.as_list() = ",p1.as_list()) # 把TensorShape的value属性转换成python中的list类型print("const = ",const)结果如下:
type(p1) = <class 'tensorflow.python.framework.tensor_shape.TensorShape'>p1 = (10, 10, 10)p1.is_fully_defined() = Truep1.ndims = 3p1.as_list() = [10, 10, 10]const = Tensor("Const:0", shape=(3,), dtype=int32)以上这篇基于tf.shape(tensor)和tensor.shape()的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
涉及随机数以及类RNN的网络构建常常需要根据输入shape,决定中间变量的shape或步长。tf.shape函数不同于tensor.shape.as_list(
初学tensorflow,如果写的不对的,请更正,谢谢!tf.reshape(tensor,shape,name=None)函数的作用是将tensor变换为参数
如下所示:tf.constant(value,dtype=None,shape=None)创建一个常量tensor,按照给出value来赋值,可以用shape来
我们可以使用tf.shape()获取某张量的形状张量。importtensorflowastfx=tf.reshape(tf.range(1000),[10,1
实验发现,tensorflow的tensor张量的shape不支持直接作为tf.max_pool的参数,比如下面这种情况(一个错误的示范):self.max_p