关于yolov5源码中的一些小地方
作者:互联网
最近在读yolov5 的源码,发现了一些小地方以前没有注意过,特此记录
其中有一行:
save_dir = increment_path(Path(project) / name, exist_ok=exist_ok)
这个是一个存储地址,但是是用了 / 直接拼接的,刚开始读的时候非常疑惑,然后发现原来作者用的并不是os.path,而是pathlib模块,该模块支持使用/来拼接多个字符串
比如:
from pathlib import *
path = Path('C://')
print(path / 'test.py')
执行结果为:
C:/test.py
顺便查看了一下pathlib模块,发现这个模块比os.path更加强大,关于pathlib后面单独记录
源码中还有一处
im = im[None] # expand for batch dim
开始时也是非常迷糊,后来查询了资料才恍然大悟,参考:
https://sparrow.dev/adding-a-dimension-to-a-tensor-in-pytorch/
这个是通过插入None伪装一个axis达到增加tensor维度。
这种方法要比unsqueeze方法更加直观、简单,
具体方法:
x = torch.randn(16)
x = x[None, :] # 这里:可以省略,默认在前面扩展
x.shape
# torch.Size([1, 16])
还可以插入多个维度
x = torch.randn(16)
x = x[None, None, :]
x.shape
# torch.Size([1, 1, 16])
使用:来确定扩展的位置
x = torch.randn(3, 4)
x = x[:, :, None]
x.shape
# torch.Size([3, 4, 1])
标签:None,16,torch,yolov5,pathlib,源码,关于,path 来源: https://www.cnblogs.com/viento-wind/p/16395665.html