如何使这个tensorflow代码不依赖于batch_size?

时间:2017-03-21 05:39:45

标签: python machine-learning tensorflow

a = tf.placeholder(tf.int32, [batch_size, ])
b = tf.stack([c[i, a[i]] for i in xrange(batch_size)])

如果我们将batch_size替换为None,我们无法使用xrange(None),那么我们如何才能生成b

c此处的形状为(None,6)a的值为05

似乎tf.foldl可能会给我正确的解决方案,有人可以向我解释一下吗?非常感谢你!

我很抱歉这个混乱,但我的意思是,我可以吗

a = tf.placeholder(tf.int32, [None, ])
b = tf.stack([c[i, a[i]] for i in xrange(None)])

2 个答案:

答案 0 :(得分:0)

您的详细信息容易混淆。希望你想这样做

variable_rows    = 1
variable_columns = 6
batch_size       = 4
a = tf.placeholder(tf.int32,[batch_size,variable_rows, variable_columns])
b = []
for i in range(variable_columns):
    b.extend([i+1])
c = []
for i in range(batch_size):
    c.append([b])

sess = tf.Session()
print(sess.run(a,feed_dict={a:c}))

答案 1 :(得分:0)

在这种情况下,batch_size是一个python变量,而不是Tensor,因此适用于普通python变量的规则(如no xrange(None))。

您要执行的操作似乎等同于使用tf.gather(c, a)的{​​{1}}或类似内容。