矩阵上的张量流扫描

tensorflow scan on a matrix

如何让下面的扫描示例生效?我打算用这个例子来测试函数 f.

中的一些代码
def f(prev_y, curr_y):
  fval = tf.nn.softmax(curr_y)
  return fval

a = tf.constant([[.1, .25, .3, .2, .15],
                 [.07, .35, .27, .17, .14]])
c = tf.scan(f, a, initializer=0)
with tf.Session() as sess:
  print(sess.run(c))

您的 initializer=0 无效。作为 documented:

If an initializer is provided, then the output of fn must have the same structure as initializer; and the first argument of fn must match this structure.

f 的输出与 curr_y 的类型和形状相同,第二个参数与 0 不匹配。在这种情况下,您需要:

init = tf.constant([0., 0., 0., 0., 0.])
c = tf.scan(f, a, initializer=init)

对于这种特定情况(特别是您的 f),您不需要(也许不应该)使用 tf.scan,因为您的 f 仅使用一个参数。 tf.map_fn 可以胜任:

c = tf.map_fn(tf.nn.softmax, a)