Ho una rete neurale con l'architettura 1024, 512, 256, 1
(il livello di input ha 1024
unità, il livello di output ha l'unità 1
, ecc.). Vorrei addestrare questa rete utilizzando uno degli algoritmi di ottimizzazione in scipy.optimize
.Gestione dei problemi di memoria nella rete con molti pesi
Il problema è che questi algoritmi si aspettano che i parametri di funzione vengano dati in un vettore; questo significa che, nel mio caso, devo srotolare tutti i pesi in un vettore di lunghezza
1024*512 + 512*256 + 256*1 = 655616
Alcuni algoritmi (come fmin_bfgs
) hanno bisogno di utilizzare matrici di identità, in modo da effettuare una chiamata come
I = numpy.eye(655616)
che, non molto sorprendentemente, produce un MemoryError
. C'è modo per me di evitare di dover srotolare tutti i pesi in un unico vettore, a meno di adattare gli algoritmi in scipy.optimize
alle mie esigenze?
Wow, ci sono molti pesi per adattarsi. (+1) – NPE
@NPE Devo ammettere che non so davvero cosa sto facendo. Mi sto allenando su immagini di dimensioni '32x32'. Devo rendere le immagini ancora più piccole? –
Poi ancora, riducendo la dimensione delle immagini a '16x16' e usando l'architettura' 256, 128, 1', avrei ancora avuto e srotolato il vettore di peso di lunghezza '32896'. –