首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谱图数据集上的VGG16

谱图数据集上的VGG16
EN

Stack Overflow用户
提问于 2019-11-20 08:01:44
回答 1查看 19关注 0票数 1

我正在遵循Rajsha做的指南:https://github.com/rajshah4/image_keras/blob/master/notebook_extras.ipynb

这个想法是将VGG16应用于我的数据集,它由spectogram组成,并让它在两个类之间做出决定,正常和异常。

然而,模型没有学习,尽管我在顶层,但我得到了大约0.5 val_acc。

我做错了什么吗?我将把我的代码留在下面:

代码语言:javascript
复制
# dimensions of our images
img_width, img_height = 240, 240

train_data_dir = '/content/gdrive/My Drive/Melspec/melspecimages/train'
validation_data_dir = '/content/gdrive/My Drive/Melspec/melspecimages/val'

batch_size = 32
datagen = ImageDataGenerator(preprocessing_function=preprocess_input)

model_vgg = applications.VGG16(include_top=False, weights='imagenet',input_shape=(240,240,3))

model_vgg.trainable=False

train_generator_bottleneck = datagen.flow_from_directory(
        train_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        class_mode='binary',
        shuffle=True)

validation_generator_bottleneck = datagen.flow_from_directory(
        validation_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        class_mode='binary',
        shuffle=False) 

train_samples = 30272
validation_samples = 7584

bottleneck_features_train = model_vgg.predict_generator(train_generator_bottleneck, train_samples // batch_size)
np.save(open('/content/gdrive/My Drive/Melspec/spec_vgg_bottleneck_features_train.npy', 'wb'), bottleneck_features_train)

bottleneck_features_validation = model_vgg.predict_generator(validation_generator_bottleneck, validation_samples // batch_size)
np.save(open('/content/gdrive/My Drive/Melspec/spec_vgg_bottleneck_features_validation.npy', 'wb'), bottleneck_features_validation)

train_data = np.load(open('/content/gdrive/My Drive/Melspec/spec_vgg_bottleneck_features_train.npy', 'rb'))
train_labels = np.array([0] * (train_samples // 2) + [1] * (train_samples // 2))

validation_data = np.load(open('/content/gdrive/My Drive/Melspec/spec_vgg_bottleneck_features_validation.npy', 'rb'))
validation_labels = np.array([0] * (validation_samples // 2) + [1] * (validation_samples // 2))

model_top = Sequential()
model_top.add(Flatten(input_shape=train_data.shape[1:]))
model_top.add(Dense(256, activation='relu'))
model_top.add(Dropout(0.5))
model_top.add(Dense(1, activation='sigmoid'))

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

model_top.fit(train_data, train_labels,
        epochs=epochs, 
        batch_size=batch_size,
        validation_data=(validation_data, validation_labels))
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

发布于 2019-11-22 02:45:54

找到了答案:我的标签错了。

我在网上读到,我们应该在提供train_generator时使用shuffle=True,但是类没有以相同的顺序混合,只有文件,因此导致了错误的标签。

我切换到了shuffle=False和class_mode=None。

我还必须确保我的数据库中的文件在两个类中具有相同的编号,并且这些文件可以被我的batch_size整除。

希望这对其他初学者有所帮助!

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

https://stackoverflow.com/questions/58966160

复制
相关文章

相似问题

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