gpt4 book ai didi

python - 如何在 Chainer 中测量每层的时间

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:48 24 4
gpt4 key购买 nike

如何测量每一层所花费的时间?这应该包括向前传递和向后传递。

例如,对于 VGG,我想知道每一层所花费的时间。部分代码如下所示。

   h = F.relu(self.conv1_2(h))
h = F.max_pooling_2d(h, 2, 2)

h = F.relu(self.conv2_1(h))
h = F.relu(self.conv2_2(h))
h = F.max_pooling_2d(h, 2, 2)


最佳答案

在前向传递的情况下,您可以尝试对模型的执行进行猴子修补,如下所示:

import time 
from functools import wraps

def check_time(link_name, func):

@wraps(func)
def wrapper(*args, **kwargs):
t = time.time()
res = func(*arsg, **kwargs)
t = time.time() - t
print("Execution of {0} of the link {1} took {2:.3f} sec".format(func.__name__, link_name, t)
return res

for name, link in model.namedlinks(skipself=True):
link.forward = check_time(name, link.forward)

由于 chainer 遵循“define-by run”策略,计算图是在运行代码时构建的,因此 backward() 方法仅在 chainer.Function 上定义 实例。我想,您需要在每次运行后对相应的方法进行猴子修补,这会让您的代码变得非常慢。

无论如何,我希望我的代码能让您了解如何做您想做的事情。

关于python - 如何在 Chainer 中测量每层的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58282807/

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