Main Content

심층 신경망 디자이너

딥러닝 신경망을 설계하고 시각화합니다

설명

심층 신경망 디자이너 앱을 사용하여 딥러닝 신경망을 가져오고, 구축, 시각화, 편집할 수 있습니다. 이 앱을 사용하여 다음을 수행할 수 있습니다.

  • 신경망을 구축하고 편집하고 결합합니다.

  • 사전 훈련된 신경망을 불러와서 전이 학습에 적합하게 편집합니다.

  • PyTorch® 및 TensorFlow™에서 신경망을 가져옵니다.

  • 신경망을 분석하여 아키텍처가 올바르게 정의되었는지 확인합니다.

  • 신경망을 Simulink®로 내보냅니다.

  • 신경망을 구축하는 MATLAB® 코드를 생성합니다.

Deep Network Designer app

심층 신경망 디자이너 앱 열기

  • MATLAB 툴스트립: 탭의 머신러닝 및 딥러닝에서 앱 아이콘을 클릭합니다.

  • MATLAB 명령 프롬프트: deepNetworkDesigner를 입력합니다.

예제

모두 확장

숫자형 특징 데이터에 대한 분류 신경망을 만듭니다.

심층 신경망 디자이너를 엽니다.

deepNetworkDesigner

빈 신경망을 만들기 위해 빈 신경망 위에 커서를 올리고 새로 만들기를 클릭합니다. 앱에 빈 캔버스가 열리면 계층을 끌어서 놓습니다.

계층 라이브러리에서 featureInputLayer를 캔버스 위로 끌어서 놓습니다. 계층 라이브러리 필터를 사용하면 계층을 찾는 데 도움이 됩니다. 계층을 선택합니다. 속성 창에서 Normalization"zscore"로 설정하고 InputSize를 데이터의 특징 개수로 설정합니다. 그런 다음 fullyConnectedLayer를 캔버스 위로 끌어서 놓습니다. 계층을 연결하기 위해 featureInputLayer 위에 커서를 올리고 out 포트를 클릭합니다. 화살표를 fullyConnectedLayerin 포트로 끌어서 놓습니다.

캔버스에 layerNormalizationLayerreluLayer를 차례로 추가하고 순차적으로 연결합니다.

마지막으로 fullyConnectedLayersoftmaxLayer를 차례로 추가하고 연결합니다. 마지막 fullyConnectedLayer 계층을 선택하고 OutputSize를 데이터의 클래스 개수로 설정합니다.

계층을 자동으로 정렬하려면 자동 정렬을 클릭합니다.

신경망이 훈련 준비가 되었는지 확인하기 위해 분석을 선택합니다. 딥러닝 신경망 분석기에서 신경망에 경고 또는 오류가 없음을 보여줍니다.

신경망을 작업 공간으로 내보내기 위해 내보내기를 클릭합니다. 신경망을 다시 만드는 코드를 생성하려면 내보내기 > 초기 파라미터를 사용하지 않고 코드 생성하기를 클릭하십시오.

전이 학습을 위해 심층 신경망 디자이너에서 신경망을 편집하여 준비합니다.

전이 학습은 사전 훈련된 딥러닝 신경망이 새로운 작업을 학습하도록 미세 조정하는 과정입니다. 학습된 특징을 보다 적은 개수의 훈련 영상을 사용하여 새로운 작업으로 빠르게 전이할 수 있습니다. 따라서 전이 학습을 사용하는 것은 신경망을 처음부터 훈련시키는 것보다 훨씬 쉽고 빠릅니다. 사전 훈련된 신경망을 전이 학습을 위해 사용하려면 클래스 개수가 새로운 데이터 세트와 일치하도록 변경해야 합니다.

심층 신경망 디자이너는 여러 종류의 사전 훈련된 영상 신경망과 오디오 신경망을 제공합니다. 사전 훈련된 신경망을 탐색하기 위해 심층 신경망 디자이너를 엽니다.

deepNetworkDesigner

이 예에서는 SqueezeNet 위에 커서를 올리고 열기를 클릭합니다.

전이 학습을 위한 신경망을 준비하기 위해 마지막 학습 가능한 계층을 편집합니다. SqueezeNet의 마지막 학습 가능한 계층은 2차원 컨벌루션 계층 'conv10'입니다.

  • 'conv10' 계층을 선택합니다. 속성 창 하단에서 계층 잠금 해제를 클릭합니다. 계층을 잠금 해제하면 계층의 학습 가능한 파라미터가 모두 삭제됩니다. 나타나는 경고 대화 상자에서 무시하고 잠금 해제를 클릭합니다. 이렇게 하면 계층 속성의 잠금이 해제되어 새 작업에 맞게 계층 속성을 조정할 수 있습니다. NumFilters 속성에서 클래스 개수를 새로 설정합니다.

  • 전이된 계층보다 새 계층에서 학습이 더 빨리 이루어지도록 WeightLearnRateFactorBiasLearnRateFactor 값을 10으로 늘려서 학습률을 변경합니다.

R2023b 이전: 새 작업에서 계층 속성을 편집하려면 계층을 잠금 해제하는 대신에 계층을 바꿔야 합니다.

분석을 클릭하여 신경망을 확인합니다. 딥러닝 신경망 분석기에 보고되는 오류가 없으면 신경망이 훈련할 준비가 된 것입니다. 준비된 신경망을 작업 공간으로 내보내기 위해 내보내기를 클릭합니다. 신경망을 만드는 MATLAB 코드를 생성하기 위해 초기 파라미터로 코드 생성을 클릭하십시오.

새 영상을 분류하도록 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용하는 전이 학습을 위해 신경망 준비하기 항목을 참조하십시오.

PyTorch® 또는 TensorFlow™에서 신경망을 가져옵니다.

