PyTorch中的求余
技术背景求余数,是一个比较简单的数学计算,内容就不展开介绍了。在不同的工具中,在实现余数计算这个操作的时候,有可能有不同的结果。这里介绍的是Python、Numpy和PyTorch中的几种不同的计算余数的方法。
计算示例
首先最简单的,演示一下Python原生的余数计算方法:
In : -0.5%5
Out: 4.5这个意思就是说,-0.5对5求余数,得到的结果是4.5,那么也是数学上所预期的正确结果。然后看一下numpy的余数计算:
In : import numpy as np
In : a = np.array([-0.5])
In : b = np.array()
In : a%b
Out: array()
In : np.mod(a,b)
Out: array()numpy的计算结果跟数学上的预期是一致的,不论是哪个函数。接下来再看一下pytorch的几个求余数接口:
In : from torch import tensor, fmod, remainder
In : a = tensor([-0.5])
In : b = tensor()
In : a%b
Out: tensor()
In : fmod(a,b)
Out: tensor([-0.5000])
In : remainder(a,b)
Out: tensor()其中比较特殊的一个是fmod函数。从数学上来说,余数我们一般只取正数,但是fmod的计算结果可以有负数:
In : from torch import tensor, fmod
In : a = tensor([-5.5])
In : b = tensor()
In : fmod(a,b)
Out: tensor([-0.5000])
In : a = tensor([-4.9])
In : fmod(a,b)
Out: tensor([-4.9000])因此,pytorch中的remainder函数才是我们正常所理解的求余数操作,也直接使用a%b这样的写法。
总结概要
本文通过几个示例,介绍了在Python、Numpy和PyTorch三个不同的框架下,对于求余数函数的定义。比较特殊的是pytorch中的fmod函数,并不符合数学上的求余数方法,而是需要使用remainder函数。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/torch_mod.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]