Я пытаюсь экспортировать обученную модель вместе с весами для вывода в C ++, используя LibTorch. Однако результаты выходного тензора не совпадают.
Форма выходного тензора такая же.
model = FCN()
state_dict = torch.load('/content/gdrive/My Drive/model/trained_model.pth')
model.load_state_dict(state_dict)
example = torch.randn(1, 3, 768, 1024)
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save('/content/gdrive/My Drive/model/mymodel.pt')
Однако генерируются некоторые предупреждения, которые, я думаю, могут быть причиной неправильных результатов.
/ USR / местные / Библиотека / python3.6 / Расс-пакеты / ipykernel_launcher.py: 137:
TracerWarning: преобразование тензора в индекс Python может привести к
трассировка будет неправильной. Мы не можем записать поток данных значений Python,
поэтому это значение будет рассматриваться как постоянное в будущем. Это означает
что трассировка может не обобщаться на другие входные данные!
/usr/local/lib/python3.6/dist-packages/torch/tensor.py:435:
RuntimeWarning: перебор тензора может привести к тому, что трассировка будет
неверен. Передача тензора другой формы не изменит число
выполненных итераций (и может привести к ошибкам или молча дать
неверные результаты). 'неправильные результаты).', категория = RuntimeWarning)
Ниже приведен код LibTorch для генерации выходного тензора
at::Tensor predict(std::shared_ptr<torch::jit::script::Module> model, at::Tensor &image_tensor) {
std::vector<torch::jit::IValue> inputs;
inputs.push_back(image_tensor);
at::Tensor result = model->forward(inputs).toTensor();
return result;
}
Кто-нибудь пробовал использовать обученную модель PyTorch в LibTorch?