gpt4 book ai didi

python - 使用 keras v2.0 未学习 XOR

转载 作者:太空狗 更新时间:2023-10-29 20:28:08 25 4
gpt4 key购买 nike

一段时间以来,我使用工具 keras 得到了非常糟糕的结果,并且对这个工具没有那么多的怀疑。但我现在开始有点担心了。

我试着看看它是否可以处理一个简单的 XOR 问题,30000 个 epoch 之后它仍然没有解决它...

代码:

from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.optimizers import SGD
import numpy as np

np.random.seed(100)

model = Sequential()
model.add(Dense(2, input_dim=2))
model.add(Activation('tanh'))
model.add(Dense(1, input_dim=2))
model.add(Activation('sigmoid'))
X = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
y = np.array([[0],[1],[1],[0]], "float32")
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(X, y, nb_epoch=30000, batch_size=1,verbose=1)

print(model.predict_classes(X))

这是我的部分结果:

4/4 [==============================] - 0s - loss: 0.3481     
Epoch 29998/30000
4/4 [==============================] - 0s - loss: 0.3481
Epoch 29999/30000
4/4 [==============================] - 0s - loss: 0.3481
Epoch 30000/30000
4/4 [==============================] - 0s - loss: 0.3481
4/4 [==============================] - 0s
[[0]
[1]
[0]
[0]]

工具有问题吗?还是我做错了什么??

我使用的版本:

MacBook-Pro:~ usr$ python -c "import keras; print keras.__version__"
Using TensorFlow backend.
2.0.3
MacBook-Pro:~ usr$ python -c "import tensorflow as tf; print tf.__version__"
1.0.1
MacBook-Pro:~ usr$ python -c "import numpy as np; print np.__version__"
1.12.0

更新版本:

from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.optimizers import Adam, SGD
import numpy as np

#np.random.seed(100)

model = Sequential()
model.add(Dense(units = 2, input_dim=2, activation = 'relu'))
model.add(Dense(units = 1, activation = 'sigmoid'))
X = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")
y = np.array([[0],[1],[1],[0]], "float32")
model.compile(loss='binary_crossentropy', optimizer='adam')
print model.summary()
model.fit(X, y, nb_epoch=5000, batch_size=4,verbose=1)

print(model.predict_classes(X))

最佳答案

由于我没有足够的声誉,我无法对 Daniel 的回复添加评论,但我相信他是在正确的轨道上。虽然我没有亲自尝试使用 Keras 运行 XOR,但这里有一篇文章可能很有趣 - 它分析了 2-2-1 网络的局部最小值的各个区域,表明更高的数值精度会导致更少的卡住实例关于梯度下降算法。

The Local Minima of the Error Surface of the 2-2-1 XOR Network (Ida G. Sprinkhuizen-Kuyper and Egbert J.W. Boers)

附带说明一下,我不会考虑使用 2-4-1 网络来过度拟合问题。在 0-1 平面上进行 4 次线性切割(切割成 2x2 网格)而不是 2 次切割(沿对角线切角)只是以不同的方式分离数据,但由于我们只有 4 个数据点并且没有噪声数据,使用 4 个线性切割的神经网络不是描述“噪声”而是异或关系。

关于python - 使用 keras v2.0 未学习 XOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43750322/

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