ImageDataGenerator.flow_from_directory + tf.Data - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь интегрировать ImageDataGenerator.flow_from_directory с tf.Data.from_generator, но возникают некоторые проблемы. Я делаю двоичную классификацию со структурой:

  • dataset / training / IsActive / 1.jpg , 2.jpg, ...
  • набор данных / обучение / NoActive / 1.jpg, 2.jpg, ...

Пока что у меня есть следующий код

train_gen = tf.keras.preprocessing.image.ImageDataGenerator()

train_data_gen = train_gen.flow_from_directory(
    directory='Dataset/training', shuffle=True,
    target_size=(224,224), batch_size=32, class_mode='binary')

train_ds = tf.data.Dataset.from_generator(
    lambda: train_data_gen,
    output_types=(tf.float32, tf.float32),
    output_shapes = ([32,224,224,3],
                     [32,2]))

## results: Found 600 images belonging to 2 classes.

model = get_model()
model.fit(train_ds, epochs=1)

И я получаю следующую ошибку, как будто не получает метку изображений. Есть идеи, пожалуйста?

InvalidArgumentError: 2 root обнаружены ошибки. (0) Недопустимый аргумент: ValueError: generator дал элемент формы (32,), где ожидался элемент формы (32, 2). Отслеживание (последний вызов последним):

Файл «Anaconda3 \ lib \ site-packages \ tensorflow_core \ python \ ops \ script_ops.py», строка 236, в вызов ret = fun c (* args)

Ожидался файл "Anaconda3 \ lib \ site-packages \ tensorflow_core \ python \ data \ ops \ dataset_ops.py", строка 825, в generator_py_func "формы% s." % (ret_array.shape, expected_shape))

ValueError: generator вернул элемент формы (32,), где ожидался элемент формы (32, 2).

[[[ {{node PyFunc}}]] [[IteratorGetNext]] [[IteratorGetNext / _4]]
(1) Недопустимый аргумент: ValueError: generator дает элемент формы (32,), где элемент формы (32 , 2) было ожидаемо. Отслеживание (последний вызов последним):

Файл «Anaconda3 \ lib \ site-packages \ tensorflow_core \ python \ ops \ script_ops.py», строка 236, в вызов ret = fun c (* args)

Ожидался файл "Anaconda3 \ lib \ site-packages \ tensorflow_core \ python \ data \ ops \ dataset_ops.py", строка 825, в generator_py_func "формы% s." % (ret_array.shape, expected_shape))

ValueError: generator вернул элемент формы (32,), где ожидался элемент формы (32, 2).

[[[ {{node PyFunc}}]] [[IteratorGetNext]] 0 успешных операций. 0 производных ошибок игнорируются. [Op: __ inference_distributed_function_54431]

Стек вызовов функций: Distributed_function -> Distributed_function

...