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

25 投票
2 回答
6738 浏览
提问于 2025-04-16 15:54

我想用PyBrain创建一个人工神经网络,想要的结构是这样的:

layout

不过,我找不到合适的方法来实现这个结构。在文档中,我看到的唯一选项是创建完全连接的层,但这不是我想要的:我希望我的一些输入节点直接连接到第二个隐藏层,而不是先连接到第一个隐藏层。

2 个回答

0

另一种方法是使用多个输入层,这种方法不同于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()
22

解决方案是使用你选择的连接类型,但要加上切片参数:inSliceFrominSliceTooutSliceFromoutSliceTo。我同意文档应该提到这一点,目前只在Connection类的注释中有说明。

下面是你情况的示例代码:

#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()

撰写回答