尝试实现神经网络解决异或问题

我希望这里有经验的用户能给我一些建议。我正在实现一个具有2个输入、2个隐藏节点和1个输出的神经网络。

我对隐藏层和输出层都使用了Sigmoid激活函数,并且使用了反向传播。我相当确定自己正确理解了理论。我的程序可以计算梯度,更新权重和偏置,并使用动量和强度变量进行调整。

使用多层网络的目的是解决非线性可分问题,但到目前为止,我只能解决线性可分的AND和OR布尔函数。我尝试了各种不同的动量和强度设置,但都没有成功。

我的通常输出对于所有4个变量总是完全相同的。有一段时间接近0.55,直到我调整了设置,现在它们都输出0.9。如果我移除偏置,第一个值会变为零,但第四个不会。

有什么建议吗?


回答:

为了回答我自己的问题 ..

经过大量的尝试和错误,我决定大胆尝试使用tanh(x)代替Sigmoid .. 只经过一点微调,它就成功了!

如果其他人也在为这种网络挣扎,这可能对你也有帮助。

其导数是(1 – tanh(x))(1 + tanh(x))。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注