损失函数pytorch

一、L1Loss(绝对值误差损失)、MSELoss(平方误差损失):用于回归问题

参数reduction:

  • 'mean'(默认):返回损失的平均值(相当于 size_average=True)。
  • 'sum':返回损失的总和(相当于 reduce=False)。
python 复制代码
import torch
from torch.nn import L1Loss, MSELoss

input=torch.tensor([1,2,3],dtype=float)
target=torch.tensor([1,2,5],dtype=float)

loss=L1Loss(reduction='sum') #L1Loss: 绝对值误差损失,返回损失的总和
result=loss(input,target)
print(result) #tensor(2., dtype=torch.float64)

lose_mse=MSELoss() #MSELoss: 平方误差损失,不设置则默认返回损失的平均值
result_mse=lose_mse(input,target)
print(result_mse) #tensor(1.3333, dtype=torch.float64)

二、交叉熵损失:用于分类问题

1、如何计算:

2、如何使用:

python 复制代码
#交叉熵:常用于分类问题的损失函数
import torch
from torch import nn

x=torch.tensor([[0.1,0.2,0.3]]) #torch.Size([3])
y=torch.tensor([1])
#如果x是x=torch.tensor([0.1,0.2,0.3])的话,要写x=torch.reshape(x,(1,3)) #torch.Size([1, 3])
#对应的关系:
#x=[ 有三个样本时
#    []
#    []
#    []
#  ]
#y=[a1,a2,a3]

loss=nn.CrossEntropyLoss()
result_cross=loss(x,y)
print(result_cross)
复制代码

3、举例:CIFAR10的分类损失

每次抓取一张图片:

img------>模型------>output(十个分类的得分)

cross_entropy_loss(output,target)

python 复制代码
import torch
import torchvision.datasets
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

#以CIFAR10的分类检测为例,计算模型的loss

test_set=torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(test_set,batch_size=1)

class Xigua(nn.Module):
    def __init__(self):
        super().__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 x

xigua1=Xigua()
loss=nn.CrossEntropyLoss()
step=0
for data in dataloader:
    imgs,targets=data
    outputs=xigua1(imgs)
    #看下outputs和targets长什么样,进而选择什么样的损失函数
    print(outputs)
    print(targets)
    result_loss=loss(outputs,targets)
    print(result_loss)
    step+=1
    if step>=1:
        break
相关推荐
归秋043 分钟前
2026 企业 AI 办公工具选型指南:方法论与主流平台全景
人工智能
程序员z77 分钟前
REA 知识点梳理:把逆向分析能力接进 AI Agent 的开源工具链
人工智能
MobotStone3 小时前
AI 玩不好?别怪工具,是你给它定的规矩有问题!
人工智能
AI日报派送佬7 小时前
2026年10月14日AI行业日报|Gemini 4 Argon正式发布;小模型跨设备传播风险引发安全热议
网络·人工智能·openai·谷歌·deepseek·anthropic·ai日报
VidDown8 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
镜象科技9 小时前
职业院校AI心理健康解决方案怎么选?三个特殊场景与三类路线
人工智能
Leo.yuan9 小时前
企业Data Agent架构选型:帆软Dora基于NL2BI的现有BI体系复用方案
大数据·人工智能
朱涛的自习室9 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
米小虾9 小时前
上下文:Agent 的眼睛里到底装着什么
人工智能·agent
米小虾9 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能