首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >瓶颈给了我错误的形状

瓶颈给了我错误的形状
EN

Stack Overflow用户
提问于 2018-04-22 19:21:32
回答 1查看 35关注 0票数 3

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

代码语言:javascript
复制
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.

现在,我正在提取要素并保存它们

代码语言:javascript
复制
bottleneck_features_train = model_vgg.predict_generator(train_generator_bottleneck, 19)
np.save(open(bottleneck_features_train.npy', 'wb'), bottleneck_features_train)

现在加载我的数据

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
print train_data.shape
print train_labels.shape

输出:

代码语言:javascript
复制
 (9728L, 2L, 2L, 512L)
(9741L, 15L)

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

EN

回答 1

Stack Overflow用户

发布于 2018-04-22 20:07:28

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

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

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

代码语言:javascript
复制
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)

这解决了你的形状问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49965331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档