文章概览
常用词典
1 | std: 标准差 |
torch
PyTorch documentation — PyTorch 2.0 documentation
.permute(2, 0, 1)
:改变维度位置
.transpose(1, 2)
:改变维度位置
.unsqueeze(0)
:去除空余维度 torch.squeeze(tensor)
是同样的效果
.expand(b, 2, h, w)
:用重复填充
.view(B, N, -1)
:resize(纯纯拉直按顺序拼)
.contiguous()
: 深拷贝
生成
1 | # 生成随机数 |
运算
1 | # 点乘 @ 对应位置相乘 * |
模块
1 | # 自己模型的结构 |
常用函数
torch.optim.Adam(model.parameters(), lr=3e-4)
生成优化器optimizer
- params (iterable) – 待优化参数,一般用
model.parameters()
,其中model是待优化模型 - lr (float, 可选) – 学习率(默认:1e-3)
- betas (Tuple[float, float], 可选) – 用于计算梯度以及梯度平方的运行平均值的系数(默认:0.9,0.999)(不懂)
- eps (float, 可选) – 防止零作为分母报错(默认:1e-8)
- weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认: 0)(UDL中用1e-8)
torch.nn.Dropout(p=0.1, inplace=False)
dropout防止过拟合,随机元素置零。
数据要相应放大为 $\frac{1}{1-p}$ 倍
- p - 元素归零的占比
- inplace - 是否补充0元素
函数字典
nn.functional
embedding编码
类似于按索引找列表的值,编码矩阵存储不同特征,输入是特征的索引,输出特征向量
1
F.embedding(input, embedding_matrix) # 返回embedding_matrix中input对应的特征向量
nn.MSELoss
损失函数,均方误差
nn.Conv2d
nn.Conv2d(in_channel, out_channel,kernel_size=2,stride=2)
常用 nn.Conv2d(3,3,kernel_size=2,stride=2)
把图像缩小2倍
nn.Upsample
nn.Upsample(scale_factor=4, mode='nearest')
上采样4倍
nn.AdaptiveAvgPool2d
nn.AdaptiveAvgPool2d(1)
输出图像大小为1,也可设为指定长宽
设置型函数
1 | # 设置种子,保证可复现 |
常用运算单元
模型框架
1 | # 归一化 |
训练框架
1 | for epoch in range(epochs): |
优化器和损失函数
1 | import torch.nn as nn |
基础和超参数框架
1 | import torch |
多想多做,发篇一作