我试图以python的方式处理一个可变大小的张量,如下所示:
# X is of shape [m, n]
for x in X:
process(x)
Run Code Online (Sandbox Code Playgroud)
我试图使用tf.scan,问题是我想处理每个子张量,所以我试图使用嵌套扫描,但是我启用了它,因为tf.scan可以使用累加器,如果没有发现它将把elems的第一个条目作为初始化器,我不想这样做.举个例子,假设我想在张量的每个元素中添加一个(这只是一个例子),我想逐个元素地处理它.如果我运行下面的代码,我将只添加一个子张量,因为扫描将第一个张量视为初始化器,以及每个子张量的第一个元素.
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})
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
是否可以将num_split参数的占位符输入用于tf.split()?
我理想地喜欢这样做:
num_splits = tf.placeholder(tf.int32)
inputs = tf.placeholder(tf.int32, [5, None])
split_inputs = tf.split(1, num_splits, inputs)
Run Code Online (Sandbox Code Playgroud)
我的方法可能有问题.我希望枚举可变形状张量的维度.谢谢!