pytorch学习记录

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

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值