pytoch学习
1、张量
2、torch.unsqueeze
用于在指定的维度上插入一个大小为1的维度
3、torch.from_numpy()和torch.numpy()
from_numpy()函数用于将NumPy数组转换为PyTorch张量。
该函数在内部使用了NumPy的C接口,所以它保留了NumPy数组的形状和数据类型。
subsequence_mask = torch.from_numpy(subsequence_mask).byte()
numpy()函数用于将PyTorch张量转换为NumPy数组。
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
numpy_array = x.numpy()
4、torch.nn
4.1 torch.nn.Linear()全连接层
nn.Linear(in_feature,out_feature,bias)#初始化
#in_feature: nn.Linear 初始化的第一个参数,即输入Tensor最后一维的通道数
#out_feature: nn.Linear 初始化的第二个参数,即返回Tensor最后一维的通道数
#bias表示偏置
4.2 torch.nn.functional()
4.3
torch.nn.CrossEntropyLoss(weight=None, size_average=None,
ignore_index=-100, reduce=None, reduction='mean', label_smoothing=0.0)
5、torch.matmul()
@映射为torch.matmul()
tensor的乘法,输入可以是高维的。
6、torch.Tensor.masked_fill(mask, value)
masked_fill方法有两个参数,mask和value,mask是一个pytorch张量(Tensor),元素是布尔值,value是要填充的值,填充规则是mask中取值为True位置对应于self的相应位置用value填充。
mask和value的形状要么是相同的, 要么是可以进行广播的, 否则会报错。
7、torch.optim
实现了多种优化算法的包。
使用torch.optim,需先构造一个优化器对象Optimizer,用来保存当前的状态,并能够根据计算得到的梯度来更新参数。
7.1 torch.optim.SGD()
torch.optim.SGD(params, lr=<required parameter>, momentum=0, dampening=0, weight_decay=0, nesterov=False)
params (iterable):iterable of parameters to optimize or dicts defining parameter groups
momentum (float, optional):momentum factor (default: 0)
dampening(阻尼?) (float, optional):dampening for momentum (default: 0)
weight_decay (float, optional):weight decay (L2 penalty) (default: 0)即L2regularization,选择一个合适的权重衰减系数λ非常重要,这个需要根据具体的情况去尝试,初步尝试可以使用 1e-4 或者 1e-3
7.2 torch.optim.Adagrad()
通过累积梯度平方和r 来调整学习率 η
torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0, initial_accumulator_value=0)
7.3 torch.optim.RMSprop()
引入一个衰减系数β (通常设置为 0.9)**来解决这个问题,使得历史信息能够指数级衰减,从而避免了学习率持续下降。
torch.optim.RMSprop(params, lr=0.01, alpha=0.99, eps=1e-08, weight_decay=0, momentum=0, centered=False)
7.4 torch.optim.Adam()
torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)
betas (Tuple[float, float], optional) – coefficients used for computing running averages of gradient and its square (default: (0.9, 0.999))
8、contiguous()和改变元数据的操作narrow()、view()、expand()、transpose()
函数返回一个有相同数据但不同大小的 Tensor,即改变矩阵维度。
view( -1 ) #变为一维
当调用contiguous()时,会强制拷贝一份tensor,让它的布局和从头创建的一模一样,但是两个tensor完全没有联系。
9、损失函数
9.1 criterion()函数
用于计算损失值的关键函数。它主要用来衡量模型预测值与真实标签值之间的差异程度,即度量模型预测的准确性。
loss = criterion(output, target)
9.2 交叉熵损失torch.nn.CrossEntropyLoss()
在多分类任务中,经常采用 softmax 激活函数+交叉熵损失函数。
torch.nn.CrossEntropyLoss(weight=None, ignore_index=-100, reduction='mean')
参数:
weight (Tensor, optional) – 自定义的每个类别的权重. 必须是一个长度为 C 的 Tensor
ignore_index (int, optional) – 设置一个目标值, 该目标值会被忽略, 从而不会影响到 输入的梯度。
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值; sum:返回loss的和。默认:mean。
9.3 平滑版L1损失 SmoothL1Loss函数torch.nn.SmoothL1Loss()
torch.nn.SmoothL1Loss(reduction='mean')
参考文章
1、PyTorch学习之 torch.optim 的6种优化器及优化算法介绍:https://blog.csdn.net/qq_36589234/article/details/89330342
2、Pytorch中contiguous()函数理解:https://blog.csdn.net/kdongyi/article/details/108180250
3、损失函数:原文链接:https://blog.csdn.net/shanglianlm/article/details/85019768