Keras ValueError:fit_generator产生一个列表

时间:2017-06-19 17:15:52

标签: python-3.x keras keras-2

我正在学习如何使用带有TF后端的Keras进行图像识别,所以我仍然不确定我在这里做错了什么。

我试图堆叠2个模型,一个是VGG16,另一个是随机的,我只是为了学习如何堆叠它。我想在5个班级中对图像进行分类。

问题出在最后一部分,当我运行fit_generator时。它不是产生有效的元组,而是产生它看起来像列表的东西。我见过很多人遇到类似的问题,但在他们的情况下,输出是无,所以我不确定解决方案是否相同。

参数

src/mongoc/mongoc-topology-scanner.c:754 mongoc_topology_scanner_get_error(): precondition failed: ts

发电机

nb_train_samples = 576
nb_validation_samples = 144
epochs = 30
batch_size = 12
img_width, img_height = 150, 150

我的模特

train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=50,
    width_shift_range=0.3,
    height_shift_range=0.3,
    shear_range=0.4,
    zoom_range=0.4,
    horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode=None,
    shuffle=False)

validation_generator = test_datagen.flow_from_directory(
    validation_data_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode=None,
    shuffle=False)

适合和错误

input = Input(batch_shape=model.output_shape)
x = Flatten()(input)
x = Dense(256, activation='relu', name="new_block_1")(x)
x = Dropout(0.5)(x)
x = Dense(256, activation='relu', name="new_block_2")(x)
x = Dropout(0.5)(x)
x = Dense(5, activation='softmax', name="new_block_3")(x)
top_model = Model(input,x)

input = Input(shape=(img_width, img_height, 3))
x = model(input)
x = top_model(x)
final_model = Model(input, x)

final_model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy', metrics=['accuracy'])
根据@ petezurich的提示

更新1:,更改了' sigmoid'到' softmax'

1 个答案:

答案 0 :(得分:1)

您的模型缺少培训标签。

只需在生成器中将class_mode设置为categorical,然后将图像放在每个类的子文件夹中。生成器比从中很好地派生类标签。