2014-09-17 4 views
1

Я пытаюсь сделать Эльман сети (ака Simple Recurent Network) с Pybrain, я думаю, что код должен выглядеть следующим образом:Эльман сети в Pybrain

n = RecurentNetwork() 
n.addInputModule(LinearLayer(5, name = 'in')) 
n.addModule(TanhLayer(10, name = 'hidden')) 
n.addModule(LinearLayer(10, name = 'context')) 
n.addOutputModule(LinearLayer(5, name = 'out')) 
n.addConnection(FullConnection(n['in'], n['hidden'], name = 'in_to_hidden')) 
n.addConnection(FullConnection(n['hidden'], n['out'], name = 'hidden_to_out')) 
n.addConnection(IdentityConnection(n['hidden'], n['context'], name = 'hidden_to_context')) 
n.addConnection(IdentityConnection(n['context'], n['hidden'], name = 'context_to_hidden')) 

Моя проблема заключается в том, что я не знать, как получить узлы контекста (в момент времени t), чтобы сохранить значения скрытых узлов последней итерации (в момент времени t-1), чтобы дать им скрытые узлы в этой итерации (в момент времени t) и как для фиксации весов в hidden_to_context, чтобы быть 1. Как это сейчас, я получаю сообщение об ошибке, когда в сети есть «петля» (и действительно есть одна). Любая помощь приветствуется. Большое спасибо.

Cheers,

Bruno

ответ

2

Я хотел бы посмотреть на этот раздел:

http://pybrain.org/docs/tutorial/netmodcon.html#using-recurrent-networks

В частности,

Класс RecurrentNetwork имеет один дополнительный метод, .addRecurrentConnection(), который оглядывается назад на один временной интервал.

+0

Спасибо, я действительно использовал .addRecurrentConnection(), но тогда я хотел посмотреть 2 или 3 шага, и я не знал, как я думал, что способ сделать это будет с кодом, который я разместил (если Я мог бы сделать это с одним слоем, я бы просто добавил больше) –

Смежные вопросы