C++ c++;调用python pytorch模型,结果会不同吗?
我有一个经过训练的pytorch模型,我使用以下方法保存它:C++ c++;调用python pytorch模型,结果会不同吗?,c++,pytorch,C++,Pytorch,我有一个经过训练的pytorch模型,我使用以下方法保存它: tsm = torch.jit.trace(mlp, torch.rand(1, num_features).double()) tsm.save('model.pt') print(mlp(np.array([[0.2] * num_features]))) 我用C++加载,用相同的数据转发-> [0.2 ] *NUMIX特性,代码如下:< /P> #include <iostream> #include <me
tsm = torch.jit.trace(mlp, torch.rand(1, num_features).double())
tsm.save('model.pt')
print(mlp(np.array([[0.2] * num_features])))
我用C++加载,用相同的数据转发-> [0.2 ] *NUMIX特性,代码如下:< /P>
#include <iostream>
#include <memory>
#include <torch/script.h> // One-stop header.
#include <torch/custom_class.h>
int main(int argc, const char* argv[]) {
if (argc != 2) {
std::cerr << "usage: example-app <path-to-exported-script-module>\n";
return -1;
}
torch::jit::script::Module module = torch::jit::load(argv[1]);
std::vector<torch::jit::IValue> inputs;
// std::vector<double> inputs;
// inputs.push_back(torch::ones({1, 51}));
std::vector<double> v(51, 0.2);
torch::Tensor data = torch::from_blob(v.data(), {1, 51});
inputs.push_back(data);
// at::Tensor output = module.forward(inputs).toTensor();
// std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << '\n';
auto t = module.forward(inputs).toTensor();
std::cout << t.sizes() << std::endl;
std::cout << module.forward(inputs).toTensor()[0][0].item<double>();//.toDouble() << std::endl;
}
#包括
#包括
#包括//一站式标题。
#包括
int main(int argc,const char*argv[]{
如果(argc!=2){
标准:cerr