pytorch使用 小tip/坑/雷

pytorch使用 小tip/坑/雷


个人使用pytorch的日记,持续更新


一、如何创建自己的数据集

任务:创建一组数据集,X为一组一维tensor,即多个特征,Y为一维tensor——对应为每一个特征的标签

dataset = Data.TensorDataset(X,Y)
dataload = Data.DataLoader(dataset,batch_size,shuffle=True)

参考文献:https://zhuanlan.zhihu.com/p/371516520

标签元素可以是单个值【但注意最好先设定为int64型(long型)tensorlong=tensor.long(),pytorch对label的要求】,也可以是one-hot。
label转化成one-hot可以使用pytorch自带的函数TORCH.NN.FUNCTIONAL.ONE_HOT
可见下方pytorch官网手册
参考文献:https://pytorch.org/docs/stable/generated/torch.nn.functional.one_hot.html


二、查看tensor内部元素数据类型

print(tensor.dtype)

三、tensor、list、numpy转换

ndarray = np.array(list)  # list-》numpy
list = ndarray.tolist()  # numpy-》ist
tensor=torch.Tensor(list)  # list-》torch.Tensor
list = tensor.numpy().tolist()  # torch.Tensor-》numpy-》list
ndarray = tensor.cpu().numpy()  # torch.Tensor-》numpy【gpu上的tensor不能直接转为numpy】
tensor = torch.from_numpy(ndarray)  # numpy-》torch.Tensor

参考文献:https://blog.csdn.net/qq_29617883/article/details/99771411


四、训练loss降不下来,卡在某个奇怪的值

可能是处于“偶然性的正确”情况中。
例如,100个类别的分类问题,loss卡在4.6附近。
这实际上是因为网络只是随机的选择输出,选择正确标签的概率只有百分之一,故而-ln(0.01)=4.60517018599
可以尝试:加入BN层—>参数正则化---->drop out等等trick
个人实测加入参数正则化效果最明显,例如

optimizer = torch.optim.SGD(model.parameters(),lr=0.01,weight_decay=0.01)

参考文献:https://blog.slavv.com/37-reasons-why-your-neural-network-is-not-working-4020854bd607#86fe


五、batchsize和lr的关系

通常当我们增加batchsize为原来的N倍时,要保证经过同样的样本后更新的权重相等,按照线性缩放规则,学习率应该增加为原来的N倍。但是如果要保证权重的方差不变,则学习率应该增加为原来的sqrt(N)倍,目前这两种策略都被研究过,使用前者的明显居多。
参考文献:https://zhuanlan.zhihu.com/p/64864995https://zhuanlan.zhihu.com/p/83626029


# 持续更新.......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值