Метод преобразования модели Pytorch в onnx или ncnn и обсуждение спецификации написания модели pytorch

Недавно я конвертировал модель pytorch, написанную другими, в формат ncnn Путь преобразования:

pytorch-> torchscript->pnnx, в середине есть побочная модель onnx.

Используйте torch.jit.trace_module(model, {"entrypoint", [parameters]}) для записи модели, в большинстве моделей точка входа является прямой и может быть изменена при настройке.

Используйте torch.jit.save для сохранения модели.

Основная проблема, влияющая на успех, заключается в том, что в прямой функции модели нельзя использовать условные операторы, иначе это повлияет на трассировку. Решение на данный момент состоит в том, чтобы удалить условный оператор внутри.

Написание спецификаций:

1. Не используйте условные операторы в форварде

2. Если вы хотите использовать функцию сценария для компиляции модели преобразования, не используйте **args для определения параметров функции, а запишите их все.

Для модели, сохраненной трассировкой или сценарием, pnnx можно использовать для преобразования в модель ncnn, и она будет генерировать модель onnx для решения проблемы преобразования onnx. Конечно, вы также можете напрямую использовать torch.onnx.export для преобразования модели в onnx.

Supongo que te gusta

Origin blog.csdn.net/znsoft/article/details/128805284
Recomendado
Clasificación