predict_generator和类标签

时间:2018-05-29 13:25:24

标签: python keras

我正在使用ImageDataGenerator来生成新的增强图像并从预训练模型中提取瓶颈功能,但我在keras上看到的大部分教程 将相同数量的训练样本作为目录中的图像数量进行采样。

 train_generator  = train_datagen.flow_from_directory(
                train_path,
                target_size=image_size,
                shuffle = "false",
                class_mode='categorical',
                batch_size=1)

bottleneck_features_train = model.predict_generator(
    train_generator, 2* nb_train_samples // batch_size)

假设我想从上面的代码中获得2倍以上的图像,我如何获得从瓶颈层提取的特征的所需类标签,这些标签存储在元组 train_generator 中。

{422}中training_generator.py的代码

x, _ = generator_output 

做这样的事情

 => x, y = generator_output

并从predict_generator

返回元组[np.concatenate(out) for out in all_outs],y

即返回相应的类标签以及预测的功能 all_outs ,因为在没有运行两次生成器的情况下无法获取相应的标签。

1 个答案:

答案 0 :(得分:1)

如果您正在使用预测,通常您根本不需要Y,因为Y将是预测的结果。 (你不是在训练,所以你不需要真正的标签)

但你可以自己做:

bottleneck = []
labels = []
for i in range(2 * nb_train_samples // batch_size):
    x, y = next(train_generator)

    bottleneck.append(model.predict(x))
    labels.append(y) 

bottleneck = np.concatenate(bottleneck)
labels = np.concatenate(labels)

如果您希望它具有索引(如果您的生成器支持):

#...
for epoch in range(2):
    for i in range(nb_train_samples // batch_size):
        x,y = train_generator[i]

        #...