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

反向传播

  • 设置所需输入=(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_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();
    }
    

    当我只执行循环中的两个块中的一个时,网络运行良好。令人惊讶的是,如果我有两种类型的输入,它们都有相同的输出,那么网络就会运行良好。这让我困惑。我用两种类型的数据训练网络的方式有什么问题吗?

    你能不能也包括一些代码?代码很长,我应该包括其中的哪一部分?我确信反向传播和正向传播的实现是正确的,包括您认为有助于开发人员重现问题的部分。您是否为代码编写了测试用例?如果整个代码太大,那么测试较小的部分,并尝试找到不产生预期输出的地方,这可能会成为一个好消息,您可以在这里发布。不幸的是,如果没有代码,我们需要一个神奇的水晶球来帮助你。我怀疑我训练网络的方式有问题。当我只收取一种输入和输出费用时,网络运行良好,即在每个回路中,我使用相同的输入和输出进行训练。