【问题标题】:feedforward fully connected neural network | matlab前馈全连接神经网络| matlab
【发布时间】:2019-04-12 10:30:08
【问题描述】:

过去 3 个小时,我试图在 matlab 中创建一个前馈神经网络,但没有成功。我现在真的很困惑。

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

  • 输入层有 122 个特征/输入,
  • 1 个隐藏层,25 个隐藏单元,
  • 1 个输出层(二元分类),
  • 输入层和隐藏层有偏置单元(大致思路请看下图)

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

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

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

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

哪个输出这个:

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

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

所以,请,我已经把我的牌放在桌子上了,我该怎么办?

【问题讨论】:

    标签: matlab neural-network classification supervised-learning


    【解决方案1】:

    我强烈认为您将输入/层的数量与其大小混淆了:

    • 您的网络有一个输入,其大小为 122;
    • 您的网络有两层:
      • 第一层:25 个节点的隐藏层(W 是一个 25 x 122 的权重矩阵);
      • 第 2 层:具有 1 个节点的输出层(W 是一个 1 x 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;
    

    结果:

    也可以试试help network,看看如何设置输入数据范围、传递函数等等。

    【讨论】:

    • 谢谢,我很困惑。但这给我带来了很多问题,但我会问一些重要的问题。您提供的代码是否考虑了偏差单位?意思是,添加偏置节点后,W1 应该是 25x123 矩阵,W2 应该是 1x26 矩阵。第二个问题,我已经问过 Datascient 社区(如果您有兴趣,请查看 Here):当您说“您的网络有一个输入,其大小为 122”时,这是否意味着我可以有多个输入不同尺寸又称为特征?
    • @U.USer: 1) 偏置权重在network 对象中被认为是分开的。将输入连接到第一层的权重在net.IW{1}(25x122 矩阵)中,而相应的偏置权重存储在net.b{1}(25x1)中。将第 2 层作为目标和第 1 层作为源的权重存储在 net.LW{2,1} (1x25) 中,而偏差权重存储在 net.b{2} (1x1) 中。 2) 是的。您可能有多个用户输入“来源”和/或从其他层(即循环神经网络)重新进入
    最近更新 更多