我對theano.scan()感到困惑。我已閱讀官方文件,但我仍然覺得我的知識是有限的。我想更改theano.scan
中給出的功能的輸入。例如,我有以下代碼。如何更改theano.scan()中給出的函數的輸入?
def forward_prop_step(x_t, s_t1_prev, s_t2_prev):
# i have my code here
[o, s, s2], updates = theano.scan(
forward_prop_step,
sequences=x,
truncate_gradient=self.bptt_truncate,
outputs_info=[None,
dict(initial=T.zeros(self.hidden_dim)),
dict(initial=T.zeros(self.hidden_dim))])
所以,在這裏theano.scan
在序列x
運行。據我所知,forward_prop_step
得到輸入x_t
時theano.scan
經歷序列x
但如何forward_prop_step
得到第二個和第三個參數?是theano.scan
從outputs_info
的第二個和第三個值獲取第二個和第三個參數?
如果我想修改上面的代碼,並且想給一個更多的參數x2作爲theano.scan
的序列,應該如何修改代碼?我想theano.scan
運行兩個序列x
和x2
,並給出它們的值作爲forward_prop_step
方法的前兩個參數(x
和x2
)。例如,forward_prop_step
原型將是:
def forward_prop_step(x_t, x_f, s_t1_prev, s_t2_prev):
# i have my code here
我怎樣才能改變theano.scan
上述代碼給兩個x
和x2
爲序列?任何人都可以簡單解釋一下,我怎樣才能改變給予theano.scan
函數的參數以及帶有例子的返回值?
幾個其他的問題:
(1)如果我給n_steps
參數與sequences
參數一起,怎麼theano.scan
執行?那麼theano.scan
就像嵌套(兩個)for循環一樣工作? (2)theano.scan
函數的參數non_sequences
與sequences
有什麼不同?
(3)theano.scan
是否爲序列參數的每個元素調用提供的函數?如果是這樣,那麼當我在forward_prop_step
函數內寫入print
語句時,雖然執行多次函數內部的計算(通過整個序列),但只執行一次print
語句。 theano.scan
如何反覆調用提供給它的方法?
感謝兄弟您簡短的回答,我真的很感激。我在帖子中增加了一個問題(第三個問題),你能否也回答這個問題?我已閱讀文檔,但無法理解theano.scan如何迭代調用函數? –
非常感謝,兄弟! –
我很高興,它幫助 – uyaseen