深度实践OpenStack:基于Python的OpenStack组件开发—3.4.2 逐元素运算
3.4.2 逐元素运算
上一节我们已经了解了如何对张量进行逐元素有理运算。本节更多考虑对张量的逐元素运算。
首先来看初等运算。在数学上,初等运算除了有理运算外,还包括以下函数。
* 幂函数(power function):可用函数torch.pow() 实现。
* 指数函数(exponential function):可用函数torch.exp() 实现。torch包里还有表示的torch.expm1() 函数,表示的sigmoid() 函数,双曲函数torch.sinh()、torch.cosh() 和torch.tanh()。
* 对数函数(logarithmic function):可用函数torch.log() 实现自然对数,用函数torch.log2() 实现以2为底的对数,用函数torch.log10() 实现以10为底的对数。torch包里还有表示的torch.log1p() 函数。
* 三角函数(trigonometric function)和反三角函数(inverse trigonometric function):包括三角函数torch.sin()、torch.cos()、torch.tan() 和反三角函数torch.asin()、torch.acos()、torch.atan()。用到的数据是弧度值而不是角度值。
代码清单3-15给出了利用以上函数完成初等运算的例子。
代码清单3-15 利用torch包中的函数完成初等运算
tp = torch.pow(torch.arange(1, 4), torch.arange(3))
print('pow = {}'.format(tp))
te = torch.exp(torch.tensor([0.1, -0.01]))
print('exp = {}'.format(te))
ts = torch.sin(torch.tensor([[3.14 / 4,],]))
print('sin = {}'.format(ts))
此外,torch包里还提供了许多分段函数,例如:
* 符号函数torch.sign() 和绝对值函数torch.abs();
* 与取整有关的函数,包括下取整函数torch.floor()、上取整函数torch.ceil()、四舍五入取整函数torch.round()、直接截取函数torch.trunc()、取小数部分的函数torch.
frac()等;
* 和除法余数有关的函数,如torch.fmod()、torch.remainder();
* 限制数据范围的函数torch.clamp()。
代码清单3-16中给出了一些使用分段函数的例子。
代码清单3-16 使用torch包中的分段函数
t5 = torch.arange(5)
tf = torch.frac(t5 * 0.3)
print('frac = {}'.format(tf))
tc = torch.clamp(t5, 0.5, 3.5)
print('clamp = {}'.format(tc))
在torch包里还有其他特殊函数,在此无法一一列举。例如,误差函数torch.erf() 计算
torch.erfinv() 函数计算torch.erf() 函数的反函数。
- 点赞
- 收藏
- 关注作者
评论(0)