pybrain循环网络的激活值为z

2024-04-29 02:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我测试了一个虚拟程序,从网络的隐藏层获取激活。在

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet, SequentialDataSet
from pybrain.supervised.trainers import BackpropTrainer, RPropMinusTrainer
from pybrain.structure.modules import SigmoidLayer, LSTMLayer,LinearLayer

net = buildNetwork(3,20,3, hiddenclass=SigmoidLayer,outclass=LinearLayer, bias=True, outputbias=False, recurrent=False)
dataSet = SequentialDataSet(3, 3)
dataSet.newSequence()
dataSet.appendLinked([0, 0, 0], [0, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([1, 1, 1], [0, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([1, 0, 0], [1, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([0, 1, 0], [0, 1, 0])
dataSet.newSequence()
dataSet.appendLinked([0, 0, 1], [0, 0, 1])

trainer = RPropMinusTrainer(net, dataset=dataSet, verbose=True, weightdecay=0.01)

for i in range(10):    
        trainer.train()

result = net.activate([0.5, 0.4, 0.7])
print net['in'].outputbuffer[net['in'].offset]
print net['hidden0'].outputbuffer[net['hidden0'].offset]

以上代码输出

^{pr2}$

请注意,当我更改recurrent=True和hiddenclass=LSTMLayer时

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet, SequentialDataSet
from pybrain.supervised.trainers import BackpropTrainer, RPropMinusTrainer
from pybrain.structure.modules import SigmoidLayer, LSTMLayer,LinearLayer

net = buildNetwork(3,20,3, hiddenclass=LSTMLayer,outclass=LinearLayer, bias=True, outputbias=False, recurrent=True)
dataSet = SequentialDataSet(3, 3)
dataSet.newSequence()
dataSet.appendLinked([0, 0, 0], [0, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([1, 1, 1], [0, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([1, 0, 0], [1, 0, 0])
dataSet.newSequence()
dataSet.appendLinked([0, 1, 0], [0, 1, 0])
dataSet.newSequence()
dataSet.appendLinked([0, 0, 1], [0, 0, 1])

trainer = RPropMinusTrainer(net, dataset=dataSet, verbose=True, weightdecay=0.01)

for i in range(10):    
        trainer.train()

result = net.activate([0.5, 0.4, 0.7])
print net['in'].outputbuffer[net['in'].offset]
print net['hidden0'].outputbuffer[net['hidden0'].offset]

净产出

[ 0.  0.  0.]
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.]

我不明白网络为什么会这样。希望对pybrain库有更深入了解的人可以在这方面提供帮助。 谢谢您。在


Tags: infromimporttruenetdatasettrainerpybrain