Machine learning 神经网络与异或分类

Machine learning 神经网络与异或分类,machine-learning,neural-network,Machine Learning,Neural Network,我在某处读到,均方误差损失有利于回归,交叉熵损失有利于分类 当我试图将XOR训练为具有交叉熵损失的分类问题时,网络未能收敛 我的设置: 网络是2-2-2 第一个输出是信号0,第二个输出是信号1,所以有两类输入 交叉熵用于计算网络输出层的误差,而不是均方误差 作为一个激活函数,Im使用logsig 显然,我遗漏了什么,我的错误在哪里?这是Mathematica中这个网络的一个实现: net = NetChain[{2, Tanh, 2, Tanh, 1, LogisticSigmoid}, "In

我在某处读到,均方误差损失有利于回归,交叉熵损失有利于分类

当我试图将XOR训练为具有交叉熵损失的分类问题时,网络未能收敛

我的设置:

网络是2-2-2

第一个输出是信号0,第二个输出是信号1,所以有两类输入

交叉熵用于计算网络输出层的误差,而不是均方误差

作为一个激活函数,Im使用logsig


显然,我遗漏了什么,我的错误在哪里?

这是Mathematica中这个网络的一个实现:

net = NetChain[{2, Tanh, 2, Tanh, 1, LogisticSigmoid}, "Input" -> {2}];

eps = 0.01;
data = {{0, 0} -> {eps}, {1, 0} -> {1 - eps}, {0, 1} -> {1 - eps}, {1,
      1} -> {eps}};

trained = 
 NetTrain[net, data, CrossEntropyLossLayer["Binary"], 
  MaxTrainingRounds -> Quantity[5, "Minutes"], TargetDevice -> "GPU"]
经过几千轮之后,它们会聚在一起。所以,我不认为你遗漏了什么——你的库中可能有一个bug


请提供代码。很抱歉,我不能,我写我自己的库是为了教育目的,所以即使我发布代码,没有库也毫无意义。问题是,你知道我思想上的缺陷吗?例如,在训练经典异或时,必须使用tansig激活,否则它将无法收敛。你知道,我在寻找这种问题,所以我相信,缺少代码不是问题。这是一个编程网站,如果你没有代码,那么这个问题就离题了。