gpt4 book ai didi

基于tf.shape(tensor)和tensor.shape()的区别说明

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章基于tf.shape(tensor)和tensor.shape()的区别说明由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

#tf.shape(tensor)和tensor.shape()的区别 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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)
?
1
2
3
4
5
6
7
8
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). 。

使用示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)

结果如下:

?
1
2
3
4
5
6
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()的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/yinheju/article/details/84380913 。

最后此篇关于基于tf.shape(tensor)和tensor.shape()的区别说明的文章就讲到这里了,如果你想了解更多关于基于tf.shape(tensor)和tensor.shape()的区别说明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com