Skip to content

Commit fdba2fb

Browse files
committed
perf(train): 训练之前先step一次,保证学习率从最小值开始
1 parent ec00cfb commit fdba2fb

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

py/densenet/train.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
135135
running_loss += loss.item() * inputs.size(0)
136136
# running_corrects += torch.sum(preds == labels.data)
137137
if phase == 'train':
138-
lr_scheduler.step()
139138
print('lr: {}'.format(optimizer.param_groups[0]['lr']))
139+
lr_scheduler.step()
140140

141141
epoch_loss = running_loss / data_sizes[phase]
142142
epoch_top1_acc = running_top1_acc / len(data_loaders[phase])
@@ -200,6 +200,9 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
200200
optimizer = optim.Adam(model.parameters(), lr=3e-4, weight_decay=3e-5)
201201
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, num_epochs - 5, eta_min=0)
202202
lr_scheduler = GradualWarmupScheduler(optimizer, multiplier=1, total_epoch=5, after_scheduler=scheduler)
203+
optimizer.zero_grad()
204+
optimizer.step()
205+
lr_scheduler.step()
203206

204207
util.check_dir('../data/models/')
205208
best_model, loss_dict, top1_acc_dict, top5_acc_dict = train_model(

py/resnet/train_resnet.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
140140
running_loss += loss.item() * inputs.size(0)
141141
# running_corrects += torch.sum(preds == labels.data)
142142
if phase == 'train':
143-
lr_scheduler.step(epoch + 1)
144-
print('lr: {}'.format(lr_scheduler.get_lr()))
143+
print('lr: {}'.format(optimizer.param_groups[0]['lr']))
144+
lr_scheduler.step()
145145

146146
epoch_loss = running_loss / data_sizes[phase]
147147
epoch_top1_acc = running_top1_acc / len(data_loaders[phase])
@@ -207,6 +207,9 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
207207
optimizer = optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)
208208
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, num_epochs - 5, eta_min=1e-4)
209209
lr_scheduler = GradualWarmupScheduler(optimizer, multiplier=1, total_epoch=5, after_scheduler=scheduler)
210+
optimizer.zero_grad()
211+
optimizer.step()
212+
lr_scheduler.step()
210213

211214
util.check_dir('../data/models/')
212215
best_model, loss_dict, top1_acc_dict, top5_acc_dict = train_model(

py/resnet/train_resnet_v2.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
135135
running_loss += loss.item() * inputs.size(0)
136136
# running_corrects += torch.sum(preds == labels.data)
137137
if phase == 'train':
138-
lr_scheduler.step()
139138
print('lr: {}'.format(optimizer.param_groups[0]['lr']))
139+
lr_scheduler.step()
140140

141141
epoch_loss = running_loss / data_sizes[phase]
142142
epoch_top1_acc = running_top1_acc / len(data_loaders[phase])
@@ -200,6 +200,9 @@ def train_model(data_loaders, data_sizes, model_name, model, criterion, optimize
200200
optimizer = optim.Adam(model.parameters(), lr=3e-4, weight_decay=3e-5)
201201
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, num_epochs - 5, eta_min=0)
202202
lr_scheduler = GradualWarmupScheduler(optimizer, multiplier=1, total_epoch=5, after_scheduler=scheduler)
203+
optimizer.zero_grad()
204+
optimizer.step()
205+
lr_scheduler.step()
203206

204207
util.check_dir('../data/models/')
205208
best_model, loss_dict, top1_acc_dict, top5_acc_dict = train_model(

0 commit comments

Comments
 (0)