Python 在PyBrain神经网络中创建自定义连接

Python 在PyBrain神经网络中创建自定义连接,python,neural-network,pybrain,Python,Neural Network,Pybrain,我想创建一个人工神经网络(在PyBrain中),它遵循以下布局: 然而,我找不到实现这一目标的正确方法。我在文档中看到的唯一选项是创建完全连接的层的方法,这不是我想要的:我希望我的一些输入节点连接到第二个隐藏层,而不是第一个隐藏层。解决方案是使用您选择的连接类型,但是使用切片参数:inSliceFrom、inSliceTo、outSliceFrom和outSliceTo。我同意文档应该提到这一点,到目前为止,它只出现在连接类的注释中 以下是您案例的示例代码: #create network a

我想创建一个人工神经网络(在PyBrain中),它遵循以下布局:


然而,我找不到实现这一目标的正确方法。我在文档中看到的唯一选项是创建完全连接的层的方法,这不是我想要的:我希望我的一些输入节点连接到第二个隐藏层,而不是第一个隐藏层。

解决方案是使用您选择的连接类型,但是使用切片参数:
inSliceFrom
inSliceTo
outSliceFrom
outSliceTo
。我同意文档应该提到这一点,到目前为止,它只出现在
连接
类的注释中

以下是您案例的示例代码:

#create network and modules
net = FeedForwardNetwork()
inp = LinearLayer(9)
h1 = SigmoidLayer(2)
h2 = TanhLayer(2)
outp = LinearLayer(1)
# add modules
net.addOutputModule(outp)
net.addInputModule(inp)
net.addModule(h1)
net.addModule(h2)
# create connections
net.addConnection(FullConnection(inp, h1, inSliceTo=6))
net.addConnection(FullConnection(inp, h2, inSliceFrom=6))
net.addConnection(FullConnection(h1, h2))
net.addConnection(FullConnection(h2, outp))
# finish up
net.sortModules()

schaul建议的另一种方法是使用多个输入层

#create network
net = FeedForwardNetwork()

# create and add modules
input_1 = LinearLayer(6)
net.addInputModule(input_1)
input_2 = LinearLayer(3)
net.addInputModule(input_2)
h1 = SigmoidLayer(2)
net.addModule(h1)
h2 = SigmoidLayer(2)
net.addModule(h2)
outp = SigmoidLayer(1)
net.addOutputModule(outp)

# create connections
net.addConnection(FullConnection(input_1, h1))
net.addConnection(FullConnection(input_2, h2))
net.addConnection(FullConnection(h1, h2))
net.addConnection(FullConnection(h2, outp))

net.sortModules()

嗯,我实际上是在从源代码本身学习PyBrain,除了我在教程中使用PyBrain外,然后深入检查它的代码在教程中的行中做了什么。结果证明这是个好主意?:)阅读代码,而不是文档-python还是有文档字符串的!:)嗨,只是好奇。假设我们想要创建一个级联前馈神经网络(),那么我们只需要在任意两层之间创建连接?