Perceptron Beispiel
Ein Beispiel:
Ein Fahrzeug hat vorne einen Sensor, der ein Hindernis erkennt. Wenn ein Hindernis knapp vor dem Fahrzeug ist, sendet er 1 und sonst 0. Das Fahrzeug soll bei 1 stehenbleiben.
Lösung der Aufgabe mit einem Percepton.
Die Ausgangstabelle:
Python - Skript: Hindernis.py
# Stuhlpfarrer Ehrenfried - 2021
# Demo Bank - Fahrzeug - Hindernissensor
import numpy as np
class Hindernis:
def __init__(self, txt):
print(txt)
# Heaviside - Funktion
def heaviside(self, summe):
# Input: Summe
# Output: 1, falls summe >= 0, sonst 0
if summe >= 0:
return 1
else:
return 0
# Neuron - Berechnung
def perceptron_eval(self, X, y, w):
# Input: X, Inputvektor | y, der gewünschte Output
# Output: Der Gesamtfehler, d.h. Summe aus dem Betrag der Differenz von errechnetem und gewünschtem Output
# Der Gesamtfehler
gesamtfehler = 0;
# Index i und Element x Ermittlung vom Array X
for i, x in enumerate(X):
# x = Zeile für Zeile verwenden
# inneres Produkt zwischen x und w
summe = np.dot(w, x)
ergebnis = self.heaviside(summe)
# Fehler
fehler = np.abs(ergebnis - y[i])
# Gesamtfehler
gesamtfehler += fehler
# Ausgabe
print(
"Sensor = {}, gewünschtes Ergebnis = {}, errechnetes Ergebnis = {}, Fehler = {}".format(
x[1], y[i], ergebnis, fehler))
# Gesamtfehler pro Epoche über ganzen Trainingsdatensatz
return gesamtfehler
# Main -----------------------------------------------
# 2D Input = Bias-Neuron, Sensor
# 2 Inputvektoren
X = np.array([
[1,0],
[1,1],
])
# Die Gewichte so wählen dass das Problem gelöst werden kann
w = np.array([-1, 1])
# Die 2 gewünschten Ergebniswerte
y = np.array([0,1])
h = Hindernis("Sensor - Hindernis")
# bank.perceptron_eval(X, y)
# Auswertung des Inputs
gesamtfehler = h.perceptron_eval(X, y, w)
print("Gesamtfehler = %1d" % (gesamtfehler))