假设我们有
a = tf.placeholder(tf.float32, shape=(None, 3072))
b = a.get_shape()[0]
如何转换 b ,以便我可以在进一步的计算中使用它,例如对于给定的张量 T 我将能够创建一个新的,像
newT = T / b
答案 0 :(得分:19)
您必须使用图表操作:
a = tf.placeholder(tf.float32, shape=(None, 3072))
b = tf.shape(a)[0]
返回
<tf.Tensor 'strided_slice:0' shape=() dtype=int32>
b = a.get_shape()[0]
返回
Dimension(None)
答案 1 :(得分:-2)
您当前的方式已经有效。我尝试使用以下代码,它工作正常:
x = [[1,2,3],[4,5,6], [7,8,9]]
x = tf.constant(x)
size = x.get_shape()[0]
x /= size
with googlelog.Capture():
p_op = tf.Print(x, [x], "output: ", summarize=10)
sess.run(p_op)
输出:
output: [0 0 1 1 1 2 2 2 3]