2017-05-05 4 views
0

Ich habe es schwer, die Ressourcen für diese Transformation zu finden. Ich sehe die Eingabedaten in einem Beispielcode in .pkl-Form, während die Mnist-Dataset in .idx3-ubyte ist. Und die Formate der Daten, die für die Berechnung der Vision verwendet werden, variieren. Ich bin mit keinem der Formate vertraut und würde mich freuen, wenn etwas Licht auf dieses Thema geworfen werden könnte. Vielen Dank.Wie schnell JPG-Datensätze in .pkl für CNN zu transformieren?


Update: Jetzt den Code unter Verwendung ich meine Bilder in .tfrecords Format erfolgreich geladen werden, sondern als ein solches Format für cnn unlesbar scheint, ich bin immer noch versuchen, den Code für PKL-Format zu ändern. Meine Läufe sind jedoch alle fehlgeschlagen.

  cwd='/Users/Downloads/tflearn_train/' 
      classes={'0','1'} #classify into 2 types 
      writer= tf.python_io.TFRecordWriter("train.tfrecords") #file to be produced 

      for index,name in enumerate(classes): 
       class_path=cwd+name+'/' 
       for img_name in os.listdir(class_path): 
        if (not img_name.startswith('.') and img_name != 'Thumbs.db'): 
         img_path=class_path+img_name #the path of every pic 
         img=Image.open(img_path,"r") 
         img= img.resize((224,224)) 
         img_raw=img.tobytes()#transform pic into binary 
         example = tf.train.Example(features=tf.train.Features(feature={ 
          "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])), 
          'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])) 
         })) 
         writer.write(example.SerializeToString()) 
      writer.close() 

Oben funktioniert gut. Aber ich versuchte

setzen
 write_file = open('train.pkl', 'wb') 
     cPickle.dump(example, write_file, -1) 
     cPickle.dump(example.features.feature['label'].int64_list.value, write_file, -1) 
     write_file.close() 

innerhalb und außerhalb der Schleife. Bisher habe ich keine .pkl-Datei gemacht, die wie andere .pkl-Datei aussieht, wenn Sie cPickle.load verwenden

Vielen Dank für jede Eingabe.

Antwort

0

Pickle speichern Informationen über die Struktur der Python-Objekte zusammen mit den Daten. Für einfache Tensoren ist dies wahrscheinlich nicht notwendig.

Der übliche Weg besteht darin, die Daten der Matrizen im Binärformat in eine Datei zu schreiben und sie sofort wieder in den Speicher zu laden. Ich glaube, ".idx3-ubyte", wie es für den MNIST-Zahlen-Datensatz verwendet wird, ist ein solches Beispiel.

Wenn Sie Python und Numpy verwenden, verwenden Sie besser das Numpy-Format .npy, das den Vorgang mit den Funktionen np.load und np.dump ein wenig vereinfacht: https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.load.html.

Wenn Sie eine binäre Datensicherung zu laden, haben einen Blick auf https://docs.scipy.org/doc/numpy/reference/generated/numpy.fromfile.html

+0

Vielen Dank für die Eingabe. Ich habe erfolgreich diese Bilder und Etiketten in .tfrecords Form geladen, aber ich kann keinen Code finden, der Datei in einem solchen Format lädt, um ein cnn zu trainieren. –

+0

Angenommen tf steht für Tensorflow, habe ich keine Erfahrung damit, sorry. – pixelou

Verwandte Themen