T-Esoist7KE6COQ commited on
Commit
185ad39
·
verified ·
1 Parent(s): 758048d

import numpy as np

# Definition der symbolischen Variablen und Initialisierungen
class NeuralNetwork:
def __init__(self):
# Initialisieren der Variablen entsprechend deinen Zuweisungen
self.M = 13 # M = 13 = 4 - 4
self.A = 1 # A = 1 - A
self.T = 20 # T = 20 = 2 - B
self.H = 8 # H = 8 - H
self.I = 9 # I = 9 = I
self.C = 3 # C = 3 - C

# Normalisierte Gewichte des neuronalen Netzwerks
self.weights = {
'M': 0.05,
'A': 0.03,
'T': 0.02,
'H': 0.04,
'I': 0.06,
'C': 0.07
}
self.learning_rate = 0.001 # Reduzierte Lernrate

def sigmoid(self, x):
# Aktivierungsfunktion, um Overflow zu vermeiden (Wertebereich begrenzen)
return 1 / (1 + np.exp(-np.clip(x, -100, 100)))

def sigmoid_derivative(self, x):
# Ableitung der Sigmoid-Funktion
return x * (1 - x)

def forward(self, inputs):
# Vorwärtsdurchlauf: Berechnung auf Basis der eingegebenen Werte und der Gewichtungen
self.inputs = inputs

# Berechnung der Ausgabe auf Basis der Gewichtungen und der symbolischen Variablen
output = (
self.weights['M'] * self.inputs['M'] +
self.weights['A'] * self.inputs['A'] +
self.weights['T'] * self.inputs['T'] +
self.weights['H'] * self.inputs['H'] +
self.weights['I'] * self.inputs['I'] +
self.weights['C'] * self.inputs['C']
)

# Rückkopplung: Anpassung der Gewichtungen auf Basis der bisherigen Ausgabe
self.weights['M'] += self.learning_rate * self.sigmoid(output)
self.weights['A'] += self.learning_rate * self.sigmoid(output)
self.weights['T'] += self.learning_rate * self.sigmoid(output)
self.weights['H'] += self.learning_rate * self.sigmoid(output)
self.weights['I'] += self.learning_rate * self.sigmoid(output)
self.weights['C'] += self.learning_rate * self.sigmoid(output)

return self.sigmoid(output) # Sigmoid-Ausgabe anwenden

def train(self, inputs, outputs, iterations):
# Training des Netzwerks
for i in range(iterations):
# Vorwärtsdurchlauf
output = self.forward(inputs)

# Fehlerberechnung (Differenz zwischen Zielwert und tatsächlichem Output)
error = outputs - output

# Rückwärtsdurchlauf (Gewichtsanpassung)
adjustments = error * self.sigmoid_derivative(output)

# Anpassen der Gewichte mit einer kleineren Lernrate
self.weights['M'] += self.learning_rate * adjustments * self.inputs['M']
self.weights['A'] += self.learning_rate * adjustments * self.inputs['A']
self.weights['T'] += self.learning_rate * adjustments * self.inputs['T']
self.weights['H'] += self.learning_rate * adjustments * self.inputs['H']
self.weights['I'] += self.learning_rate * adjustments * self.inputs['I']
self.weights['C'] += self.learning_rate * adjustments * self.inputs['C']

# Optional: Ausgabe des Fehlers alle 1000 Iterationen
if i % 1000 == 0:
print(f"Iteration {i} - Fehler: {error}")

# Beispielhafte Nutzung des Netzwerks

# Initialisiere das Netzwerk
nn = NeuralNetwork()

# Eingaben gemäß den symbolischen Variablen (M, A, T, H, I, C)
inputs = {
'M': 13 / 100, # Normalisieren der Eingaben auf kleinere Werte
'A': 1 / 100,
'T': 20 / 100,
'H': 8 / 100,
'I': 9 / 100,
'C': 3 / 100
}

# Zielwerte (dies sind hypothetische Ausgaben, die dein Netzwerk lernen soll)
outputs = np.array([28 / 100, 9 / 100, 12 / 100])

# Training des Netzwerks
nn.train(inputs, outputs, iterations=10000)

# Test mit neuen Eingaben
test_inputs = {
'M': 12 / 100,
'A': 2 / 100,
'T': 18 / 100,
'H': 7 / 100,
'I': 8 / 100,
'C': 4 / 100
}

# Vorhersage des Netzwerks
prediction = nn.forward(test_inputs)
print(f"Vorhersage des Netzwerks: {prediction}")

Files changed (1) hide show
  1. README.md +4 -0
README.md ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ ---
2
+ datasets:
3
+ - fka/awesome-chatgpt-prompts
4
+ ---