Python小知识点
Python小知识点
文章目录
- Python小知识点
- 一、Python
- 二、Pytorch
- 1. torch.squeeze()
- 2. torch.unsqueeze()
- 3. torch.nn.functional.interpolate()
- 4. view()
- 5. torch.nn.function.kl_div()
- 三、Opencv
- 四、TensorFlow
最近发现好多东西经常不用就忘记了,所以写一篇,随手记录,并且不定时更新自己高频用到的,或者比较重要的小知识点
一、Python
二、Pytorch
1. torch.squeeze()
对张量降维
torch.squeeze(input, dim=None, out=None)
当dim没有设置时,默认为None,将输入张量形状中的1去除并返回,如果原始形状是(AB1C1D),输出的形状是(ABCD)。当给定dim时,那么squeeze只发生在给定的维度上 (并且该维度必须为1),例如:输入形状是(A1B),如果squeeze(input,0),则张量不会变,只有用squeeze(input,1)形状才会变为(A*B)
2. torch.unsqueeze()
用于扩展张量维度 (1维变2维,2维变3维…),返回一个新的张量,对输入的既定位置插入维度1
torch.unsqueeze(input, dim, out=None)
# input(tensor): 输入张量
# dim(int):插入维度的索引
# out(tensor/optional):结果为张量
3. torch.nn.functional.interpolate()
实现插值和上采样
可以简单的理解为任何可以让你的图像变成更高分辨率的技术,最简单的方法是重采样和插值。
torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None)
# input(tensor):输入张量
# size(int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]): 输出大小.
# scale_factor (float or Tuple[float]):指定输出为输入的多少倍数。如果输入为tuple,也要制定为tuple类型
# mode (str):可使用的上采样算法,有’nearest’, ‘linear’, ‘bilinear’, ‘bicubic’ , ‘trilinear’和’area’. 默认使用’nearest’
# align_corners (bool, optional) :如果align_corners=True,则对齐 input 和 output 的角点像素(corner pixels),保持在角点像素的值. 只会对 mode=linear, bilinear 和 trilinear 有作用. 默认是 False.
可用于重置大小的mode有:最近邻、线性(3D-only),、双线性, 双三次(bicubic,4D-only)和三线性(trilinear,5D-only)插值算法和area算法
4. view()
view是改变tensor的形状,返回具有相同数据但大小不同的新张量。
5. torch.nn.function.kl_div()
计算两个矩阵之间的kl散度
loss = F.kl_div(input,label,reduction,name)
# input:输入张量
# label:输入张量
# reduction:(可选)可用类型为‘none’ | ‘batchmean’ | ‘mean’ | ‘sum’,‘none’表示无reduction,‘batchmean’ 表示输出的总和除以批大小,‘mean’ 表示所有输出的平均值,‘sum’表示输出的总和。
# name(可选)
注:第一个参数传入的是对数概率矩阵,第二个参数是概率矩阵。
KL散度具有不对称性,存在一个指导和被指导的关系,因此input和label之间的顺序需要确定。如果想要label知道input,第一个参数要传input,即被指导的放在前面,之后求相应的概率和对数概率就行