ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

关于yolov5源码中的一些小地方

2022-06-21 09:38:20  阅读:196  来源: 互联网

标签:None 16 torch yolov5 pathlib 源码 关于 path


最近在读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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有