前馈全连接神经网络| Matlab的

时间:2018-11-08 20:40:41

标签: matlab neural-network classification supervised-learning

我花了过去3个小时尝试在matlab中创建前馈神经网络,但没有成功。现在真的让我感到困惑。

我正在尝试创建以下神经网络:

  • 输入层具有122个要素/输入,
  • 1个具有25个隐藏单位的隐藏层,
  • 1个输出层(二进制分类)
  • 输入层和隐藏层具有偏差单位(请参阅下图了解基本概念)

enter image description here

但是从对network函数的分析中,我无法理解如何在单个隐藏层中指定25个隐藏单元或神经元,以及如何使所有输入层的神经元相互连接这些隐藏的单元。

net = network(numInputs,numLayers,biasConnect,inputConnect,layerConnect,outputConnect);

例如,如果我想创建一个神经网络,并在隐藏层中包含5个输入和5个隐藏单元(包括偏置单元),并使其完全连接。我正在使用此代码:

net = network(5,1,1,[1 1 1 1 1],0,1);

输出以下内容:

enter image description here

据我了解,我的代码存在以下问题:

  • 输入层没有偏置输入
  • 这不是一个完全连接的网络(就像一个神经元仅在隐藏的神经元上连接)

所以,请把我的卡片放在桌子上,怎么办?

1 个答案:

答案 0 :(得分:1)

我强烈认为您是在混淆输入/图层的数量及其大小:

  • 您的网络有一个输入,大小为122;
  • 您的网络有两个层次:
    • 第一层:具有25个节点的隐藏层(W是25 x 122的权重矩阵);
    • 第二层:具有1个节点的输出层(W是1乘25的权重矩阵)。

以下代码可以完成您想做的事情:

% 1, 2: ONE input, TWO layers (one hidden layer and one output layer)
% [1; 1]: both 1st and 2nd layer have a bias node
% [1; 0]: the input is a source for the 1st layer
% [0 0; 1 0]: the 1st layer is a source for the 2nd layer
% [0 1]: the 2nd layer is a source for your output
net = network(1, 2, [1; 1], [1; 0], [0 0; 1 0], [0 1]);
net.inputs{1}.size = 122; % input size
net.layers{1}.size = 25; % hidden layer size
net.layers{2}.size = 1; % output layer size
net.view;

这将导致:

enter image description here

也请尝试help network,以了解如何设置输入数据范围,传递函数等。