硫辨姥 发表于 2025-9-24 17:50:09

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]
查看完整版本: PyTorch中的求余