fork download
  1. import numpy as np
  2. from itertools import product # To generate all binary combinations and weight combinations
  3.  
  4. # Initialisierung der Schwellenwerte
  5. lower_threshold = 0.8
  6. upper_threshold = 1.2
  7.  
  8. # Trainingsdaten (Inputs für das XOR-Problem und andere)
  9. inputs = [[0, 0], [0, 1], [1, 0], [1, 1]]
  10.  
  11. # Alle möglichen Zieltabellen (16 Kombinationen)
  12. all_possible_targets = list(product([0, 1], repeat=4))
  13.  
  14. # Mögliche Werte für die Gewichte (in Schritten von 0.1)
  15. weight_values = np.arange(-1.0, 1.1, 0.1)
  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. # Initialisieren der Startwerte
  22. bias_list = [0.0, 0.7, 0.9] # Bias nur mit den Werten 0.0, 0.7, 0.9
  23. network_trained = False
  24. final_weights = None
  25.  
  26. # Iterate over bias values
  27. for bias in bias_list:
  28. print(f"Versuch mit Bias {bias}:")
  29.  
  30. # Teste alle Kombinationen der Gewichte
  31. for weight_combination in product(weight_values, repeat=2):
  32. current_weights = np.array(weight_combination)
  33. all_correct = True
  34.  
  35. for input_vector, target in zip(inputs, targets):
  36. # Berechnung der gewichteten Summe inkl. Bias
  37. weighted_sum = np.dot(input_vector, current_weights) + bias
  38.  
  39. # Aktivierungsfunktion (Schwellenwertfunktion mit zwei Schwellenwerten)
  40. output = 1 if lower_threshold < weighted_sum < upper_threshold else 0
  41.  
  42. # Überprüfe, ob die Ausgabe korrekt ist
  43. if target != output:
  44. all_correct = False
  45. break # Kein Erfolg mit diesen Gewichten; abbrechen
  46.  
  47. # Wenn alle Ausgaben korrekt sind, speichere die Gewichte und Bias
  48. if all_correct:
  49. network_trained = True
  50. final_weights = current_weights
  51. break
  52.  
  53. if network_trained:
  54. print(f"Das Netzwerk hat Wahrheitstabelle {table_index} erfolgreich gelernt.")
  55. print(f"Gewählte Gewichte: {final_weights}")
  56. print(f"Gewählter Bias: {bias}")
  57. break # Weiter zur nächsten Wahrheitstabelle
  58.  
  59. if not network_trained:
  60. print(f"Das Netzwerk hat Wahrheitstabelle {table_index} nicht gelernt.")
  61.  
Success #stdin #stdout 0.21s 28724KB
stdin
Standard input is empty
stdout
=== Wahrheitstabelle 1: Targets = (0, 0, 0, 0) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 1 erfolgreich gelernt.
Gewählte Gewichte: [-1. -1.]
Gewählter Bias: 0.0

=== Wahrheitstabelle 2: Targets = (0, 0, 0, 1) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 2 erfolgreich gelernt.
Gewählte Gewichte: [0.1 0.8]
Gewählter Bias: 0.0

=== Wahrheitstabelle 3: Targets = (0, 0, 1, 0) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 3 erfolgreich gelernt.
Gewählte Gewichte: [ 0.9 -1. ]
Gewählter Bias: 0.0

=== Wahrheitstabelle 4: Targets = (0, 0, 1, 1) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 4 erfolgreich gelernt.
Gewählte Gewichte: [ 9.00000000e-01 -2.22044605e-16]
Gewählter Bias: 0.0

=== Wahrheitstabelle 5: Targets = (0, 1, 0, 0) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 5 erfolgreich gelernt.
Gewählte Gewichte: [-1.   0.9]
Gewählter Bias: 0.0

=== Wahrheitstabelle 6: Targets = (0, 1, 0, 1) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 6 erfolgreich gelernt.
Gewählte Gewichte: [-0.1  1. ]
Gewählter Bias: 0.0

=== Wahrheitstabelle 7: Targets = (0, 1, 1, 0) ===
Versuch mit Bias 0.0:
Das Netzwerk hat Wahrheitstabelle 7 erfolgreich gelernt.
Gewählte Gewichte: [0.9 0.9]
Gewählter Bias: 0.0

=== Wahrheitstabelle 8: Targets = (0, 1, 1, 1) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Das Netzwerk hat Wahrheitstabelle 8 erfolgreich gelernt.
Gewählte Gewichte: [0.2 0.2]
Gewählter Bias: 0.7

=== Wahrheitstabelle 9: Targets = (1, 0, 0, 0) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 9 erfolgreich gelernt.
Gewählte Gewichte: [-1. -1.]
Gewählter Bias: 0.9

=== Wahrheitstabelle 10: Targets = (1, 0, 0, 1) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 10 erfolgreich gelernt.
Gewählte Gewichte: [-1.  1.]
Gewählter Bias: 0.9

=== Wahrheitstabelle 11: Targets = (1, 0, 1, 0) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 11 erfolgreich gelernt.
Gewählte Gewichte: [-2.22044605e-16 -1.00000000e+00]
Gewählter Bias: 0.9

=== Wahrheitstabelle 12: Targets = (1, 0, 1, 1) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 12 erfolgreich gelernt.
Gewählte Gewichte: [ 0.1 -0.1]
Gewählter Bias: 0.9

=== Wahrheitstabelle 13: Targets = (1, 1, 0, 0) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 13 erfolgreich gelernt.
Gewählte Gewichte: [-1.00000000e+00 -2.22044605e-16]
Gewählter Bias: 0.9

=== Wahrheitstabelle 14: Targets = (1, 1, 0, 1) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 14 erfolgreich gelernt.
Gewählte Gewichte: [-0.3  0.3]
Gewählter Bias: 0.9

=== Wahrheitstabelle 15: Targets = (1, 1, 1, 0) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 15 erfolgreich gelernt.
Gewählte Gewichte: [0.1 0.3]
Gewählter Bias: 0.9

=== Wahrheitstabelle 16: Targets = (1, 1, 1, 1) ===
Versuch mit Bias 0.0:
Versuch mit Bias 0.7:
Versuch mit Bias 0.9:
Das Netzwerk hat Wahrheitstabelle 16 erfolgreich gelernt.
Gewählte Gewichte: [-2.22044605e-16 -2.22044605e-16]
Gewählter Bias: 0.9