- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用反向传播算法制作一个简单的人工神经网络。我已经创建了一个 ANN,我相信我已经正确地实现了 BP 算法,但我当然可能是错的。
现在,我正在尝试通过给网络提供两个介于 0 和 0.5 之间的随机数 (a, b) 并将它们相加来训练网络。然后,当然,每次将网络给出的输出与 a + b 的理论答案进行比较(这将始终可以通过 sigmoid 函数实现)。
奇怪的是,输出总是收敛到 0 到 1 之间的数字(由于 sigmoid 函数,它必须如此),但我输入的随机数似乎对它没有影响。
编辑:抱歉,它似乎没有收敛。这是输出的图像:
权重随机分布在-1和1之间,但我也试过在0和1之间。
我还尝试给它两个常量 (0.35,0.9) 并尝试训练它吐出 0.5。这非常有效并且收敛到 0.5。如果我给它 0 和 1 之间的任意两个随机数,我还训练它吐出 0.5,这也有效。
如果相反,我的目标是:
vector<double> target;
target.push_back(.5);
然后它收敛得非常快,即使是随机输入:
我已经尝试了几个不同的网络,因为我可以很容易地向我的网络添加层。我使用的标准是一个有两个输入,一层有 2 个神经元,第二层只有一个神经元(输出神经元)。但是,我也尝试过添加几层,并向它们添加神经元。它似乎没有改变任何东西。我的学习率等于 1.0,虽然我试过它等于 0.5,但差别不大。
有人知道我可以尝试什么吗?
这甚至是 ANN 能够做到的事情吗?我无法想象它不会,因为他们可以接受训练来做如此复杂的事情。
有什么建议吗?谢谢!
这是我训练它的地方:
//Initialize it. This will be one with 2 layers, the first having 2 Neurons and the second (output layer) having 1.
vector<int> networkSize;
networkSize.push_back(2);
networkSize.push_back(1);
NeuralNetwork myNet(networkSize,2);
for(int i = 0; i<5000; i++){
double a = randSmallNum();
double b = randSmallNum();
cout << "\n\n\nInputs: " << a << ", " << b << " with expected target: " << a + b;
vector<double> myInput;
myInput.push_back(a);
myInput.push_back(b);
vector<double> target;
target.push_back(a + b);
cout << endl << "Iteration " << i;
vector<double> output = myNet.backPropagate(myInput,target);
cout << "Output gotten: " << output[0];
resultPlot << i << "\t" << abs(output[0] - target[0]) << endl;
}
编辑:我设置了我的网络并一直遵循本指南:A pdf .我实现了“工作示例 3.1”并得到了与他们完全相同的结果,所以我认为我的实现是正确的,至少就他们而言是这样。
最佳答案
正如@macs 所述,标准 sigmoid 的最大输出是 1,因此,如果您尝试从 [0, 1] 中添加 n 个数字,那么您的目标应该被归一化,即 sum(A1, A2, ... , 安)/n.
关于c++ - 简单人工神经网络的问题——添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847803/
这个问题已经有答案了: How does Google reCAPTCHA v2 work behind the scenes? (5 个回答) 已关闭 8 年前。 我知道评估是人类用户正在使用您的网
根据以下链接,Artifactory AQL 允许通过 REST API 仅返回感兴趣的字段来“显示特定字段”。 https://www.jfrog.com/confluence/display/RT
我想制作一个比应有的大得多的虚拟 Win32 EXE 文件。所以默认情况下,样板 Win32 EXE 文件为 80 KB。我想要一个 5 MB 的空间来测试其他一些实用程序。 第一个想法是添加资源,但
这个问题已经在这里有了答案: 已关闭10年。 Possible Duplicate: Relational database design question - Surrogate-key or Na
我正在尝试在构建作业中生成一个 JSON 构建信息文件以上传到 Artifactory 并在两个工具之间创建可跟踪性。然而,常规的 Jenkins JSON API 文件设计不正确,因此我需要在运行作
当您通过现有 Artifactory 将 Artifactory 部署到 Artifactory 时,它不会将其与现有 Artifactory 所具有的构建相关联。 例如:如果您使用 Jenkins
我是一名优秀的程序员,十分优秀!