Сеть Элмана в Pybrain

Я пытаюсь создать сеть Elman (также известную как Simple Recurent Network) с 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. Как это происходит прямо сейчас Я получаю сообщение об ошибке, говорящее о том, что в сети есть «петля» (и она действительно есть). Любая помощь приветствуется. Спасибо большое.

Ваше здоровье,

Бруно


person Bruno Penha    schedule 17.09.2014    source источник


Ответы (1)


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

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

Особенно,

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

person rossdavidh    schedule 18.09.2014
comment
Спасибо, на самом деле я использовал .addRecurrentConnection(), но затем я хотел посмотреть 2 или 3 шага, и я не знал, как это сделать, поэтому я подумал, что способ сделать это будет с помощью кода, который я разместил (если бы я мог сделать это с помощью один слой, я бы еще добавила) - person Bruno Penha; 22.09.2014