티스토리 뷰
관련 라이브러리
- pytorch: https://github.com/pytorch/pytorch
- onnx: https://github.com/onnx/onnx
- onnx-tf: https://github.com/onnx/onnx-tensorflow
- tensorflow: https://github.com/tensorflow/tensorflow
공통사항
- 최신버전일수록 잘 될 확률이 높다.
- 구버전은 지원하지 않는 연산자가 많아진다.
- 각 라이브러리에서 지원하는 연산의 범위를 잘 살펴야 한다.
- torch에서 onnx 변환이 되더라도, tensorflow로 변환 시 지원하지 않는 연산이 있을 수 있음.
- 오류메시지로 해결이 어려울 땐, pytorch / onnx / tensorflow 네트워크 각각의 노드/출력값 등으로 역추적하자..
pytorch to onnx (https://pytorch.org/docs/stable/onnx.html 튜토리얼이 가장 좋음)
- pytorch는 torch.onnx 모듈에서 onnx export를 지원함.
- 글 작성 시점에서 최신 release인 1.2에서는 onnx opset 10까지 지원(onnx 1.5).
- 변환을 위한 코드에서는 model 및 텐서에 gpu 관련 코드를 삭제해야 함.
- pytorch 모델 코드에서 불필요한 if, for를 삭제하는 것이 변환하기 좋다.
- for문을 사용하기 위해서 torchscript를 활용해야 한다.
- pytorch 1.2에서는 dimension 입력이 있는 min, max 함수에 대한 변환을 지원. (1.1버전까지는 ATen 연산자로 출력)
- 텐서에 대한 in-place indexed assignment는 변환을 지원하지 않는다.
- a[0] = b와 같은 대입이 불가. (Warning이 출력되고 변환은 되지만, 나중에 변환 후 텐서값이 0)
- 위 링크에 대체방법을 설명하고 있음.
onnx to tensorflow
- onnx 모델 로드: onnx 라이브러리 사용.
- onnx 모델을 tensorflow graph로 변환: onnx-tf 라이브러리 사용.
- onnx-tf 버전마다 요구하는 tensorflow 버전이 다름.
- onnx 모델 내에 ATen 연산자가 있다면, 지원하지 않는다는 오류가 발생.
- bidirectional rnn모듈 변환에 문제가 발생하는 경우 있음.
반드시, 최종 변환 후에 기존 pytorch 출력텐서 값과 tensorflow 출력 텐서 값을 확인!!
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- load_model
- Slice
- nearest neighbor
- install
- onnx
- TensorFlow
- pytorch
- Text Detection
- anaconda
- Py_initialize
- pyplot
- Keras
- import error
- matplotlib.pyplot
- PYTHON
- onnx-tensorflow
- knn
- scikit-learn
- OCR
- kneighborsclassifier
- reverse string
- 모델변환
- compile
- Craft
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함