所以,这就是我想要做的事情:
现在,我的所有神经网络层都有padding = 'SAME'
。我想让我的代码更通用,所以我可以使用任意填充来构建我的网络,而且我不想计算网络层的输出张量有多大。我想在初始化/运行时访问维度,tf.nn
函数显然在内部进行,所以我可以初始化我的权重并在正确的维度上偏置张量......
所以,
如何访问"形状"卷积的输出占位符的函数/对象?
答案 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]