多个输入的C ++神经网络

时间:2018-09-04 08:25:28

标签: c++ neural-network

我正在使用仅包含一个隐藏层的C ++构建神经网络。我的神经网络接受2个输入并产生1个输出,前两个节点带有偏置节点。当我仅用一种类型的数据训练网络时(例如输入=(0,0),所需的输出= 1),网络训练得很好。但是当我用两种类型训练时(例如(0,0)-> 1,(1,0)-> 0),网络性能会非常差。我所做的就是循环播放

  • 设置期望的输入=(0,0),设置期望的输出= 1
  • 向前传播
  • 计算错误
  • 向后传播

  • 设置所需的输入=(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 个答案:

没有答案