小编Lap*_*uta的帖子

为什么嵌套循环比扁平循环执行得快得多?

更新

抱歉各位,但之前的数字是不准确的。当我测试之前的代码时,我曾经tqdm看到预期的时间,当可迭代对象很长时,该函数会损害性能。所以我得到 18.22s,这是 2.43s 的 9 倍。

然而,结论是一致的:嵌套循环要快得多。当迭代时间为 100^5 时,差异显着:321.49 vs 210.05。它们之间大约有 1.53 倍的差距。一般来说,我们不会面对这种长迭代,我只是想知道异常情况的原因。 在此处输入图片说明

我的 python 版本是 3.7.3。我使用 13 英寸 MacBookPro2019 和 2.4 GHz Intel Core i5。操作系统为 macOS Mojave 10.14.6


我在python中发现了一个奇怪的情况,如下所示:

import time

start = time.time()
# flattened loop
for i in range(100**4):
    pass
print(time.time() - start) # 18.22(Wrong! Should be 3.09)

# nested loop
start = time.time()
for i in range(100):
    for j in range(100):
        for k in range(100):
            for l in range(100):
                pass
print(time.time() - start) …
Run Code Online (Sandbox Code Playgroud)

python list

7
推荐指数
2
解决办法
348
查看次数

如何在 PyTorch 中以不同偏移量移动张量中的列(或行)?

在 PyTorch 中,内置torch.roll函数只能以相同的偏移量移动列(或行)。但我想用不同的偏移量来移动列。假设输入张量是

\n
[[1,2,3],\n [4,5,6],\n [7,8,9]]\n
Run Code Online (Sandbox Code Playgroud)\n

比方说,我想i对第 i 列进行偏移量移动。因此,预期输出是

\n
[[1,8,6],\n [4,2,9],\n [7,5,3]]\n
Run Code Online (Sandbox Code Playgroud)\n

这样做的一个选项是使用每个列单独移动torch.roll并连接它们。但出于有效性和代码紧凑性的考虑,我不想引入循环结构。有没有更好的办法\xef\xbc\x9f

\n

python pytorch

6
推荐指数
1
解决办法
3679
查看次数

标签 统计

python ×2

list ×1

pytorch ×1