fork download
  1. import numpy as np
  2. from itertools import product # To generate all binary combinations
  3.  
  4. # Initialisierung der Schwellenwerte
  5. lower_threshold = 0.8
  6. upper_threshold = 1.2
  7.  
  8. # Lernrate
  9. learning_rate = 0.1
  10.  
  11. # Trainingsdaten (Inputs für das XOR-Problem und andere)
  12. inputs = [[0, 0], [0, 1], [1, 0], [1, 1]]
  13.  
  14. # Alle möglichen Zieltabellen (16 Kombinationen)
  15. all_possible_targets = list(product([0, 1], repeat=4))
  16.  
  17. # Trainingsloop für jede mögliche Zieltabelle
  18. for table_index, targets in enumerate(all_possible_targets, start=1):
  19. print(f"\n=== Wahrheitstabelle {table_index}: Targets = {targets} ===")
  20.  
  21. # Trainingsloop mit max. 1000 Iterationen
  22. max_iterations = 1000
  23. epoch = 0
  24. network_trained = False
  25. start_weights = None
  26. final_weights = None
  27. all_epoch_outputs = [] # Store outputs of all epochs for debugging and transparency
  28.  
  29. while epoch < max_iterations:
  30. epoch += 1
  31. all_correct = True # Flag, um zu überprüfen, ob alle Ausgaben korrekt sind
  32. current_weights = np.random.rand(2) # Zufällige Startgewichte
  33.  
  34. if epoch == 1: # Die erste Iteration nach Initialisierung
  35. start_weights = current_weights # Speichere die Startgewichte
  36.  
  37. epoch_outputs = [] # To store outputs of this epoch
  38.  
  39. for input_vector, target in zip(inputs, targets):
  40. # Berechnung der gewichteten Summe
  41. weighted_sum = np.dot(input_vector, current_weights)
  42.  
  43. # Aktivierungsfunktion (einfache Schwellenwertfunktion)
  44. output = 1 if lower_threshold < weighted_sum < upper_threshold else 0
  45.  
  46. # Fehlerberechnung
  47. error = target - output
  48.  
  49. # Wenn ein Fehler vorliegt, dann weise die Gewichte an
  50. if error != 0:
  51. all_correct = False
  52. current_weights += learning_rate * error * np.array(input_vector)
  53.  
  54. epoch_outputs.append((input_vector, output, target)) # Save each iteration's output
  55.  
  56. all_epoch_outputs.append(epoch_outputs)
  57.  
  58. # Überprüfe, ob alle Ausgaben korrekt sind
  59. if all_correct:
  60. network_trained = True
  61. final_weights = current_weights # Speichere die finalen Gewichte
  62. break # Stoppe, wenn alle Ausgaben korrekt sind
  63.  
  64. # Wenn Tabelle nach 100 Iterationen nicht gelernt wurde, setze neue zufällige Startgewichte
  65. if epoch % 100 == 0:
  66. print(f"Nicht funktionierende Startgewichte: {start_weights}")
  67. start_weights = np.random.rand(2) # Setze neue Startgewichte
  68.  
  69. if network_trained:
  70. print(f"Das Netzwerk hat Wahrheitstabelle {table_index} korrekt nach {epoch} Iterationen gelernt.")
  71. print(f"Die Working Startgewichte waren: {start_weights}")
  72. print(f"Die finalen Gewichte sind: {final_weights}")
  73. else:
  74. print(f"Das Netzwerk hat Wahrheitstabelle {table_index} nach {epoch} Iterationen nicht korrekt gelernt.")
  75. print("\nFinal Test Output übersprungen, da das Netzwerk nicht gelernt hat.")
  76. continue # Skip final testing if the network didn't learn the truth table
  77.  
  78. # Testen des Netzwerks nach den Lern-Iterationen
  79. print("\nFinal Test Output:")
  80. for input_vector, target in zip(inputs, targets):
  81. weighted_sum = np.dot(input_vector, final_weights)
  82. output = 1 if lower_threshold < weighted_sum < upper_threshold else 0
  83. print(f"Input: {input_vector}, Target: {target}, Output: {output}")
  84.  
  85. # Optionally, print out the outputs of each epoch for transparency
  86. print("\nEpoch Outputs:")
  87. for epoch_index, epoch_outputs in enumerate(all_epoch_outputs):
  88. print(f"Epoch {epoch_index + 1}:")
  89. for input_vector, output, target in epoch_outputs:
  90. print(f" Input: {input_vector}, Output: {output}, Target: {target}")
  91.  
