深度实践OpenStack:基于Python的OpenStack组件开发—3.4.2 逐元素运算

举报
华章计算机 发表于 2019/06/01 23:27:22 2019/06/01
【摘要】 本书摘自《深度实践OpenStack》,作者是喻涛,田亮,张家龙,赵利军,李飞。

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() 函数的反函数。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。