La mia comprensione è che è buona norma mescolare i campioni di addestramento per ogni epoca in modo che ogni mini batch contenga un campione casuale di tutto il set di dati. Se converto tutto il mio set di dati in un singolo file contenente TFRecords, come si può ottenere questo shuffling prima di caricare l'intero set di dati? La mia comprensione è che non esiste un accesso casuale efficiente ai file TFRecord. Quindi, per essere precisi, sto cercando una guida su come i file TFRecord sono usati in questo scenario.TFRecords e record shuffling
risposta
Non è - è possibile migliorare la miscelazione in qualche modo suddividendo il proprio input in più file di dati di input e quindi trattandoli as explained in this answer.
Se hai bisogno di qualcosa di simile a "perfetto" mescolamento, dovresti leggerlo in memoria, ma in pratica per la maggior parte delle cose, probabilmente otterrai un "misero abbastanza" rimescolamento semplicemente dividendo in 100 o 1000 file e quindi utilizzando una coda shuffle che è abbastanza grande da contenere 8-16 file di dati.
Ho un prurito nella parte posteriore della mia testa per scrivere una coda casuale casuale shuffle che può versare su disco, ma è molto bassa sul mio elenco di priorità - se qualcuno volesse contribuire con uno, mi sto volontario per rivedere esso. :)
Come va il prurito? +1 – TimZaman
In realtà ora non devi preoccuparti di mischiare prima di salvare su TFRecords. È perché (attualmente) il metodo consigliato per leggere TFRecords utilizza tf.data.TFRecordDataset
che implementa il metodo .shuffle()
.
In realtà, non sono sicuro che sia vero. Il metodo shuffle() che descrivi fornisce solo casualità locale (attraverso la capacità della coda), e non attraverso l'intero record. – ezfn
Non ho mai detto che usa l'intero set di dati. Ma anche questo non significa che lo shuffling basato sulla coda non sia abbastanza per fornire la casualità necessaria. Ho visto che è stato utilizzato in poche implementazioni, puoi dare un'occhiata ad es. tensore tensor2tensor in cui viene utilizzato questo metodo. – bartgras
- 1. Perché questo algoritmo di shuffling è sbagliato?
- 2. Shuffling Gamma in Scala è Odd
- 3. Rails record duplicazione record e salvataggio errore
- 4. shuffling di un elenco con restrizioni in Python
- 5. Shuffling Array allo stesso modo, in base al numero
- 6. Record tablet e audio
- 7. Codice Java/Scala puro per scrivere il file di dati TFRecords Tensorflow
- 8. Come inserire un record con LINQ e C# e restituire la chiave primaria di quel record
- 9. Record di record ADODB come record di accesso RecordSource
- 10. Entity Framework e soft record cancellati
- 11. MongoDB mongorestore e raccolta esistente con record
- 12. Mappe e record di uguaglianza in Clojure
- 13. SQL - Clonare un record e suoi discendenti
- 14. Haskell record syntax e type classes
- 15. Rubino Object # avvisi id e Active Record
- 16. Android record square video e concat
- 17. In che modo lo shuffling casuale nell'ordinamento rapido aiuta ad aumentare l'efficienza del codice?
- 18. di ordinamento e uscita record con SAS e R
- 19. Confrontando record a record precedente in PostgreSQL
- 20. Factory Girl: come associare un record a un altro record senza creare un nuovo record?
- 21. Aggiunta di record a una serie record di NumPy
- 22. Ricerca di record con due record specifici in un'altra tabella
- 23. Inserimento di record in blocco nella tabella dei record attivi
- 24. Selezionare ogni record dalla tabella senza ripetere lo stesso record
- 25. Come trovare i record che mancano i record associati in has_many attraverso l'associazione con Active Record?
- 26. Trovare lacune (record mancanti) nei record del database utilizzando SQL
- 27. record di codice attivo record dove, o dove?
- 28. INSERISCI più record utilizzando ruby on rails record attivo
- 29. Eredita record F #
- 30. Escludere record attivo impostato da un altro set di record?
C'è 'shuffle_batch' che utilizza' RandomShuffleQueue'. Mescola la parte buffer del set di dati, questa domanda ha maggiori dettagli - http://stackoverflow.com/questions/33715728/using-queues-to-uniformly-sample-from-multiple-input-files –
Questo è un utile post ma la soluzione che propone carica ancora l'intero set di dati: sembra che il problema sia quello di assicurarsi che le classi siano ugualmente rappresentate in un mini-batch. Se non è pratico caricare l'intero set di dati, sembra che l'approccio migliore sia semplicemente mantenere code di nomi di file e caricare singole istanze (forse con molti thread che si inseriscono in una coda). In questo scenario, TFRecord non sembra fornire molto valore. – bobw