python 文档链接
PyTorch
tensor().nonzero() 方法
返回一个包含输入
input
中非零元素索引的张量.输出张量中的每行包含input
中非零元素的索引输出为:1
2
3
4x = torch.Tensor([[1,2,3,4,0.6,0],
[1,2,3,4,0.4,1],
[1,2,3,4,0.7,2]])
(x[:,4:] > 0.5).nonzero()可以看到,输出值第一行表示切片后的数据中第 0 行第 0 个数据满足大于 0.5,第二行表示第 1 行第 1 个数据大于 0.5,...。(这里说的第几行第几列均表示 tensor 索引,从 0 开始)1
2
3
4tensor([[0, 0],
[1, 1],
[2, 0],
[2, 1]])
glob 模块
用于路径匹配
*
匹配一个或多个字符?
匹配单个字符[]
匹配指定范围内字符,如:[0-9]匹配数字
- 直接输出列表
1
2
3
4import glob
from pathlib import Path
path = Path(r'C:\Users\TLDX\Desktop\yolov5-4.0\runs\detect\exp');
print(glob.glob(r'{path}*')) # * 表示匹配所有路径 - 输出迭代器 参考链接
1
2
3
4
5import glob
from pathlib import Path
path = Path(r'C:\Users\TLDX\Desktop\yolov5-4.0\runs\detect\exp');
for file in glob.iglob(r'{path}*'):
print(file)
argparse 模块
Python 内置的一个用于命令项选项与参数解析的模块
主要有三个步骤:
- 创建 ArgumentParser() 对象
- 调用 add_argument() 方法添加参数
- 使用 parse_args() 解析添加的参数
1
2
3
4
5
6
7
8
9
10
11
12import argparse
# 实例化对象
parser = argparse.ArgumentParser()
# 添加属性
parser.add_argument('--weights', type=str, default='weights/yolov5s.pt', help='initial weights path') # 模型训练权重
parser.add_argument('--epochs', type=int, default=2) # epoch 次数
parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes') # 缩放后要训练的图像大小
parser.add_argument('--rect', action='store_true', help='rectangular training') # 矩形训练
# 解析添加的参数
args = parser.parse_args()
print(args)
re 模块
使用正则表达式匹配
os 模块
1 | import os |
可参考 菜鸟教程。
python 独特使用
1 | images = [x for x in files if x.split('.')[-1].lower() in images_format] |
python 内置函数
- hasattr 函数 用于判断对象是否包含对应的属性
1
hasattr(object, name)
- getattr 函数 函数用于返回一个对象属性值。
1
getattr(object, name, default)
- object:对象
- name:对象的属性
- defaul:当需要查找的属性没有时,提供默认返回值
- setattr 函数 函数用于设置属性值
1
setattr(object, name, value)
- object:对象
- name:对象的属性
- value:属性值
yaml
一种标记语言,一般用于配置文件的书写
用法 1
2
3
4
5
6
7import yaml
# 读 yaml 文件
with open('file_name') as f:
data = yaml.load(f, Loader=FullLoader)
# 写 yaml 文件
with open('file_name') as f:
yaml.dump(data, f,)
tqdm
Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。
可以有以下几种用法 1. ```python from tqdm import tqdm for i in tqdm(range(1000)): pass 1
2
3
42. ```python
pbar = tqdm(['a', 'b','c','d'])
for char in pbar:
pbar.set_description('Processing %s' % char)
Threading
参考链接。