gpt4 book ai didi

python - 在 scikit-learn 中训练神经网络计算 'XOR'

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:57 25 4
gpt4 key购买 nike

我正在尝试学习如何使用 scikit-learn 的 MLPClassifier。举一个非常简单的例子,我想我会试着让它学习如何计算 XOR 函数,因为我之前已经手工完成了这个作为练习。

但是,在我尝试拟合模型后,它只会吐出零。

xs = np.array([
0, 0,
0, 1,
1, 0,
1, 1
]).reshape(4, 2)

ys = np.array([0, 1, 1, 0]).reshape(4,)

model = sklearn.neural_network.MLPClassifier(
activation='logistic', max_iter=10000, hidden_layer_sizes=(4,2))
model.fit(xs, ys)

print('score:', model.score(xs, ys)) # outputs 0.5
print('predictions:', model.predict(xs)) # outputs [0, 0, 0, 0]
print('expected:', np.array([0, 1, 1, 0]))

我也将我的代码放在 github 上的 jupyter notebook 中 https://gist.github.com/zrbecker/6173ac01ed30be4eea9cc96e21f4896f

为什么 scikit-learn 不能得出一个解决方案,而我可以明确地表明存在一个解决方案?成本函数是否陷入局部最小值?参数是否发生了某种正则化,迫使它们保持接近于 0?我使用的参数相当大(即 -30 到 30)。

最佳答案

逻辑激活似乎是这里的根本原因。

将您的激活更改为 tanhrelu(我的最爱)。演示:

model = sklearn.neural_network.MLPClassifier(
activation='relu', max_iter=10000, hidden_layer_sizes=(4,2))
model.fit(xs, ys)

此模型的输出:

score: 1.0
predictions: [0 1 1 0]
expected: [0 1 1 0]

在选择最佳配置或完全放弃之前,尝试不同的网络配置始终是个好主意。

关于python - 在 scikit-learn 中训练神经网络计算 'XOR',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com