机器学习-优化器(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)
其它待补