瓶颈给我错误的形状

时间:2018-04-22 11:21:32

标签: python machine-learning keras

我正在尝试实现我的VGG16模型,这是我的代码:

model_vgg = applications.VGG16(include_top=False, weights='imagenet')
train_generator_bottleneck = datagen.flow_from_directory(
        train_data_dir,
        target_size=(64,64),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False)
Found 9741 images belonging to 15 classes.

现在我正在提取我的功能并保存它们

bottleneck_features_train = model_vgg.predict_generator(train_generator_bottleneck, 19)
np.save(open(bottleneck_features_train.npy', 'wb'), bottleneck_features_train)

现在加载我的数据

train_data = np.load(open('bottleneck_features_train.npy', 'rb'))
train_labels = train_generator_bottleneck.classes
train_labels = to_categorical(train_labels, num_classes=15)

我在这里得到了错误的标签和数据形状

print train_data.shape
print train_labels.shape

输出:

 (9728L, 2L, 2L, 512L)
(9741L, 15L)

为什么我得到错误的形状输出请帮忙?

1 个答案:

答案 0 :(得分:0)

我不是100%肯定你在这里说“错误”是什么意思,但我会假设你希望train_data.shape有9741个样本而不是9728。

原因来自predict_generator的工作方式。您在此处指定了steps=19的参数。这意味着您的模型将对19批输入数据进行预测。现在我假设你的train_generator_bottleneck的batch_size为512,因此你得到19 * 512 = 9728个输出。

如果你想要9741输出,我会试试这个:

bottleneck_features_train = model_vgg.predict_generator(train_generator_bottleneck, 20)
bottleneck_features_train = bottleneck_features_train[:9741]
np.save(open(bottleneck_features_train.npy', 'wb'), bottleneck_features_train)

这会解决您的形状问题吗?