b站的up主刘二大人的《PyTorch深度学习实践》P9 笔记+代码,视频链接。
所需Otto Group Product数据:
- 数据集kaggle网址:Otto Group Product Classification Challenge | Kaggle
- 或者数据集网盘链接:百度网盘 请输入提取码 提取码:2024
目录
三、CrossEntropyLoss <==> LogSoftmax + NLLLoss
一、Softmax
1、定义:Softmax 函数是一种将原始分类分数(logits)转换为概率分布的激活函数,常用于多分类问题的输出层。
2、数学表达:给定一个向量,Softmax 函数定义为:
其中 是类别
的概率。
3、特性
- 输出范围:Softmax 的输出值在 (0,1) 之间。
- 归一化:所有输出值的和为 1,即
。
- 竞争性:输出值之间是相对的,某一类别的概率越高,其他类别的概率相对降低。
4、应用场景 多分类问题的神经网络最后一层,生成概率分布,用于分类任务。
5、梯度计算 Softmax 的梯度计算相对复杂,通常通过链式法则和雅可比矩阵进行推导。
6、优势与劣势
- 优势:可以处理任意数量的分类,提供概率输出。
- 劣势:对于极端分数(极大或极小),可能导致数值不稳定问题,常用技术如“减去最大值”以提高稳定性:
二、x.view()用法
1、介绍:x.view()
是 PyTorch 中用于改变张量形状的方法。它不改变张量的内容,只是改变视图。
2、基本用法:shape可以是一个整数或一个元组,指定新形状的维度。使用-1自动推断某个维度的大小。
# shape:新的形状,必须与原始张量的总元素数量相匹配。
x.view(shape)
3、使用示例:
import torch
# 创建一个张量
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# 改变形状为一维
y = x.view(-1) # 输出:tensor([1, 2, 3, 4, 5, 6])
# 改变形状为二维
z = x.view(3, 2) # 输出:tensor([[1, 2], [3, 4], [5, 6]])
# 使用-1自动推算维度; 自动推算第二维度为2
z = x.view(3, -1) #输出:tensor([[1, 2], [3, 4], [5, 6]])