2016-09-07 18 views
2

を私はそれがsigmoidtanh活性化機能の両方を使用するオプションを提供しますthis blog- ニューラルネットワーク

から次codeで探しています。私はオンラインで見つけるとanother piece of codeでこれを試してみた(0.5,0.5,0.5,0.5)

XORテストは〜(0,1,1,0)

を得tanh機能が正常に動作するようです。しかしsigmoidに変更すると、私は間違った出力を得ますまったく同じ問題が発生します。

唯一変化しているのは、起動機能(およびその派生物)だけです。これを変えるには、他の変化、例えば、逆伝播を必要としますか?

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

+0

シドモイド専用ネットワークのサイズを増やして、XORを学ぶことができることを確認しましたか? 2-10-1のような過酷なものを試してみてください。 tanh出力間隔 '[-1,1] 'は、Sigmoid出力レイヤーと組み合わせてXORをより速く収める傾向があります。シグモイドを使用しても、基礎となるバックプロパゲーションの計算は変更されません。 – jorgenkg

答えて

0

使用しているモデルがバイアスを訓練していないように見えます。 tanhsigmoidの唯一の違いは、スケーリングとオフセットです。新しいスケールを学習することはウェイトを通して行われますが、バイアスを学習することによって行われる新しいオフセットを補うことも学ぶ必要があります。

+0

それを説明していただきありがとうございます。列車が偏っていることを私が参照できるプログラム(理想的には読みやすさのためのPythonで)の例がありますか? –

+0

ところで、XORにTrue = 0.9とFalse = 0.1を使用するとどうなりますか?私はまだバイアスが必要ですか? –

+1

'x =(x1、x2、...、xn)'がニューロンへの入力ベクトルであり、 'w =(w1、w2)であれば、バイアスは常に '1'に等しい追加成分の重みとして扱うことができます。 、...、wn) 'はあなたが学ぶ重みです。入力を' x =(x0 = 1、x1、x2、...、xn) 'で補うことで、まったく同じフレームワークで偏りを知ることができます。増加した重みw =(w0、w1、w2、...、wn)を学習すると、 'w0'があなたのバイアスになります。 – Julien

関連する問題