Success #stdin #stdout 0.5s 29164KB
stdin
Standard input is empty
stdout
=== Wahrheitstabelle 1: Targets = (0, 0, 0, 0) ===
Das Netzwerk hat Wahrheitstabelle 1 korrekt nach 3 Iterationen gelernt.
Die Working Startgewichte waren: [0.49382842 0.2695215 ]
Die finalen Gewichte sind: [0.69189142 0.06103903]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 0, Output: 0
Input: [1, 0], Target: 0, Output: 0
Input: [1, 1], Target: 0, Output: 0

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 0
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 0
Epoch 3:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0

=== Wahrheitstabelle 2: Targets = (0, 0, 0, 1) ===
Das Netzwerk hat Wahrheitstabelle 2 korrekt nach 2 Iterationen gelernt.
Die Working Startgewichte waren: [0.87963116 0.10499646]
Die finalen Gewichte sind: [0.6188647  0.34715951]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 0, Output: 0
Input: [1, 0], Target: 0, Output: 0
Input: [1, 1], Target: 1, Output: 1

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1

=== Wahrheitstabelle 3: Targets = (0, 0, 1, 0) ===
Das Netzwerk hat Wahrheitstabelle 3 korrekt nach 10 Iterationen gelernt.
Die Working Startgewichte waren: [0.1429374 0.47224  ]
Die finalen Gewichte sind: [0.80715173 0.44021589]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 0, Output: 0
Input: [1, 0], Target: 1, Output: 1
Input: [1, 1], Target: 0, Output: 0

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 0
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 0
Epoch 3:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 0
Epoch 4:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 0
Epoch 5:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 0
Epoch 6:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 0
Epoch 7:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 0
Epoch 8:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 0
Epoch 9:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 0
Epoch 10:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 1, Target: 1
  Input: [1, 1], Output: 0, Target: 0

=== Wahrheitstabelle 4: Targets = (0, 0, 1, 1) ===
Das Netzwerk hat Wahrheitstabelle 4 korrekt nach 43 Iterationen gelernt.
Die Working Startgewichte waren: [0.64183764 0.76980664]
Die finalen Gewichte sind: [0.94207474 0.07447474]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 0, Output: 0
Input: [1, 0], Target: 1, Output: 1
Input: [1, 1], Target: 1, Output: 1

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 3:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 4:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 5:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 6:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 7:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 8:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 9:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 10:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 11:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 12:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 13:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 14:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 15:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 16:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 17:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 18:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 19:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 20:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 21:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 22:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 23:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 24:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 25:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 26:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 27:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 28:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 29:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 30:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 31:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 32:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 33:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 1, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 34:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 35:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 36:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 37:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 38:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 39:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 40:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 1
Epoch 41:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 42:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 0
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 1, Target: 1
Epoch 43:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 0
  Input: [1, 0], Output: 1, Target: 1
  Input: [1, 1], Output: 1, Target: 1

=== Wahrheitstabelle 5: Targets = (0, 1, 0, 0) ===
Das Netzwerk hat Wahrheitstabelle 5 korrekt nach 9 Iterationen gelernt.
Die Working Startgewichte waren: [0.28036656 0.47235946]
Die finalen Gewichte sind: [0.37740487 0.95060131]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 1, Output: 1
Input: [1, 0], Target: 0, Output: 0
Input: [1, 1], Target: 0, Output: 0

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 3:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 0
Epoch 4:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 5:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 6:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 0
Epoch 7:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 8:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0
Epoch 9:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 0

=== Wahrheitstabelle 6: Targets = (0, 1, 0, 1) ===
Das Netzwerk hat Wahrheitstabelle 6 korrekt nach 24 Iterationen gelernt.
Die Working Startgewichte waren: [0.84378763 0.80412403]
Die finalen Gewichte sind: [0.3336384  0.85616904]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 1, Output: 1
Input: [1, 0], Target: 0, Output: 0
Input: [1, 1], Target: 1, Output: 1

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 3:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 4:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 5:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 6:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 7:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 8:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 9:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 10:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 11:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 12:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 13:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 14:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 15:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 16:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 17:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 18:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 19:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 20:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 21:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 1, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 22:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 0, Target: 1
Epoch 23:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1
Epoch 24:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 0, Target: 0
  Input: [1, 1], Output: 1, Target: 1

