|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
[python]Rete neuronale semplice
ho provato a creare una semplice rete che possa riconoscere una lettera d'alfabeto, scritta in una matrice di 9x7.
Ecco il codice: Codice PHP:
perché i pesi sono troppo grandi.. grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2285
|
li hai calcolati correttamente i pesi?
edit: i pesi van calcolati così Wij= (1/M)* Σ (Xi*Xj) con M: num pattern da memorizzare i,j indici da 1 a num neuroni
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante... Ultima modifica di -MiStO- : 01-09-2008 alle 00:42. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
io i nuovi pesi li calcolavo cosi:
wnew = wold + alfa*target*x con m cosa intendi nel mio caso? poi non capisco...xké Xi*Xj? |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2285
|
Quote:
(tra l'altro magari questo tipo di reti potrebbe esserti utile se quello che ti serve è un riconoscimento di pattern prefissati,prova a darci un occhiata) spe provo a leggere un attimo il tuo codice vediamo cosa ne esce
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante... |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ho visto un attimo hopfield, e mi pare sia proprio il tipo di rete per riconoscere un'immagine mio caso una lettera).
Io sto leggendo il libro "Fausett Fundamentals of Neural Networks-Architectures Algorithms Applications", e sono al secondo capitolo, dove fanno appunto un esempio di rete per riconoscere una lettera, e ho provato a creare il codice e provare (senza grandi risultati). Vorrei appunto creare una rete semplice che possa riconoscere una lettera (disegnata su una matrice 9x7). Come faccio a sapere che tipo di rete usare? devo conoscerle tutte e sapere le loro caratteristiche? grazie |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2285
|
Quote:
per le reti in generale, ti dico quello che ho imparato io seguendo un corso all'università l'anno scorso: per problemi legati a classificazione si usano reti semplici o mutlilayer(a seconda che il problema sia linearmente separabile o meno), come riconoscimento pattern / memorie associative si usa hopfield. comunque sono soggettive sia l'architettura che la scelta dei pesi che la soglia, si prova finchè non si ha un risultato accettabile
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante... |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Premetto dicendo che non ho visto tutto il codice, ma stai attento ad alcune cose
Prima di tutto: 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;
facendo così avrai il problema delle referenze condivise 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
print a
print w
a.append(1)
print a
print w
Codice:
[0, 0, 0, 0, 0, 0, 0] [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]] [0, 0, 0, 0, 0, 0, 0, 1] [[0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1]] Inoltre il codice sembra poco pythonic Un Codice:
lista = [ [0]*7 ]*9
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
Quote:
cosa intendi con referenze condivise? io all'inizio creo solo una matrice 9x7 con gli zeri, che sono i pesi. Nel libro non cé un esempio di codice, ma dicono: y_in = b + somma(XiWi) y = 1 se y_in > soglia, 0 se tra il meno soglia e la soglia, -1 se é minore del meno soglia e i pesi vengono calcolati come ho postato |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
se qualcuno ha un esempio migliore da postare (anche in C, C++, VisualBasic,ecc) lo faccia pure
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Visto che non hai ricevuto altre risposto, faccio io velocemente per quel che mi compete.
Perché "il punto e virgola è il MALE". In Python le istruzioni sono delimitate dal newline non dal punto e virgola. Quest'ultimo lo puoi usare se vuoi mettere più istruzioni sulla stessa riga, ma non è "pythonic", e men che meno lasciarne uno alla fine di un'istruzionne. Quote:
Codice:
>>> l = [1, 2, 3, 4] >>> m = [l, l, l, l] >>> m [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] >>> m[1][2] = 'SPAM!' >>> m [[1, 2, 'SPAM!', 4], [1, 2, 'SPAM!', 4], [1, 2, 'SPAM!', 4], [1, 2, 'SPAM!', 4]] >>> l [1, 2, 'SPAM!', 4] Nel tuo caso mi pare che tu non debba usare riferimenti, ma lavorare con matrici come faresti con altri linguaggi di programmazione, quindi evita di "riciclare" una lista e creane sempre una nuova, anche se identica a un'altra. P.S. Per adesso smanetta pure con le liste. Se ti servirà una matrice più efficienti in spazio e velocità poi potrai usare la classe Array del rispettivo modulo, ma... adesso è PREMATURO!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
Quote:
quindi questa parte é sempre sbagliata? for i in range(9): for i2 in range(7): w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2] poi anche quando uso t3.... aiuto!!! sempre piu problemi:P |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
La parte sbagliata è l'inizializzazione e "nico" t'aveva già suggerito la soluzione:
Codice:
w = [ [0]*7 ]*9
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ok!quello l'ho fatto..ma anke in seguito ho sbagliato? quando dichiaro
t3 = [1,-1,-1,-1,-1,-1,-1] e poi lo uso cosi: 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]] e quando faccio cosi?: for i in range(9): for i2 in range(7): w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2] grazie per la pazienza:P |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Se, come sembra, usi la matrice x1 a sola lettura, allora puoi avere tutti i riferimenti che vuoi: non succede nulla (anzi, risparmi memoria
La regoletta che devi usare è la seguente: se devi modificare gli elementi di una lista, generalmente è meglio non usare riferimenti. Per questo motivo io preferisco utilizzare le tuple quando ho "liste" a sola lettura (potendo usare tutti i riferimenti che voglio), e liste quando devo poterle modificare. Tornando al tuo programma, w la definirei come lista SENZA riferimenti, mentre le altre sequenze immodificabili li definirei come tuple: Codice:
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)) P.S. Non ti preoccupare: chiedi pure. Nel limite del possibile proviamo a risponderti, ma non garantiamo sui tempi di risposta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ah ok. Ma quindi qnd pero cambio i valori, quindi nn uso un tuple, come faccio?
cosi é sbagliato?: for i in range(9): for i2 in range(7): w[i][i2] = w[i][i2] + alfa*t2*x1[i][i2] grazie |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Così va benissimo se w l'hai creato e inizializzato come detto in precedenza.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ok.
pero qlc non funziona xké non da i risultati esatti. Come imposto alfa? e la soglia? |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Questo non lo so: non mi sono mai occupato di reti neurali.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
eheh....ah ok:P
allora kiedo a ki lo sa |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
...nessuno lo sa???
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:39.












facendo così avrai il problema delle referenze condivise








