2014-10-17 4 views

ответ

3

На самом деле это полностью задокументировано внутри тестового кода. См. here на github.

Построить двунаправленную сеть для последовательностей (каждый образец одной значение) длины 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