7

C'è un modo semplice (ad esempio senza modificare il codice ) per caricare wights da più reti preained in una rete? La rete contiene alcuni livelli con le stesse dimensioni e nomi di entrambe le reti preliminari.Più reti preainedate in Caffe

Sto cercando di ottenere questo utilizzando NVidia DIGITS e Caffe.

EDIT: Ho pensato che non sarebbe stato possibile farlo direttamente da CIFRE, come confermato dalle risposte. Qualcuno può suggerire un modo semplice per modificare il codice DIGITS per poter selezionare più reti preassegnate? Ho controllato un po 'il codice e ho pensato che lo training script sarebbe un buon punto di partenza, ma non ho una conoscenza approfondita di Caffe, quindi non sono sicuro di quale sarebbe il modo migliore/più veloce per ottenere questo risultato.

risposta

6

Come suggeriva Shai, non c'era modo di farlo, quindi ho deciso di clonare il repository ufficiale e apportare le modifiche appropriate. Ho modificato il codice in modo che sia possibile caricare più reti preliminari utilizzando i due punti come separatore.

Ho creato una richiesta di pull sul repository ufficiale e le mie modifiche sono state quindi unite al ramo principale di DIGITS, il che significa che ora è possibile utilizzare questa funzionalità in DIGITS.

+0

hai fatto una richiesta simile al deposito BVLC/caffe? – Shai

+0

Puoi farlo con 'caffe' usando il parametro' --weights' che separa le diverse reti con le virgole. –

2

AFAIK non esiste un modo semplice per farlo.
Tuttavia, è possibile utilizzare net surgery per caricare i modelli preained e assegnare manualmente i loro pesi alla rete di destinazione. Una volta che hai una rete singola con tutti i pesi inizializzati in base ai vari modelli preliminari, puoi salvarla e utilizzarla come un unico modello preliminare per il resto del tuo lavoro.

+1

questo è il modo per farlo ... un modello NN è solo un mucchio di pesi, quindi tutto ciò che dovete fare è copiarli e salvarlo. buona fortuna però ... se copi strati da reti diverse, potrebbero non giocare bene insieme. E le cifre sono di alto livello ... dovrai farlo in python o C++ per farlo. – user1269942

+0

C'è un modo semplice per incorporare questo nel codice DIGITS (ho modificato la domanda)? –

+0

@ IgorŠevo se hai intenzione di provare questo trucco molte volte, potresti prendere in considerazione la possibilità di modificare lo script di allenamento di DIGITS. Tuttavia, penso che se lo farai solo una o due volte faresti meglio a farlo manualmente usando "chirurgia della rete". – Shai