0
単純なニューラルネットワークの場合は、tutorialの直後にあります。それは本当に私がそのコンセプトを理解するのを助けました。しかし、私がちょうど0でテストすると、[0,0,0]は、〜0の代わりに0.5を返します。それはなぜそれをするのですか? 〜0を返すために何を変えなければならないのですか?ニューラルネットワークは0の代わりに0.5を返します
X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
l2_delta = (y - l2)*(l2*(1-l2))
l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
syn1 += l1.T.dot(l2_delta)
syn0 += X.T.dot(l1_delta)
logistic functionが原点で0.5
の値を持っていただき、ありがとうございますと
しかし、私のニューラルネットワークは、falseの場合は-1、trueの場合は1を返します。だから私はまだ間違った結果を得るだろう。 私の考え方は間違っていますか、[0,0,0]は両方の機能で何も変更されていないため、マルチレイヤーネットワークで問題を解決しますか? – fritter
XORの場合、通常は証明書の結果を解釈する必要があります。例えば、ロジスティック関数では、 '> 0.5'を' 1'と解釈し、 '<= 0.5'を' 0'と解釈します。ロジスティック関数と 'tanh'関数は漸近的であり、決して' 1'を与えません。あなたは 'double'の限定された精度で関数が最終的に有効な' 0'または '1'を生成するだろうと主張することができますが、これはちょっとハッキリです。 – cantordust
スクリプトは正常に動作していますか?常に<= 0.5は0を意味するので、[0,0,0]は正しいものでした。私はちょうど他の結果が0.0123か0.998だったのでちょうど混乱した。 – fritter