2014-10-17 69 views

回答

3

實際上,它完全記錄在測試代碼中。 在github上查看here

構建爲序列長度爲20的雙向網絡(每個樣本的單個 值):

>>> n = BidirectionalNetwork(seqlen=20, inputsize=1, 
          hiddensize=5, symmetric=False) 

它應具有2x1x5 + 2x1x5 + 2x5x5 = 70點的權重

>>> n.paramdim 
70 

現在我們來構建一個對稱網絡:

>>> n = BidirectionalNetwork(seqlen=12, inputsize=2, 
          hiddensize=3, symmetric=True) 
>>> n.indim 
24 

它應該有1x2x3 + 1x1x3 + 1x3x3 = 18點的權重

>>> n.paramdim 
18 

甲直傳:

>>> from numpy import ones 
>>> r = n.activate(ones(24)) 
>>> len(r) 
12 

結果應該是對稱的(雖然權重是隨機的)

>>> r[0]-r[-1] 
0.0 

檢查梯度:

>>> from pybrain.tests import gradientCheck 
>>> gradientCheck(n) 
Perfect gradient 
True