找回密码
 立即注册
首页 业界区 安全 PyTorch中的求余

PyTorch中的求余

硫辨姥 2025-9-24 17:50:09
技术背景

求余数,是一个比较简单的数学计算,内容就不展开介绍了。在不同的工具中,在实现余数计算这个操作的时候,有可能有不同的结果。这里介绍的是Python、Numpy和PyTorch中的几种不同的计算余数的方法。
计算示例

首先最简单的,演示一下Python原生的余数计算方法:
  1. In [1]: -0.5%5
  2. Out[1]: 4.5
复制代码
这个意思就是说,-0.5对5求余数,得到的结果是4.5,那么也是数学上所预期的正确结果。然后看一下numpy的余数计算:
  1. In [1]: import numpy as np
  2. In [2]: a = np.array([-0.5])
  3. In [3]: b = np.array([5])
  4. In [4]: a%b
  5. Out[4]: array([4.5])
  6. In [5]: np.mod(a,b)
  7. Out[5]: array([4.5])
复制代码
numpy的计算结果跟数学上的预期是一致的,不论是哪个函数。接下来再看一下pytorch的几个求余数接口:
  1. In [1]: from torch import tensor, fmod, remainder
  2. In [2]: a = tensor([-0.5])
  3. In [3]: b = tensor([5])
  4. In [4]: a%b
  5. Out[4]: tensor([4.5000])
  6. In [5]: fmod(a,b)
  7. Out[5]: tensor([-0.5000])
  8. In [6]: remainder(a,b)
  9. Out[6]: tensor([4.5000])
复制代码
其中比较特殊的一个是fmod函数。从数学上来说,余数我们一般只取正数,但是fmod的计算结果可以有负数:
  1. In [1]: from torch import tensor, fmod
  2. In [2]: a = tensor([-5.5])
  3. In [3]: b = tensor([5])
  4. In [4]: fmod(a,b)
  5. Out[4]: tensor([-0.5000])
  6. In [5]: a = tensor([-4.9])
  7. In [6]: fmod(a,b)
  8. Out[6]: 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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册