我是靠谱客的博主 整齐酒窝,最近开发中收集的这篇文章主要介绍机器学习——优化器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.优化器的作用:

使用损失函数时,调用损失函数的backward得到反向传播。

反向传播求出需要调节参数对应的梯度。

梯度可以使用优化器,对梯度的参数进行调整。达到整体降低误差的目的。

如何使用优化器:

(1)构造

#SGD为构造优化器的算法。随机梯度下降。
#模型参数,学习速率,特定优化器算法中需要设定的参数
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

(2)调用优化器step的方法。

利用之前得到的梯度,对参数进行更新。


for data in dataloader:
img, target = data
outputs = wang(img)
# 输出跟真实的target计算出的loss
result = loss(outputs, target)
# 把上一步训练的每个参数的梯度清零
optimizer.zero_grad()
# 反向函数求出每个结点的梯度
result.backward()
# 梯度进行优化
optimizer.step()

【举例】SGD随机梯度下降法为例进行说明:学习速率不能太大,不然模型不稳定。也不能太小,不然模型训练慢。先采用大的学习速率,后采用小的学习速率。

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential, CrossEntropyLoss
from torch.utils.data import DataLoader
# 加载数据集并转为tensor数据类型
dataset = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataloader = DataLoader(dataset, batch_size=64)
# 创建神经网络
class net(nn.Module):
def __init__(self):
super(net, self).__init__()
self.model1 = Sequential(
Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2),
MaxPool2d(kernel_size=2),
Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2),
MaxPool2d(kernel_size=2),
Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2),
MaxPool2d(kernel_size=2),
Flatten(),
Linear(in_features=1024, out_features=64),
Linear(in_features=64, out_features=10)
)
def forward(self, x):
x = self.model1(x)
return x
# 计算loss
loss = CrossEntropyLoss()
# 搭建网络
wang = net()
# 设置优化器,随机梯度下降法。
optim = torch.optim.SGD(wang.parameters(), lr=0.01)
for i in range(20):
running_loss = 0.0
for data in dataloader:
# img为输入,放入神经网络
img, target = data
# outputs神经网络输出,target实际输出
outputs = wang(img)
# 计算loss
result_loss = loss(outputs, target)
# 把网络模型中每一个可以调节的参数对应梯度设置为0
optim.zero_grad()
# 反向函数求出每个结点的梯度
result_loss.backward()
# 进行优化
optim.step()
running_loss = running_loss + result_loss
print(running_loss)

最后

以上就是整齐酒窝为你收集整理的机器学习——优化器的全部内容,希望文章能够帮你解决机器学习——优化器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部