2017-01-07 5 views
0

私は、バックプロパゲーションのニューラルネットワークをPythonでプログラミングしようとしています。ニューラルネットワーク関数がy = 1に収束する

Usually converges to 1. To the left of the image there are some delta values. They are very small, should they be larger? Do you know a reason why this converging could happen?

は時々、それは点の方向に上昇し、その後、ここで再びダウン

行く完全なコードです: http://pastebin.com/9BiwhWrDバックプロパゲーションコードがライン146 (ラインのルートのものから始まります165は何もしません。いくつかのアイデアを試していただけです)

何が間違っている可能性がありますか?このような行動を見たことがありますか?

ありがとうございました。

+0

すぐに収束しない場合がありますが、派手な3D虹のパターンを作成します。これらの場合デルタ値は1〜0.1ですが、2つ以上のリンクを投稿することはできません – Tuaafooo

+0

詳細を追加する必要があります:ポイントはどういう意味ですか?色はどういう意味ですか?トポロジ/モデルとは何ですか? –

+0

[MCVEを作成する](http://stackoverflow.com/help/mcve)してコードをここに掲載してください。 –

答えて

0

これが発生した理由は、入力データが大きすぎたためです。活性化シグモイド関数は、x - > infに対してf(x)= 1に収束した。私は、データ例えば

a = np.array([1,2,3,4,5]) 
a /= a.max() 

を正規化するか、まったく非正規化データの生成を防止しなければなりませんでした。

また、シグモイドが適用される前に中間値が更新されました。しかし、シグモイドの導出は、y '(x)= y(x) - (1-y(x))のように見える。私の場合、それはちょうどでした:y '(x)= x-(1-x)

デルタを計算した後の重みの更新方法にもエラーがありました。私は、Pythonでニューラルネットワークのチュートリアルを使ってループ全体を書き直し、それがうまくいった。

まだバイアスをサポートしていませんが、分類ができます。回帰の場合、それは十分正確ではありませんが、これは欠けている偏見と関係していると思います。ここで

はコードです: http://pastebin.com/hRCKe1dK

誰かが私は、ニューラル・ネットワークの枠組みの中に私のトレーニングデータを入れて、それが動作するかどうかを確認すべきであることが示唆されました。それはしませんでした。それで、それをする必要があることは明らかであり、-1と1の間でなければならないというアイデアがありました。

関連する問題