损失函数与反向传播

ops/2024/9/25 17:12:17/

1.损失函数的作用

  • 计算实际输出和目标之间的差距
  • 为我们更新输出提供一定的依据(反向传播)

2.介绍几种官方文档中的损失函数

损失函数只能处理float类型的张量。

  • L1Loss (MAE):
    在这里插入图片描述
    在这里插入图片描述
import torch
from torch.nn import L1Lossinputs=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()
result=loss(inputs,targets)print(result)
  • MSELoss:
    在这里插入图片描述
loss_mse=nn.MSELoss()
result_mse=loss_mse(inputs,targets)
  • CrossEntropyLoss:
    该Loss算法计算输入对数与目标对数之间的交叉熵损失,在训练 C 类分类问题时非常有用。
    在这里插入图片描述
x=torch.tensor([0.1,0.2,0.3])
y=torch.tensor([1])
x=torch.reshape(x,(1,3))
loss_cross=nn.CrossEntropyLoss()
result_cross=loss_cross(x,y)

3.在神经网络中使用Loss Function

import torchvision
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.data import DataLoaderdataset=torchvision.datasets.CIFAR10("data",train=False,transform=torchvision.transforms.ToTensor(),download=True)#每个批次中加载的数据项数量
dataloader=DataLoader(dataset,batch_size=1)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model1=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(),Linear(1024,64),Linear(64,10))def forward(self, x):x=self.model1(x)return xloss=nn.CrossEntropyLoss()
tudui=Tudui()
for data in dataloader:imgs,targets = dataoutputs =tudui(imgs)result_loss=loss(outputs,targets)print(result_loss)

在这里插入图片描述

4.grad梯度

result_loss.backward()

loss=nn.CrossEntropyLoss()
tudui=Tudui()
for data in dataloader:imgs,targets = dataoutputs =tudui(imgs)result_loss=loss(outputs,targets)result_loss.backward()print("ok")

Debug
在这里插入图片描述
在这里插入图片描述

优化器就是根据grad中的值进行优化loss

http://www.ppmy.cn/ops/102371.html

相关文章

Launcher start App WINDOWING_MODE_FREEFORM

WINDOWING_MODE_FREEFORM start App 核心思路: 这个windowmode需要从FullScreen —> Freeform, 需要在startActivity时候携带相关相关参数,把windowmode和launchBounds进行设置。 Android T b/frameworks/base/core/java/android/app/Instrumentat…

AI模型:追求全能还是专精?

全能型AI与专精型AI:未来的机遇与挑战 随着人工智能技术的飞速发展,AI的应用范围愈加广泛和深入。近日,OpenAI 宣布将在秋季推出代号为“草莓”的新AI,从专注于数学问题到能处理主观营销策略,这款AI展现了惊人的多样性…

区块链媒体套餐发稿:世媒讯引领项目推广新风潮

在区块链技术迅猛发展的今天,越来越多的企业和项目涌现出来,希望通过区块链技术改变传统行业,并在全球范围内获得更多关注和支持。然而,在这个竞争激烈的市场中,如何快速有效地推广和传播项目变得尤为重要。选择合适的…

golang笔记——Go堆内存管理

前言 本文主要记录个人学习Golang堆内存管理,涉及到的相关内容,算是对个人所学知识点的梳理与总结。从非常宏观的角度看,Go的堆内存管理就是下图这个样子 学习内存管理,肯定首先需要了解内存管理的基本知识,我会按照 内…

GPT-4、Claude 3 Opus 和 Gemini 1.0 Ultra 挑战控制工程的新领域

介绍 论文地址:https://arxiv.org/abs/2404.03647 近年来,GPT-4、Claude 3 Opus 和 Gemini 1.0 Ultra 等大规模语言模型(LLM)迅速发展,展示了它们解决复杂问题的能力。LLM 的这些发展在多个领域都有潜在的应用前景。…

买电脑如何选择显卡?

买电脑时选择显卡,可以遵循以下几个关键点来做出决策: 明确使用需求: 日常办公、上网浏览等轻度应用:集成显卡或入门级独立显卡即可满足需求。 游戏玩家:需要选择性能较强的中高端显卡,如NVIDIA的RTX系列…

[E链表] lc141. 环形链表(快慢指针+基础题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:141. 环形链表 题单: 链表、二叉树与一般树(前后指针/快慢指针/DFS/BFS/直径/LCA) 1.6 快慢指针 2. 题目解析 思路: 用相对速度思考快慢指针的问题会简化很多…

Linux工具使用

Linux编辑器-vim使用 1.vim的基本概念 在vim中,主要的三种模式分别是命令模式,插入模式和底行模式。 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,…