Как решить: у объекта 'str' нет атрибута 'data_format' в керасе - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать классификатор, который может классифицировать кошек и собак с помощью керас. Я просто пытаюсь создать тензорные данные из изображений, используя ImageDataGenerator.flow_from_directory () , которые отсортированы и хранятся в каталогах, пути которых указаны в train_path, test_path и т. Д.

Вот мой код:

import numpy as np

import keras

from keras import backend as K

from keras.models import Sequential

from keras.layers import Activation



train_path = 'cats-and-dogs/train' test_path = 'cats-and-dogs/test' valid_path = 'cats-and-dogs/valid'

train_dir = 'cats-and-dogs/' test_dir = 'cats-and-dogs/' valid_dir = 'cats-and-dogs/'



train_batches = ImageDataGenerator.flow_from_directory(train_path, directory=train_dir, target_size=(200,200), classes=['dog','cat'], batch_size=10)

test_batches = ImageDataGenerator.flow_from_directory(test_path, directory=test_dir, target_size=(200,200), classes=['dog','cat'], batch_size=5)

valid_batches = ImageDataGenerator.flow_from_directory(valid_path, directory=valid_dir, target_size=(200,200), classes=['dog','cat'], batch_size=10)

Но я получаю следующую ошибку при использовании Python 3.5:

/ USR / местные / Библиотека / python3.5 / сайт-пакеты / h5py / INIT .py: 36: FutureWarning: преобразование второго аргумента issubdtype из float до np.floating устарело. В дальнейшем это будет лечиться как np.float64 == np.dtype(float).type. из ._conv import register_converters as _register_converters Использование бэкэнда TensorFlow. Traceback (последний вызов был последним): файл "CNNFromScratch.py", строка 29, в train_batches = ImageDataGenerator.flow_from_directory (train_path, directory = train_dir, target_size = (200,200), классы = ['dog', 'cat'], batch_size = 10) Файл "/Usr/local/lib/python3.5/site-packages/keras/preprocessing/image.py", строка 565, в flow_from_directory data_format = self.data_format

AttributeError: у объекта 'str' нет атрибута 'data_format'

Что я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 30 апреля 2018

Метод flow_from_directory из ImageDataGenerator не является статичным. Поэтому сначала вы должны инициализировать экземпляр класса ImageDataGenerator, а затем вызвать этот метод.

Это должно работать:

import numpy as np

import keras

from keras import backend as K

from keras.models import Sequential
from keras.layers import Activation
from keras.preprocessing.image import ImageDataGenerator

train_path = 'cats-and-dogs/train'
test_path = 'cats-and-dogs/test'
valid_path = 'cats-and-dogs/valid'

my_generator = ImageDataGenerator()

train_batches = my_generator.flow_from_directory(directory=train_path, target_size=(200,200), classes=['dog','cat'], batch_size=10)

test_batches = my_generator.flow_from_directory(directory=test_path, target_size=(200,200), classes=['dog','cat'], batch_size=5)

valid_batches = my_generator.flow_from_directory(directory=valid_path, target_size=(200,200), classes=['dog','cat'], batch_size=10)

Проверьте документацию для добавления дополнительных параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...