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

时间:2016-04-20 15:36:07

标签: tensorflow

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

现在,我的所有神经网络层都有padding = 'SAME'。我想让我的代码更通用,所以我可以使用任意填充来构建我的网络,而且我不想计算网络层的输出张量有多大。我想在初始化/运行时访问维度,tf.nn函数显然在内部进行,所以我可以初始化我的权重并在正确的维度上偏置张量......

所以,

如何访问"形状"卷积的输出占位符的函数/对象?

1 个答案:

答案 0 :(得分:3)

有两种形状 - tensor.get_shape()在图形构造期间(尽可能)提供由Python包装器计算的静态形状,以及tf.shape(tensor),它是一个可以在运行时获取的op张量的形状(总是可能的)。这两个都适用于卷积。

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]