深度学习基本函数

1、softmax归一化函数

把模型输出的score转换为概率,并且通过指数运算,放大了score之间的差距

python 复制代码
#在pytorch中这样引用
import torch
import torch.nn.functional as F

scores = torch.tensor([3.2, 1.3, 0.2])
print(F.softmax(scores, dim=0))
# 输出: tensor([0.8338, 0.1247, 0.0415])

# 原始算法如下
import numpy as np
a=np.array([1,2,3])

exp2=np.exp(a)
print(exp2/np.sum(exp2)) # [0.09003057 0.24472847 0.66524096]

print(np.max(a))  # 3
print(a-np.max(a)) # [-2 -1  0]
exp=np.exp(a-np.max(a))  # 减去最大值防止数值爆炸
print(exp) # [0.13533528 0.36787944 1.        ]
print(exp/np.sum(exp))  # [0.09003057 0.24472847 0.66524096]

2、损失函数

模型输出 :预测概率分布(例如,通过 Softmax 得到 [0.834, 0.125, 0.041])

真实情况 :真实标签的分布(例如,图片真实是"猫",我们用 one-hot 编码表示为 [1, 0, 0])

交叉熵计算过程:

H(P,Q)=−P(猫)⋅log⁡(Q(猫))+P(狗)⋅log⁡(Q(狗))+P(兔子)⋅log⁡(Q(兔子))

=−(1)⋅log⁡(0.834)+(0)⋅log⁡(0.125)+(0)⋅log⁡(0.041)

=−log⁡(0.834)+0+0

=−log⁡(0.834)

python 复制代码
#使用pytorch计算
import torch
import torch.nn as nn

# 定义损失函数
criterion = nn.CrossEntropyLoss()
outputs = torch.tensor([[3.2, 1.3, 0.2]]) 
labels = torch.tensor([0])

# 计算损失
loss = criterion(outputs, labels)
print(loss)


#手工这样计算
import numpy as np
a=np.array([3.2, 1.3, 0.2])
s=np.exp(a)/np.sum(np.exp(a))
print(-1*np.log(s[0]))

不同的任务,选择不同的损失函数,常见的

分类任务 :首选交叉熵。

回归任务 :首选MSE 或MAE(MSE更常用,若数据有较多离群点可考虑MAE)。

相关推荐
axe_hu3 分钟前
AI产品经理需要具备哪些能力?
人工智能·产品经理
有Li6 分钟前
基于超高分辨率CT智能分割与测量的单侧梅尼埃病内耳解剖特征定量研究文献速递/医学智能体前沿
大数据·人工智能·学习·文献·医学生
挖掘狂人7 分钟前
1024程序员节:AI时代,为什么我们依然需要程序员
人工智能·程序员·ai编程
云淡风轻~窗明几净9 分钟前
角谷猜想与百度AI的对话dialog(原始稿)
人工智能·算法·机器学习·图论
龙亘川11 分钟前
城市公共安全治理如何从“人海战术“走向“数据驱动“?
大数据·数据库·人工智能·安全·microsoft·智慧城市·数据可视化
前端的阶梯11 分钟前
AI Agent 之 用户记忆和知识库
人工智能
西木莉16 分钟前
中小企业AI时代如何解决数据质量?
人工智能
合尘猫25 分钟前
给 AI 客服加权限边界:12 项自查清单与一次越权测试
人工智能·安全·llm
stereohomology26 分钟前
外挂的不同表现形式
人工智能·markdown·所见即所得