前馈全连接神经网络| matlab

Posted

技术标签:

【中文标题】前馈全连接神经网络| matlab【英文标题】:feedforward fully connected neural network | 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);

哪个输出这个:

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

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

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

【问题讨论】:

【参考方案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.inputs1.size = 122; % input size
net.layers1.size = 25; % hidden layer size
net.layers2.size = 1; % output layer size
net.view;

结果:

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

【讨论】:

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

以上是关于前馈全连接神经网络| matlab的主要内容,如果未能解决你的问题,请参考以下文章

人工智能 AI 3:全连接网络,前馈神经网络卷积神经网络:非全连接网络CNN:循环神经网络

前馈全连接神经网络和函数逼近时间序列预测手写数字识别

《深度学习实战》第3章 前馈神经网络

卷积网络与全连接网络的区别

一文让你彻底了解卷积神经网络

一文让你彻底了解卷积神经网络