2016-11-26 14 views
1

Sigmoid活性化関数でニューラルネットワークタスクをやっています。私のネットワーク入力は画像(MNISTデータセット)であり、各画像のサイズは28*28なので、ベクトルに変換する必要があるときは、​​という行列があります。この大きな行列を重み行列で掛け合わせると、重みの正負が大きくなり、関数をSigmoid関数に渡す必要があります。私はexpit()をシグモイド関数として使用し、私の問題は次のようになります。多くのPythonのシグモイド関数

数字がexpit()に1に近くなります。例えば、expit(28)結果0.99999999およびexpit(29)結果1.0および上方291を得る。しかし、私の新たな偉業は上位の30であり、その中には1と学習の最初のサイクルでいくつかのものがあり、実際には全く学習がありません。

私は何をしなければなりませんか?​​3210上限は29?私はそれを変更できませんか?私はこれを克服するためにイメージの次元を変えなければなりませんか?

+0

使用しているscipyのバージョンは? expedは0.14(https://github.com/scipy/scipy/issues/3385)まで数値的に不安定でした –

+0

私は知りません、2日前に私はpip経由でインストールしました。 – Fcoder

+0

pythonでチェックする-c 'import scipy; print(scipy .__ version__) 'あなたはscipyのexpitを使っていると思いますか? –

答えて

1

コメントセクションで説明したように、実際の問題はsigmoid自体を使用していることが判明しましたが、このような場合には適しません。どのような有限精度計算においても、問題の1つは29であり、他のシステムでは38である。

この問題に対処する方法の1つはsoftmaxです。これはそのような問題の影響を受けにくいです。コスト関数で同様の問題に遭遇する可能性があることに注意してください。

トピックから少し離れているので、問題の解決方法を確認することができます。 tensorflow。初心者のための素敵なチュートリアルがあります。

関連する問題