Ciao Giovanni, grazie per la risposta.
Mi sembrava troppo facile, adesso le cose iniziano a complicarsi un pò con 3 layer, apprendimento con supervisione, etc..
Ok, niente PID allora, sembra interessante però un'implementazione come OCR, soprattutto su FPGA...
Devi considerare che ogni neurone deve calcolare la funzione sigmoide, deve avere (n) registri per memorizzare il valore proveniente da ognuno degli ingressi (16bit) e per memorizzare il valore dei pesi (16bit). Inoltre non può mancare il registro per il settaggio del bias (punto di lavoro) anch'esso a 16bit.
Provate a fare una stima di LE per una rete a 16 ingressi a 32 bit con 8 neuroni nascosti e 4 neuroni d'uscita.
Bit per memorizzare i valori di ingresso: 16*32=512 bit
Bit per memorizzare i valori dei pesi: 16 bit
Bit per il registro per il bias: 16 bit
In tutto sembra che ci vogliano 544 bit per neurone.. facciamo 640 per sicurezza se ci sarà bisogno di altre informazioni o per avere comunque un buon margine.
I neuroni sarebbero 12 quindi servirebbero 7680 bit di memoria.. neanche tantissima, su una Cyclone II EP2C5 ci starebbero in abbondanza solo con la Embedded Memory (117 kbit, volendo c'è anche la M4K RAM da 26 * 4kbit).
Però ho visto che come operazione matematica c'è l'esponenziale, moltiplicazioni tra numero con la virgola, etc.. mi sa che le cose si complicano e non avendo esperienza con queste funzionalità su FPGA per il momento mi trovo in difficoltà a fare una stima di LEs..
Ciao e grazie
PS: Ho trovato un link molto interessante che implementa su un micro AVR il riconoscimento dei caratteri:
http://it.emcelettronica.com/rete-neurale-riconoscimento-dei-caratterihttp://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/s2012/shw46_jec324/shw46_jec324/index.htmlDovrò trovare il tempo per leggerlo ma fino al 20 mi sa che non ce la faccio, sembra comunque che spieghi tante cose..