Tensorflow:在代码中的 NN 层之后访问占位符的形状

Tensorflow: access shape of placeholder after NN layer in code

所以,这就是我想要做的:

现在,我的所有神经网络层都有 padding = 'SAME'。我想让我的代码更通用,这样我就可以用任意填充构建我的网络,而且我不想计算我的网络层的输出张量有多大。我只想在 initialization/run 时间访问维度,tf.nn 函数显然在内部执行的方式,因此我可以在正确的维度中初始化我的权重和偏置张量...

所以,

如何访问卷积输出占位符的 "shape" function/object?

有两种形状——tensor.get_shape() 它给出了在图形构造期间(只要可能)由 Python 包装器计算的静态形状,以及 tf.shape(tensor) 这是一个可以在运行时执行以获得张量的形状(总是可能的)。这两个都适用于卷积。

a = tf.Variable(tf.ones((1, 3, 3, 1)))
b = tf.Variable(tf.ones((3, 3, 1, 1)))
c = tf.nn_ops.conv2d(a, b, [1, 1, 1, 1], padding="VALID")
sess = create_session()
sess.run(tf.initialize_all_variables())
print c.get_shape()
print sess.run(tf.shape(c))

这给出了

(1, 1, 1, 1)
[1 1 1 1]