小编mwb*_*ady的帖子

使用 Keras 进行迁移学习,验证准确性从一开始就没有提高(超出初始基线),而训练准确性却提高了

我正在为 Food-101 数据集(包含 101 个类别和每个类别 1k 个图像的图像数据集)构建一个分类器。我的方法是使用 Keras 并通过 ResNet50(来自 imagenet 的权重)进行迁移学习。

训练模型时,训练精度在几个 epoch 中得到了适度的提高(30%-->45%),但验证精度基本上保持在 0.9-1.0%。我尝试过简化、交换优化器、减少和增加隐藏层中的单元、删除所有图像增强以及在flow_from_directory().

当我查看模型在验证集上做出的预测时,它始终是同一类。

我的感觉是,该模型并没有严重过度拟合,无法解释验证准确性的变化。

任何提高验证准确性的建议将不胜感激。

作为参考,以下是相关代码片段:

datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)

train_datagen = datagen.flow_from_directory('data/train/', seed=42, class_mode='categorical', subset='training', target_size=(256,256))
# prints "60603 images belonging to 101 classes"
val_datagen = datagen.flow_from_directory('data/train/', seed=42, class_mode='categorical', subset='validation', target_size=(256,256)) 
# prints "15150 images belonging to 101 classes"

train_steps = len(train_datagen) #1894
val_steps = len(val_datagen) #474
classes = len(list(train_datagen.class_indices.keys())) #101

conv_base = ResNet50(weights='imagenet', include_top=False, pooling='avg', input_shape=(256, 256, 3))

from keras.layers import GlobalAveragePooling2D …
Run Code Online (Sandbox Code Playgroud)

machine-learning deep-learning conv-neural-network keras resnet

2
推荐指数
1
解决办法
4454
查看次数