Pytorch常见指令
一、常见语句
参考:https://zhuanlan.zhihu.com/p/76255917
1、torch.cumsum
按dim逐级求和,积分操作
参考:https://blog.csdn.net/songxiaolingbaobao/article/details/114580364
2、torch.einsum
爱因斯坦求和
参考:https://zhuanlan.zhihu.com/p/434232512
3、DataLoader
有待仔细学习
数据流处理器
参考:https://blog.csdn.net/Chinesischguy/article/details/103198921
参数: dataset 数据集,map-style and iterable-style 可以用index取值的对象、 batch_size 大小 shuffle 取batch是否随机取, 默认为False sampler 定义取batch的方法,是一个迭代器, 每次生成一个key 用于读取dataset中的值 batch_sampler 也是一个迭代器, 每次生次一个batch_size的key num_workers 参与工作的线程数 collate_fn 对取出的batch进行处理 drop_last 对最后不足batchsize的数据的处理方法
4、NearestNeighbors
参考:https://blog.csdn.net/weixin_37804469/article/details/106911125?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164949000316782184673928%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164949000316782184673928&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~hot_rank-1-106911125.nonecase&utm_term=NearestNeighbors&spm=1018.2226.3001.4450
5、torch.stack
可以拼接,也可以实现一个list的每个元素转化成整体的tensor
参考:https://blog.csdn.net/Z_lbj/article/details/85012764
6、nn.Parameter
将本来不训练的参数变得可训练,比如transformer里的class token
参考:https://blog.csdn.net/weixin_44966641/article/details/118730730
7、Norm
归一化的介绍:https://blog.csdn.net/u013289254/article/details/99690730
BN和LN的区别
两种LN的区别:https://www.codeleading.com/article/30465389894/
F.normalize:某一维度l2化:https://www.cxymm.net/article/lj2048/118115681
二、引用说明
1、opencv与ros冲突
opencv搜索问题
File "/home/xjh/packages/keras-yolo3/yolo.py", line 179, in detect_video import cv2 ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
https://blog.csdn.net/qq_34544129/article/details/81946494 加入了PYTHONPATH没有用
然后强制删除路径,管用
import sys sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
当然应该也可以注释掉./bashrc中的ros路径
三、Numpy问题
1、astype
将array的数据类型改变
如:
A = np.array([[1.2,2.2,3.2,4.2],[5.2,6.2,7.2,8.2]])
C = A.astype(int)
参考:https://blog.csdn.net/rouranling/article/details/123103744
附录:带解决的问题
1、cluster是那里来的?
2、为什么输入是二维的,两个一样的拼在一起?
四、过程优化
1、爆显存
参考:https://blog.csdn.net/qq_28660035/article/details/80688427?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2
本次使用方法为:在每个batch取出,训练开始前加入torch.cuda.empty_cache(),立马不爆显存!
2、timm model_ema
似乎是可以优化指标的ema方法
参考:https://zhuanlan.zhihu.com/p/68748778
3、Warm up
预热,可以缓解过拟合,LOSS容易NAN
参考:
https://blog.csdn.net/comway_Li/article/details/105016725
https://blog.csdn.net/u011995719/article/details/77884728
https://blog.csdn.net/sinat_36618660/article/details/99650804
5、结束后台进程
pkill python
4、不显示warning
import warnings
warnings.filterwarnings('ignore')
6、测试的时候爆显存
训练的时候反而没有,这是不正常的,参考:https://blog.csdn.net/zdluffy/article/details/104715510
with torch.no_grad(): # 加上这句
outputs = model.forward(data)