gpt4 book ai didi

c# - 为什么我的神经网络忘记了它学到的东西?

转载 作者:行者123 更新时间:2023-11-30 16:55:23 24 4
gpt4 key购买 nike

我从另一个网站用 C# 复制了一些源代码,并仅使用几个输入和两个输出以及一个由 4 个隐藏层组成的隐藏层自行测试了神经网络。

当神经网络根据字母的预期输出进行训练时,无论是 A、B 还是 C(其格式为由 16 x 16 像素组成的单调图像)——共 126 个字节。我将图像的文字字节转换为字节数组,然后将其转换为 double 组,然后将整个 double 组作为输入提供给神经网络,然后为其提供预期的输出。它只训练一个字母。

当我用其他字母训练它时,它似乎会以某种方式调整它的权重,使其“忘记”它学到的其他字母。

我怎样才能让权重不被覆盖?我只是给了它错误的期望值吗?

这是代码,请注意它来自另一个来源,但我对它进行了大量修改。我做的一件事是编写训练函数和测试函数,这样我就可以更轻松地访问这部分代码。

字母 A 应该在输出中的第一个神经元上大致输出 0.99 的值。其余的输出应该是 0.25

字母 B 应该在输出中的第二个神经元上分别输出一个 0.99 的粗略值。其余的输出应该是 0.25

这是完整的源代码:http://pastebin.com/0E3WM42W它不允许我将代码放入其中,因为我拥有的消息正文超过 33, 000 个字符。无论如何基本上,我添加的部分是图像加载函数、图像到字节数组函数以及所有这些花哨的东西。我正在(大量)修改现有的神经网络代码示例。幸运的是,给出的示例是如此模块化,我根本不必更改支持网络的类,我只是在添加自己的结构作为网络形式时遇到了问题。因此,感谢任何帮助我真的很喜欢这个网络能够保存它学到的不同信息。

我不知道是我做错了什么,还是我使用的神经网络根本不支持一次学习多个东西(它似乎不太擅长提供各种输出!!这是肯定的)

最佳答案

最可能的原因是您没有同时使用所有数据模式(字母,在您的情况下)训练网络。通常,将整组训练数据馈入网络,重复此过程多次,直到整个数据集的答案误差达到所需水平。

当您多次只显示一个字母时 - 网络只会学习它,而不会学习其他内容。当您开始用另一个字母训练网络时 - 它会修改权重以学习新字母。但是以前的数据正在逐渐被遗忘。

您的 4 个神经元隐藏层对于 3 个字母模式来说绰绰有余。所以,这不是你失败的原因。

关于c# - 为什么我的神经网络忘记了它学到的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29560676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com