Ho una directory di immagini e un file separato che corrisponde ai nomi dei file delle immagini alle etichette. Così la directory di immagini ha i file come 'treno/001.jpg' e il file di etichettatura si presenta come:Accesso al nome file dalla coda file in Tensor Flow
train/001.jpg 1
train/002.jpg 2
...
posso facilmente caricare le immagini dalla directory delle immagini in Tensor flusso creando una filequeue dai nomi dei file:
filequeue = tf.train.string_input_producer(filenames)
reader = tf.WholeFileReader()
img = reader.read(filequeue)
Ma non riesco a collegare questi file con le etichette del file di etichettatura. Sembra che ho bisogno di accedere ai nomi dei file all'interno della coda ad ogni passaggio. C'è un modo per ottenerli? Inoltre, una volta ottenuto il nome file, devo essere in grado di cercare l'etichetta codificata dal nome file. Sembra che un dizionario Python standard non funzioni perché questi calcoli devono avvenire in ogni fase del grafico.
Ok, va bene, questo è esattamente ciò di cui avevo bisogno! Non avevo pensato di abbinare i due in python e mischiarlo in anticipo - stavo solo cercando di usare il codice dal tutorial CIFAR che carica il file e poi lo rimescola in seguito. – bschreck
In realtà l'ho appena provato e penso che la mia lista di nomi di file sia troppo grande. Usando questo codice si blocca, ma funziona quando riduco il numero di elementi nella mia lista. Ci sono 87.000 file tra l'altro. – bschreck
Interessante - non dovrebbe bloccarsi, davvero. Hai aumentato il valore di randomshufflequeue max per essere abbastanza grande da gestire il numero di cose che stai inserendo? Devo dire che non ho mai provato una coda casuale casuale così grande. :) Se si desidera salvare la memoria, è possibile riscrivere il file come csv, utilizzare un textlinereader collegato a un decodificatore csv e quindi gettare quelli in una coda, con un queuerunner per mantenerlo in esecuzione. Molto lavoro per solo ~ 1 MB di nomi di file, però. – dga