如何使用tensorflow折叠两个张量? tensorflow.foldl
作为输入
a, b -> a
的函数(此处a
和b
表示特定形状的张量类型)[b]
b
列表中的张量
a
我需要一个作为输入的函数
a, b, c -> a
[b]
b
列表中的张量
[c]
c
列表中的张量
a
的初始累加器。答案 0 :(得分:0)
使用 concat 和转置并折叠0维度,但它仅适用于相同类型。例如:
data_x = [[i for i in range(1,11)]]
data_y = [[10*i for i in range(1,11)]]
x = tf.placeholder(tf.float32, shape=(1,10))
y = tf.placeholder(tf.float32, shape=(1,10))
c = tf.constant(100.)
cn = tf.concat([x,y], axis=0)
t = tf.transpose(cn)
f = tf.foldl(lambda a,y: a+y[0]+y[1], t, c)
with tf.Session() as sess:
res = sess.run(t, feed_dict={x: data_x, y: data_y})
print(res)
答案 1 :(得分:0)
使用while循环:
import tensorflow as tf
def fold2(f, li1, li2, init):
(_, a1) = tf.while_loop(lambda i, a: i<tf.shape(li1)[0], lambda i, a: (i+1, f(a, li1[i], li2[i])), (0,init))
return a1
顺便提一下,这也适用于TensorArray,而tf.foldl
却没有。