【发布时间】:2015-10-15 17:21:11
【问题描述】:
我正在拼命地理解 taps 参数 在 theano.scan 函数中。不幸的是我 无法提出具体问题。
我只是不明白“水龙头”机制。 好吧,我还好。我知道序列的顺序 被传递给函数,但我不知道 意义。例如(我从 另一个问题Python - Theano scan() function):
import numpy as np
import theano
import theano.tensor as T
def addf(a1,a2):
print(a1)
print(a2)
return a1+a2
i = T.iscalar('i')
x0 = T.ivector('x0')
step= T.iscalar('step')
results, updates = theano.scan(fn=addf,
outputs_info=[dict(initial=x0, taps=[-3])],
non_sequences=step,
n_steps=i)
f=theano.function([x0, step,i],results)
input = [2, 3]
print(f(input, 2, 20))
将水龙头设置为 -1 对我来说确实有意义。据我所理解 这与不设置抽头值和整个向量'x0'相同 正在传递给 addf 函数。然后将添加 x0 使用“step”参数(int 2 将被广播到相同的大小)。 在下一次迭代中,结果 [4, 5] 将是输入,依此类推 产生以下输出:
[[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]
[18 19]
[20 21]
[22 23]
[24 25]
[26 27]
[28 29]
[30 31]
[32 33]
[34 35]
[36 37]
[38 39]
[40 41]
[42 43]]
将抽头设置为 -3 但是会产生以下输出:
[ 5 2 6 7 4 8 9 6 10 11 8 12 13 10 14 15 12 16 17]
我没有任何解释扫描功能是如何创建这个的 输出。为什么现在只是一个列表? “print(a1)”结果符合预期
x0[t-3]
虽然我知道这是 a1 应该有的值, 我不知道如何解释它。 t-3 th 值是多少 x0? Theano 文档 关于 taps 论点似乎并不十分详细...... 所以希望你们中的一个人会成为。
谢谢
【问题讨论】:
-
如果您查看链接的问题的答案,您会看到@nouiz 已解释将
outputs_info中除-1之外的任何内容传递给taps将导致值通过比初始值少一维。我相信x0处t0的tm3值将默认为您传递的dict()参数中指定的初始值,因此x0的初始值,尽管我不完全确定这个约定.