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]
所以,这就是我想要做的:
现在,我的所有神经网络层都有 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]