深度学习速成:损失函数与反向传播

1.LOSS函数

Loss=(目标值-实际值)的绝对值 +.....之和

1.1作用:

1.计算实际输出与目标之间的关系

2.为我们更新输出提供一定的依据

1.2 举例

1.2.1 torch.nn.L1loss

使用方法:

注意输入输出的shape是相同的

数学公式:

python 复制代码
import torch
from torch import nn


inputs=torch.tensor([1,2,3]).float()#要使用浮点数
targets=torch.tensor([1,2,5]).float()

inputs =torch.reshape(inputs,(1,1,1,3))
targets=torch.reshape(targets,(1,1,1,3))

loss=torch.nn.L1Loss()
ressult=loss(inputs,targets)

print(ressult)

输出为tensor(0.6667) 因为作差后相加再除以3 即三分之二。

1.2.2 torch.nn.MSELoss

python 复制代码
import torch
from torch import nn



inputs=torch.tensor([1,2,3]).float()
targets=torch.tensor([1,2,5]).float()

inputs =torch.reshape(inputs,(1,1,1,3))
targets=torch.reshape(targets,(1,1,1,3))

loss=torch.nn.L1Loss()
ressult=loss(inputs,targets)

loss_mse=torch.nn.MSELoss()
ressult_mse=loss_mse(inputs,targets)

print(ressult,ressult_mse)

输出结果为tensor(1.3333) 也就是三分之四

1.2.3 交叉熵函数

处理分类问题时常用

数学公式:

python 复制代码
x=torch.tensor([0.1,0.2,0.3])
y=torch.tensor([1])

x=torch.reshape(x,(1,3))

loss_ce=nn.CrossEntropyLoss()
result_ce=loss_ce(x,y)
print(result_ce)

输出结果为tensor(1.1019)

2.反向传播

反向传播算法利用链式法则,通过从输出层向输入层逐层计算误差梯度,高效求解神经网络参数的偏导数,以实现网络参数的优化和损失函数的最小化。

计算出loss后对loss进行反向传播(backward)梯度下降法

python 复制代码
Tudui=tudui()

for data in dataloder:
    imgs,targets=data
    outputs=Tudui(imgs)
    result_loss=loss(outputs,targets)
    print("loss:",result_loss.item())
    result_loss.backward()#反向传播

3.优化器

python 复制代码
loss=torch.nn.CrossEntropyLoss()
Tudui=tudui()
optim=torch.optim.SGD(Tudui.parameters(),lr=0.01)#定义优化器 随机梯度下降

for data in dataloder:
    imgs,targets=data
    outputs=Tudui(imgs)
    result_loss=loss(outputs,targets)
    optim.zero_grad()#优化器梯度清零
    result_loss.backward()#反向传播
    optim.step()#优化器更新参数

先定义优化器

得到loss后进行梯度清零 反向传播 优化器更新参数

结果

相关推荐
泯泷22 分钟前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠9051 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
联犀2 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据2 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab2 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab2 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude
泯泷2 小时前
语音,正在成为 AI Agent 最自然的接口
人工智能·llm·agent
wangruofeng2 小时前
同一行代码,百种渲染:Asuka、React Native 与 Flutter 跨平台渲染机制深度拆解
前端·github
Rabitebla3 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件3 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件