这是非常基本的:我通常使用 Eigen3 进行数学运算,但需要使用 libtorch 进行网络前向传递。现在我想torch::tensor
用我的 Eigen3 (或纯 C++ array
)中的数据填充,但没有for
循环。我怎样才能做到这一点?
这是带有循环的解决方案:
Eigen::Matrix<double, N, 1> inputEigen; // previously initialized
torch::Tensor inputTorch = torch::ones({1, N}); // my torch tensor for the forward pass
for (int i = 0; i < N; i++) {
inputTorch[0][i] = inputEigen[i]; // batch size == 1
}
std::vector<torch::jit::IValue> inputs;
inputs.push_back(inputTorch);
at::Tensor output = net.forward(inputs).toTensor();
这目前工作正常,但N
可能会变得非常大,我只是在寻找一种方法来直接torch::tensor
使用以前使用的 C++设置我的基础数据array