C++;多输入神经网络 我用一个隐藏层构建C++神经网络。我的神经网络接受2个输入,产生1个输出,在前两层有偏差节点。当我只使用一种类型的数据(比如输入=(0,0),期望输出=1)训练网络时,网络训练良好。但是,当我使用两种类型(例如(0,0)->1,(1,0)->0)进行训练时,网络性能非常差。我所做的就是循环 设置所需输入=(0,0),设置所需输出=1 向前传播 计算误差
反向传播C++;多输入神经网络 我用一个隐藏层构建C++神经网络。我的神经网络接受2个输入,产生1个输出,在前两层有偏差节点。当我只使用一种类型的数据(比如输入=(0,0),期望输出=1)训练网络时,网络训练良好。但是,当我使用两种类型(例如(0,0)->1,(1,0)->0)进行训练时,网络性能非常差。我所做的就是循环 设置所需输入=(0,0),设置所需输出=1 向前传播 计算误差,c++,neural-network,C++,Neural Network,反向传播 设置所需输入=(1,0),设置所需输出=0 向前传播 计算误差 反向传播 下面是代码的摘录 vector<double> input0, output0; input0.push_back(0); input0.push_back(0); output0.push_back(1); vector<double> input1, output1; input1.push_back(1); input1.push_back(0); output1.push_ba
vector<double> input0, output0;
input0.push_back(0);
input0.push_back(0);
output0.push_back(1);
vector<double> input1, output1;
input1.push_back(1);
input1.push_back(0);
output1.push_back(0);
for(int i = 0; i < 2000; i++){
n->setUserInput(input0);
n->setIdealOutputs(output0);
n->feedForward();
n->backPropagate();
n->setUserInput(input1);
n->setIdealOutputs(output1);
n->feedForward();
n->backPropagate();
}
矢量输入0,输出0;
输入0。推回(0);
输入0。推回(0);
输出0。推回(1);
矢量输入1,输出1;
输入1。推回(1);
输入1。推回(0);
输出1.推回(0);
对于(int i=0;i<2000;i++){
n->setUserInput(input0);
n->SetideaOutput(输出0);
n->前馈();
n->backPropagate();
n->setUserInput(input1);
n->设置输出(输出1);
n->前馈();
n->backPropagate();
}
当我只执行循环中的两个块中的一个时,网络运行良好。令人惊讶的是,如果我有两种类型的输入,它们都有相同的输出,那么网络就会运行良好。这让我困惑。我用两种类型的数据训练网络的方式有什么问题吗?你能不能也包括一些代码?代码很长,我应该包括其中的哪一部分?我确信反向传播和正向传播的实现是正确的,包括您认为有助于开发人员重现问题的部分。您是否为代码编写了测试用例?如果整个代码太大,那么测试较小的部分,并尝试找到不产生预期输出的地方,这可能会成为一个好消息,您可以在这里发布。不幸的是,如果没有代码,我们需要一个神奇的水晶球来帮助你。我怀疑我训练网络的方式有问题。当我只收取一种输入和输出费用时,网络运行良好,即在每个回路中,我使用相同的输入和输出进行训练。