【发布时间】:2017-09-05 18:18:35
【问题描述】:
我正在尝试以 python 方式处理可变大小的张量,类似于:
# X is of shape [m, n]
for x in X:
process(x)
我尝试过使用tf.scan,问题是我想处理每个子张量,所以我尝试使用嵌套scan,但是我可以这样做,因为 tf.scan 与累加器一起工作,如果没有找到,它将把 elems 的第一个条目作为初始化程序,我不这样做想要做。 例如,假设我想为我的张量的每个元素添加一个(这只是一个示例),并且我想逐个元素地处理它。如果我运行下面的代码,我只会将一个添加到子张量中,因为 scan 将第一个张量视为初始化器,以及每个子张量的第一个元素。
import numpy as np
import tensorflow as tf
batch_x = np.random.randint(0, 10, size=(5, 10))
x = tf.placeholder(tf.float32, shape=[None, 10])
def inner_loop(x_in):
return tf.scan(lambda _, x_: x_ + 1, x_in)
outer_loop = tf.scan(lambda _, input_: inner_loop(input_), x, back_prop=True)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
rs = sess.run(outer_loop, feed_dict={x: batch_x})
有什么建议吗?
【问题讨论】:
标签: python tensorflow