Keras выдает ошибку при использовании ImageDataGenerator - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть большой набор данных, который я добавил в Keras ImageDataGenerator.

Кажется, все работает нормально, пока не выдаст эту ошибку:

    ValueError: Output of generator should be a tuple `(x, y, sample_weight)` or `(x, y)`. Found: [[[[ 91.  91.  93.]
   [ 96.  96.  98.]
   [ 98.  98. 100.]
   ...
   [115. 116. 118.]
   [108. 109. 111.]
   [107. 108. 110.]]

  [[ 93.  93.  95.]
   [ 97.  97.  99.]
   [ 98.  98. 100.]
   ...

Я создал генераторыкак таковой:

train_datagen = ImageDataGenerator()
train_generator = train_datagen.flow_from_dataframe(
    dataframe=img_celebs[img_celebs['SmallTrain'] == 1].reset_index(), 
    directory='data',
    target_size=(img_width, img_height),
    x_col='file', 
    class_mode=None)

Кажется, работает.Например

 train_generator.image_shape gives
(218, 178, 3)

Моя модель:

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(218, 178, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())  # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

И я запускаю ее с:

model.fit_generator(
        train_generator,
        steps_per_epoch=2000 // batch_size,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800 // batch_size)

1 Ответ

0 голосов
/ 15 апреля 2019

Я изменил class_mode в этой части на 'input'

train_generator = train_datagen.flow_from_dataframe(
    dataframe=img_celebs[img_celebs['SmallTrain'] == 1].reset_index(), 
    directory='data',
    target_size=(img_width, img_height),
    x_col='file', 
    class_mode='input')

, и, похоже, он работает нормально: -)

...