Tensorflow。将张量的未知维度大小转换为int

时间:2016-11-18 19:59:35

标签: python tensorflow

假设我们有

a = tf.placeholder(tf.float32, shape=(None, 3072))
b = a.get_shape()[0]

如何转换 b ,以便我可以在进一步的计算中使用它,例如对于给定的张量 T 我将能够创建一个新的,像

newT = T / b

2 个答案:

答案 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]