具有偏置的LibTorch卷积层导致CUDA崩溃

时间:2019-11-26 22:32:11

标签: c++ pytorch libtorch

我正在尝试在CUDA上编写简单模型的示例。我已经运行了一些他们正在CPU和GPU上工作的示例。例如,我尝试了MNIST可以正常运行的示例。但是,我尝试使用bias=false创建卷积层,并且崩溃了。

#include <torch/torch.h>

// Define a new Module.
struct Net : torch::nn::Module {
    Net() {
        torch::nn::Conv2d conv = torch::nn::Conv2d(torch::nn::Conv2dOptions(3, 16, 3)
            .bias(false)
            .stride(1)
            .padding(1)
        );

        module->push_back(conv);

        register_module("Layer",module);
    }

    torch::Tensor forward(torch::Tensor x) {
        /**SOME FORWARD**/
        return x;
    }

    torch::nn::Sequential module;
};

int main() {
    auto net = std::make_shared<Net>();
    net->to(at::kCUDA); // It crashes here
    return 0;
}

起初,我以为它正在将模型移至CUDA,但它也因net->to(at::kCPU);而崩溃。

它抛出

Exception thrown at 0x00007FFB4A2EA839 in Object_detection.exe: Microsoft 
C++ exception: c10::Error at memory location 0x000000635F0FDE90.
Unhandled exception at 0x00007FFB4A2EA839 in Object_detection.exe: Microsoft 
C++ exception: c10::Error at memory location 0x000000635F0FDE90.

仅当删除net->to(at::kCUDA);并且模型将作为默认值或通过设置bias=true在CPU上运行时,我才能运行此示例。

有人可以解释为什么这样做吗?

0 个答案:

没有答案