编程语言
首页 > 编程语言> > 关于yolov5源码中的一些小地方

关于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