Объект 'ImageDataGenerator' не имеет атрибута 'image_data_generator' - PullRequest
0 голосов
/ 01 мая 2018

Я попытался перенести обучение, а затем я получил ошибку «без атрибута« image_data_generator »». Что означает эта ошибка?

Вы можете воспроизвести мою ошибку следующим образом.

* Шаги для воспроизведения

$ cd /tmp
$ git clone --branch no-attribute-error https://github.com/y-zono/btc-bch-ml.git
$ cd btc-bch-ml
$ docker build -t model-builder .
$ docker run -v /tmp/btc-bch-ml/docker:/docker -d -it model-builder
$ docker exec -it CONTAINER_ID /bin/bash
# cd /docker
# python3 ./train-predict.py

Traceback (most recent call last):
  File "./train-predict.py", line 62, in <module>
    history = model.fit_generator(img_itr_train, steps_per_epoch=steps_per_epoch, epochs=n_epoch)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/_impl/keras/engine/training.py", line 1598, in fit_generator
    initial_epoch=initial_epoch)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/_impl/keras/engine/training_generator.py", line 162, in fit_generator
    generator_output = next(output_generator)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/_impl/keras/utils/data_utils.py", line 613, in get
    six.raise_from(StopIteration(e), e)
  File "<string>", line 3, in raise_from
StopIteration: 'ImageDataGenerator' object has no attribute 'image_data_generator'

* Примечания

Версия Tensorflow - "tenorflow-1.8.0"

Я разместил весь свой код и данные тренировок в github.

https://github.com/y-zono/btc-bch-ml/blob/no-attribute-error/docker/train-predict.py#L62

Ответы [ 4 ]

0 голосов
/ 19 мая 2019

У меня была такая же проблема с tenorflow-1.8.0. Самый быстрый способ - создать пустой класс, содержащий вашу функцию предварительной обработки, и передать его объекту image_data_generator экземпляра ImageDataGenerator:

def preprocess_input(im_array):
    return im_array/255-.5

class foo(object):
    pass

imgen = ImageDataGenerator(preprocessing_function='pass anything')

imgen.image_data_generator = foo
imgen.image_data_generator.preprocessing_function = preprocess_input

flowgen = imgen.flow_from_directory('/tmp/training_folder/') 

flowgen.__getitem__(0)[0] #check result

Еще одно решение - исправить исходный код в tensorflow/python/keras/_impl/keras/preprocessing/image.py, удалив image_data_generator строку 672

0 голосов
/ 11 мая 2018

Я думаю, у меня есть решение вашей проблемы. Эта проблема возникает из-за одного из оператора импорта. Я предлагаю вам заменить

from tensorflow.python.keras.applications.resnet50 import preprocess_input

до

from keras.preprocessing.image import ImageDataGenerator

Это сработало, когда я попробовал. Дайте мне знать, если у вас все еще есть проблемы.

0 голосов
/ 27 июня 2018

При использовании tenorflow1.8 я получил ту же ошибку. Если вы удалите функцию предварительной обработки, переданную ImageDatagenerator, ваш код будет работать, однако вам придется предварительно обрабатывать изображения другими способами.

0 голосов
/ 08 мая 2018

Изменение

idg_train = ImageDataGenerator(rescale=1/255., 
    shear_range=0.1,
    zoom_range=0.1,
    horizontal_flip=True,
    preprocessing_function=preprocess_input)

до

idg_train = ImageDataGenerator(rescale=1/255., 
    shear_range=0.1, 
    zoom_range=0.1, 
    horizontal_flip=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...