数据集的训练集有 3921 张图片,测试集有951张图片,共分为六类。
加载基础模型,设置如下:
def make_model(args):
model = models.swin_b(weights=True)
for param in model.parameters():
param.requires_grad = True
num_ftrs = model.head.in_features
model.head= nn.Linear(num_ftrs, args.num_classes)
return model
在模型训练的过程中发现,当将param.requires_grad = False时,训练第一个epoch的train_acc大概在百分之三十几,而后随着epoch的增加,train_acc是缓慢上升的,经过100个epoch后train_acc在百分之八十六左右。测试结果的各指标都比较低。
当将param.requires_grad = True时,训练第一个epoch的train_acc会很高,第二个epoch会直接蹦到九十几,训练几轮或十几轮后train_acc就能到百分之百,而train_loss会继续下降。测试集上的各个指标虽然也不是很高,但是比设置成False时要好一点。
想问问大家这种情况正常吗?为什么会出现这种情况呢?有什么解决方法吗😢求助~