PyTorch C++;扩展:访问半张量的数据 我试图用C++张量API编写PyTrac的C++/CUDA扩展,我希望我的代码同时使用FLUAT32和FLUAT16(半精度)。我不确定如何访问来自Python的半张量的数据指针

PyTorch C++;扩展:访问半张量的数据 我试图用C++张量API编写PyTrac的C++/CUDA扩展,我希望我的代码同时使用FLUAT32和FLUAT16(半精度)。我不确定如何访问来自Python的半张量的数据指针,c++,templates,pytorch,C++,Templates,Pytorch,下面是我如何处理浮点张量的方法: // Access data pointer for float Tensor A torch::Tensor A; float* ptr = A.data<float>(); //访问浮点张量A的数据指针 火炬:张量A; float*ptr=A.data(); 下面是我为半张量所做的尝试: // CUDA float 16 type // undefined symbol: _ZNK2at6Tensor4dataI6__halfEEPT_v A

下面是我如何处理浮点张量的方法:

// Access data pointer for float Tensor A
torch::Tensor A;
float* ptr = A.data<float>();
//访问浮点张量A的数据指针
火炬:张量A;
float*ptr=A.data();
下面是我为半张量所做的尝试:

// CUDA float 16 type
// undefined symbol: _ZNK2at6Tensor4dataI6__halfEEPT_v
A.data<__half>();

// PyTorch float16 type
// error: no instance of function template "at::Tensor::data" 
A.data<torch::ScalarType::Half>();

// Casting to __half*
// This compiles but throws and error if the requested pointer type doesn't match the Tensor type:
// RuntimeError: expected scalar type Float but found Half
(__half*)(A.data<float>());
//CUDA浮点16类型
//未定义的符号:ZNK2AT6传感器4数据
A.数据();
//PY16型
//错误:没有函数模板“at::Tensor::data”的实例
A.数据();
//铸造到一半*
//如果请求的指针类型与Tensor类型不匹配,则会编译但引发错误:
//RuntimeError:应为标量类型浮点,但找到一半
(A.data());
我尝试查看C++ API源代码,但找不到任何看起来像FLUAT16类型的东西。 系统信息: Python 3.6.2
PyTorch 1.0.1

正确的类型是
at::Half