Main Content

exportONNXNetwork

신경망을 ONNX 모델 형식으로 내보내기

설명

예제

exportONNXNetwork(net,filename)은 딥러닝 신경망 net을 가중치와 함께 ONNX™ 형식 파일 filename으로 내보냅니다. filename이 존재하는 경우 exportONNXNetwork 함수는 파일을 덮어씁니다.

이 함수를 사용하려면 Deep Learning Toolbox™ Converter for ONNX Model Format 지원 패키지가 필요합니다. 이 지원 패키지가 설치되어 있지 않으면 함수에서 다운로드 링크를 제공합니다.

exportONNXNetwork(net,filename,Name=Value)는 하나 이상의 이름-값 인수로 지정된 추가 옵션을 사용하여 신경망을 내보냅니다. 예를 들어 ONNX 신경망의 이름과 배치 크기를 지정할 수 있습니다.

예제

모두 축소

사전 훈련된 SqueezeNet 컨벌루션 신경망을 불러옵니다.

net = imagePretrainedNetwork("squeezenet")
net = 
  dlnetwork with properties:

         Layers: [68×1 nnet.cnn.layer.Layer]
    Connections: [75×2 table]
     Learnables: [52×3 table]
          State: [0×3 table]
     InputNames: {'data'}
    OutputNames: {'prob_flatten'}
    Initialized: 1

  View summary with summary.

net은 신경망의 계층과 학습 가능한 파라미터를 비롯하여 여러 속성이 포함된 dlnetwork 객체입니다.

신경망을 분석합니다.

analyzeNetwork(net)

exportONNXNetwork_analyeNetwork.png

analyzeNetwork는 신경망 아키텍처에 대한 대화형 방식 플롯 그리고 신경망 계층에 대한 정보를 포함하는 표를 표시합니다. ONNX 형식으로 내보내기 전에 신경망 net에서 오류와 문제를 검출할 수도 있습니다. net은 오류가 없습니다.

신경망 netsqueezenet.onnx라는 ONNX 형식의 파일로 내보냅니다. 이 파일을 현재 폴더에 저장합니다. Deep Learning Toolbox Converter for ONNX Model Format 지원 패키지가 설치되어 있지 않은 경우, exportONNXNetwork는 필요한 지원 패키지로 연결되는 애드온 탐색기 링크를 제공합니다. 지원 패키지를 설치하려면 링크를 클릭한 다음 설치를 클릭하십시오.

filename = "squeezenet.onnx";
exportONNXNetwork(net,filename)

이제 ONNX 가져오기를 지원하는 모든 딥러닝 프레임워크로 squeezenet.onnx 파일을 가져올 수 있습니다.

입력 인수

모두 축소

훈련된 신경망 또는 신경망 계층의 그래프로, dlnetwork 객체로 지정됩니다.

훈련된 신경망은 다음과 같은 방법으로 얻을 수 있습니다.

  • imagePretrainedNetwork 함수를 사용하여 사전 훈련된 신경망 가져오기

  • trainnet 함수 또는 사용자 지정 훈련 루프를 사용하여 dlnetwork 객체 훈련시키기

exportONNXNetwork 함수는 net에 오류가 없어야 합니다. 훈련된 신경망을 ONNX 신경망으로 내보내기 전에 analyzeNetwork를 사용하여 오류와 문제를 검출할 수 있습니다.

파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

예: "network.onnx"

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: exportONNXNetwork(net,filename,NetworkName="my_net")은 신경망을 내보내고, 저장된 ONNX 신경망에 있는 신경망 이름을 "my_net"으로 지정합니다.

저장된 파일에 저장할 ONNX 신경망 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

예: NetworkName="my_squeezenet"

내보낸 모델에서 사용할 ONNX 연산자 세트의 버전으로, [6 13] 범위의 양의 정수로 지정됩니다. 디폴트 연산자 세트가 내보내려는 신경망을 지원하지 않는 경우, 이후 버전을 사용해 보십시오. 내보낸 신경망을 다른 프레임워크로 가져오려는 경우, 내보낼 때 사용한 연산자 세트를 해당 Importer가 지원하지 못한다면 가져오기가 실패할 수 있습니다.

적절한 연산자 세트 버전을 사용하고 있는지 확인하려면 ONNX 연산자 문서 [3]를 참조하십시오. 예를 들어, OpsetVersion=9maxUnpooling2dLayerMaxUnpool-9 ONNX 연산자로 내보냅니다.

예: OpsetVersion=6

ONNX 신경망의 배치 크기로, [] 또는 양의 정수로 지정됩니다. BatchSize[]로 지정하면 ONNX 신경망은 동적 배치 크기를 갖습니다. BatchSize를 양의 정수 k로 지정하면 ONNX 신경망은 k라는 고정된 배치 크기를 갖습니다.

예: BatchSize=10

제한 사항

  • exportONNXNetwork 함수는 다음 ONNX를 지원합니다.

    • ONNX 중간 표현 버전 7

    • ONNX 연산자 세트 6–14

  • exportONNXNetwork 함수는 훈련 옵션, 학습률 인자 또는 정규화 인자와 같이 신경망 훈련과 관련된 설정 또는 속성을 내보내지 않습니다.

  • ONNX 형식이 지원하지 않는 계층을 포함하는 신경망을 내보내는 경우(ONNX 내보내기에 지원되는 계층 참조), exportONNXNetwork 함수는 지원되지 않는 계층 대신 자리 표시자 ONNX 연산자를 저장하고 경고를 반환합니다. 자리 표시자 연산자가 있는 ONNX 신경망은 다른 딥러닝 프레임워크로 가져올 수 없습니다.

  • MATLAB®과 ONNX 사이의 아키텍처 차이로 인해, 내보낸 신경망은 원래 신경망과 다른 구조를 가질 수 있습니다.

참고

내보낸 신경망을 가져올 경우 다시 가져온 신경망의 계층이 원래 신경망의 계층과 다를 수 있으며 지원되지 않을 수 있습니다.

세부 정보

모두 축소

ONNX 내보내기에 지원되는 계층

exportONNXNetwork 함수는 다음을 내보낼 수 있습니다.

  • 여러 개의 입력값과 여러 개의 출력값을 포함하는 훈련된 MATLAB 딥러닝 신경망을 ONNX 모델 형식으로 내보낼 수 있습니다. 다중 입력 및 다중 출력 딥러닝 신경망에 대해 자세히 알아보려면 다중 입력 및 다중 출력 신경망 항목을 참조하십시오.

참고 문헌

[1] Open Neural Network Exchange. https://github.com/onnx/.

[2] ONNX. https://onnx.ai/.

버전 내역

R2018a에 개발됨