python
内嵌语法
列表、字典、集合的推导式
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares) # 输出 [1, 4, 9, 16, 25]
等价于
numbers = [1, 2, 3, 4, 5]
squares = {n: n**2 for n in numbers}
print(squares) # 输出 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
三目运算符
基本语法
value_if_true if condition else value_if_false
其中,condition 是要判断的条件,如果它为 True,则返回 value_if_true,否则返回 value_if_false。
示例
x = 5
print("x is positive" if x > 0 else "x is non-positive")
等价于
x = 5
if x > 0:
print("x is positive")
else:
print("x is non-positive")
整除运算符 //
两数相除,结果向下取整
函数的可选参数
如randrange(start, stop[, step])中的[, step]
表示step是可选参数,不提供step参数时,默认为1
函数的可变位置参数,可变关键字参数
*args用于接受可变数量的位置参数。它会将多个位置参数打包成一个元组,传递给函数,函数内部可以通过遍历元组的方式,获取每个位置参数的值。例如:
def my_func(*args):
for arg in args:
print(arg)
my_func(1, 2, 3, 'hello')
输出
1
2
3
hello
**args用于接受可变数量的关键字参数。它会将多个关键字参数打包成一个字典,传递给函数,函数内部可以通过字典的键值对来获取每个关键字参数的值。例如:
def my_func(**kwargs):
for key, value in kwargs.items():
print(key, value)
my_func(a=1, b=2, c=3, d='hello')
输出
a 1
b 2
c 3
d hello
如果同时使用了可变位置参数、args和可变关键字参数,它们的顺序应该是:位置参数、*args、关键字参数、**args
文件处理
os.scandir(path)
扫描路径path下所有文件和子目录,返回包含这些信息的迭代器对象
os.scandir返回一个包含目录中的文件和子目录的迭代器。每个条目是一个DirEntry对象,包含有关该条目的元数据,如文件名、大小、创建时间和修改时间等。使用os.scandir可以遍历一个目录,而不需要在内存中创建一个完整的列表,从而可以减少内存开销和提高性能。此外,DirEntry对象还具有访问文件系统属性和操作文件的方法。
os.listdir(path)
os.listdir返回一个包含指定目录下所有文件和子目录名称的列表。每个子项是字符串类型,表示文件名或子目录名。
pytroch
load函数的参数map_location
当没有gpu时,使用此函数将gpu上的张量映射到cpu上
if cpu:
kwargs = {'map_location': lambda storage, loc: storage}
if resume == -1:
load_from = torch.load(
os.path.join(apath, 'model_latest.pt'),
**kwargs
)
深度学习
patch
patch:小块,小片;补丁
将图像像素矩阵划分成诸多小矩阵,这些小矩阵就称为patch
patch重叠
当图片分辨率过大时,受限于计算机资源,计算机无法直接对整个图像像素矩阵计算。
将整个图像像素矩阵划分成patch,计算机可以直接对patch处理
同时也可以将“数据增强”的方法,应用在patch划分的过程中
chop
防止输入图像太大,占据过多计算资源
将大图像,分割成诸多小块
对小块进行处理,最后将小块的处理结果拼接,得到最终结果
chop不重叠
设置阈值,当图像大小大于阈值时,采用chop策略
self-ensemble 自集成
使用在test(或inference)阶段的数据增强方式
与train阶段不同,test阶段不能直接对test数据集数据集增强
这将导致数据分布与test数据集不同
这时候就可以采用self-ensemble数据增强方式
在对一张图像进行多次预测,每次预测采用不同数据增强方式,最后结果取平均值
gradient clipping
梯度剪裁,防止梯度爆炸
utils.clip_grad_value_(
self.model.parameters(),
self.args.gclip
)
将梯度限制在阈值self.args.gclip范围内
计算机视觉
插值interpolation
从离散数据点中获取连续近似函数值的方法
根据已知像素点,估计其他像素点
通常用于将低分辨率图像,放大到高分辨率图像
滤波
图像处理技术,去除噪声、减少模糊等
滤波器,对像素进行加权处理
像素矩阵
行,列,通道