PyBrain:我如何在神经网络中设置特定的权重?

8

我正在尝试根据给定的事实重新创建一个基于神经网络的模型。该模型有3个输入,一个隐藏层和一个输出。我的问题是权重已经给出,因此我不需要进行训练。

我在想,也许我可以保存一个类似结构的神经网络的训练,并相应地更改值。您觉得这种方法可行吗?还有其他的想法吗?谢谢。

神经网络代码:

    net = FeedForwardNetwork()
    inp = LinearLayer(3)
    h1 = SigmoidLayer(1)
    outp = LinearLayer(1)

    # add modules
    net.addOutputModule(outp)
    net.addInputModule(inp)
    net.addModule(h1)

    # create connections
    net.addConnection(FullConnection(inp, h1))
    net.addConnection(FullConnection(h1, outp))

    # finish up
    net.sortModules()


    trainer = BackpropTrainer(net, ds)
    trainer.trainUntilConvergence()

请访问如何保存和加载PyBrain训练代码?以保存训练并加载代码。

# Using NetworkWriter

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.xml.networkwriter import NetworkWriter
from pybrain.tools.xml.networkreader import NetworkReader

net = buildNetwork(2,4,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml') 

如果您发现这个答案有帮助,请将其标记为已接受 ;) - sjudǝʊ
1个回答

7

我很好奇如何阅读已经训练好的网络(使用XML工具)。因为这意味着网络权重可以被设置。因此在NetworkReader文档中,我发现可以使用_setParameters()方法来设置参数。

但是下划线表示这是一个私有方法,可能会产生一些副作用。同时,请记住,权重向量的长度必须与原始构建的网络相同。

例如:

>>> import numpy
>>> from pybrain.tools.shortcuts import buildNetwork
>>> net = buildNetwork(2,3,1)
>>> net.params

array([...some random values...])

>>> len(net.params)

13

>>> new_params = numpy.array([1.0]*13)
>>> net._setParameters(new_params)
>>> net.params

array([1.0, ..., 1.0])

另一个重要的事情是将值放在正确的顺序中。例如,上面的顺序如下:

[  1., 1., 1., 1., 1., 1.,      1., 1., 1.,        1.,       1., 1., 1.    ] 
     input->hidden0            hidden0->out     bias->out   bias->hidden0   

为了确定哪些权重属于层之间的哪些连接,请尝试以下方法。
# net is our neural network from previous example
for c in [connection for connections in net.connections.values() for connection in connections]:
    print("{} -> {} => {}".format(c.inmod.name, c.outmod.name, c.params))

无论如何,我仍然不知道层之间权重的确切顺序...


(Anyway可以根据上下文理解为“无论如何”或“反正”)

1
参数向量中权重的排序是唯一定义的,请参见此处:https://dev59.com/rGsz5IYBdhLWcg3wCDh2#8161274。 - schaul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接