J'ai implémenté ce modèle simple pour apprendre les réseaux neuronaux, il s'entraîne bien et donne la sortie qui a été donnée initialement.Python simple neurale forward XOR fonction
C'est là que je suis en quelque sorte perdu, dans l'exemple de la reconnaissance de la fonction XOR je voudrais juste pouvoir le tester, pas l'entraîner. Il semble que toutes les lectures en ligne concernent la formation et s'arrêtent là. Cela signifie-t-il que pour chaque nouvelle entrée, le modèle doit recalculer et entraîner l'ensemble? Y a-t-il quelque chose à voir avec les poids? Comment procéderiez-vous pour que le modèle fonctionne «en direct» et que vous preniez de nouveaux commentaires dans le cadre de ses commentaires en direct et de sa formation périodique continue?
Merci
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)
Je ne comprends pas quel est le problème? Vous pouvez facilement tester le réseau en fournissant une entrée (par exemple (0,1)) et voir ce qui s'écoule du réseau (quelque chose près de 1). –
Peut-être que certains exemples/pseudo-code nous aideraient à comprendre ce que vous essayez d'accomplir? – matt2000
Cela peut sembler stupide mais c'est exactement ce que je n'arrive pas à comprendre ... Dois-je utiliser le poids donné par le réseau, je ne vois pas ce qu'il y a dans la fonction qui va prendre une entrée et la tester dans le réseau ? – matel