问题标签 [feed-forward]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neural-network - 训练前馈神经网络
我已经实现了一个反向传播神经网络,现在我想实现一个前馈神经网络来比较它们的准确性。
我的问题是,前馈有哪些学习方法(除了反向传播),因为每篇文章都提到反向传播作为学习方法。
machine-learning - 前馈神经网络:对多个类别使用具有多个输出神经元的单个网络
我目前正在研究 MNIST 手写数字分类。
我构建了一个具有以下结构的前馈网络:
- 输入: 28x28 = 784 个输入
- 隐藏层:具有 1000 个神经元的单个隐藏层
- 输出层: 10 个神经元
所有的神经元都具有Sigmoid激活函数。
报告的类是对应于具有最大输出值的输出神经元的类
我的问题是:
- 创建具有多个输出的单个网络是一种好方法吗?即我应该为每个数字创建一个单独的网络吗?
我问一下,因为目前网络卡在 ~75% 的成功率上。由于实际上“10 个分类器”共享隐藏层的相同神经元——我不确定——它是否会降低网络学习能力?
** 编辑: **
由于其他人可能会参考这个线程,我想说实话并更新 75% 的成功率是在大约 1500 个 epoch 之后。现在我经过了近 3000 个 epoch 并且成功率约为 85% - 所以效果很好
python-2.7 - 多层前馈神经实验室网络中的高错误率
为什么我的网络向我显示高错误?
我需要遵守这些规则——
第一个输入有 262144 个值(从 0 到 256),第二个输入有 262144 个值(从 0 到 1024)。
我只使用一个隐藏层。我的错误是这样的:
java - java中的神经网络实现
我正在尝试通过反向传播在 Java 中实现 FFNN,但不知道我做错了什么。当我在网络中只有一个神经元时它起作用了,但是我写了另一个类来处理更大的网络并且没有收敛。这似乎是数学中的一个问题——或者更确切地说是我的数学实现——但我已经检查了好几次,我找不到任何问题。这应该有效。
节点类:
线路网络类:
结构快速解释:每个节点都有一个激活函数 f;f.eval
评估函数并f.deriv
评估其导数。Functions.SIG
是标准的 sigmoidal 函数,Functions.HSF
是 Heaviside 阶跃函数。为了设置函数的输入,你调用addIW
一个已经包含前一个输出权重的值。在反向传播中使用addEW
. 节点被组织在一个 2d 数组中,权重被单独组织在一个 3d 数组中,如前所述。
我意识到这可能有点要求 - 我当然知道这段代码打破了多少 Java 约定 - 但我感谢任何人可以提供的任何帮助。
编辑:由于这个问题和我的代码是如此巨大的文本墙,如果有一行涉及括号中的许多复杂表达式而您不想弄清楚,请添加评论或询问我的内容,我会尝试回答尽快。
编辑 2:这里的具体问题是该网络不会在 XOR 上收敛。这里有一些输出来说明这一点:
9995: {1.0, 0.0}: 1 1
9996: {0.0, 1.0}: 1 1
9997: {0.0, 0.0}: 0 1
9998: {0.0, 1.0}: 1 0
9999: {0.0, 1.0}: 1 1
每一行的格式都是TEST NUMBER: {INPUTS}: EXPECTED ACTUAL
The network callstrain
with each test,所以这个网络反向传播了 10000 次。
如果有人想运行它,这里有两个额外的类:
现在它甚至更长。该死。
matlab - 反向传播错误:概念还是编程?
我编写了以下反向传播算法来对两个输入恒等函数进行建模
前馈功能:
成本函数图
现在我在搞砸什么?
是一些程序错误没有引起我的注意吗?还是我错误地执行了算法?
当我测试得到的权重时,计算出的成本是经过训练的,但结果完全错误
蓝色 > 预期输出;红色 > 神经网络的输出
还有为什么成本价值有时会先升后降(如图 1 所示)
neural-network - FF 神经网络和二元分类
每当我在二进制分类问题上训练前馈神经网络时,网络都会返回浮点值。这背后的理论是什么?这可以解释为概率吗?例如,如果网络返回 0.7 是否相当于说该值为 1 而不是 0 的概率为 70%?那么我是否应该只缩放浮点值并将阈值定义为 0 或 1?
matlab - 前馈神经网络输入的归一化
假设我有一个时间序列信号的不同特征的 mxn 矩阵(第 1 列代表最后 n 个样本的线性回归,第 2 列代表最后 n 个样本的平均值,第 3 列代表不同时间序列的局部最大值但相关信号等)。我应该如何规范这些输入?所有输入都属于不同的类别,因此它们具有不同的范围。一个范围从 0,1,另一个范围从 -5 到 50,依此类推。
我应该标准化整个矩阵吗?或者我应该分别对每组输入进行标准化吗?
注意:我通常使用 MATLAB 中的 mapminmax 函数进行标准化。
neural-network - MNIST - 训练卡住
我正在阅读《神经网络和深度学习》(前两章),我正在尝试跟随并构建自己的 ANN 来对 MNIST 数据集中的数字进行分类。
几天来我一直在摸不着头脑,因为我的实现在 10 个 epoch 后对来自测试集(约 5734/10000)的数字进行分类时达到了约 57% 的准确率(训练集的准确度在第 10 个 epoch 之后停滞不前,并且测试集的准确性可能会因为过度拟合而下降)。
我使用的配置与书中几乎相同:2 层前馈 ANN(784-30-10),所有层都完全连接;标准 sigmoid 激活函数;二次成本函数;权重以相同的方式初始化(取自均值为 0 和标准差为 1 的高斯分布)唯一的区别是我使用在线训练而不是批量/小批量训练,并且学习率为 1.0 而不是 3.0(我已经尝试过小批量训练 + 3.0 的学习率)
然而,我的实现在一堆 epochs 之后没有通过 60% 的百分位数,正如书中所说,ANN 在第一个 epoch 之后以几乎完全相同的配置超过 %90 。起初我搞砸了反向传播算法的实现,但是在以不同的方式重新实现反向传播 3 次之后,每次重新实现的结果完全相同,我难住了......
反向传播算法产生的结果示例:
使用具有上述相同配置的更简单的前馈网络(在线训练 + 学习率为 1.0):3 个输入神经元、2 个隐藏神经元和 1 个输出神经元。
初始权重初始化如下:
给定输入 [0.0, 0.5, 1.0],输出为 0.78900331。对相同的输入进行反向传播,期望输出为 1.0,得到以下偏导数(dw = 导数 wrt 权重,db = 导数 wrt 偏差):
使用这些偏导数更新网络会产生 0.74862305 的校正输出值。
如果有人愿意确认上述结果,那将极大地帮助我,因为我几乎排除了反向传播错误是问题的原因。
有没有人处理 MNIST 问题遇到过这个问题?甚至对我应该检查的事情的建议也会有所帮助,因为我真的迷路了。
matlab - 前馈神经网络 Matlab OCR
我正在尝试使用带有字符大小(32 * 32)图像的matlab newff创建一个ocr
使用 P 作为输入矩阵和 T 作为目标 T=eye(26,26);
但我收到此错误输入数据大小与 net.inputs{1}.size 不匹配。代码应该如何让它工作?
neural-network - 在在线反向传播权重更新中添加动量项?
我已经为两层网络实现了 ANN,我需要用动量修改我的权重更新代码,但我需要知道如何更新它。下面是仅更新权重的代码快照。下面的代码更新了它看到的每个示例的权重,hiddenWights 是隐藏层权重,而 outputWeights 是输出层权重。