尝试使用GpuDevice将切片移动到另一个切片,但得到了'错误:无效使用不完整类型'const struct Eigen :: GpuDevice'

时间:2017-05-18 17:28:26

标签: c++ tensorflow eigen

我在C ++中为Tensorflow编写了一个操作,在代码中间我尝试使用某个设备将一片输入移动到同一片输出。但最终会出现/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h:401:11: error: invalid use of incomplete type ‘const struct Eigen::GpuDevice’等错误。

我相信其他一些操作也会分配到张量切片(例如concat_op),但仍然无法弄清楚我的代码与他们的不同之处(我对C ++很新,所以也许这是一个愚蠢的问题)。

代码片段如下:

// definition of i, h, w, c, both `input_` and `output_` are `TTypes<T,4>::Tensor`
// aka `Eigen::TensorMap<Eigen::Tensor<float, 4, 1, long int>`
const Device& d = context->eigen_device<Device>();
auto start = Eigen::array<int, 4>{i, 0, 0, 0};
auto size = Eigen::array<int, 4>{1, h, w, c};            
auto output_slice = output_.slice(start, size);
output_slice.device(d) = input_.slice(start, size);

整个错误消息如:

/home/antonio/miniconda3/lib/python3.6/site-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h:401:11:
 error: invalid use of incomplete type ‘const struct Eigen::GpuDevice’
       m_device.memcpy((void*)(data+i), src+offset, contiguous_values * sizeof(Scalar));

0 个答案:

没有答案