pytorch
GISer and Coder
这个作者很懒,什么都没留下…
展开
-
PyTorch validation loss 增大,为什么 accuracy 也在增大?
loss和accuracy之间并不是一定反相关有时候我们会在plot的图上发现损失增大了,但精度却也在提升,这是为什么呢?我们经常计算的损失其实是逐点(pointwise)损失值的平均值,但影响精度的是损失值的分布,而不是平均值,因为精度是模型预测的类别概率的二进制阈值。即使从平均损失中无法看出,但模型也仍然可能在改进。Ref损失和精度的联系(损失增大为什么精度也提升?)...原创 2020-12-03 16:36:45 · 1523 阅读 · 2 评论 -
PyTorch SGD 中参数 Momentum 的理解
动量,他的作用是尽量保持当前梯度的变化方向。没有动量的网络可以视为一个质量很轻的棉花团,风往哪里吹就往哪里走,一点风吹草动都影响他,四处跳动不容易学习到更好的局部最优。没有动力来源的时候可能又不动了。加了动量就像是棉花变成了铁球,咕噜咕噜的滚在参数空间里,很容易闯过鞍点,直到最低点。可以参照指数滑动平均。优化效果是梯度二阶导数不会过大,优化更稳定,也可以看做效果接近二阶方法,但是计算容易的多。其实本质应该是对参数加了约束。Ref怎么通俗易懂的理解SGD中Momentum的含义?...原创 2020-12-02 18:38:29 · 4717 阅读 · 1 评论 -
pytorch 保存网络模型时保存得到的 pkl 和 pth 文件的区别
一句话概括:区别不大。详解:torch.save()实现对网络结构和模型参数的保存。有两种保存方式:一是保存整个神经网络的的结构信息和模型参数信息,save的对象是网络模型;二是只保存神经网络的训练模型参数,save的对象是net.state_dict()。假设我有一个训练好的模型名叫net1,则torch.save(net1, ‘7-net.pth’) # 保存整个神经网络的结构和模型参数torch.save(net1, ‘7-net.pkl’) # 同上torch.save(net1.st原创 2020-11-15 17:34:36 · 3975 阅读 · 0 评论 -
归纳:PyTorch 语义分割优质文章
什么是Batch Normalization?Pytorch 中的数据类型 torch.utils.data.DataLoader 参数详解原创 2020-11-15 15:57:40 · 211 阅读 · 1 评论 -
pytorch .item() 的用法
torch.Tensor.item()得到一个元素张量里面的元素值注意只能是一个值(多个值会报错 “only one element tensors can be converted to Python scalars”),适合返回loss,acc原创 2020-11-14 16:48:21 · 645 阅读 · 0 评论 -
pytorch softmax 中参数 dim 的理解
首先,先看官方定义dim: A dimension along which Softmax will be computed (so every slice along dim will sum to 1)具体解释为:当 dim=0 时,是对每一维度相同位置的数值进行softmax运算;当 dim=1 时,是对某一维度的列进行softmax运算;当 dim=2 或 -1 时,是对某一维度的行进行softmax运算;Refpytorch中tf.nn.functional.softmax(x,d原创 2020-11-14 10:46:29 · 5989 阅读 · 1 评论 -
从 training loss 和 validation / testing loss 判断网络学习状态
1 train loss 不断下降,test loss 不断下降,说明网络正在学习2 train loss 不断下降,test loss 趋于不变,说明网络过拟合 (如何解决网络过拟合)3 train loss 趋于不变,test loss 趋于不变,说明学习遇到瓶颈,需要减小学习率或者批处理大小4 train loss 趋于不变,test loss 不断下降,说明数据集100%有问题5 train loss 不断上升,test loss 不断上升(最终变为NaN),可能是网络结构设计不当,训练超参原创 2020-11-13 21:26:03 · 5982 阅读 · 4 评论 -
pytorch 中一个batch的训练过程
# 一般情况下optimizer.zero_grad() # 梯度清零preds = model(inputs) # inference,前向传播求出预测值loss = criterion(preds, targets) # 计算lossloss.backward() # 反向传播求解梯度optimizer.step() # 更新权重更新网络权重参数此外,反向传播前,如果不进原创 2020-08-28 19:01:22 · 1673 阅读 · 1 评论