PyTorch 中的 remainder() 方法详解

让我们来深入了解一下 PyTorch 中的 remainder() 方法。这个方法主要用于计算除法运算的逐元素余数(即被除数除以除数)。被除数是一个张量,而除数可以是一个数字,也可以是另一个张量。该方法应用了取模运算,并且如果结果的符号与除数不同,则会在取模结果上加上除数。值得注意的是,此方法仅支持整数和浮点数类型的输入。下面是该方法的具体语法——

> 语法: torch.remainder(input, other, out=None)

>

>

> 参数:

>

>

> – input:被除数(张量)。

> – other:除数(张量或数字)。

>

>

> 返回值: 返回一个包含余数值的张量。

接下来,让我们通过一些 Python 示例,一起来深入理解 torch.remainder() 方法的具体用法。

示例 1:

在下面的 Python 示例中,我们将计算一个 torch 张量除以一个数字时的余数。

在这里,当 -13 除以 5 时,余数是 2。这是怎么算出来的呢?mod(-13, 5) = -3,然后 -3 + 5 = 2。当取模值的符号与除数不同时,就会将除数加到取模结果上。请注意,当除数为 -5 时,余数是如何变化的。

Python3


CODEBLOCK_aab31903

输出:

Dividend: tensor([  5, -13,  24,  -7,   7])
Divisor: 5
Remainder: tensor([0, 2, 4, 3, 2])
Divisor: -5
Remainder: tensor([ 0, -3, -1, -2, -3])

示例 2:

在下面的 Python 示例中,我们将计算当被除数和除数都是 torch 张量时的逐元素余数。

Python3


CODEBLOCK_559a025f

输出:

Dividend: tensor([ 15, -13,  15, -15,   0])
Divisor: tensor([ 7,  7, -7, -7,  7])
Remainder: tensor([ 1,  1, -6, -1,  0])

示例 3:

在这个示例中,我们像示例 2 一样计算余数,但这次是针对浮点型张量。

Python3


CODEBLOCK_2b7a9e0f

输出:

Dividend: tensor([ 15., -13.,  15., -15.,   0.])
Divisor: tensor([ 7.,  7., -7., -7.,  7.])
Remainder: tensor([ 1.,  1., -6., -1.,  0.])

示例 4:

在下面的示例中,我们尝试计算除数为零或无穷大时的余数。

请注意,当除数为零时,无论被除数的值是多少,余数都是 nan(非数字)。当一个非零数除以无穷大时,余数是无穷大;而当零除以无穷大时,余数是 0。同时请注意,这两个张量都是浮点型张量。关于整数除以零的情况,让我们看看下一个示例。

Python3


CODEBLOCK_6d408bde

输出:

Dividend: tensor([ 15., -13.,   0., -15.,   0.])
Divisor: tensor([0., inf, 0., 0., inf])
Remainder: tensor([nan, inf, nan, nan, 0.])

示例 5:

在这个示例中,我们尝试计算一个整数除以零时的余数。

请注意,在被除数是整数的情况下,程序会抛出一个运行时错误(RuntimeError);而在被除数是浮点数的情况下,它会像示例 4 那返回 nan。

Python3


CODEBLOCK_8d5d9607

输出:

Dividend: tensor([15])
Divisor: tensor([0])

RuntimeError: ZeroDivisionError
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25771.html
点赞
0.00 平均评分 (0% 分数) - 0