前馈全连接神经网络| 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的主要内容,如果未能解决你的问题,请参考以下文章