我正在尝试在pybrain中实现双向LSTM网络。任何人都有示例代码作为示例吗?
答案 0 :(得分: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