问题标签 [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.

0 投票
1 回答
3542 浏览

matlab - 如何在 Matlab 中使用 newff 选择输入层、隐藏层和输出层的数量?

我正在使用newff进行股票价格预测项目,我正在尝试设置 4 个输入、1 个隐藏层和 1 个输出层 (4-1-1) 的反向传播前馈 ANN。我已经阅读了许多论坛来学习如何为 newff 正确指定这些参数,但是几乎每个论坛/帖子都只是复制/粘贴 matlab newff定义(我无法理解,因为我是 matlab 和神经网络的新手)。有人可以让我知道如何使用newff设置 4-1-1 ANN吗?

0 投票
3 回答
1679 浏览

artificial-intelligence - 我应该为这个神经网络使用哪个激活函数?

我们正在为 Checkers 游戏开发神经网络。在我们的训练数据中,

0代表空白格,1代表白棋,-1代表白王,2代表黑棋,-2代表黑王

因此,我们需要一个范围为 [-2, 2] 的激活函数。我们应该使用哪个激活函数?请就此提出您的建议。

0 投票
1 回答
205 浏览

python - 神经网络 - 输出收敛到 0,python

我正在尝试使用简单的反向传播和单热编码将 2D 数据分为多层神经网络中的 3 个类。在我将增量学习更改为批量学习后,我的输出收敛到 0 ( [0,0,0]),主要是在我使用更多数据或更高学习速度的情况下。我不知道我是否必须派生其他东西,或者我是否在代码中犯了一些错误。

0 投票
3 回答
150 浏览

c++ - 如何用另一个结构初始化结构数组?

您好,我正在用 C++ 编写反向传播算法,它由 1 个输入层、1 个隐藏层和 1 个输出层组成。我很好奇如何初始化我的输入层、隐藏层和输出层。

这就是我得到的:

din 表示我的输入层中的神经元数量。dhid 表示我的隐藏层中的神经元数量。dout 代表我的输出层中的神经元数量。我没有费心展示我的隐藏层的初始化,因为它不重要,谢谢

我在根据我的 IDE(netbeans)显示错误的行上写了 //ERROR

0 投票
0 回答
417 浏览

python - 使用 OpenCV 在 Python 中实现神经网络时出现函数原型错误

我们正在尝试用 Python 实现神经网络。这是我们的代码:

但是我们得到了错误:

我们尝试了所有给定的 C++ 原型。但仍然有错误。

我们实际上是在尝试将 C++ 中神经网络的工作实现移植到 Python。问题在于用于训练我们的神经网络的训练函数。

这是 C++ 源代码:neural.cpp

有什么解决办法吗?或者如果要在 Python 中使用的函数原型或名称不同,请帮助我们。

请注意,该代码适用于 Python v2.6 和 OpenCV v2.1。较新的版本不支持导入的模块。

0 投票
1 回答
194 浏览

algorithm - 反向传播可以一次训练两个异或问题吗?

假设我有一个这样的数据集:

实际上,y1 = x1 XOR x2,并且 y2 = not(x1 XOR x2),这似乎一点也不奇怪。

使用 Wikipedia 中提供的代码,它是用 Python 编写的,训练错误似乎没有收敛。

为什么会这样?这个数据集是否不可能用 (2, 2, 2) BP 网络进行训练?(2, 2, 2) 表示输入层节点数、隐藏层节点数和输出层节点数都是2(偏置节点除外)。

还是代码有问题?

0 投票
1 回答
347 浏览

cuda - 代码在主机上完美运行,放入内核,由于神秘原因失败

我必须将预先存在的“仅主机”反向传播实现移植到 CUDA。我认为算法的性质在这里并不重要,所以我不会对它的工作方式做太多解释。不过,我认为重要的是它使用 3 维数组,其所有三个维度都是动态分配的。我使用带有 CUDA 5.0 的 VS2010。我的设备是2.1。原始主机代码可以在这里下载 → http://files.getwebb.org/view-cre62u4d.html

代码要点:

  1. 使用“pattern.h”中的数据结构将成人数据中的模式加载到内存中。
  2. 分配了几个多维数组
  3. 该算法使用之前分配的数组在模式上运行。

如果您想尝试运行代码,请不要忘记修改 kernel.cu 开头的 PATH 常量。我还建议你使用“2”层、“5”个神经元和“0.00001”的学习率。如您所见,这非常有效。“MSE”正在改善。对于那些不知道这个算法是做什么的人,我们简单地说它学习如何根据模式中存在的 14 个变量来预测目标值。“MSE”减少,意味着算法在每个“epoch”之后犯的错误更少。

我花了很长时间尝试在设备上运行此代码。而我仍然没有成功。最后一次尝试是通过简单地复制初始化数组的代码并将算法运行到一个大内核中来完成的。又失败了。该代码可以在那里下载 → http://files.getwebb.org/view-cre62u4c.html

准确地说,以下是与原始仅主机代码的区别:

  • 算法使用的 f() 和 fder() 成为设备 函数。
  • 参数是硬编码的:2 层,5 个神经元,学习率为 0.00001
  • “w” 数组使用固定值 (0.5) 进行初始化,不再是 rand()
  • a 数据结构在设备内存中分配,数据从host内存中的adult.data加载后发送到设备内存

我认为我做了使代码在内核中运行所需的最少修改。“kernel_check_learningData”内核,显示了有关加载到设备内存中的模式的一些信息,证明了以下代码,将模式从主机发送到设备,确实有效:

当读取“w”数组时,它显然在前向阶段开始时失败。我找不到任何解释。

我看到两种可能性:

  1. 将模式发送到设备内存中的代码存在错误,尽管它似乎可以正常工作,并且在开始前进阶段时会进一步引发错误。
  2. CUDA API 的行为不像它应该的那样!

我拼命寻找我的错误很长一段时间。所以我想知道社区是否可以为我提供一些帮助。

谢谢。

0 投票
4 回答
3998 浏览

python - Python 神经网络反向传播

我正在学习神经网络,特别是研究具有反向传播实现的 MLP。我正在尝试在 python 中实现我自己的网络,我想在开始之前我会看看其他一些库。经过一番搜索,我找到了 Neil Schemenauer 的 python 实现 bpnn.py。( http://arctrix.com/nas/python/bpnn.py )

在完成了代码并阅读了 Christopher M. Bishops 名为“用于模式识别的神经网络”的书的第一部分后,我在 backPropagate 函数中发现了一个问题:

Bishops 书中计算误差的代码行不同。在第 145 页,等式 4.41 他将输出单位误差定义为:

其中 y_k 是输出,t_k 是目标。(我用_来表示下标)所以我的问题是这行代码应该:

实事求是:

我很可能完全错了,但请有人帮忙解决我的困惑。谢谢

0 投票
1 回答
583 浏览

python - python(3.23)实现反向传播,list类型错误

在尝试训练神经网络执行“和”模式时,尝试在神经网络上运行反向传播时出现类型错误。

只是要清楚,我不要求任何人阅读或审查我的代码..

我只是给出了一堆,因为我不确定是什么导致了这个错误。

我在 backprop 函数中包含了一堆打印,因为我一直在测试它。

我的源代码全部发布在:my github

这是命令行中显示的内容:

基本上,它给出了一个类型错误,我试图收集一层的输出,以便在我的权重更改循环的下一次迭代中,我可以计算神经元的错误值,然后更改权重。

我的问题,基本上是我如何计算这些神经元的输出而不会出现这种类型的错误。

这是反向传播代码:

这是我的函数 y,它可能是表示节点输出的复杂方式:

和我的乙状结肠:

最后,我的激活:

我不确定到底需要多少代码,所以我将继续并在下面包含整个神经网络模块。

0 投票
1 回答
1194 浏览

artificial-intelligence - AForge.NET - 反向传播学习总是返回值 [-1;1]

我在使用 AForge.NET - Neuro Learning - Backpropagation 进行反向传播学习时遇到了一些问题。我实际上尝试在样本中实现神经网络(近似)。我的问题是这样的: 1. 输入向量 {1,2,3,...,19,20} 2. 输出向量 {1,2,3,...,19,20} (它是线性函数) 3 . ActivationNetwork network = new ActivationNetwork(new BipolarSigmoidFunction(2), 1, 20, 1); 4. 然后大约 10k 次 - teacher.RunEpoch(input, output);

学习完成后,我的 network.Compute() 返回值 [-1;1] 为什么?

在示例中,有类似向量值的归一化( x -> [-1; 1] 和 y -> [-0.85; 0.85] ),当我这样做时,一切都很好......但它只是我想要的样本了解神经网络的工作原理。我目前要实现的问题更复杂(超过 40 个输入神经元)

谁能帮我?