当前位置:网站首页>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)
边栏推荐
猜你喜欢
随机推荐
It is not allowed to subscribe with a(n) xxx multiple times.Please create a fresh instance of xxx
YOLOv7 uses cloud GPU to train its own dataset
执行npm install有错误error
基于GPT的隐变量表征解码结构
【目标检测】YOLO v5 吸烟行为识别检测
Word2vec词向量
LLVM系列第六章:函数返回值Return
checkPermissions Missing write access to /usr/local/lib
二进制乘法运算
LLVM系列第二十六章:理解LLVMContext
Redis持久化机制
宝塔搭建PHP自适应懒人网址导航源码实测
加强版Apktool堪称逆向神器
什么?都0202年了,你还不会屏幕适配?
mysql
What?It's 2020, you still can't adapt the screen?
国内IT市场还有发展吗?有哪些创新好用的IT运维工具可以推荐?
App signature in flutter
宝塔搭建PESCMS-Ticket开源客服工单系统源码实测
“自主可控”的正确姿势