machine-learning - 神经网络和 XOR 作为分类

标签 machine-learning neural-network

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

当我尝试将 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"]

几千轮后收敛。所以,我认为你没有遗漏任何东西 - 你的库中可能有一个错误

enter image description here

关于machine-learning - 神经网络和 XOR 作为分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024749/

相关文章:

python - 如何使用 Keras 预测函数/表?

image - 关于使用预训练的 im2txt 模型

image-processing - 如何计算连续特征的信息增益

c++ - OpenCV 随机决策森林 : How to get posterior probability

python - 使用 Keras 预训练 CNN 微调。如何卡住批归一化?

tensorflow - 加载VGG16时资源耗尽的OOM

image-processing - 为什么在 CNN 的后期步骤中通常有多个全连接层?

neural-network - Keras 中 add_loss 函数的目的是什么?

java - 自动编码器学习所有样本的平均值

CUDA 神经网络仿真