矩阵上的张量流扫描
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)
如何让下面的扫描示例生效?我打算用这个例子来测试函数 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 asinitializer
; and the first argument offn
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)