Pytorch常用数学与统计学函数
Pytorch中常用的数学函数,包括三角函数、绝对值函数、sign()
函数、误差函数等;还有一些统计学相关函数,包括histc()
函数、bincount()
函数等。
Pytorch中的数学函数
三角函数
1 |
|
其他数学函数
abs()
函数与neg()
函数
abs()
函数取张量中每个元素的绝对值
1 |
|
neg()
函数取张量中每个元素的相反数
1 |
|
sign()
函数
1 |
|
- 当元素小于0返回-1;
- 当元素等于0返回0;
- 当元素大于0返回1;
即:
函数图像如下:
sigmoid()
函数
1 |
|
通过sigmoid函数,可以将元素映射到0~1之间
sigmoid函数本质上是连续化的sign函数,可以解决sign函数的结果不连续而导致无法求导的问题。
- 当元素趋于负无穷时,函数;
- 当元素趋于正无穷时,函数值无限趋近于1;
即:
erf()
与erfc()
函数
1 |
|
红色曲线为误差函数
erfinv()
函数
1 |
|
函数图像参考
lerp()
函数
1 |
|
lerp()
函数对两个张量以start、end做线性插值
addcdiv()
函数与addcmul()
函数
addcdiv()
函数
1 |
|
addcdiv()
函数将tensor1
与tensor2
的商乘以value
再加上input
addcmul()
函数
1 |
|
addcmul()
函数将tensor1
与tensor2
的积乘以value
再加上input
cumprod()
函数与cumsum()
函数
cumprod()
函数
1 |
|
cumprod()
函数是向量维度上的计算,dim
参数指定参与计算的维度
cumprod()
在3这个维度上运算
1 |
|
返回结果为
1 |
|
cumsum()
函数
1 |
|
与cumprod()
函数类似,cumsum()
函数也是向量维度上的计算,dim
参数指定参与计算的维度
cumsum()
函数在3这个维度上运算
1 |
|
返回结果为
1 |
|
reciprocal()
函数
1 |
|
reciprocal()
函数取张量中每个元素的倒数
sqrt()
函数与rsqrt()
函数
1 |
|
sqrt()
函数取张量中每个元素的平方根
rsqrt()
函数取张量中每个元素的平方根的倒数
Pytorch中的统计学相关函数
此处以求平均值函数mean()
为例
1 |
|
若只传入一个张量,则计算该张量中所有元素的平均值;
若指定维度,则计算出该维度的每个向量中元素的平均值;
若指定了keepdim
为Ture
,则返回的结果张量保持与输入张量相同的维度;
常用函数
函数名 | 功能 |
---|---|
mean() |
返回平均值 |
sum() |
返回元素之和 |
prod() |
返回元素之积 |
max() |
返回最大值 |
min() |
返回最小值 |
argmax() |
返回最大值的索引值 |
argmin() |
返回最小值的索引值 |
median() |
返回中位数 |
mode() |
返回众数 |
以上函数的参数均与上例mean()
函数的参数大同小异
函数名 | 功能 |
---|---|
std() |
返回标准差 |
var() |
返回方差 |
上述两个函数除与mean()
函数相同的参数外,还有一个unbiased(bool)
参数,指定是否使用贝叶斯矫正
在统计学中,贝塞尔矫正是在样本方差和样本标准差的公式中使用 n - 1 代替 n,其中 n 是样本中的观察数。该方法纠正了总体方差估计中的偏差。它还部分纠正了总体标准偏差估计中的偏差。然而,校正通常会增加这些估计中的均方误差。
histc()
函数
计算输入张量的直方图
1 |
|
- 参数
bins
指定直方图的统计区间个数; min
和max
分别指定直方图中的最小值和最大值,若这两个参数为0,则选取输入张量中的最小/大值作为直方图的最小/大值;
bincount()
函数
统计一维非负整型数组中每个值出现的频次,他的bins
即区间个数比数组中的最大值大1,空数组除外
1 |
|
bincount()
函数只能处理一维的非负整型数组
- 参数
weight
指定数组中每个元素的权重,weight
应当是一个与input
形状相同的数组,指定weight
后返回的结果将是每个元素出现的频次与权重的乘积; - 参数
minlength
指定统计结果的bins
的最小长度,即区间个数的最小值,没有出现数的区间将用0补齐;
distributions
模块
在pytorch中有torch.distributions
这样一个模块,里面包含了很多的分布函数,例如伯努利分布、正态分布、均匀分布等,具体参考官方手册。:link:torch.distributions
在随机抽样过程中,可以通过manual_seed(seed)
函数来定义随机种子,以正太分布为例:
1 |
|
定义随机种子后,无论执行多少次,随机产生的结果都是一样的
Pytorch常用数学与统计学函数