当前位置:网站首页>PyTorch(12)---损失函数和反向传播
PyTorch(12)---损失函数和反向传播
2022-08-02 14:07:00 【伏月三十】
损失函数
1、计算实际输出和目标之间的差距
2、为更新输出提供一定的依据(反向传播),调优的参数是卷积核当中的参数 ,为卷积核当中的参数设置了梯度grad。将整个loss降低。
L1Loss
参数:reducion可选择sum、mean等。
L1Loss(reduction=‘sum’)
MSELOSS
交叉熵CROSSENTROPYLOSS
参数:
Input:分的类别
Target:目标
import torch
from torch.nn import L1Loss
from torch.nn import MSELoss,CrossEntropyLoss
inputs=torch.tensor([1,2,3],dtype=torch.float32)
targets=torch.tensor([1,2,5],dtype=torch.float32)
inputs=torch.reshape(inputs,(1,1,1,3),)
targets=torch.reshape(targets,(1,1,1,3),)
loss=L1Loss(reduction='sum')
result=loss(inputs,targets)
loss_mse=MSELoss()
result_mse=loss_mse(inputs,targets)
print(result)
print(result_mse)
#三分类问题
x=torch.tensor([0.1,0.2,0.3])
y=torch.tensor([1])
x=torch.reshape(x,(1,3))
loss_cross=CrossEntropyLoss()
result_cross=loss_cross(x,y)
print(result_cross)
反向传播
反向传播是为了将损失函数(目标函数)变小。
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
loss=nn.CrossEntropyLoss()
demo=Demo()
for data in dataloader:
imgs,targets=data
#送入网络进行训练
outputs=demo(imgs)
#输出的结果是10分类
#print(outputs)
#输出真实的标签
#print(targets)
'''损失函数'''
result_loss=loss(outputs,targets)
#反向传播,算出梯度(梯度下降法),求出最小的loss
result_loss.backward()
print(result_loss)
边栏推荐
猜你喜欢
随机推荐
The problem that UIWindow's makeKeyAndVisible does not call viewDidLoad of rootviewController
7.如何给RecyclerView添加Click和LongClick事件
宝塔搭建PESCMS-Ticket开源客服工单系统源码实测
1.RecyclerView是什么
基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
LLVM系列第二十四章:用Xcode编译调试LLVM源码
[VCU] Detailed S19 file (S-record)
牛客刷题汇总(持续更新中)
电商项目常见连续登录,消费,日期等问题
The Handler you really understand?
GPT2计算流程详解
LLVM系列第二十五章:简单统计一下LLVM源码行数
华为防火墙
华为防火墙IPS
关于UDF
mysql
YOLOv7 uses cloud GPU to train its own dataset
NER(命名体识别)之 FLAT模型
LLVM系列第十章:控制流语句if-else-phi
[论文阅读] ACT: An Attentive Convolutional Transformer for Efficient Text Classification