我正在尝试创建下图所示的神经网络。它有3个输入,2个输出,以及2个隐藏层(总共4层,或者说3层权重矩阵)。在第一个隐藏层中有4个神经元,在第二个隐藏层中有3个神经元。有一个偏置神经元连接到第一个和第二个隐藏层,以及输出层。
我尝试使用MATLAB中的“创建自定义神经网络”功能,但无法按我想要的方式工作。
这是我使用该功能的方式
net1=network(3,3,[1;1;1],[1,1,1;0,0,0;0,0,0],[0,0,0;1,0,0;0,1,0],[0,0,0])view(net1)
它给我显示了下面的神经网络:
如您所见,这不是我想要的。第一层只有3个权重,第二层有1个,输出层有1个,并且只有一个输出。我该如何修复这个问题?
谢谢!
为了澄清我希望这个网络如何工作:
- 用户将输入3个数字到网络中。
- 3个输入中的每一个都乘以4个不同的权重,然后这些数字被发送到第一个隐藏层的4个神经元中。
- 偏置节点的作用与输入之一相同,但它的值始终为1。它被乘以4个不同的权重,然后发送到第一个隐藏层的4个神经元中。
- 第一个隐藏层中的每个神经元将进入它的4个数字相加,然后通过S形激活函数传递这个数字。
- 第一个隐藏层中的神经元然后输出4个数字,每个数字都乘以3个不同的权重,并发送到第二个隐藏层的3个神经元中。
- 连接到第二个隐藏层的偏置节点的工作方式与第一个偏置节点相同
- 第二个隐藏层中的每个神经元将进入它的5个数字相加,并通过S形激活函数传递。
- 第二层中的神经元然后输出两个数字,这些数字再次乘以权重并发送到每个输出
- 输出层也将所有输入,包括其偏置输入相加,然后通过S形激活函数传递以获得最终的两个值。
回答:
经过一段时间的尝试,我已经弄清楚了如何做。我需要使用的代码是:
net = newff([0 1; 0 1; 0 1],[4,3 2],{'logsig','logsig','logsig'})view(net)
这创建了我所寻找的网络。
我最初对MATLAB表示神经网络的方式有误解。绿色箭头显示了所有数字的路径,而不仅仅是一个数字。