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)



 

posted @ 2022-04-02 14:34  小咸鱼在看博客  阅读(203)  评论(0编辑  收藏  举报