Исключение Kears fit_generator: выход генератора должен быть кортежем (x, y, sample_weight) или (x, y). Найдено:

Я пытаюсь построить autoencoder для не MNIST, не Imagenet данных. Использование https://blog.keras.io/building-autoencoders-in-keras.html в качестве моей базы. Однако я получаю следующую ошибку.

**Exception: output of generator should be a tuple (x, y, sample_weight) or (x, y). Found: [[[[ 0.86666673 0.86666673 0.86666673 ..., 0.62352943 0.627451 0.63137257] [ 0.86666673 0.86666673 0.86666673 ..., 0.63137257 0.627451 0.627451 ] [ 0.86666673 0.86666673 0.86666673 ..., 0.63137257 0.627451 0.62352943] ...,** 

Так как это автокодер, в моем datagenerator используется режим класса = Нет. Мой код выглядит следующим образом.

 from keras.layers import Input, Dense, Convolution2D, MaxPooling2D, UpSampling2D,Activation, Dropout, Flatten from keras.models import Model,Sequential from keras.preprocessing.image import ImageDataGenerator import numpy as np import os import h5py img_width=140 img_height=140 train_data_dir=r'SitePhotos\train' valid_data_dir=r'SitePhotos\validation' input_img = Input(batch_shape=(32,3, img_width, img_width)) x = Convolution2D(16, 3, 3, activation='relu', border_mode='same')(input_img) x = MaxPooling2D((2, 2), border_mode='same')(x) x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x) x = MaxPooling2D((2, 2), border_mode='same')(x) x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x) encoded = MaxPooling2D((2, 2), border_mode='same')(x) # at this point the representation is (8, 4, 4) ie 128-dimensional x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(encoded) x = UpSampling2D((2, 2))(x) x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x) x = UpSampling2D((2, 2))(x) x = Convolution2D(16, 3, 3, activation='relu')(x) x = UpSampling2D((2, 2))(x) decoded = Convolution2D(1, 3, 3, activation='sigmoid', border_mode='same')(x) autoencoder = Model(input_img, decoded) autoencoder.compile(optimizer='adadelta', loss='mse') valid_datagen = ImageDataGenerator(rescale=1./255) train_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( train_data_dir, target_size=(img_width, img_height), batch_size=32, class_mode=None, shuffle=True) valid_generator = valid_datagen.flow_from_directory( valid_data_dir, target_size=(img_width, img_height), batch_size=32, class_mode=None, shuffle=True) autoencoder.fit_generator(train_generator, nb_epoch=50, validation_data=valid_generator, samples_per_epoch=113, nb_val_samples=32 ) 

One Solution collect form web for “Исключение Kears fit_generator: выход генератора должен быть кортежем (x, y, sample_weight) или (x, y). Найдено:”

Реальное решение лежит в этой проблеме Keras, по-видимому, на @skottapa.

https://github.com/fchollet/keras/issues/4260

rodgzilla предоставил обновленный ImageDataGenerator, который добавляет class_mode = 'input', который решает проблему.

Приятно, что вы можете выполнить резервное копирование модификации в более старые версии Keras. Немного модифицированный модуль изображения можно скачать здесь:

https://gist.github.com/gsdefender/293db0987a800cf1b103b7777966f8af

  • Импорт keras.datasets не работает
  • Keras | Как запустить пример Inception v3
  • Как обновить веса в керах для обучения усилению?
  • Распределение времени по расписанию против TimeDistributedDense Keras
  • Где я могу назвать функцию BatchNormalization в Keras?
  • Как нормализация данных работает в керах во время предсказания?
  • Сбросить вес в слое Keras
  • Как реализовать потерю триплета в Keras?
  • Python - лучший язык программирования в мире.