白云岛资源网 Design By www.pvray.com
#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 tf from tensorflow.python.framework import tensor_shape from 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 的value const = 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() = True p1.ndims = 3 p1.as_list() = [10, 10, 10] const = Tensor("Const:0", shape=(3,), dtype=int32)
以上这篇基于tf.shape(tensor)和tensor.shape()的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
白云岛资源网 Design By www.pvray.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
白云岛资源网 Design By www.pvray.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。