scikit-learnのMLPClassifierの使い方を学ぼうとしています。非常に簡単な例として、XOR関数を計算する方法を学ぶためにそれを取得しようと思っていました。これは前に練習として手作業で行っていたからです。scikit-learnで '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]))
私はなぜscikit-学ぶことができない私は1つが存在することを明示的に示すことができたときに、解決策になっていませんか?https://gist.github.com/zrbecker/6173ac01ed30be4eea9cc96e21f4896f同様githubの上jupyterノートに
を私のコードを入れてコスト関数は極小に詰まっていますか?彼らが0に近くするように強制するいくつかの種類の正則化が起こっていますか?私が使用したパラメータはかなり大きかった(すなわち、-30〜30)。
いいですね。しかし、私の手動設定では、自分のアクティベーション機能に1 /(1 + e ^( - z))を使用しました。それは物流機能です、正しい? – zrbecker
はい、それは本当にシグモイドです。根本原因は何か?さて、アンダーフローは考えられる説明です。 –
大きなパラメータを設定している場合、@zrbeckerオーバーフローも可能です。 –