$te
31-08-2008, 23:29
ho provato a creare una semplice rete che possa riconoscere una lettera d'alfabeto, scritta in una matrice di 9x7.
Ecco il codice:
a = range(7)
w = [a,a,a,a,a,a,a,a,a]
for i in range(9):
for i2 in range(7):
w[i][i2]= 0;
alfa = 0.09
soglia = 1
t2 = 1
b = 0
t3 = [1,-1,-1,-1,-1,-1,-1]
x1 = [[-1,-1,1,1,1,1,1], [-1,1,-1,-1,-1,-1,1], t3,t3,t3,t3,t3,[-1,1,-1,-1,-1,-1,1], [-1,-1,1,1,1,1,-1]]
x2 = [[-1,-1,1,1,1,-1,-1], [-1,1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1], [-1,-1,1,1,1,-1,-1]]
x3 = [[-1,-1,1,1,1,-1,1], [-1,1,-1,-1,-1,1,1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1], [-1,-1,1,1,1,-1,-1]]
x4 = [[-1,1,1,1,1,-1,-1], [1,-1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [1,-1,-1,-1,-1,1,-1], [-1,1,1,1,1,1,-1]]
x5 = [[-1,1,1,1,1,-1,-1], [1,-1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [1,-1,-1,-1,-1,1,-1], [-1,1,1,1,1,1,-1]]
x11 = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
x12 = [[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1],[-1,1,-1,-1,1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,1,-1,-1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,-1,-1,1,-1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,-1,1]]
x13 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x14 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x15 = [[-1,-1,-1,1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x16 = [[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x17 = [[-1,-1,-1,-1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x21 = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
x22 = [[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1],[-1,1,-1,-1,1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,1,-1,-1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,-1,-1,1,-1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,-1,1]]
x23 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x24 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x25 = [[-1,-1,-1,1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x26 = [[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x27 = [[-1,-1,-1,-1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x=[x1,x2,x3,x4]
xx=[x11,x12, x13,x14, x15, x16, x17, x21,x22,x23,x24,x25,x26,x27]
for x1 in x:
y=0
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y = 1
if -soglia<= y <= soglia:
y = 0
if y < -soglia:
y = -1
if y != 1:
for i in range(9):
for i2 in range(7):
w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2]
b = b + alfa*t2
print w[i][i2]
for x1 in xx:
y=0
t2 = -1
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y = 1
if -soglia<= y <= soglia:
y = 0
if y < -soglia:
y = -1
if y != 1:
for i in range(9):
for i2 in range(7):
w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2]
b = b + alfa*t2
print "ecco",w[i][i2]
test = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
y=0
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y2 = 1
if -soglia<= y <= soglia:
y2 = 0
if y < -soglia:
y2 = -1
print "SI:",y, y2
y=0
for i in range(9):
for i2 in range(7):
y = y + test[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y2 = 1
if -soglia<= y <= soglia:
y2 = 0
if y < -soglia:
y2 = -1
print "NO:",y, y2
Dove sbaglio???
perché i pesi sono troppo grandi..
grazie
Ecco il codice:
a = range(7)
w = [a,a,a,a,a,a,a,a,a]
for i in range(9):
for i2 in range(7):
w[i][i2]= 0;
alfa = 0.09
soglia = 1
t2 = 1
b = 0
t3 = [1,-1,-1,-1,-1,-1,-1]
x1 = [[-1,-1,1,1,1,1,1], [-1,1,-1,-1,-1,-1,1], t3,t3,t3,t3,t3,[-1,1,-1,-1,-1,-1,1], [-1,-1,1,1,1,1,-1]]
x2 = [[-1,-1,1,1,1,-1,-1], [-1,1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1], [-1,-1,1,1,1,-1,-1]]
x3 = [[-1,-1,1,1,1,-1,1], [-1,1,-1,-1,-1,1,1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1], [-1,-1,1,1,1,-1,-1]]
x4 = [[-1,1,1,1,1,-1,-1], [1,-1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [1,-1,-1,-1,-1,1,-1], [-1,1,1,1,1,1,-1]]
x5 = [[-1,1,1,1,1,-1,-1], [1,-1,-1,-1,-1,1,-1],[1,-1,-1,-1,-1,-1,1], t3, t3, t3, [1,-1,-1,-1,-1,-1,1], [1,-1,-1,-1,-1,1,-1], [-1,1,1,1,1,1,-1]]
x11 = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
x12 = [[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1],[-1,1,-1,-1,1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,1,-1,-1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,-1,-1,1,-1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,-1,1]]
x13 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x14 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x15 = [[-1,-1,-1,1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x16 = [[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x17 = [[-1,-1,-1,-1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x21 = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
x22 = [[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,1,-1],[-1,1,-1,-1,1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,1,-1,-1,-1,-1], [-1,1,-1,1,-1,-1,-1], [-1,1,-1,-1,1,-1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,-1,1]]
x23 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x24 = [[1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,1,1,1,1,-1], [-1,1,-1,-1,-1,-1,1],[-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [-1,1,-1,-1,-1,-1,1], [1,1,1,1,1,1,-1]]
x25 = [[-1,-1,-1,1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x26 = [[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x27 = [[-1,-1,-1,-1,1,1,1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1],[-1,-1,-1,-1,-1,1,-1], [-1,-1,-1,-1,-1,1,-1], [-1,1,-1,-1,-1,1,-1],[-1,-1,1,1,1,-1,-1]]
x=[x1,x2,x3,x4]
xx=[x11,x12, x13,x14, x15, x16, x17, x21,x22,x23,x24,x25,x26,x27]
for x1 in x:
y=0
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y = 1
if -soglia<= y <= soglia:
y = 0
if y < -soglia:
y = -1
if y != 1:
for i in range(9):
for i2 in range(7):
w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2]
b = b + alfa*t2
print w[i][i2]
for x1 in xx:
y=0
t2 = -1
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y = 1
if -soglia<= y <= soglia:
y = 0
if y < -soglia:
y = -1
if y != 1:
for i in range(9):
for i2 in range(7):
w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2]
b = b + alfa*t2
print "ecco",w[i][i2]
test = [[1,-1,-1,-1,-1,1,-1], [1,-1,-1,-1,1,-1,-1],[1,-1,-1,1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,1,-1,-1,-1,-1,-1], [1,-1,1,-1,-1,-1,-1], [1,-1,-1,1,-1,-1,-1], [1,-1,-1,-1,1,-1,-1], [1,-1,-1,-1,-1,1,-1]]
y=0
for i in range(9):
for i2 in range(7):
y = y + x1[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y2 = 1
if -soglia<= y <= soglia:
y2 = 0
if y < -soglia:
y2 = -1
print "SI:",y, y2
y=0
for i in range(9):
for i2 in range(7):
y = y + test[i][i2]*w[i][i2]
y = y + b
if y > soglia:
y2 = 1
if -soglia<= y <= soglia:
y2 = 0
if y < -soglia:
y2 = -1
print "NO:",y, y2
Dove sbaglio???
perché i pesi sono troppo grandi..
grazie