pytorch网络优化器(How to use an optimizer)

1.首先需要我们思考的问题是。。。什么是优化器? 优化器能干什么?有哪些?参数怎么设置?

下面为大家一一讲解什么:

1》什么是优化器?

        在小琼看来,是一个优化函数(白说),举个例子:例如求解y=2*x+3的零点,采用试探法,首先x取值为-1,则y=1,取大了,然后再取x=-2,y=-1,那么我们是不是会在【-2,-1】之间再去一个值,而不是在其他区间内取值,这样如法炮制,逐步会逼近函数的零点,然后得出x=?(你们比我厉害,我算不出)。

        其实优化器就是干这个的,优化目标函数,使得目标函数得到最优解。(一般采用梯度下降法,其中采取合适的步长才是关键,好比两座山,走的不长不能太大,否则直接跨过山谷,而我们寻求的就是山谷的位置)。

2》发现连干什么的说了,没控制住。(直接看上面)

        专业点就是使用梯度下降法更新网络模型参数。

#官方给出的例子:

optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)

3》有哪些优化器/优化器有哪些类型?

       (着急了) 首先说一下优化器更新方法:两种(有没有发现有一定的套路)

1.optimizer.step()

#官方给出的例子

for input, target in dataset:
    optimizer.zero_grad()
    output = model(input)
    loss = loss_fn(output, target)
    loss.backward()
    optimizer.step()

2.optimizer.step(closure)
此法应用在一些优化算法需要多次重新计算函数,如共轭梯度和LBFGS,因此我们必须传递一个闭包,允许优化器重新计算训练模型。此时闭包应该清除梯度,计算损失并返回。

for input, target in dataset:
    def closure():
        optimizer.zero_grad()
        output = model(input)
        loss = loss_fn(output, target)
        loss.backward()
        return loss
    optimizer.step(closure)

        接着上面讲:

优化器1:

torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0)

优化器2:

torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0, initial_accumulator_value=0, eps=1e-10)

优化器3:

torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)

优化器4:

torch.optim.ASGD(params, lr=0.01, lambd=0.0001, alpha=0.75, t0=1000000.0, weight_decay=0)

优化器5:

torch.optim.SGD(params, lr=<required parameter>, momentum=0, dampening=0, weight_decay=0, nesterov=False)

例子:
optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()

待续。。。

如果写的不好,欢迎大佬批评纠正!!!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值