Hallo zusammen!
Ich habe ein wenig Schwierigkeiten bei folgender Aufgabe:
1) Trainieren sie einem Perzeptron( 2 eingänge x1, x2 +Gewichtungen, 1 Bias und variables Abbruchkriterium) die Funktion des logischen ODER's an.
2) Entscheiden sie sich für ein Abbruchkriterium für den Lernprozess und implementieren sie es. warum wurde dieses Kriterium gewählt?
3)Wieviel Iterationen braucht das Netz bei folgenden Startwerten für
w=[1,3,-7] & w=[-20,300,5] bei einer Lernrate von 0,2 & 0,9?
Hilfe!!!
das hier hast Du gelesen: http://www.python-forum.de/topic-1689.html?
Wenn Du konkrete Fragen hast, werden hier glaub einige gerne helfen. Aber so ohne irgendwelche eigenen Anfaenge, Codeteile, Ueberlegungen, usw., da ist die Bereitschaft zur Hilfe wohl eher gering.
Wenn Du konkrete Fragen hast, werden hier glaub einige gerne helfen. Aber so ohne irgendwelche eigenen Anfaenge, Codeteile, Ueberlegungen, usw., da ist die Bereitschaft zur Hilfe wohl eher gering.
Hier sind die Anfänge! ja danke habs gelesen;) aber toll das so schnell geantwortet wurde...
Ich komm nicht drauf wie man die logische Funktion ODER abbildet(trainieren)
import numarray as na
import math
def perceptron(x, y, n, debug = 0):
"""implements a perceptron
w = na.zeros(x[0].shape[0], na.Float32) #weights
b = 0 #bias
k = 0 #error count
iteration = 0 #number of iterations
mistake_free = 0
while not mistake_free and iteration < 100:
iteration += 1
if(debug): print "iteration #", iteration
mistake_free = 1
for i in range(len(x)):
actual_out = na.dot(w, x) + b #<w*x> + b
if y * actual_out <= 0:
w += n * y * x
if(debug): print n, y, x, w, b
b += y - actual_out
k += 1
mistake_free = 0
return (w, b, k)
def max_norm(array):
"""Returns the max norm of the network input elements in array"""
norms = []
for vector in array:
sum_sq = 0
for x in vector:
sum_sq += x*x
norms.append(math.sqrt(sum_sq))
return max(norms)
Ich komm nicht drauf wie man die logische Funktion ODER abbildet(trainieren)
import numarray as na
import math
def perceptron(x, y, n, debug = 0):
"""implements a perceptron
w = na.zeros(x[0].shape[0], na.Float32) #weights
b = 0 #bias
k = 0 #error count
iteration = 0 #number of iterations
mistake_free = 0
while not mistake_free and iteration < 100:
iteration += 1
if(debug): print "iteration #", iteration
mistake_free = 1
for i in range(len(x)):
actual_out = na.dot(w, x) + b #<w*x> + b
if y * actual_out <= 0:
w += n * y * x
if(debug): print n, y, x, w, b
b += y - actual_out
k += 1
mistake_free = 0
return (w, b, k)
def max_norm(array):
"""Returns the max norm of the network input elements in array"""
norms = []
for vector in array:
sum_sq = 0
for x in vector:
sum_sq += x*x
norms.append(math.sqrt(sum_sq))
return max(norms)
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Bitte http://www.python-forum.de/faq.php#21 beachten
Code: Alles auswählen
import numarray as na
import math
Code: Alles auswählen
def perceptron(x, y, n, debug = 0):
"""implements a perceptron
Code: Alles auswählen
w = na.zeros(x[0].shape[0], na.Float32) #weights
b = 0 #bias
k = 0 #error count
iteration = 0 #number of iterations
mistake_free = 0
while not mistake_free and iteration < 100:
iteration += 1
if(debug): print "iteration #", iteration
mistake_free = 1
for i in range(len(x)):
actual_out = na.dot(w, x[i]) + b #<w*x> + b
if y[i] * actual_out <= 0:
w += n * y[i] * x[i]
if(debug): print n, y[i], x[i], w, b
b += y[i] - actual_out
k += 1
mistake_free = 0
return (w, b, k)
def max_norm(array):
Code: Alles auswählen
norms = []
for vector in array:
sum_sq = 0
for x in vector:
sum_sq += x*x
norms.append(math.sqrt(sum_sq))
return max(norms)
- a) braucht es dafür keinen neuen Post, den alten kann man editieren
b) stimmt die Einrückung nicht - damit ist es immer noch kaum lesbar
c) gibt es (ganz oben im Forum) den sticky thread "Vor dem Posten lesen" - empfehlenswert
d) gebe ich ehrlich zu, daß ich nicht verstanden habe, worum es in der Aufgabe genau geht. Wenn nicht zufällig jemand eine Lösung weiß, dann solltest Du vielleicht das Problem herunterbrechen, so daß auch "Neuronale-Netz-Laien" etwas damit anfangen können.