2017-10-31 2 views
0

Ich bin ein Anfänger in maschinelles Lernen und versuchen neuronale Netz auf eigene Faust zu bauen, indem Tutorial in dieser Website werden folgende http://iamtrask.github.io/2015/07/12/basic-python-network/Neural Network gleichen Fehler zurückgegeben

Im Teil 3 des Tutorials gibt es eine Eingangsschicht eine Ausgabeschicht und eine versteckte Ebene.

Wenn ich jedoch versuchte, den Code auszuführen, wurde derselbe Fehler ausgegeben. Der Fehler wurde also nicht wie erwartet kleiner. Hier ist der Code:

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) 

Vielen Dank für Ihre Rückmeldung

P. S: Ich bin mit Python 3.5.2, Windows 7

+0

Können Sie Ihre Ausgabe einfügen und auch 'nonlin()' und 'x' enthalten. Ich habe deinen Code ausgeführt und es funktioniert, die Fehler sinken auch. – jonnybazookatone

+0

Fehler: ,496410031903 Fehler: ,496410031903 Fehler: ,496410031903 Fehler: ,496410031903 Fehler: ,496410031903 Fehler: ,496410031903 dies ist die Ausgabe, die ich erhalten, wie sie für die nonlin() und x, es definiert ist, nachdem ich importieren numpy als np. –

Antwort

1

Sie müssen die Aufmerksamkeit auf BODMAS zahlen (https://www.skillsyouneed.com/num/bodmas.html). Sie kehren Null aus Ihrer nonlin Funktion:

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

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

die im Grunde return x*1-x = x-x = 0 ist. Sie sollten:

return x*(1-x) 
+0

Ah !! Das ist eine sehr genaue Antwort, Entschuldigung für den Neuling Fehler, vielen Dank für den Hinweis auf meinen Fehler. –

Verwandte Themen