前言:先是给出pytorch的训练模型,验证模型,以数据进行划分,如何调学习率,什么是TTA,给出相应的方案,并简述一下我的调参经验
pytorch中的训练模型
def train(train_loader, model, criterion, optimizer, epoch):
# 切换模型为训练模式
model.train()
train_loss =[]
for i,(input, target)in enumerate(tqdm(train_loader)):
if use_cuda:
input = input.cuda()
target = target.cuda()
print("cuda is ok")
c0, c1, c2, c3, c4 = model(input)
else:
print("cuda is not done")
target = target.long()
loss = criterion(c0, target[:,0])+ \
criterion(c1, target[:,1])+ \
criterion(c2, target[:,2])+ \
criterion(c3, target[:,3])+ \
criterion(c4, target[:,4])
# loss /= 6
optimizer.zero_grad()
loss.backward()
optimizer.step()
train_loss.append(loss.item())
return np.mean(train_loss)
pytorch中的验证模型
def validate(val_loader, model, criterion):
# 切换模型为预测模型
model.eval()
val_loss =[]
# 不记录模型梯度信息
with torch.no_grad():
for i,(input, target)in enumerate(tqdm(val_loader)):
if use_cuda:
input = input.cu