|
|
@@ -177,40 +177,20 @@ if __name__ == '__main__': |
|
|
{'params': no_decayed_params}, |
|
|
{'params': no_decayed_params}, |
|
|
{'order_params': net.trainable_params()}] |
|
|
{'order_params': net.trainable_params()}] |
|
|
opt = Momentum(group_params, lr, config.momentum, loss_scale=config.loss_scale) |
|
|
opt = Momentum(group_params, lr, config.momentum, loss_scale=config.loss_scale) |
|
|
# define loss, model |
|
|
|
|
|
if target == "Ascend": |
|
|
|
|
|
if args_opt.dataset == "imagenet2012": |
|
|
|
|
|
if not config.use_label_smooth: |
|
|
|
|
|
config.label_smooth_factor = 0.0 |
|
|
|
|
|
loss = CrossEntropySmooth(sparse=True, reduction="mean", |
|
|
|
|
|
smooth_factor=config.label_smooth_factor, num_classes=config.class_num) |
|
|
|
|
|
else: |
|
|
|
|
|
loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') |
|
|
|
|
|
loss_scale = FixedLossScaleManager(config.loss_scale, drop_overflow_update=False) |
|
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'}, |
|
|
|
|
|
amp_level="O2", keep_batchnorm_fp32=False) |
|
|
|
|
|
|
|
|
if args_opt.dataset == "imagenet2012": |
|
|
|
|
|
if not config.use_label_smooth: |
|
|
|
|
|
config.label_smooth_factor = 0.0 |
|
|
|
|
|
loss = CrossEntropySmooth(sparse=True, reduction="mean", |
|
|
|
|
|
smooth_factor=config.label_smooth_factor, num_classes=config.class_num) |
|
|
else: |
|
|
else: |
|
|
# GPU and CPU target |
|
|
|
|
|
if args_opt.dataset == "imagenet2012": |
|
|
|
|
|
if not config.use_label_smooth: |
|
|
|
|
|
config.label_smooth_factor = 0.0 |
|
|
|
|
|
loss = CrossEntropySmooth(sparse=True, reduction="mean", |
|
|
|
|
|
smooth_factor=config.label_smooth_factor, num_classes=config.class_num) |
|
|
|
|
|
else: |
|
|
|
|
|
loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean") |
|
|
|
|
|
|
|
|
|
|
|
if (args_opt.net == "resnet101" or args_opt.net == "resnet50") and \ |
|
|
|
|
|
not args_opt.parameter_server and target != "CPU": |
|
|
|
|
|
opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, config.momentum, config.weight_decay, |
|
|
|
|
|
config.loss_scale) |
|
|
|
|
|
loss_scale = FixedLossScaleManager(config.loss_scale, drop_overflow_update=False) |
|
|
|
|
|
# Mixed precision |
|
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'}, |
|
|
|
|
|
amp_level="O2", keep_batchnorm_fp32=False) |
|
|
|
|
|
else: |
|
|
|
|
|
## fp32 training |
|
|
|
|
|
opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, config.momentum, config.weight_decay) |
|
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, metrics={'acc'}) |
|
|
|
|
|
|
|
|
loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') |
|
|
|
|
|
loss_scale = FixedLossScaleManager(config.loss_scale, drop_overflow_update=False) |
|
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'}, |
|
|
|
|
|
amp_level="O2", keep_batchnorm_fp32=False) |
|
|
|
|
|
if (args_opt.net != "resnet101" and args_opt.net != "resnet50") or \ |
|
|
|
|
|
args_opt.parameter_server or target == "CPU": |
|
|
|
|
|
## fp32 training |
|
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, metrics={'acc'}) |
|
|
if cfg.optimizer == "Thor" and args_opt.dataset == "imagenet2012": |
|
|
if cfg.optimizer == "Thor" and args_opt.dataset == "imagenet2012": |
|
|
from src.lr_generator import get_thor_damping |
|
|
from src.lr_generator import get_thor_damping |
|
|
damping = get_thor_damping(0, config.damping_init, config.damping_decay, 70, step_size) |
|
|
damping = get_thor_damping(0, config.damping_init, config.damping_decay, 70, step_size) |
|
|
|