Запись TF повреждена после нескольких успешных тренировочных эпох

Я тренировал нейронную сеть и успешно изучил все тренировочные данные за несколько эпох. Однако произошедшая ошибка tfrecord неожиданно вышла следующим образом:

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 = []

Мне интересно, почему файл данных был поврежден и как я могу сохранить целостность файла данных.

2 ответа

Вы должны сделать чистую копию вашего tfrecord файлы. Всякий раз, когда ваша рабочая копия будет повреждена, замените ее из чистой копии. dataLoss Ошибка, по-видимому, является результатом нескольких чтений одной и той же записи, а также зависит от диска.

Если кто-то сталкивается с этой проблемой, у меня сработал приведенный выше ответ @nwoye-cid плюс ссылка ниже, чтобы установить все правильно.
Кроме того, перезапустите ядро ​​с нуля, если ничего не работает, переходите только к другим решениям.
Ссылка!

Другие вопросы по тегам