3
我目前正在研究使用千層麪/ Theano的復發神經網絡。千層麪/ Theano漸變值
訓練時,使用Theano的符號梯度計算更新。
grads = theano.grad(loss_or_grads, params)
雖然梯度表達是一般完全正常,我也爲了監測培訓感興趣的梯度值。
我現在的問題是,如果有一個內置的方法也可以獲得梯度值,我目前還沒有找到,或者我必須自己做。
在此先感謝
我目前正在研究使用千層麪/ Theano的復發神經網絡。千層麪/ Theano漸變值
訓練時,使用Theano的符號梯度計算更新。
grads = theano.grad(loss_or_grads, params)
雖然梯度表達是一般完全正常,我也爲了監測培訓感興趣的梯度值。
我現在的問題是,如果有一個內置的方法也可以獲得梯度值,我目前還沒有找到,或者我必須自己做。
在此先感謝
我不知道任何烤寬麪條函數來計算梯度的,但你可以自己用簡單的theano功能得到它。
假設我們有以下theano變量:
inputs
=輸入到網絡targets
=目標網絡loss
=損失函數的值,定義爲的函數的輸出網絡輸出和targets
l_hid
=網絡的復發層,類型lasagne.layers.RecurrentLayer
假設我們對損失函數w.r.t的梯度感興趣。經常性的權重:
grad = theano.grad(loss, l_hid.W_hid_to_hid)
定義theano函數爲梯度
get_grad = theano.function([inputs, targets], grad)
得到的數值現在,只需要調用get_grad
用於輸入和目標的任何值(例如當前minibatch)。 get_grad()
不需要傳遞權重的值,因爲它們存儲爲theano共享變量。