我想看看conv1d模块是如何实现的 https://pytorch.org/docs/stable/_modules/torch/nn/modules/conv.html#Conv1d。因此,我查看了functional.py,但仍然找不到循环和互相关计算。
然后我用关键字“ conv1d”搜索了Github,检查了conv.cpp https://github.com/pytorch/pytorch/blob/eb5d28ecefb9d78d4fff5fac099e70e5eb3fbe2e/torch/csrc/api/src/nn/modules/conv.cpp 1,但仍然无法找到计算的位置。
我的问题有两个方面。
在哪里实现“ conv1d”的源代码?
通常,如果我想检查模块的实现方式,哪里是最好的地方?任何指向该文档的指针将不胜感激。谢谢。
答案 0 :(得分:7)
conv.cpp
torch::conv1d
文件,该文件定义为here,并且使用at::convolution
,而at::_convolution
则使用at::cudnn_convolution
,分派给多个变体,例如here。我相信at::cudnn_convolution
是通过标记文件创建的,case 2 of Master theorem只是直接插入cuDNN
的实现中(尽管在发生这种情况时我无法查明代码的确切点)。答案 1 :(得分:2)
以下是我从pytorch discussion board获得的答案:
我相信这里定义了“手卷”编辑的卷积:https://github.com/pytorch/pytorch/blob/master/aten/src/THNN/generic/SpatialConvolutionMM.c 3
NN模块的实现在这里:https://github.com/pytorch/pytorch/tree/master/aten/src GPU版本在THCUNN中,CPU版本在THNNNN