2016-05-28 2 views
3

Мне нужна помощь, чтобы исправить этот код для простого автокодера в Keras. Я пытался добавить некоторую предварительную обработку изображения для учебника autoencoder в блоге Keras. Это то, что я сделалImageDataGenerator error

input_image = Input(shape=(1,256,256,)) 
flattened = Flatten()(input_image) 
encoded = Dense(128,activation='relu',name='Dense1')(flattened) 
decoded = Dense(256*256, activation='sigmoid',name='Dense2')(encoded) 
output_image = Reshape((1,256,256,))(decoded) 
autoencoder = Model(input_image,output_image) 
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy') 

datagen = ImageDataGenerator(
    rotation_range=20, 
    width_shift_range=0.2, 
    height_shift_range=0.2, 
    horizontal_flip=True) 

autoencoder.fit_generator(datagen.flow(train_imgs, train_imgs, 
      batch_size=32), 
      samples_per_epoch=train_imgs.shape[0], 
      nb_epoch=50, 
      validation_data=(test_imgs,test_imgs)) 

train_imgs имеет форму (1000,256,256), где 1000 это количество обучающих выборок. test_imgs имеет форму (50, 256, 256).

Это ошибка я получил

Исключение: Выходной сигнал генератора должен быть кортеж (х, у, sample_weight) или (х, у). Найдено: Нет

Это было поднято функцией fit_generator.

ответ

-1

Я думаю, что вы забыли установить модель данных. Пожалуйста, добавьте datagen.fit(train_imgs) до autoencoder.fit_generator и попробуйте обучить вашу модель.

+0

Это не так. Получите ту же ошибку. – user2775878

4

Фигурируйте эту штуку самостоятельно. Оказывается, что ImageDataGenerator предполагает, что вход имеет форму (number_of_samples, number_of_channels, width, height). Реорганизация train_imgs и test_imgs сделали трюк. Я изменил код в вопросе, чтобы включить это дополнительное измерение.

0

Вам нужно изменить class_mode на 'вход', как это:

autoencoder.fit_generator(datagen.flow(train_imgs, train_imgs, 
     batch_size=32,class_mode='input'), 
     samples_per_epoch=train_imgs.shape[0], 
     nb_epoch=50, 
     validation_data=(test_imgs,test_imgs)) 

Вы можете прочитать больше here

Смежные вопросы