=== Wahrheitstabelle 7: Targets = (0, 1, 1, 0) ===
Das Netzwerk hat Wahrheitstabelle 7 korrekt nach 2 Iterationen gelernt.
Die Working Startgewichte waren: [0.47227794 0.84046741]
Die finalen Gewichte sind: [0.84597594 0.91855378]

Final Test Output:
Input: [0, 0], Target: 0, Output: 0
Input: [0, 1], Target: 1, Output: 1
Input: [1, 0], Target: 1, Output: 1
Input: [1, 1], Target: 0, Output: 0

Epoch Outputs:
Epoch 1:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 0, Target: 1
  Input: [1, 0], Output: 0, Target: 1
  Input: [1, 1], Output: 0, Target: 0
Epoch 2:
  Input: [0, 0], Output: 0, Target: 0
  Input: [0, 1], Output: 1, Target: 1
  Input: [1, 0], Output: 1, Target: 1
  Input: [1, 1], Output: 0, Target: 0

=== Wahrheitstabelle 8: Targets = (0, 1, 1, 1) ===
Nicht funktionierende Startgewichte: [0.22231579 0.51790496]
Nicht funktionierende Startgewichte: [0.41924901 0.662642  ]
Nicht funktionierende Startgewichte: [0.9233613 0.717956 ]
Nicht funktionierende Startgewichte: [0.30069148 0.90408349]
Nicht funktionierende Startgewichte: [0.34275921 0.05704766]
Nicht funktionierende Startgewichte: [0.64998437 0.32886189]
Nicht funktionierende Startgewichte: [0.06807126 0.23020641]
Nicht funktionierende Startgewichte: [0.37153045 0.34881716]
Nicht funktionierende Startgewichte: [0.38341797 0.21309871]
Nicht funktionierende Startgewichte: [0.33966558 0.18822225]
Das Netzwerk hat Wahrheitstabelle 8 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 9: Targets = (1, 0, 0, 0) ===
Nicht funktionierende Startgewichte: [0.38103426 0.226764  ]
Nicht funktionierende Startgewichte: [0.43144492 0.67834486]
Nicht funktionierende Startgewichte: [0.35245144 0.64910545]
Nicht funktionierende Startgewichte: [0.76080553 0.23744221]
Nicht funktionierende Startgewichte: [0.76148899 0.25496107]
Nicht funktionierende Startgewichte: [0.79981323 0.11943574]
Nicht funktionierende Startgewichte: [0.46224772 0.68847051]
Nicht funktionierende Startgewichte: [0.65875482 0.97330968]
Nicht funktionierende Startgewichte: [0.10507515 0.69178154]
Nicht funktionierende Startgewichte: [0.15365098 0.25164998]
Das Netzwerk hat Wahrheitstabelle 9 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 10: Targets = (1, 0, 0, 1) ===
Nicht funktionierende Startgewichte: [0.29732001 0.74072615]
Nicht funktionierende Startgewichte: [0.77766839 0.92383977]
Nicht funktionierende Startgewichte: [0.33754769 0.2471924 ]
Nicht funktionierende Startgewichte: [0.80869937 0.323938  ]
Nicht funktionierende Startgewichte: [0.02516489 0.87822321]
Nicht funktionierende Startgewichte: [0.88671343 0.69978247]
Nicht funktionierende Startgewichte: [0.74476695 0.29532509]
Nicht funktionierende Startgewichte: [0.60312679 0.88506306]
Nicht funktionierende Startgewichte: [0.05913698 0.18844312]
Nicht funktionierende Startgewichte: [0.15485533 0.01694921]
Das Netzwerk hat Wahrheitstabelle 10 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 11: Targets = (1, 0, 1, 0) ===
Nicht funktionierende Startgewichte: [0.43326965 0.27845507]
Nicht funktionierende Startgewichte: [0.06377149 0.18623172]
Nicht funktionierende Startgewichte: [0.0995881  0.91457654]
Nicht funktionierende Startgewichte: [0.78505447 0.57351335]
Nicht funktionierende Startgewichte: [0.22858456 0.21344137]
Nicht funktionierende Startgewichte: [0.2259705  0.04836878]
Nicht funktionierende Startgewichte: [0.58592484 0.76836681]
Nicht funktionierende Startgewichte: [0.02519414 0.91803752]
Nicht funktionierende Startgewichte: [0.63981964 0.75729074]
Nicht funktionierende Startgewichte: [0.38231403 0.21226248]
Das Netzwerk hat Wahrheitstabelle 11 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 12: Targets = (1, 0, 1, 1) ===
Nicht funktionierende Startgewichte: [0.82329346 0.88190566]
Nicht funktionierende Startgewichte: [0.65711658 0.41070094]
Nicht funktionierende Startgewichte: [0.84472528 0.80577226]
Nicht funktionierende Startgewichte: [0.04666594 0.83086382]
Nicht funktionierende Startgewichte: [0.28232885 0.67700376]
Nicht funktionierende Startgewichte: [0.62515697 0.08321881]
Nicht funktionierende Startgewichte: [0.8176606  0.33954496]
Nicht funktionierende Startgewichte: [0.73663159 0.32481794]
Nicht funktionierende Startgewichte: [0.53555541 0.91119019]
Nicht funktionierende Startgewichte: [0.10993374 0.90595966]
Das Netzwerk hat Wahrheitstabelle 12 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 13: Targets = (1, 1, 0, 0) ===
Nicht funktionierende Startgewichte: [0.60172146 0.81315616]
Nicht funktionierende Startgewichte: [0.61901505 0.25308842]
Nicht funktionierende Startgewichte: [0.39878409 0.50208198]
Nicht funktionierende Startgewichte: [0.0417528  0.43012767]
Nicht funktionierende Startgewichte: [0.52312907 0.43535767]
Nicht funktionierende Startgewichte: [0.80587599 0.48780905]
Nicht funktionierende Startgewichte: [0.3294767  0.79239165]
Nicht funktionierende Startgewichte: [0.49530156 0.70812492]
Nicht funktionierende Startgewichte: [0.86852376 0.66910477]
Nicht funktionierende Startgewichte: [0.56922792 0.4491316 ]
Das Netzwerk hat Wahrheitstabelle 13 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 14: Targets = (1, 1, 0, 1) ===
Nicht funktionierende Startgewichte: [0.6654999  0.41101368]
Nicht funktionierende Startgewichte: [0.20348309 0.87454278]
Nicht funktionierende Startgewichte: [0.50427259 0.97429112]
Nicht funktionierende Startgewichte: [0.84100026 0.85129494]
Nicht funktionierende Startgewichte: [0.32031475 0.30045957]
Nicht funktionierende Startgewichte: [0.41024281 0.54407912]
Nicht funktionierende Startgewichte: [0.97231767 0.45876784]
Nicht funktionierende Startgewichte: [0.97925557 0.81747277]
Nicht funktionierende Startgewichte: [0.82249792 0.15070133]
Nicht funktionierende Startgewichte: [0.58006673 0.43028326]
Das Netzwerk hat Wahrheitstabelle 14 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 15: Targets = (1, 1, 1, 0) ===
Nicht funktionierende Startgewichte: [0.85594866 0.89938132]
Nicht funktionierende Startgewichte: [0.78158427 0.1358092 ]
Nicht funktionierende Startgewichte: [0.2578152  0.57625793]
Nicht funktionierende Startgewichte: [0.08682648 0.39861288]
Nicht funktionierende Startgewichte: [0.27219087 0.18540308]
Nicht funktionierende Startgewichte: [0.06733541 0.69796267]
Nicht funktionierende Startgewichte: [0.5696058 0.0660494]
Nicht funktionierende Startgewichte: [0.12881119 0.76768844]
Nicht funktionierende Startgewichte: [0.46790704 0.81952902]
Nicht funktionierende Startgewichte: [0.60533681 0.79953303]
Das Netzwerk hat Wahrheitstabelle 15 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.

=== Wahrheitstabelle 16: Targets = (1, 1, 1, 1) ===
Nicht funktionierende Startgewichte: [0.69223518 0.8167802 ]
Nicht funktionierende Startgewichte: [0.6975982  0.65750403]
Nicht funktionierende Startgewichte: [0.91462051 0.00447914]
Nicht funktionierende Startgewichte: [0.41861178 0.28650067]
Nicht funktionierende Startgewichte: [0.91200912 0.28680872]
Nicht funktionierende Startgewichte: [0.9531511  0.01082139]
Nicht funktionierende Startgewichte: [0.35197467 0.32102535]
Nicht funktionierende Startgewichte: [0.72991334 0.91561354]
Nicht funktionierende Startgewichte: [0.4073759  0.28830764]
Nicht funktionierende Startgewichte: [0.16925987 0.22132112]
Das Netzwerk hat Wahrheitstabelle 16 nach 1000 Iterationen nicht korrekt gelernt.

Final Test Output übersprungen, da das Netzwerk nicht gelernt hat.