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)는 하나 이상의 이름-값 쌍 인수로 지정된 추가 옵션을 사용하여 신경망을 내보냅니다.

예제

모두 축소

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

net = squeezenet
  DAGNetwork with properties:

         Layers: [68×1 nnet.cnn.layer.Layer]
    Connections: [75×2 table]
     InputNames: {'data'}
    OutputNames: {'ClassificationLayer_predictions'}

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

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

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

입력 인수

모두 축소

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

훈련된 신경망(SeriesNetwork, DAGNetwork 또는 dlnetwork)은 다음과 같은 방법으로 얻을 수 있습니다.

  • 사전 훈련된 신경망을 가져옵니다. 예를 들어, googlenet 함수를 사용합니다.

  • 신경망을 훈련시킵니다. SeriesNetwork 또는 DAGNetwork를 훈련시키려면 trainNetwork를 사용합니다. dlnetwork를 훈련시키려면 사용자 지정 훈련 루프를 사용합니다.

layerGraph 객체는 신경망 계층의 그래프입니다. 이 그래프의 계층 파라미터 중 일부는 비어 있을 수 있습니다(예: 컨벌루션 계층의 가중치와 편향, 배치 정규화 계층의 평균과 분산). layerGraphexportONNXNetwork에 대한 입력 인수로 사용하려면 먼저 임의의 값을 할당하여 빈 파라미터를 초기화하십시오. 또는 내보내기를 수행하기 전에 다음 중 하나를 수행할 수도 있습니다.

  • layerGraphdlnetwork에 대한 입력 인수로 사용하여 layerGraphdlnetwork로 변환합니다. 빈 파라미터는 자동으로 초기화됩니다.

  • trainNetwork를 사용하여 layerGraph를 훈련된 DAGNetwork로 변환합니다. layerGraphtrainNetwork에 대한 layers 입력 인수로 사용하십시오.

analyzeNetwork를 사용하여, ONNX 신경망으로 내보내기 전에 훈련된 신경망 또는 신경망 계층의 그래프에서 오류와 문제를 검출할 수 있습니다. SeriesNetwork, DAGNetworkdlnetwork의 경우 exportONNXNetwork를 사용하려면 오류가 없어야 합니다. exportONNXNetwork는 누락되었거나 연결되지 않은 출력 계층이 있는 layerGraph를 내보내는 것을 허용합니다.

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

예: 'network.onnx'

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

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

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

예: 'my_squeezenet'

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

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

예: 6

제한 사항

  • exportONNXNetwork 함수는 다음과 같이 ONNX 버전을 지원합니다.

    • 이 함수는 ONNX 중간 표현 버전 6을 지원합니다.

    • 이 함수는 ONNX 연산자 세트 6, 7, 8, 9를 지원합니다.

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

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

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

참고

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

세부 정보

모두 축소

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

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

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

참고 문헌

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

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

R2018a에 개발됨