我需要使用预训练模型(此处为resnet152)创建模型的末尾部分 . 需要冻结预训练模型的权重;结束部分 - 由我定制 - 具有训练而非冻结的权重 . 任务是为100个类别制作图像分类器 .

我的解决方案很简单:

Sequential(
  (0): BatchNorm1d(32768, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  (1): Dropout(p=0.95)
  (2): Linear(in_features=32768, out_features=102, bias=True)
  (3): ReLU(inplace)
  (4): LogSoftmax()
)
SGD (
Parameter Group 0
    dampening: 0
    lr: 0.001
    momentum: 0.9
    nesterov: False
    weight_decay: 0.5
)

我有三种类型的数据:

  • 训练数据集(16000张图像);我每批使用200张图片,

  • 测试数据集(4000张图像) - 用它来检查模型是否过度拟合;该模型未经过此数据集的培训,

  • 验证(6000张图片) - 当我得到如下所示的准确结果时,我用其他看不见的数据验证我的模型 .

通过来自一个文件夹的随机种子来选择测试和训练数据 . 验证数据是单独准备的,而不是我 .

但这是一个问题:我能够防止过度拟合测试数据(所以培训和测试的发生率相似 - 分别为99%和92%) . 但是,当使用另一个看不见的数据(验证数据集)验证模型时,验证准确度等于67%,因此存在过度拟合 . 我该怎样预防呢?

使用更多图层?我不认为,因为添加更多参数会增加过度拟合 . 正如您所见,我设置了高辍学概率和高权重衰减(L2正规化) . 在2个时期之后,训练准确度达到80%,然后在第10个时期后增加到99% .