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常用数学与统计学函数

