Hi all,
I try to load a torchscript model in C++, but got an error:
Screenshot from 2020-11-18 22-20-36961×354 41.2 KB
The input data is actually double type. I tried to use .double() following here but cannot run make.
My code:
#include <torch/script.h> // One-stop header.

#include <iostream>
#include <memory>

int main(int argc, const char* argv[]) {
  std::vector<double> inputdata({ 1.0, 2.0, 3.0, 4.0, 5.0 });
  std::cout << inputdata << std::endl;

  auto opts = torch::TensorOptions().dtype(torch::kDouble);
  torch::Tensor input = torch::from_blob(inputdata.data(), {1, (int)inputdata.size()}, opts).to(torch::kDouble);
  std::cout << input << std::endl;

  if (argc != 2) {
    std::cerr << "usage: example-app <path-to-exported-script-module>\n";
    return -1;
  }

  torch::jit::script::Module module;
  try {
    // Deserialize the ScriptModule from a file using torch::jit::load().
    module = torch::jit::load(argv[1]);
  }
  catch (const c10::Error& e) {
    std::cerr << "error loading the model\n";
    return -1;
  }

  std::cout << "ok" << std::endl;

    
  std::vector<torch::jit::IValue> input_invar;
  input_invar.push_back(input);
  std::cout << "run forward" << std::endl;
  at::Tensor output = module.forward(input_invar).toTensor();

  std::vector<double> out_vect(output.data_ptr<double>(), output.data_ptr<double>() + output.numel());

  std::cout << out_vect << std::endl;
}

Could you give me some suggestions, please ?
Best.