115 lines
3.6 KiB
Python
115 lines
3.6 KiB
Python
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)
|
|
|
|
retta, = plt.plot(0, 0, label=f'p1', color='blue') # RETTA
|
|
plt.legend()
|
|
|
|
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, 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)
|
|
|
|
plot_uno, = plt.plot(0, 0, label='p1', color='blue') # RETTA
|
|
plot_due, = plt.plot(0, 0, label='p2', color='red') # RETTA
|
|
plot_out, = plt.plot(0, 0, label='pout', color='green') # RETTA
|
|
plt.legend()
|
|
|
|
for i in range(0, size_vettori):
|
|
plot_uno, = plt.plot(x, rette_p1[i][0] * x + rette_p1[i][1], color='blue') # RETTA
|
|
plot_due, = plt.plot(x, rette_p2[i][0] * x + rette_p2[i][1], color='red') # RETTA
|
|
plot_out, = plt.plot(x, rette_pout[i][0] * x + rette_pout[i][1], color='green') # RETTA
|
|
|
|
if i < size_vettori-1:
|
|
plt.pause(0.0001)
|
|
plot_uno.remove()
|
|
plot_due.remove()
|
|
plot_out.remove()
|
|
|
|
plt.show() |