在 C++ API 中将一个张量的一大块复制到另一个张量中

Afs*_*ooy 3 c++ pytorch libtorch

我需要将一行一个张量 (in c++ API)复制到另一个张量的某个部分中,开始和结束索引可用的形式。在 C++ 中,我们可以使用类似的东西:

int myints[] = {10, 20, 30, 40, 50, 60, 70};
std::vector<int> myvector(18);

std::copy(myints, myints + 3, myvector.begin() + 4);
Run Code Online (Sandbox Code Playgroud)

从第四个索引开始将三个值复制myints到 into 中myvector。我想知道libtorch(即 C++)中是否有类似的 API ?

tri*_*ror 5

C++ API 提供了Python 切片等效函数

at::Tensor at::Tensor::slice(int64_t dim, int64_t start, int64_t end, int64_t step);
Run Code Online (Sandbox Code Playgroud)

因此,您可以执行以下操作:

auto myints = torch::Tensor({10, 20, 30, 40, 50, 60, 70});
auto myvector = torch::ones({18});

myvector.slice(0, 3, 7) = myints.slice(0, 0, 3);
Run Code Online (Sandbox Code Playgroud)

在你的情况下使用dim=0第一维