optimizer = AdamW(model.parameters(), lr=2e-5, correct_bias=False)
scheduler = get_linear_schedule_with_warmup(optimizer, num_warmup_steps=num_warmup_steps, num_training_steps=num_training_steps)
数据集清洗:过滤掉一些干扰数据、错误标注的数据等,提高数据集质量可以有效避免模型的过拟合,尽可能地避免数据错误对损失的影响。
增加训练数据量:增加训练数据量可以提高模型的泛化能力,提高模型的准确率,同时降低想过的强度,尽可能地避免过拟合。
增大batch size:在保证内存不溢出的前提下,调大batch size可以适当降低方差,提高模型的权值更新速度和模型精度。
trainloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
patience = 5
early_stopping = EarlyStopping(patience, verbose=True)
for epoch in range(num_epochs):
train(trainloader, model, loss_fn, optimizer)
valid_loss, valid_acc, valid_f1 = evaluate(valloader, model, loss_fn, device)
early_stopping(valid_loss, model)
if early_stopping.early_stop:
print("Early stopping")
break