PyTorch(13)---优化器_随机梯度下降法

该博客介绍了如何利用PyTorch进行反向传播和随机梯度下降法训练卷积神经网络(CNN)。代码示例展示了如何加载CIFAR10数据集,定义CNN模型,设置优化器和损失函数,并进行20轮的训练。网络结构包括多个卷积层、池化层和全连接层。
摘要由CSDN通过智能技术生成

优化器:随机梯度下降法

在这里插入图片描述
在这里插入图片描述

反向传播—梯度下降

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.data import DataLoader


dataset=torchvision.datasets.CIFAR10("dataset_CIFAR10",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=1)


class Demo(nn.Module):
    def __init__(self) -> None:
        super().__init__()
        self.model1=Sequential(
            Conv2d(in_channels=3, out_channels=32, kernel_size=5, stride=1, padding=2, dilation=1, ),
            MaxPool2d(kernel_size=2, ),
            Conv2d(in_channels=32, out_channels=32, kernel_size=5, stride=1, padding=2, ),
            MaxPool2d(kernel_size=2),
            Conv2d(32, 64, 5, 1, 2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10),
        )
    def forward(self,x):
        x=self.model1(x)
        return x

demo=Demo()
loss=nn.CrossEntropyLoss()
'''优化器:随机梯度下降'''
optim=torch.optim.SGD(params=demo.parameters(),lr=0.01,)

for epoch in range(20):
    print('第------{}------轮训练开始'.format(epoch))
    running_loss=0.0  #每一轮开始之前,梯度都要设置为0
    for data in dataloader:
        imgs,targets=data
        '''送入网络进行训练'''
        outputs=demo(imgs)
        '''损失函数'''
        result_loss=loss(outputs,targets)
        '''优化器进行调优
            1、调用一个优化器:optim=torch.optim.SGD(params=demo.parameters(),lr=0.01,)
            2、将梯度初始化为0,在循环里这一步都要清0
            3、损失函数调用反向传播
            4、optim.step()
        '''
        optim.zero_grad()#首先将梯度设置为0
        result_loss.backward()#反向传播,算出梯度(梯度下降法),目的:求出最小的loss  得到需要调节的梯度
        optim.step()
        running_loss=running_loss+result_loss#在每一轮开始之前,将loss都设置为0,整体误差的总和
        #print(result_loss)
    print('第{}轮的loss值{}'.format(epoch,running_loss))

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫听穿林打叶声@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值