이 예에서는 MNASNet(Copyright© Soumith Chintala 2016) PyTorch 모델을 가져옵니다. MathWorks 웹사이트에서 약 17MB 크기의 mnasnet1_0 파일을 다운로드합니다.

modelfile = matlab.internal.examples.downloadSupportFile("nnet", ...
    "data/PyTorchModels/mnasnet1_0.pt");

외부 플랫폼에서 신경망을 가져오려면 심층 신경망 디자이너를 사용합니다.

deepNetworkDesigner

PyTorch® 또는 TensorFlow™에서 모델을 가져올 수 있습니다.

PyTorch® 모델을 가져오려면 PyTorch에서 아이콘을 클릭합니다. PyTorch 모델 가져오기 대화 상자에서 모델 파일의 위치를 복사한 다음 가져오기를 클릭합니다.

심층 신경망 디자이너를 사용하여 PyTorch 신경망을 가져올 때 신경망의 입력 크기를 지정할 수 있는 옵션이 있습니다. 이 옵션은 입력 크기를 지정했을 때 가져오기가 더 성공적으로 수행될 수 있는 경우에만 사용 가능합니다. 예를 들어 사용자 지정 계층 수를 줄이고자 할 때 사용 가능합니다.

앱이 신경망을 가져오고 가져오기 리포트를 생성합니다. 가져오기 리포트는 훈련 또는 추론에 신경망을 사용하기 전에 주의가 필요한 신경망 문제를 표시합니다. 예를 들어, 앱이 입력 크기를 추론할 수 없거나 미완성된 자리 표시자 계층이 있는 경우 리포트에 경고가 표시됩니다.

PyTorch® 신경망을 심층 신경망 디자이너로 가져오고 문제를 해결하는 방법을 보여주는 예제는 Import PyTorch® Model Using Deep Network Designer 항목을 참조하십시오.

훈련된 신경망을 심층 신경망 디자이너에서 Simulink®로 내보냅니다.

심층 신경망 디자이너를 엽니다.

deepNetworkDesigner

SqueezeNet 위에 커서를 올리고 열기를 클릭합니다. 신경망을 Simulink로 내보내려면 내보내기 > Simulink로 내보내기를 선택하십시오. Simulink로 내보내기 대화 상자에서 신경망 파라미터가 포함된 MAT 파일을 저장할 위치를 선택한 다음 내보내기를 선택합니다. 내보내는 동안 신경망이 초기화되지 않은 경우 앱이 신경망의 초기화를 시도합니다.

앱에서 생성되는 블록은 신경망 유형에 따라 달라집니다.

  • Predict — 훈련된 딥러닝 신경망을 사용하여 응답 변수를 예측합니다.

  • Stateful Predict — 훈련된 순환 신경망을 사용하여 응답 변수를 예측합니다.

SqueezeNet의 경우, 앱은 Predict 블록을 생성합니다.

심층 신경망 디자이너 앱을 사용하면 신경망 아키텍처를 다시 만드는 MATLAB® 코드를 생성할 수 있습니다.

  • 신경망의 계층을 초기 파라미터까지 포함하여 다시 만들려면 내보내기 > 파라미터를 사용하여 신경망 코드 생성하기를 선택하십시오. 앱은 신경망의 라이브 스크립트를 만들고 초기 파라미터(가중치와 편향)가 포함된 MAT 파일도 만듭니다. 스크립트를 실행하여 MAT 파일에 들어 있는 학습 가능한 파라미터까지 포함된 신경망 계층을 다시 만듭니다. 전이 학습을 수행하려는 경우 이 옵션을 사용하여 가중치를 유지하십시오.

  • 신경망의 계층만 다시 만들려면 내보내기 > 파라미터를 사용하지 않고 신경망 코드 생성하기를 선택하십시오. 이 신경망에는 사전 훈련된 가중치와 같은 초기 파라미터가 포함되어 있지 않습니다.

생성된 스크립트를 실행하면 신경망 아키텍처가 dlnetwork 객체로 반환됩니다 심층 신경망 디자이너에서 내보낸 신경망을 훈련시키는 예제는 심층 신경망 디자이너 시작하기 항목을 참조하십시오 코드 생성에 대한 자세한 내용은 Generate MATLAB Code from Deep Network Designer 항목을 참조하십시오.

관련 예제

프로그래밍 방식으로 사용

모두 확장

deepNetworkDesigner심층 신경망 디자이너 앱을 엽니다. 심층 신경망 디자이너가 이미 열려 있으면 deepNetworkDesigner는 앱으로 포커스를 가져옵니다.

deepNetworkDesigner(net)심층 신경망 디자이너 앱을 열고 지정된 신경망을 앱으로 불러옵니다. 신경망은 계층으로 구성된 배열이거나 dlnetwork 객체일 수 있습니다. DAGNetwork 또는 SeriesNetwork 객체를 가져오면 앱은 신경망을 dlnetwork 객체로 변환하려고 시도합니다. 자세한 내용은 dag2dlnetwork 항목을 참조하십시오. LayerGraph 객체를 가져오면 앱은 이를 dlnetwork 객체로 변환하려고 시도합니다.

심층 신경망 디자이너가 이미 열려 있으면 deepNetworkDesigner(net)은 앱으로 포커스를 가져오고 기존 신경망을 추가하거나 바꾸라는 메시지를 표시합니다.

deepNetworkDesigner(___,"-v1")은 레거시(R2024a 이전) 버전의 앱을 엽니다. 이 버전은 DAGNetwork 객체, SeriesNetwork 객체, LayerGraph 객체를 지원합니다. 자세한 내용은 디폴트 동작의 변경 항목을 참조하십시오.

버전 내역

R2018b에 개발됨

모두 확장