gpt4 book ai didi

c++ - 如何在pytorch C++ API中为模型提供一批框架?

转载 作者:行者123 更新时间:2023-12-02 09:57:19 28 4
gpt4 key购买 nike

我编写了一段代码,借助PyTorch C++前端api在C++中加载pytorch模型。我想通过使用module->forward(batch_frames)将一批框架提供给C++中的预训练模型。但是它可以通过单个输入转发。
如何为模型提供一批输入?

我想要批处理的一部分代码如下所示:

 cv::Mat frame;
vector<torch::jit::IValue> frame_batch;

// do some pre-processes on each frame and then add it to the frame_batch

//forward through the batch frames
torch::Tensor output = module->forward(frame_batch).toTensor();

最佳答案

您可以使用多种方法在libtorch中创建一批张量。
这是这些方法之一:
使用Torch::TensorList:
由于torch::TensorListArrayRef,您不能直接向其添加任何张量,因此首先创建一个张量 vector ,然后使用该 vector 创建您的TensorList:

// two already processed tensor!
auto tensor1 = torch::randn({ 1, 3, 32, 32 });
auto tensor2 = torch::randn({ 1, 3, 32, 32 });
// using a tensor list
std::vector<torch::Tensor> tensor_vec{ tensor1, tensor2 };
torch::TensorList tensor_list{ tensor_vec};

auto batch_of_tensors = torch::cat(tensor_lst);
auto out = module->forward({batch_of_tensors}).toTensor();
或者你可以做:
auto batch_of_tensors = torch::cat({ tensor_vec});
要么
auto batch_of_tensors = torch::cat({ tensor1, tensor2});

关于c++ - 如何在pytorch C++ API中为模型提供一批框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665137/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com