#python #tensorflow #keras #python-imaging-library #google-colaboratory
#python #тензорный поток #keras #python-imaging-library #google-colaboratory
Вопрос:
Мой первый пост SO, поэтому, пожалуйста, будьте любезны 😉
Я пытаюсь отладить ошибку в Google Colab, возникшую при обучении модели классификации изображений Tensorflow Keras на больших обучающих наборах данных (5 папок с 5000 изображениями в папке), поэтому я не могу найти изображения вручную (хотя я уже удалил все изображения без ext или с неподдерживаемыми ext).
Я предполагаю, что один или некоторые файлы изображений повреждены и хотят найти, какие из них вызывают подобные ошибки: UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f66303c9888>.
Я добавил строки в утилиты.py чтобы напечатать путь к файлу вместо приведенного выше бита BytesIO, используя советы отсюда, загрузил файл в Colab и скопировал его в библиотеку Colab Keras в начале моего кода, используя команды ниже, и все равно получаю тот же результат. Есть ли какой-нибудь трюк для изменения предварительно загруженных библиотек Colab, которые мне не хватает? Любые другие идеи о том, как я могу узнать, какие файлы выдают UnidentifiedImageError?
!rm "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py"
!mv "/content/utils.py" "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py"
Полная трассировка стека, которая привела меня к изменению utils.py файл (я также пытался изменить Image.py и ему не повезло):
Training attempt number: 016, for 5 epochs
Epoch 1/5
9/141 [>.............................] - ETA: 1:11:07 - loss: 124759892186628096.0000 - accuracy: 0.2361
---------------------------------------------------------------------------
UnknownError Traceback (most recent call last)
<ipython-input-9-8dc7f89bc1ac> in <module>()
28 callbacks=[ckpt_callback],
29 validation_data=test_generator,
---> 30 validation_steps=test_steps).history
31
32 # Save trained model
8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60 inputs, attrs, num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
UnknownError: 2 root error(s) found.
(0) Unknown: UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f80d4153410>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/script_ops.py", line 244, in __call__
ret = func(*args)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py", line 302, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/data/ops/dataset_ops.py", line 827, in generator_py_func
values = next(generator_state.get_iterator(iterator_id))
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py", line 814, in wrapped_generator
for data in generator_fn():
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py", line 940, in generator_fn
yield x[i]
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/iterator.py", line 65, in __getitem__
return self._get_batches_of_transformed_samples(index_array)
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/iterator.py", line 230, in _get_batches_of_transformed_samples
interpolation=self.interpolation)
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py", line 114, in load_img
fp.write(f_data)
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 2862, in open
"cannot identify image file %r" % (filename if filename else fp)
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f80d4153410>
[[{{node PyFunc}}]]
[[IteratorGetNext]]
[[categorical_crossentropy/softmax_cross_entropy_with_logits/Shape_2/_12]]
(1) Unknown: UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f80d4153410>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/script_ops.py", line 244, in __call__
ret = func(*args)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py", line 302, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/data/ops/dataset_ops.py", line 827, in generator_py_func
values = next(generator_state.get_iterator(iterator_id))
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py", line 814, in wrapped_generator
for data in generator_fn():
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py", line 940, in generator_fn
yield x[i]
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/iterator.py", line 65, in __getitem__
return self._get_batches_of_transformed_samples(index_array)
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/iterator.py", line 230, in _get_batches_of_transformed_samples
interpolation=self.interpolation)
File "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py", line 114, in load_img
fp.write(f_data)
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 2862, in open
"cannot identify image file %r" % (filename if filename else fp)
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f80d4153410>
[[{{node PyFunc}}]]
[[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_train_function_1999]
Function call stack:
train_function -> train_function
Комментарии:
1. Похоже, вы пытаетесь передать буфер в памяти, то есть
BytesIO
объект, функции, которая ожидает просто путь к некоторому файлу (вероятно, в виде строки). Но это может быть просто вводящее в заблуждение сообщение…2. Что может вызвать это? Я знаю, что этот код работает, когда все изображения «нормальные», поскольку я использовал его для многих других проектов на сегодняшний день, где каждый раз все библиотеки одинаковы, и единственными изменениями являются параметры набора данных и обучения.