Неправильные результаты, полученные при запуске модели в LibTorch, которая была обучена и экспортирована из PyTorch - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь экспортировать обученную модель вместе с весами для вывода в 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?

...