小土堆:Pytorch深度学习:优化器

今天学习优化器。

import torchimport torchvisionfrom torch import nn, optimfrom torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linearfrom torch.optim.lr_scheduler import StepLRfrom torch.utils.data import DataLoader
# 加载CIFAR10数据集dataset = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor(), download=True)
# 创建数据加载器dataloader = DataLoader(dataset, batch_size=1)
class Yang(nn.Module):    def __init__(self):        super(Yang, self).__init__()        # 定义神经网络模型        self.model1 = Sequential(            Conv2d(3, 32, 5, padding=2),  # 输入通道数为3,输出通道数为32,卷积核大小为5x5,padding为2            MaxPool2d(2),  # 最大池化操作,池化窗口大小为2x2            Conv2d(32, 32, 5, padding=2),  # 输入通道数为32,输出通道数为32,卷积核大小为5x5,padding为2            MaxPool2d(2),  # 最大池化操作,池化窗口大小为2x2            Conv2d(32, 64, 5, padding=2),  # 输入通道数为32,输出通道数为64,卷积核大小为5x5,padding为2            MaxPool2d(2),  # 最大池化操作,池化窗口大小为2x2            Flatten(),  # 将输入展平            Linear(1024, 64),  # 输入大小为1024,输出大小为64的全连接层            Linear(64, 10)  # 输入大小为64,输出大小为10的全连接层        )
    def forward(self, x):        x = self.model1(x)        return x
# 定义损失函数loss = nn.CrossEntropyLoss()# 创建网络实例yang = Yang()# 创建优化器optim = optim.SGD(yang.parameters(), lr=0.01)# 创建学习率衰减器,每隔5个epoch学习率衰减为原来的0.1scheduler = StepLR(optim, step_size=5, gamma=0.1)# 训练网络for epoch in range(20):    running_loss = 0.0    for data in dataloader:        imgs, targets = data        outputs = yang(imgs)        result_loss = loss(outputs, targets)        optim.zero_grad()        result_loss.backward()        optim.step()        running_loss = running_loss + result_loss    print(running_loss)
该代码是一个简单的训练神经网络模型的示例。主要流程如下:
1. 导入相关的库,包括torch、torchvision等。2. 加载CIFAR10数据集,并创建数据加载器。3. 定义一个名为Yang的神经网络模型,其中包含多层卷积、池化和全连接层。模型的forward方法实现了前向传播的操作。4. 定义损失函数,这里使用交叉熵损失函数。5. 创建一个网络实例和优化器,这里使用SGD优化器,并设置学习率为0.01。6. 创建学习率衰减器,每隔5个epoch学习率衰减为原来的0.1。7. 进行训练,共进行20个epoch的训练。每个epoch中,遍历数据加载器中的每个样本,计算模型的输出和损失,并进行反向传播和参数更新。8. 打印每个epoch的损失值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值