Hilfe!!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jimmy
User
Beiträge: 3
Registriert: Dienstag 3. Juni 2008, 13:56

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?
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

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.
Jimmy
User
Beiträge: 3
Registriert: Dienstag 3. Juni 2008, 13:56

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)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Jimmy
User
Beiträge: 3
Registriert: Dienstag 3. Juni 2008, 13:56

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): 
"""Returns the max norm of the network input elements in 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)
So besser? ;)
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Nicht viel.

Einfach den gesamten Code in die `code`-Tags einschließen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

  • 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.
Antworten