机器学习-优化器(pytorch环境)

官方网站

例子:

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

dataset = torchvision.datasets.CIFAR10(root='./dataset', transform=torchvision.transforms.ToTensor(), train=False, download=True)

dataLoader = DataLoader(dataset=dataset, batch_size=1, shuffle=True, num_workers=0, drop_last=False)

class TuDui(nn.Module):
    def __init__(self):
        super(TuDui, self).__init__()
        self.mod1 = Sequential(
            Conv2d(3,32,5,padding=2),
            MaxPool2d(2),
            Conv2d(32,32,5,padding=2),
            MaxPool2d(2),
            Conv2d(32,64,5,padding=2),
            MaxPool2d(2),
            Flatten(),
            # 如果不知道参数,可以通过print(output.shape)来获取
            # 仅保留不知到参数的那行,后面的暂时注释
            Linear(1024,64),
            Linear(64,10)
        )

    def forward(self,x):
        x = self.mod1(x)
        return x

loss = nn.CrossEntropyLoss()
tudui = TuDui()
optim = torch.optim.SGD(tudui.parameters(), lr=0.01)

for scope in range(20):
    running_loss = 0
    for data in dataLoader:
        imgs, targets = data
        outputs = tudui(imgs)
        result_loss = loss(outputs,targets)
        # 将梯度设置为0
        optim.zero_grad()
        # 反向传播
        result_loss.backward()
        # 参数调优
        optim.step()
        running_loss += result_loss
    print(running_loss)

 

其它待补

posted @ 2021-08-20 18:33  EA2218764AB  阅读(51)  评论(0编辑  收藏  举报