1、数学的重要性
在机器学习与深度学习中需要大量使用数学知识,也给很多初学带来困难的主要原因之一。下图可以看数学主题对机器学习和数据科学的重要性。
2、向量(Vector)
向量被认为是连续或离散的数字数组,由向量组成的空间称为向量空间。向量的空间维度可以是有限的或无限的,但机器学习和数据科学问题处理的是固定长度的向量。向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2)。
例如,
temp = torch.FloatTensor([23,24,24.5,26,27.2,23.0]) temp.size()
在机器学习中,我们处理多维数据。因此向量变得非常重要,并被视为任何预测问题陈述的输入特征。
3、标量(Scalar)
标量被称为零维,仅包含一个值。说到 PyTorch,它不包含一个特殊的零维张量;标量(Scalar)是只有大小,没有方向的量,如1,2,3等。
例如,
x = torch.rand(10) x.size()
4、矩阵(Matrice)
大多数结构化数据通常以表格或特定矩阵的形式表示。我们将使用一个名为 Boston House Prices 的数据集,该数据集可在 Python scikit-learn 机器学习库中轻松获得。矩阵(Matrix)是好几个向量拍成一排合并而成的一堆数字,如[1,2;3,4]。
boston_tensor = torch.from_numpy(boston.data) boston_tensor.size() boston_tensor[:2]
输出:
Columns 0 to 7 0.0063 18.0000 2.3100 0.0000 0.5380 6.5750 65.2000 4.0900 0.0273 0.0000 7.0700 0.0000 0.4690 6.4210 78.9000 4.9671 Columns 8 to 12 1.0000 296.0000 15.3000 396.9000 4.9800 2.0000 242.0000 17.8000 396.9000 9.1400
5、PyTorch 神经网络核心数学模块
PyTorch 中神经网络的核心数学模块总结,包括构建神经网络时所涉及的 张量计算、函数、层、自动求导与优化器 等核心内容。
模块/类 | 作用说明 |
---|---|
torch.Tensor | 多维数组,所有数学计算的基础, 支持广播、线性代数、自动求导等 |
torch.nn | 神经网络模块的高层封装, 如线性层、卷积层、激活函数等 |
torch.nn.functional | 函数式接口,提供各种数学函数, 如 relu 、softmax 、cross_entropy 等 |
torch.autograd | 自动微分系统,支持反向传播的梯度计算 |
torch.optim | 优化器模块, 实现如 SGD、Adam 的权重更新算法 |
torch.linalg | 线性代数模块(类似 NumPy 的 linalg), 提供矩阵求逆、特征值等计算 |
torch.matmul , @ | 张量乘法, 用于实现线性层、前向传播等核心数学操作 |
torch.sum , mean , exp , log | 常见数学运算,用于损失函数、归一化、激活函数等 |
6、典型神经网络构建数学流程
PyTorch 实现前馈神经网络中的一层线性变换 + 激活函数(ReLU) 的基本流程。
import torch import torch.nn.functional as F # 输入张量 (batch_size=2, features=3) x = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) # 权重和偏置 W = torch.randn(3, 2) # (input_features, output_features) b = torch.randn(2) # (output_features) # 线性变换:y = x @ W + b z = torch.matmul(x, W) + b # 激活函数 output = F.relu(z)