2016-10-22 1 views
0

Ich habe eine große .tfrecords-Datei erstellt, ohne einen Fehler zu sehen. Während des Trainings habe ich jedoch den Fehler "trunked record at XXXX" gesehen, als der TfRecordReader ungefähr am Ende der .tfrecord-Datei angekommen ist. Wie kann ich schnell überprüfen, ob die .tfrecord-Datei wirklich beschädigt ist? Wenn ja, wie kann ich die Datei schnell reparieren? (Es ist in Ordnung, die letzten paar Schlüssel-Wert-Paare zu verwerfen)?Wie abgeschnittene tfrecords für Tensorflow zu beheben?

Antwort

0

Die Nachricht bedeutet, was es sagt --- die TFRecord-Datei scheint unerwartet teilweise durch einen Datensatz zu enden.

Wenn Sie verstehen wollen, was unter der Haube vor sich geht, ist das Dateiformat ganz einfach und wird hier dokumentiert: https://www.tensorflow.org/versions/r0.11/api_docs/python/python_io.html#tfrecords-format-details

Eine schnelle Sache zu überprüfen: ist die Datei, die Sie wirklich Datei zu lesen sind ein TFRecord? Es ist immer gut, sicher zu sein.

Es ist schwer, eine gute Antwort darauf zu geben, wie "beschädigt" eine TFRecord-Datei ist --- der ganze Code des Lesers kann Ihnen sagen, dass etwas inkonsistent ist.

(Haben Ihren Schreibprozess die Datei beenden, wenn es fertig ist? Richtig und schließen)

Wenn Sie die Datei reparieren wollen, wahrscheinlich die beste Wahl, es zu regenerieren ist.

Alternativ können Sie den Inhalt der Datei mit den im obigen Link dokumentierten Reader-Funktionen einlesen und in eine neue TFRecord-Datei schreiben. Sie werden die beschädigten Datensätze verlieren, aber Sie sollten in der Lage sein, alles andere zu kopieren.

0

Ich hatte einige beschädigte Bilder, teilweise heruntergeladenen Bilder um genau zu sein, aber ich konnte sie nicht mit fangen: imghdr.What(), Image.open().verify() oder cv2.imread Methoden.

Nur Lösung gearbeitet, ist dies: Image.open(path/to/image).tobytes()

dieser Code Fehler IOError werfen, wenn das Bild beschädigt ist.

hoffe, es hilft jemandem

Verwandte Themen