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

Python PyBrain:如何在神经网络中设置特定权重?,python,neural-network,pybrain,Python,Neural Network,Pybrain,我试图根据给定的事实重新创建一个神经网络。它有3个输入,一个隐藏层和一个输出。我的问题是权重也是给定的,所以我不需要训练 我在想,也许我可以省去类似结构神经网络的训练,并相应地改变值。你认为这样行吗?还有其他想法吗?谢谢 神经网络代码: net = FeedForwardNetwork() inp = LinearLayer(3) h1 = SigmoidLayer(1) outp = LinearLayer(1) # add modules n

我试图根据给定的事实重新创建一个神经网络。它有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()
从中保存培训和加载代码


我很好奇如何阅读已经训练好的网络(使用xml工具)。因为,这意味着可以通过某种方式设置网络权重。因此,我发现,您可以使用
\u 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))

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

参数向量中权重的顺序是唯一定义的,请参见此处:如果您觉得答案有用,请将其标记为已接受;)
# 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))