深度学习常用方法表格
PyTorch 常用操作
张量方法
函数/属性 | 说明 | 示例 |
---|---|---|
torch.tensor() |
创建张量(已有输入数据) | x = torch.tensor([1, 2, 3]) |
torch.zeros() |
创建指定形状全零张量 | x = torch.zeros(2, 3) |
torch.ones() |
创建指定形状全一张量 | x = torch.ones(3) |
torch.arange() |
创建整数顺序序列(start,end,默认step=1) | x = torch.arange(0, 10) |
x.shape / .size() |
查看张量形状 | x.shape |
x.view() / .reshape() |
改变张量形状 (不改变数据顺序) | x.view(2, 3) |
x.unsqueeze() |
在指定维度增加大小为1维度 | x.unsqueeze(0) |
x.squeeze() |
去除所有或指定大小为1的维度 | x.squeeze() |
x.numpy() |
转为 NumPy数组 | x.numpy() |
torch.cat() |
拼接张量 | torch.cat([a, b], dim=0) |
张量属性
属性 | 说明 | 示例 |
---|---|---|
x.shape |
张量的形状 (各维度大小) | x.shape |
x.size() |
同 shape ,返回张量形状 |
x.size() |
x.dtype |
张量的数据类型(如dtype=float32) | x.dtype |
x.device |
张量所在设备(CPU/GPU) | x.device |
x.requires_grad |
自动求导(自构建计算图) | x.requires_grad |
x.dim() |
张量的秩/维度 | x.dim() |
keepdim (参数) |
保持降维的维度(保持维度为1) | torch.sum(x, dim=1, keepdim=True) |
张量初始化与随机操作
函数 | 说明 | 示例 |
---|---|---|
torch.zeros(shape) |
创建指定形状的全零张量,shape是生成张量的形状 | torch.zeros((2, 3)) |
torch.ones(shape) |
创建指定形状的全一张量 | torch.ones(4) |
torch.arange(start, end, step) |
创建等差整数序列张量 | torch.arange(0, 5, 1) |
torch.rand(shape) |
创建指定形状数值在 [0, 1) 区间均匀分布的随机张量 | torch.rand(2, 3) |
torch.randn(shape) |
创建指定形状均值 0,标准差 1 的标准正态分布随机张量 | torch.randn(3) |
torch.normal(mean, std, size) |
创建正态分布随机张量(mean均值,std标准差) | torch.normal(mean=0.0, std=1.0, size=(2,3)) |
torch.manual_seed(seed) |
设置随机数种子,种子数字不变随机数序列相同,数字是几无所谓不变就行 | torch.manual_seed(42) |
数学运算
函数 | 说明 | 示例 |
---|---|---|
torch.sum() |
求和 | torch.sum(x) |
torch.mean() |
求平均 | torch.mean(x) |
torch.max() |
最大值 | torch.max(x) |
torch.abs() |
绝对值 | torch.abs(x) |
torch.clamp() |
限制范围 | torch.clamp(x, 0, 1) |
线性代数
函数 | 说明 | 示例 |
---|---|---|
torch.mm(A, B) |
矩阵乘法(Matrix Multiplication),仅限二维矩阵 | C = torch.mm(A, B) |
torch.matmul(A, B) / A @ B |
广播矩阵乘法,支持高维张量(mm的完全上位,可直接替代) | C = A @ B |
torch.mv(A, v) |
矩阵与向量乘法(Matrix-Vector Multiplication) | y = torch.mv(A, v) |
torch.dot(x, y) |
向量点积(Dot Product),一维张量 | d = torch.dot(x, y) |
torch.norm(x, p=2) |
求得张量的范数,p 表示范数类型,默认是2范数(欧几里得范数) |
n = torch.norm(x) |
torch.linalg.inv(A) |
矩阵求逆,仅限方阵 | A_inv = torch.linalg.inv(A) |
torch.linalg.solve(A, b) |
求解线性方程组 $Ax = b$ | x = torch.linalg.solve(A, b) |
torch.transpose(A, dim0, dim1) |
转置张量指定两个维度 | A_t = torch.transpose(A, 0, 1) |
torch.t(A) |
矩阵转置(仅限二维矩阵,等同于 transpose(0,1) ) |
A_t = torch.t(A) |
神经网络核心
模块或函数 | 说明 | 示例 |
---|---|---|
nn.Linear() |
线性层 | nn.Linear(10, 5) |
nn.ReLU() |
激活函数 | nn.ReLU() |
nn.CrossEntropyLoss() |
分类损失函数 | loss_fn = nn.CrossEntropyLoss() |
optimizer.step() |
优化器更新 | optimizer.step() |
loss.backward() |
反向传播 | loss.backward() |
NumPy 常用函数和方法
功能分类 | 方法示例 | 说明 |
---|---|---|
数组属性 | .shape |
获取数组形状 |
.dtype |
获取数据类型 | |
.ndim |
获取维度数 | |
.size |
元素总数 | |
数学运算 | np.add(a, b) |
加法,支持广播 |
np.subtract(a, b) |
减法 | |
np.multiply(a, b) |
乘法 | |
np.divide(a, b) |
除法 | |
np.power(a, b) |
幂运算 | |
np.sqrt(a) |
平方根 | |
np.exp(a) |
指数 | |
np.log(a) |
自然对数 | |
np.round(a, decimals=0) |
四舍五入 | |
聚合函数 | np.sum(a, axis=None) |
求和 |
np.mean(a, axis=None) |
均值 | |
np.median(a, axis=None) |
中位数 | |
np.std(a, axis=None) |
标准差 | |
np.var(a, axis=None) |
方差 | |
np.min(a, axis=None) |
最小值 | |
np.max(a, axis=None) |
最大值 | |
np.argmax(a, axis=None) |
最大值索引 | |
np.argmin(a, axis=None) |
最小值索引 | |
线性代数 | np.dot(a, b) |
点积/矩阵乘法 |
np.matmul(a, b) |
矩阵乘法 | |
np.transpose(a) |
转置 | |
np.linalg.inv(a) |
矩阵求逆 | |
np.linalg.det(a) |
行列式 | |
np.linalg.eig(a) |
特征值和特征向量 | |
形状变换 | np.reshape(a, newshape) |
重塑数组 |
np.flatten(a) |
展平数组 | |
np.concatenate((a, b), axis=0) |
拼接数组 | |
np.split(a, indices_or_sections) |
分割数组 | |
np.expand_dims(a, axis) |
增加维度 | |
np.swapaxes(a, axis1, axis2) |
交换指定轴 | |
随机数 | np.random.rand(d0, d1, ...) |
均匀分布随机数 |
np.random.randn(d0, d1, ...) |
标准正态分布随机数 | |
np.random.randint(low, high, size) |
整数随机数 | |
数组生成 | np.arange(start, stop, step) |
按步长生成等差序列 |
np.linspace(start, stop, num) |
生成等间隔数列 | |
np.tile(a, reps) |
重复数组 | |
复制与唯一 | np.copy(a) |
复制数组 |
np.unique(a) |
找唯一值 | |
逻辑和条件 | np.where(condition, x, y) |
条件选择 |
np.any(a, axis=None) |
是否任意满足条件 | |
np.all(a, axis=None) |
是否全部满足条件 | |
范围限制 | np.clip(a, a_min, a_max) |
限制数组元素范围 |
数组操作 | np.roll(a, shift, axis=None) |
滚动数组 |
数组构造 | np.zeros(shape) |
生成全 0 数组 |
np.ones(shape) |
生成全 1 数组 | |
np.full(shape, fill_value) |
生成指定值填充的数组 | |
np.eye(N) |
生成单位矩阵(对角为 1) | |
np.identity(n) |
生成 n 阶单位矩阵 | |
转换函数 | np.asarray(a) |
转换为数组(避免复制) |
np.array(a) |
转换为数组(复制数据) | |
np.astype(dtype) |
类型转换 |
Pandas 常用方法
功能分类 | 方法示例 | 说明 |
---|---|---|
创建数据结构 | pd.Series(data) |
创建一维数据,类似数组 |
pd.DataFrame(data) |
创建二维表格数据 | |
查看数据 | .head(n) |
查看前 n 行 |
.tail(n) |
查看后 n 行 | |
.info() |
数据框信息摘要 | |
.describe() |
统计汇总 | |
索引与选择 | .loc[row_labels, col_labels] |
根据标签索引行列 |
.iloc[row_indices, col_indices] |
根据位置索引行列 | |
.at[row_label, col_label] |
快速访问单个元素 | |
.iat[row_index, col_index] |
快速访问单个元素 | |
过滤和条件 | df[df['col'] > value] |
条件筛选 |
.query('col > value') |
字符串条件筛选 | |
新增列 | df['new_col'] = data |
添加新列 |
删除 | .drop(columns=['col1', 'col2']) |
删除列 |
.drop(index=[0,1]) |
删除行 | |
排序 | .sort_values(by='col') |
按某列排序 |
缺失值处理 | .isnull() |
判断缺失值 |
.dropna() |
删除缺失值 | |
.fillna(value) |
填充缺失值 | |
聚合 | .groupby('col').sum() |
按列分组求和 |
.groupby('col').agg(['mean','max']) |
多聚合函数 | |
合并与连接 | pd.concat([df1, df2]) |
拼接数据 |
pd.merge(df1, df2, on='key') |
数据库风格合并 | |
数据导入导出 | pd.read_csv('file.csv') |
读取CSV文件 |
.to_csv('file.csv') |
保存为CSV |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 梦!
评论
WalineGiscus