如何修复截断的tfrecords for tensorflow?

时间:2016-10-22 05:00:54

标签: tensorflow

我创建了一个大的.tfrecords文件而没有看到任何错误。但是,在训练期间,当TfRecordReader到达.tfrecord文件末尾附近时,我看到错误“在XXXX处截断记录”。如何快速检查.tfrecord文件是否真的损坏了?如果是这样,我如何快速修复文件(可以丢弃最后几个键值对)?

2 个答案:

答案 0 :(得分:0)

该消息意味着它所说的内容 - TFRecord文件似乎意外地在记录的一部分结束。

如果您想了解幕后发生的事情,文件格式非常简单,并在此处记录:https://www.tensorflow.org/versions/r0.11/api_docs/python/python_io.html#tfrecords-format-details

快速检查一下:您正在阅读的文件是TFRecord文件吗?确定总是好的。

很难对TFRecord文件的“损坏程度”给出一个很好的答案---所有读者代码都可以告诉你内部存在不一致的东西。

(你的写作过程是否正确终止并在文件完成时关闭文件?)

如果你想修复文件,最好的办法就是重新生成它。

或者,您可以使用上面链接中记录的阅读器功能读取文件的内容,并将其写入新的TFRecord文件。您将丢失损坏的记录,但您应该能够复制其他所有内容。

答案 1 :(得分:0)

我有一些损坏的图像,部分下载的图像是准确的,但我无法捕捉它们使用: imghdr.What()Image.open().verify()cv2.imread方法。

只有解决方案才有效: Image.open(path/to/image).tobytes()

如果图像损坏,此代码将抛出错误IOError。

希望它可以帮助某人