0

我正在尝试在 pybrain 中实现双向 LSTM 网络。任何人都有任何示例代码作为示例?

4

1 回答 1

3

实际上它完美地记录在测试代码中。在 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
于 2014-10-17T07:51:00.843 回答