gpt4 book ai didi

pytorch - PyTorch 如何实现反向卷积?

转载 作者:行者123 更新时间:2023-12-03 07:00:22 34 4
gpt4 key购买 nike

我阅读了 Pytorch 的源代码,发现它没有实现 convolution_backward 很奇怪。函数,唯一的 convolution_backward_overrideable 函数是直接引发错误,应该不会落到这里。
所以我提到了 CuDNN/MKLDNN 的实现,它们都实现了像 cudnn_convolution_backward 这样的功能。 .
我得到了以下问题:

  • 什么是 CUDA/CPU 的原生实现?我可以找到类似 thnn_conv2d_backward_out 的内容,但我找不到它在哪里被调用。
  • 为什么 PyTorch 没有把 convolution_backward Convolution.cpp中的函数?它提供了 _convolution_double_backward()功能。但这是双后退,是梯度的梯度。他们为什么不提供单一的后向功能?
  • 如果我想为我的纯 cpu/cuda 张量调用原生卷积/convolution_backward 函数,我应该如何编写代码?或者我可以引用哪里?我找不到这方面的例子。

  • 谢谢 !

    最佳答案

    1- 实现可能因您使用的后端而异,它可能使用某些库中的 CUDA 卷积实现、其他库中的 CPU 卷积实现或自定义实现,请参见此处:pytorch - Where is “conv1d” implemented? .
    2-我不确定当前版本,但单后退是通过 autograd 计算的,这就是为什么它没有明确的不同功能。我不知道 autograd 的基本细节,但你可以查看 https://github.com/pytorch/pytorch/blob/master/torch/csrc/autograd/autograd.cpp .只有当您需要高阶导数时,该 double_backward 函数才存在。
    3-如果您想在 C 中执行此操作,您链接的文件 (convolution.cpp) 将向您展示如何执行此操作(函数 at::Tensor _convolution...)。如果你检查你看到的函数,它只是检查使用哪个实现(params.use_something...)并使用它。如果您想在 python 中执行此操作,您应该从 conv 开始跟踪,直到调用此文件 convolution.cpp。

    关于pytorch - PyTorch 如何实现反向卷积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64693256/

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