pytorch中学习率的改变

如下我们定义一个简单的网络:

import torch
import torch.nn as nn
from torch.autograd import Variable
class net(nn.Module):
    def __init__(self):
        super(net, self).__init__()
        self.input=2
        self.output=1
        self.linear=nn.Linear(self.input,self.output)

    def forward(self,x):
        return self.linear(x)
x=Variable(torch.ones([2,2]))
Net=net()
Net_optimizer=torch.optim.Adam(Net.parameters(),lr=0.001)

我们定义其学习率是0.001,如果在训练过程中我们想改变学习率,那么就要使用优化器的参数组param_groups来进行改变,我们先看看优化器的参数组param_groups包含什么参数:

print(Net_optimizer.param_groups)

输出:

[{'params': [Parameter containing:
tensor([[0.4828, 0.2699]], requires_grad=True), Parameter containing:
tensor([-0.4522], requires_grad=True)], 'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False}]

可以看见输出的是一个list,长度为1,包含的是一个字典,第一个key是“params”,其值是网络的权重向量和偏置,第二个key是“lr”也就是我们希望改变的学习率。
因此我们想改变这个学习率就可以直接是用key来改变。具体如下:

Net_optimizer.param_groups[0]["lr"]=0.004
print(Net_optimizer.param_groups)

输出:

[{'params': [Parameter containing:
tensor([[-0.6499, -0.2123]], requires_grad=True), Parameter containing:
tensor([-0.3835], requires_grad=True)], 'lr': 0.004, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False}]

这就把学习率改变了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值