使用这个函数即可:
def get_shape(inputs):
dynamic_shape = tf.shape(inputs)
static_shape = inputs.get_shape().as_list()
shape = []
for i, dim in enumerate(static_shape):
shape.append(dim if dim is not None else dynamic_shape[i])
return shape
使用方法,例如你想获得模型中mask的形状,就可以在控制台中:
temp = sess.run([self.mask], feed_dict=feed_dict)
get_shape(temp)
最终会获得:
got shape [1, 128, 20], but wanted [1].
说明形状是[128,20]的,与我的模型一致(模型的batch_size是128,每一个输入的长度是20)
如果这样写有可能获得你看不懂的结果:
>>>get_shape(self.mask)
# 获得结果如下:
[<tf.Tensor 'strided_slice_30:0' shape=() dtype=int32>,
<tf.Tensor 'strided_slice_31:0' shape=() dtype=int32>]
补充,tensor.shape,tensor.get_shape()能够获取形状,比如上面例子的[128,20tensor.shape.ndims,tensor.get_shape().ndims,tf.shape(tensor)能够获取tensor的维度,比如上面例子的[2]