gpt4 book ai didi

python - 如何根据pytorch中另一个张量的值将张量的某个值更改为零?

转载 作者:行者123 更新时间:2023-12-04 15:27:18 26 4
gpt4 key购买 nike

我有两个张量:张量 a 和张量 b。如何根据张量 b 的值改变张量 a 的某些值?

我知道下面的代码是正确的,但是当张量很大时它运行起来很慢。还有其他方法吗?

import torch
a = torch.rand(10).cuda()
b = torch.rand(10).cuda()
a[b > 0.5] = 0.

最佳答案

对于这个确切的用例,还要考虑

a * (b <= 0.5)

这似乎是以下最快的

In [1]: import torch
...: a = torch.rand(3**10)
...: b = torch.rand(3**10)

In [2]: %timeit a[b > 0.5] = 0.
553 µs ± 17.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [3]: a = torch.rand(3**10)

In [4]: %timeit temp = torch.where(b > 0.5, torch.tensor(0.), a)
...:
49 µs ± 391 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [5]: a = torch.rand(3**10)

In [6]: %timeit temp = (a * (b <= 0.5))
44 µs ± 381 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [7]: %timeit a.masked_fill_(b > 0.5, 0.)
244 µs ± 3.48 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

关于python - 如何根据pytorch中另一个张量的值将张量的某个值更改为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62002348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com