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

边栏推荐
猜你喜欢
随机推荐
LLVM系列第八章:算术运算语句Arithmetic Statement
spark中RDD与DF的关系
spark优化
没学好统计学的下场
关于Flink
Seq2Seq模型PyTorch版本
redis基础
It is not allowed to subscribe with a(n) xxx multiple times.Please create a fresh instance of xxx
两个surfaceview的重叠效果类似直播效果中的视频和讲义实践
5.使用RecyclerView优雅的实现瀑布流效果
二进制乘法运算
NDK入门篇:C语言基础
文本匹配任务
checkPermissions Missing write access to /usr/local/lib
流,向量场,和微分方程
flutter中App签名
Redis持久化机制
mysql常用函数
宝塔面板搭建小说CMS管理系统源码实测 - ThinkPHP6.0
Scala学习总结







![[论文阅读] ACT: An Attentive Convolutional Transformer for Efficient Text Classification](/img/59/88db682b6ff82d3612fd582cd499b2.png)

