如何在Tensorflow中提取占位符Tensor的形状值?

sou*_*oor 1 python tensorflow

x = tf.placeholder("float", shape=[None, 784])为输入数据定义了一个.稍后,我需要知道x批量大小形状的第一个值.我提取了价值,x.get_shape().as_list()[0]但我得到了None.你能告诉我怎样才能正确提取它?非常感谢!

编辑:

我现在用过,tf.get_shape()但它引起了另一个错误.在我的代码中,我定义了一个函数deconv:

def deconv(X, W, b, output_shape):
    X += b 
    return tf.nn.conv2d_transpose(X, W, output_shape, strides=[1, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

如果我以这种方式设置batch_size为a :,函数的调用效果如下:intbatch_size = 50deconv

W_conv2_T = tf.ones([5, 5, 32, 64])
pool1_tr = deconv(conv2_tr, W_conv2_T, tf.zeros([64]), [batch_size, 14, 14, 32])
Run Code Online (Sandbox Code Playgroud)

形状conv2_tr[50, 14, 14, 64].由此产生的形状pool1_tr[50, 14, 14, 32].但是,如果我设置batch_size = tf.get_shape(x)[0],形状conv2_tr[None, 14, 14, 64]和所形成的形状pool1_tr变成[None, None, None, None].这个bug很奇怪.你能帮我解决这个问题吗?提前致谢!

mrr*_*rry 6

None占位符中行数的值意味着它可以在运行时变化,因此您必须使用tf.shape(x)将形状作为a tf.Tensor.以下代码应该有效:

batch_size = tf.shape(x)[0]
Run Code Online (Sandbox Code Playgroud)