某某潮流网,最新潮鞋资讯分享!

微信号:weixin888

torch.optim的灵活使用(包括重写SGD,加上L1正则)

时间:2024-05-06 05:12人气:编辑:佚名

torch.optim的灵活使用

1. 基本用法:

 

注:如果要把model放在GPU中,需要在构建一个Optimizer之前就执行model.cuda(),确保优化器里面的参数也是在GPU中。
例子:

 

2. 灵活的设置各层的学习率

 

注:这个时候,可以在optimizer设置选项作为关键字参数传递,这时它们将被认为是默认值(当字典里面没有这个关键字参数key-value对时,就使用这个默认的参数)
This is useful when you only want to vary a single option, while keeping all others consistent between parameter groups.

例子:

 

上面创建的optim.SGD类型的Optimizer,lr默认值为1e-1,momentum默认值为0.9。features12的参数学习率为1e-2。

灵活更改各层的学习率

torch.optim.optimizer.Optimizer的初始化函数如下:

 

params (iterable): iterable of parameters to optimize or dicts defining parameter groups (params可以是可迭代的参数,或者一个定义参数组的字典,如上所示,字典的键值包括:params,lr,momentum,dampening,weight_decay,nesterov)
想要改变各层的学习率,可以访问optimizer的param_groups属性。

 

因此,想要更改某层参数的学习率,可以访问optimizer.param_groups,指定某个索引更改’lr’参数就可以。

 

重写torch.optim,加上L1正则

查看torch.optim.SGD等Optimizer的源码,发现没有L1正则的选项,而L1正则更容易得到稀疏解。
这个时候,可以更改文件,模拟L2正则化的操作。
L1正则化求导如下:

 

更改后的sgd.py如下:

 

一个使用的例子:

      
标签: 参数   更改   me   可以   学习  
相关资讯
热门频道

热门标签

官方微信官方微博百家号

网站简介 | 意见反馈 | 联系我们 | 法律声明 | 广告服务

Copyright © 2002-2022 天富平台-全球注册登录站 版权所有 备案号:粤ICP备xxxxxxx号

平台注册入口