当前位置:网站首页>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)

边栏推荐
猜你喜欢
随机推荐
MySQL知识总结 (六) MySQL调优
MySQL知识总结 (一) 数据类型
Flink依赖汇总
科创知识年度盛会,中国科创者大会8月6日首场开幕!
5.使用RecyclerView优雅的实现瀑布流效果
profiler network乱码
原码、补码、反码
The Handler you really understand?
浮点数的运算方法
无人驾驶综述:等级划分
UIWindow的makeKeyAndVisible不调用rootviewController 的viewDidLoad的问题
“自主可控”的正确姿势
加减法运算及其溢出处理
【目标检测】YOLO v5 安全帽检测识别项目模型
ConstraintLayout从入门到放弃
Scala连接Mysql数据库
Flink前期代码结构
深度学习之 卷积网络(textCNN)
什么是 Web 3.0:面向未来的去中心化互联网
What?It's 2020, you still can't adapt the screen?




![[VCU] Detailed S19 file (S-record)](/img/00/ccff024d919398230f9b876c60acf6.png)




