我在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));