tf.shape()与tensor.get_shape()区别:
2019-03-28 本文已影响0人
D_Major
tf.shape()返回的是表示维度的行向量, 表示为一个1-D integer tensor, 不能直接转为list; tensor.shape属性或者tensor.get_shape()方法返回的是TensorShape列表(可查看每一维有多少元素)
第四维为batch size, 表示一批图片的数量; 第三维为height, 表示一张图内行向量的数量; 第二维为width, 表示一个行向量内有多少个像素; 第一维为channel, 表示一个像素由多少层叠加而来.
array_ops.shape()等价于tf.shape(), 同理array_ops.unstack()等价于tf.unstack()
[In 1]: target_layer
<tf.Tensor 'evaluation_720x1280/pixel_cls/score_from_conv5_3/BiasAdd:0' shape=(1, 45, 80, 2) dtype=float32>
[In 2]: tf.shape(target_layer) # tensor的维度
<tf.Tensor 'evaluation_720x1280/pixel_cls/Shape:0' shape=(4,) dtype=int32>
[In 3]: tf.shape(target_layer)[1:-1] # 取出中间的两个维度
<tf.Tensor 'evaluation_720x1280/pixel_cls/strided_slice:0' shape=(2,) dtype=int32>
[In 4]: target_layer.shape # tensor的形状, dimension表示该维度内元素的数量
TensorShape([Dimension(1), Dimension(45), Dimension(80), Dimension(2)])
[In 5]: target_layer.get_shape()
TensorShape([Dimension(1), Dimension(45), Dimension(80), Dimension(2)])
返回tensor的channel数, 是一个int型常数(as_list()转化为数组再进行切片)
num_channels = image.get_shape().as_list()[-1]