gpt4 book ai didi

python - 在进行评估时,是否应该将数据批处理移动到 CPU 并(从 torch Tensor)转换为 numpy 数组?培训期间的指标?

转载 作者:行者123 更新时间:2023-12-04 17:22:49 28 4
gpt4 key购买 nike

我正在浏览 Andrew Ng’s tutorial from the CS230 Stanford course ,并在 every epoch of the training ,通过计算指标进行评估。

但在计算指标之前,他们将批处理发送到 CPU 并将它们转换为 numpy 数组 (code here)。

# extract data from torch Variable, move to cpu, convert to numpy arrays
output_batch = output_batch.data.cpu().numpy()
labels_batch = labels_batch.data.cpu().numpy()

# compute all metrics on this batch
summary_batch = {metric: metrics[metric](output_batch, labels_batch) for metric in metrics}

我的问题是:他们为什么要这样做?他们为什么不使用 torch 方法(例如 torch.sum 而不是 np.sum)在 GPU 上计算指标(已完成 here)?

我认为 GPU 到 CPU 的传输会减慢速度,所以这样做应该有充分的理由吗?

我是 PyTorch 的新手,所以我可能会遗漏一些东西。

最佳答案

如果我错了请纠正我。将数据发送回 CPU 可以减少 GPU 负载,即使在进入以下循环周期时更换内存也是如此。此外,我相信转换为 numpy 具有释放内存的优势,因为您正在从计算图中分离数据。您最终操纵 labels_batch.cpu().numpy() 一个固定数组与 labels_batch 一个通过链接 连接到整个网络的张量>backward_fn 回调。

关于python - 在进行评估时,是否应该将数据批处理移动到 CPU 并(从 torch Tensor)转换为 numpy 数组?培训期间的指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65179954/

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