2017-10-31 14 views
0

を返すと、このウェブサイトのチュートリアルのパート3では http://iamtrask.github.io/2015/07/12/basic-python-network/ニューラルネットワークは、私は機械学習で初心者です同じエラー

で与えられたチュートリアルに従うことによって、自分でニューラルネットワークを構築しようと、一つの入力層があります、1つの出力層と1つの隠れ層

しかし、コードを実行しようとすると、同じエラーが表示されました。エラーは予想どおり小さくならなかった。ここでは、コードは次のようになります。

import numpy as np; 

def nonlin(x,deriv=False): 
    if (deriv==True): 
     return x * 1-x 

    return 1/(1+np.exp(-x)) 

x = np.array([ [0,0,1], 
       [0,1,1], 
       [1,0,1], 
       [1,1,1] ]) 

y = np.array([[0],[1],[1],[0]]) 

np.random.seed(1) 

#randomly initialize our weights with mean 0 
syn0 = 2*np.random.random((3,4)) - 1 
syn1 = 2*np.random.random((4,1)) - 1 

for j in range (60000): 

    #feed forward through layers 0, 1, and 2 
    l0 = x 
    l1 = nonlin(np.dot(l0,syn0)) 
    l2 = nonlin(np.dot(l1,syn1)) 

    # how much did we miss the target value? 
    l2_error = y - l2 

    if (j%10000) == 0: 
     print ("Error:" + str (np.mean(np.abs(l2_error)))) 

    #in what direction is the target value? 
    # were we really sure? if so, dont change too much. 
    l2_delta = l2_error*nonlin(l2,deriv=True) 

    # how much did each L1 value contribute to the l2 error 
    #(according to the weights)? 
    l1_error = l2_delta.dot(syn1.T) 

    # in what direction is the target L1? 
    # were we really sure? if so dont change too much. 
    l1_delta = l1_error * nonlin(l1,deriv=True) 

    syn1 += l1.T.dot(l2_delta) 
    syn0 += l0.T.dot(l1_delta) 

は、あなたの種類のフィードバックのために

P.Sありがとう:私は、Python 3.5.2、あなたがBODMAS(https://www.skillsyouneed.com/num/bodmas.html)に注意を払う必要があるWindows 7の

+0

出力を貼り付けることができ、 'nonlin()'と 'x'も含めることができます。私はあなたのコードを実行し、それは動作し、エラーも減少します。 – jonnybazookatone

+0

エラー:0.496410031903 エラー:0.496410031903 エラー:0.496410031903 エラー:0.496410031903 エラー:0.496410031903 エラー:0.496410031903 これは(NONLIN用として、私が手に出力されます)とxが、私がインポートした直後に定義されていますnpとしてnumpy。 –

答えて

1

を使用しています。

def nonlin(x,deriv=False): 
    if (deriv==True): 
     return x * 1-x 

return 1/(1+np.exp(-x)) 

基本的にreturn x*1-x = x-x = 0です:あなたは、あなたnonlin関数からゼロに戻ってきています。

return x*(1-x) 
+0

ああ!これは非常に正確な答えです、初心者のミスのために申し訳ありません、私の間違いを指摘するためにそんなにありがとう。 –