【发布时间】:2011-08-07 05:59:50
【问题描述】:
我想创建一个遵循以下布局的人工神经网络(在 PyBrain 中):
但是,我找不到实现此目的的正确方法。我在文档中看到的唯一选择是创建完全连接层的方法,这不是我想要的:我希望我的一些输入节点连接到第二个隐藏层而不是第一个。
【问题讨论】:
标签: python neural-network pybrain
我想创建一个遵循以下布局的人工神经网络(在 PyBrain 中):
但是,我找不到实现此目的的正确方法。我在文档中看到的唯一选择是创建完全连接层的方法,这不是我想要的:我希望我的一些输入节点连接到第二个隐藏层而不是第一个。
【问题讨论】:
标签: python neural-network pybrain
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()
【讨论】:
解决方案是使用您选择的连接类型,但带有 slicing 参数:inSliceFrom、inSliceTo、outSliceFrom 和 outSliceTo。我同意文档应该提到这一点,到目前为止它只在 Connection 类的 cmets 中。
这是您的案例的示例代码:
#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()
【讨论】: