问题标签 [backpropagation]
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.
python - 神经网络的反向传播 - Python
我正在编写一个程序来在 python 中执行神经网络我正在尝试设置反向传播算法。基本思想是,我查看 5,000 个训练示例并收集错误并找出我需要向哪个方向移动 theta,然后将它们向那个方向移动。有训练示例,然后我使用一个隐藏层,然后是一个输出层。但是,我在这里弄错了梯度/导数/错误,因为我没有正确移动 theta,因为它们需要移动。我今天花了 8 个小时,不知道我做错了什么。谢谢你的帮助!!
c# - 关于反向传播算法的问题
我有几个关于反向传播的问题。我正在尝试学习神经网络理论背后的基础知识,并想从小处着手,构建一个简单的 XOR 分类器。我已经阅读了很多文章并浏览了多本教科书 - 但我似乎无法教这个东西 XOR 的模式。
首先,我不清楚反向传播的学习模型。这是一些伪代码来表示我如何尝试训练网络。[假设我的网络设置正确(即:多个输入连接到隐藏层连接到输出层并且所有连接正确)]。
我意识到这可能还不够,我很乐意解释我实施的任何部分。使用上述算法,我的神经网络确实得到了训练。但不正确。输出总是
我永远无法将 [1,1] [0,0] 训练为相同的值。
如果您有任何建议、其他资源、文章、博客等供我查看,我非常有兴趣了解有关此主题的更多信息。感谢您的帮助,我非常感谢!
neural-network - 反向传播学习无法收敛
我使用具有 3 层的神经网络来解决分类问题:1)~2k 个神经元 2)~2k 个神经元 3)20 个神经元。我的训练集由 2 个示例组成,每个示例中的大部分输入都是零。出于某种原因,在反向传播训练之后,网络为两个示例提供了几乎相同的输出(这要么仅对 1 个示例有效,要么对于其中一个示例具有 1 的输出具有 1.0)。它在第一个 epoch 之后进入这个状态,之后变化不大,即使学习率是最小的双倍值。我使用 sigmoid 作为激活函数。我认为我的代码可能有问题,所以我使用了 AForge 开源库,似乎也遇到了同样的问题。这里可能有什么问题?
解决方案:我已经移除了一层并将隐藏层中的神经元数量减少到 800
algorithm - 有人可以向我解释反向传播算法吗?
我最近在 Coursera 上完成了 Ng 教授的机器学习课程,虽然我喜欢整个课程,但我从来没有真正理解过用于训练神经网络的反向传播算法。
我理解它的问题是,他只教过它的矢量化实现,用于完全连接的前馈网络。我的线性代数生疏了,如果有人能教我通用算法,我认为会更容易理解。也许以面向节点的方式。
我将尝试简单地表述问题,但我可能误解了反向传播的工作原理,所以如果这没有意义,请忽略它:
对于任何给定的节点 N,给定输入权重/值、输出权重/值以及 N 输出到的所有节点的错误/成本,我如何计算 N 的“成本”并使用它来更新输入重量?
c++ - 我的神经网络学习 sin x 但不学习 cos x
我已经建立了自己的神经网络,但我遇到了一个奇怪的问题。
该网络是一个非常简单的具有反向传播学习的前馈 1-N-1 网络。Sigmoid 用作激活函数。
我的训练集是用 [-PI, PI] 与其 [0,1] 标度正弦值之间的随机值生成的(这是因为“Sigmoid-net”仅产生 [0,1] 和未标度正弦函数之间的值产生 [-1,1] 之间的值)。
使用该训练集,网络设置为 1-10-1,学习率为 0.5,一切正常,网络学习了 sin-function。但是..如果我对 COSINE 函数以同样的方式做所有事情,网络就不会学习它。没有任何隐藏层大小或学习率的设置。
有任何想法吗?我错过了什么吗?
编辑:我的问题似乎与这个小程序所见的相似。除非首先为权重教授“更简单”的东西(例如 1400 个二次函数循环),否则它似乎不会学习正弦函数。小程序中的所有其他设置都可以保持初始状态。因此,在正弦或余弦的情况下,在找到解决方案之前,权重似乎需要一些提升以至少部分正确的方向。为什么是这样?
java - 如何将反向传播神经网络的权重和偏差值正确导出到另一种编程语言(Java)中
我使用 Matlab 创建了反向传播神经网络。我尝试使用 Matlab 实现 XOR 门,然后获取其权重和偏差以在 java 中创建神经网络。网络由 2 个输入神经元、2 个隐藏层组成,每个隐藏层使用 2 个神经元和 1 个输出神经元。在训练网络之后,我得到了以下权重和偏差:
我使用 1 和 1 作为输入来模拟它,得到以下结果:
然后我尝试制作简单的java代码来计算这个神经网络。我的代码:
但结果如下:
我的问题,将重量和偏差值从 matlab 导出到 java 是否有任何错误或我的错误?也许我在我的java程序中犯了错误?非常感谢你..
backpropagation - 具有快捷连接的神经网络中的反向传播算法
我目前正在 F# 中实现一个多层感知器,我将实现标准的反向传播算法,但我想知道如何修改该算法以处理快捷连接。对于快捷连接,我指的是跳过层的连接,例如,将输入层直接连接到输出层的连接。
谢谢!
machine-learning - 多层感知器的激活函数
我试图用这个xor
函数训练简单的反向传播神经网络。当我使用tanh(x)
导数作为激活函数时,1-tanh(x)^2
大约 1000 次迭代后我得到了正确的结果。但是,当我使用g(x) = 1/(1+e^(-x))
导数作为激活函数时g(x)*(1-g(x))
,我需要大约 50000 次迭代才能获得正确的结果。可能是什么原因?
谢谢你。
neural-network - 神经网络的输出值没有达到期望值
我制作了一个也有反向传播的神经网络。它在输入层有 5 个节点,在隐藏层有 6 个节点,在输出层有 1 个节点,并且具有随机权重,我sigmoid
用作激活函数。
我有两组数据供输入。
例如 :
现在我用 5000 次迭代训练网络,否则如果出现错误,迭代将停止
value( desired - calculated output value
) 小于或等于 0.001。
每个输入集的第一次迭代的输出值约为 60 并且在每次迭代中都会减小。
现在的问题是第二组输入(期望值为 0.03)导致迭代停止,因为计算出的输出值为 3.001,但第一组输入没有达到期望值(即 0.02)和它的输出约为 0.03 。
编辑:
我使用LMS
算法并更改了错误阈值 0.00001 以找到正确的错误值,但现在 0.03 和 0.02 的期望值的最后一次迭代的输出值介于 0.023 和 0.027 之间,这还不正确。