Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用指针用数据填充xtensor数组_C++_Caffe_Xtensor - Fatal编程技术网

C++ 如何使用指针用数据填充xtensor数组

C++ 如何使用指针用数据填充xtensor数组,c++,caffe,xtensor,C++,Caffe,Xtensor,我正在尝试从caffe库中的blob数据创建xtensor数组。使用caffe中的函数mutable\u cpu\u data()返回数据指针,例如通过float*data=output->mutable\u cpu\u data()。对于xtensor,这可能吗?如果是,请举例说明。我发现使用OpenCVMat的示例,但是xtensor非常类似于numpy,这使得对类似矩阵的数据进行操作更加容易。您可以这样做,但您需要数据的大小 试试下面说的 float* data = output->

我正在尝试从
caffe
库中的blob数据创建
xtensor
数组。使用
caffe
中的函数
mutable\u cpu\u data()
返回数据指针,例如通过
float*data=output->mutable\u cpu\u data()。对于
xtensor
,这可能吗?如果是,请举例说明。我发现使用OpenCV
Mat
的示例,但是
xtensor
非常类似于
numpy
,这使得对类似矩阵的数据进行操作更加容易。

您可以这样做,但您需要数据的大小

试试下面说的

float* data = output->mutable_cpu_data();

//CONVERT YOUR DATA TO FLOAT VECTOR
//I assume the size of your array could be 4.
//Replace 4 with intended size of array.
std::vector<float> fData(data, data+4); 

//INITIALIZE XARRAY
xt::xarray<float> a(fData);
float*data=output->mutable_cpu_data();
//将数据转换为浮点向量
//我假设您的数组的大小可能是4。
//将4替换为预期大小的阵列。
std::矢量fData(数据,数据+4);
//初始化XARRAY
xarray a(fData);

您可以使用xadapt.hpp中的xt::adapt函数,但需要提供一个形状:

float* data = output->mutable_cpu_data();
size_t size = size_of_data;
// For a 1D tensor for instance
xt::static_shape<std::size_t, 1> sh = { size_of_data};
// Parameters of adapt are:
// - the 1D buffer to adapt
// - the size of the buffer
// - the ownership flag (should the adaptor destroy your buffer upon deletion, here
//   probably not)
// - the shape
auto a = xt::adapt(data, size_of_data, false sh);
float*data=output->mutable_cpu_data();
size\u t size=数据的大小;
//例如,对于一维张量
xt::static_shape sh={size_of_data};
//自适应参数包括:
//-要调整的1D缓冲区
//-缓冲区的大小
//-所有权标志(如果适配器在删除时销毁您的缓冲区,请参见此处
//(可能不会)
//-形状
自动a=xt::adapt(数据、数据的大小、假sh);
与Naidu提供的解决方案相比,它的优势在于不复制数据缓冲区,而是“就地”调整