KI DIGITALE ELEMENTE

Perceptron Variationen

Beispiele: 

Ausgangstabellen:




Python Skript: PerceptronVariationen.py

# Stuhlpfarrer Ehrenfried - 2021
# Demo Perceptron - Variationen

import numpy as np

class PerceptronVariationen:
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(
"Input = {}, Soll Output = {}, errechneter Output = {}, Fehler = {}".format(
x[1], y[i], ergebnis, fehler))
# Gesamtfehler pro Epoche über ganzen Trainingsdatensatz
return gesamtfehler


# Main -----------------------------------------------
# 2D Input = Bias-Neuron, Wert
# 2 Inputvektoren
X = np.array([
[1,0],
[1,1],
])

# Die 2 gewünschten Ergebniswerte für jede Wertetabelle
y_TabelleA = np.array([0,0])
y_TabelleB = np.array([0,1])
y_TabelleC = np.array([1,0])
y_TabelleD = np.array([1,1])

# Die Gewichte so wählen dass das Problem gelöst werden kann
w_TabelleA = np.array([-1, -1])
w_TabelleB = np.array([-1, 1])
w_TabelleC = np.array([0, -1])
w_TabelleD = np.array([0, 0])

pv = PerceptronVariationen("Perceptron Variationen!")

# Auswertung des Inputs für TabelleA
print("Tabelle A ---------------------------------------------")
gesamtfehler = pv.perceptron_eval(X, y_TabelleA, w_TabelleA)
print("Gesamtfehler TabelleA = %1d" % (gesamtfehler))
# Auswertung des Inputs für TabelleB
print("Tabelle B ----------------------------------------------")
gesamtfehler = pv.perceptron_eval(X, y_TabelleB, w_TabelleB)
print("Gesamtfehler TabelleB = %1d" % (gesamtfehler))
# Auswertung des Inputs für TabelleC
print("Tabelle C ----------------------------------------------")
gesamtfehler = pv.perceptron_eval(X, y_TabelleC, w_TabelleC)
print("Gesamtfehler TabelleC = %1d" % (gesamtfehler))
# Auswertung des Inputs für TabelleD
print("Tabelle D ----------------------------------------------")
gesamtfehler = pv.perceptron_eval(X, y_TabelleD, w_TabelleD)
print("Gesamtfehler TabelleD = %1d" % (gesamtfehler))

Ausgabe:
Perceptron Variationen!
Tabelle A ---------------------------------------------
Input = 0, Soll Output = 0, errechneter Output = 0, Fehler = 0
Input = 1, Soll Output = 0, errechneter Output = 0, Fehler = 0
Gesamtfehler TabelleA = 0
Tabelle B ----------------------------------------------
Input = 0, Soll Output = 0, errechneter Output = 0, Fehler = 0
Input = 1, Soll Output = 1, errechneter Output = 1, Fehler = 0
Gesamtfehler TabelleB = 0
Tabelle C ----------------------------------------------
Input = 0, Soll Output = 1, errechneter Output = 1, Fehler = 0
Input = 1, Soll Output = 0, errechneter Output = 0, Fehler = 0
Gesamtfehler TabelleC = 0
Tabelle D ----------------------------------------------
Input = 0, Soll Output = 1, errechneter Output = 1, Fehler = 0
Input = 1, Soll Output = 1, errechneter Output = 1, Fehler = 0
Gesamtfehler TabelleD = 0

KI

Copyright © 2021. All Rights Reserved. Ehrenfried Stuhlpfarrer