我想看看conv1d模块是如何实现模块/torch/nn/modules/con.html#Conv1d的。因此,我看了functional.py,但仍然找不到循环和互相关计算。
然后,我按关键字“conv1d 1d”搜索Github,检查了conv.cpp https://github.com/pytorch/pytorch/blob/eb5d28ecefb9d78d4fff5fac099e70e5eb3fbe2e/torch/csrc/api/src/nn/modules/conv.cpp 1,但仍然找不到计算发生的位置。
我的问题是双重的。
发布于 2018-12-26 08:37:27
conv.cpp文件是使用 torch::conv1d,它定义了这里,使用了at::convolution,而at::convolution又使用at::_convolution,后者分配给多个变体,例如at::cudnn_convolution。我相信,at::cudnn_convolution是通过一个标记文件创建的,它只是直接插入到cuDNN实现中(尽管我不能精确地指出发生这种情况时代码中的确切点)。发布于 2018-12-28 19:23:41
下面是我从火炬讨论板那里得到的答案
我相信“手卷”-ed卷积是在这里定义的: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版本在THNN中。
https://stackoverflow.com/questions/53927358
复制相似问题