Ich habe dieses einfache Modell implementiert, um neuronale Netze zu lernen, es trainiert gut und gibt die Ausgabe, die ursprünglich gegeben wurde.Python einfache neurale Vorwärtsnetz XOR-Funktion
Das ist, wo ich irgendwie Verlust bin, im Beispiel der XOR-Funktionserkennung möchte ich nur testen können, nicht trainieren. Es scheint so, als ob alle Online-Lesungen ganz auf Training abzielen und dann genau dort aufhören.
Bedeutet dies, dass das Modell für jede neue Eingabe das ganze Set neu berechnen und trainieren muss? Hat es etwas mit den Gewichten zu tun? Wie würden Sie damit fortfahren, das Modell "live" laufen zu lassen und neue Inputs als Teil seines Live-Feedbacks und des laufenden Wiederholungstrainings zu nehmen?
Dank
import numpy as np
def nonlin(x, deriv=False):
if(deriv==True):
return x*(1-x)
return 1/(1+np.exp(-x))
#4x2
x = np.array([[0,0],[0,1],[1,0],[1,1]])
print (x)
#1x4
y = np.array([[0],[1],[1],[0]])
np.random.seed(1)
syn0 = 2*np.random.random((2,4))-1
print (syn0)
syn1 = 2*np.random.random((4,1))-1
for j in range(60000):
l0 = x;
l1 = nonlin(np.dot(l0,syn0))
l2 = nonlin(np.dot(l1,syn1))
l2_error = y - l2
l2_delta = l2_error*nonlin(l2, deriv=True)
l1_error = l2_delta.dot(syn1.T)
l1_delta = l1_error * nonlin(l1,deriv=True)
syn1 += l1.T.dot(l2_delta)
syn0 += l0.T.dot(l1_delta)
if(j % 10000) ==0:
print ("Error:" + str(np.mean(np.abs(l2_error))))
print ("Output after training")
print (syn0)
print (syn1)
print (l2)
Ich bekomme nicht, was das Problem ist? Sie können das Netzwerk einfach testen, indem Sie eine Eingabe (zum Beispiel (0,1)) eingeben und sehen, was aus dem Netzwerk ausgeht (etwas in der Nähe von 1). –
Vielleicht hilft uns ein Beispielcode/Pseudocode, zu verstehen, was Sie erreichen möchten? – matt2000
Das hört sich vielleicht blöd an, aber genau das kann ich nicht herausfinden ... Sollte ich das vom Netzwerk angegebene Gewicht verwenden, sehe ich nicht, was in der Funktion steckt, die einen Eingang braucht und im Netzwerk testet ? – matel