我正在为 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