3

我正在训练一个神经网络,并成功地运行了几个 epoch 的所有训练数据。但是,tfrecord corrupted 错误突然出现如下:

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/lib/io/tf_record.py", line 77, in tf_record_iterator
  reader.GetNext(status)
File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
  self.gen.next()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
  pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.DataLossError: corrupted record at 106241330

我再次检查了数据文件,并且该行确实已损坏。但是在我运行训练代码之前数据是完整的,我只是通过以下代码读取数据:

batch_data = []
record_iterator = tf.python_io.tf_record_iterator(path=file, options=options)
for string_record in record_iterator:
  example = tf.train.Example()
  example.ParseFromString(string_record)
  data = generate_data_from_record(example) # record parsing code
  batch_data.append(data)
  if len(batch_data) == batch_size:
    yield batch_data
    batch_data = []

我想知道为什么数据文件已损坏以及如何保持数据文件的完整性。

4

2 回答 2

0

如果有人遇到这个问题,@nwoye-cid 的上述回答对我有用,加上下面的链接可以正确安装所有东西。
此外,如果没有任何效果,请从头开始重新启动内核,然后只使用其他解决方案。
链接

于 2021-09-14T22:27:59.157 回答
0

您应该制作一个干净的tfrecord文件副本。每当您的工作副本损坏时,请从干净副本中替换。该dataLoss错误似乎是由于多次读取同一记录而导致的,并且还取决于磁盘。

于 2019-03-08T14:59:34.293 回答