我在某处读到,均方误差损失有利于回归,交叉熵损失有利于分类。
当我尝试将 XOR 训练为具有交叉熵损失的分类问题时,网络无法收敛。
我的设置:
网络为 2-2-2
第一个输出信号为 0,第二个输出信号为 1(因此有两类输入)。
交叉熵用于计算网络输出层的误差,而不是均方误差。
作为激活函数,我使用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"]
几千轮后收敛。所以,我认为你没有遗漏任何东西 - 你的库中可能有一个错误
关于machine-learning - 神经网络和 XOR 作为分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024749/