def disegna_funzione(p, y, x1, x2, isFinal, errore = 0): if isFinal == False: print(f"\tW1: {p.w1}") print(f"X1: {x1} --------> ") print(f"\t\t( bias: {p.bias} ) -------> Y: {y}") print(f"X2: {x2} --------> ") print(f"\tW2: {p.w2}") else: print(f"\t\t\t\t\t\tW1: {p.w1}") print(f"\t\t\t\t\tX1: {x1} --------> ") print(f"\t\t\t\t\t\t\t( bias: {p.bias} ) -------> Y: {y} ----> errore: {errore}") print(f"\t\t\t\t\tX2: {x2} --------> ") print(f"\t\t\t\t\t\tW2: {p.w2}") def stampa_risultati_single_layer(p): print("Percettrone:") print(f"\t W1: {p.w1}, W2: {p.w2}, bias: {p.bias}") def stampa_risultati_multilayer(pin_est_1, pin_est_2, pinout): print("Percettrone 1:") print(f"\t W1: {pin_est_1.w1}, W2: {pin_est_1.w2}, bias: {pin_est_1.bias}") print("Percettrone 2:") print(f"\t W1: {pin_est_2.w1}, W2: {pin_est_2.w2}, bias: {pin_est_2.bias}") print("Percettrone OUT:") print(f"\t W1: {pinout.w1}, W2: {pinout.w2}, bias: {pinout.bias}") def disegna_grafico_singolo(lista_rette): import matplotlib.pyplot as plt import numpy as np # m: coefficiente angolare # q: intercetta # Crea un array di valori ascissa per disegnare la retta penso x = np.linspace(-10, 10, 100) plt.title('AND Logico') plt.xlabel('X1') plt.ylabel('X2') # linee in coordinate 0,0 plt.axhline(0, color='black', linewidth=0.5, linestyle='--') plt.axvline(0, color='black', linewidth=0.5, linestyle='--') #AND Logico plt.plot(0, 0, 'o', color='red') plt.plot(0, 1, 'o', color='red') plt.plot(1, 0, 'o', color='red') plt.plot(1, 1, 'o', color='green') plt.xlim(-2, 2) plt.ylim(-2, 2) size = len(lista_rette) for i in range(0, size): # Calcola i valori di y usando l'equazione della retta y = lista_rette[i][0] * x + lista_rette[i][1] retta, = plt.plot(x, y, label=f'y = mx + q', color='blue') # RETTA if i < size-1: plt.pause(0.0001) retta.remove() plt.show() def disegna_grafico_multi(lista_rette): import matplotlib.pyplot as plt import numpy as np # Crea un array di valori ascissa per disegnare la retta penso x = np.linspace(-10, 10, 100) plt.title('XOR Logico') plt.xlabel('X1') plt.ylabel('X2') # linee in coordinate 0,0 plt.axhline(0, color='black', linewidth=0.5, linestyle='--') plt.axvline(0, color='black', linewidth=0.5, linestyle='--') #XOR Logico plt.plot(0, 0, 'o', color='red') plt.plot(0, 1, 'o', color='green') plt.plot(1, 0, 'o', color='green') plt.plot(1, 1, 'o', color='red') plt.xlim(-2, 2) plt.ylim(-2, 2) rette_p1 = lista_rette["P1"] rette_p2 = lista_rette["P2"] rette_pout = lista_rette["POUT"] size_vettori = len(rette_pout) for i in range(0, size_vettori): plot_uno, = plt.plot(x, rette_p1[i][0] * x + rette_p1[i][1], label='p1', color='orange') # RETTA plot_due, = plt.plot(x, rette_p2[i][0] * x + rette_p2[i][1], label='p2', color='red') # RETTA plot_out, = plt.plot(x, rette_pout[i][0] * x + rette_pout[i][1], label='pout', color='blue') # RETTA if i < size_vettori-1: plt.pause(0.0001) plot_uno.remove() plot_due.remove() plot_out.remove() plt.show()