我试图用Pybrain创建一个Elman网络(又名简单的Recurent网络),我认为代码应该是这样的:
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.现在我得到一个错误,说有一个"循环"在网(实际上有一个)。任何帮助将非常感激。非常感谢你。
干杯,
布鲁诺
答案 0 :(得分:2)
我会看看这一节:
http://pybrain.org/docs/tutorial/netmodcon.html#using-recurrent-networks
特别是
RecurrentNetwork类有一个额外的方法,.addRecurrentConnection(),它可以回溯一个时间步。