Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

심층 신경망 디자이너

딥러닝 신경망의 설계, 시각화 및 훈련

설명

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

  • 신경망 구축, 가져오기, 편집 및 결합.

  • 전이 학습을 위해 사전 훈련된 신경망을 불러와 편집.

  • 계층 속성 보기 및 편집, 새로운 계층과 연결 추가.

  • 신경망 아키텍처를 올바르게 정의했는지 확인하고 훈련 전에 문제를 파악할 수 있도록 신경망 분석.

  • 훈련 및 검증을 위해 데이터저장소 및 영상 데이터 가져오기 및 시각화.

  • 영상 분류 훈련 데이터에 증대 적용, 클래스 레이블의 분포 시각화.

  • 정확도, 손실 및 검증 메트릭으로 구성된 플롯을 사용하여 신경망 훈련 및 훈련 모니터링.

  • MATLAB® 코드를 생성하여 신경망 구축 및 훈련시키기.

Deep Network Designer app

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

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

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

예제

모두 확장

심층 신경망 디자이너에서 사전 훈련된 간단한 영상 분류 신경망을 살펴보겠습니다.

앱을 열고 사전 훈련된 신경망을 선택합니다. 디자이너 탭을 선택하고 새로 만들기를 클릭하여 사전 훈련된 신경망을 불러올 수도 있습니다. 신경망을 다운로드해야 할 경우에는 설치를 클릭하여 애드온 탐색기를 엽니다.

시작하려면 SqueezeNet이나 GoogLeNet과 같이 상대적으로 속도가 빠른 신경망을 선택해 보십시오. 어느 설정이 적절한지 파악했으면 Inception-v3이나 ResNet과 같이 보다 정확한 신경망을 사용해 보며 결과가 개선되는지 살펴봅니다. 사전 훈련된 신경망 선택에 대한 자세한 내용은 사전 훈련된 심층 신경망 항목을 참조하십시오.

디자이너 창에서 신경망을 시각화하고 살펴봅니다. 사용 가능한 사전 훈련된 신경망 목록과 이들을 비교하는 방법은 사전 훈련된 심층 신경망 항목을 참조하십시오.

심층 신경망 디자이너를 사용하여 신경망을 생성하는 방법에 대한 자세한 내용은 심층 신경망 디자이너를 사용하여 신경망 구축하기 항목을 참조하십시오.

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

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

SqueezeNet과 함께 심층 신경망 디자이너를 엽니다.

deepNetworkDesigner(squeezenet)

전이 학습을 위해 신경망을 준비하려면 마지막 학습 가능한 계층과 마지막 분류 계층을 바꾸십시오. SqueezeNet의 마지막 학습 가능한 계층은 'conv10'이라는 2차원 컨벌루션 계층입니다.

  • 캔버스에 새 convolution2dLayer를 끌어서 놓습니다. FilterSize 속성을 1,1로 설정하고 NumFilters로 속성을 새 클래스 개수로 설정합니다.

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

  • 마지막 convolution2dLayer를 삭제하고 새로 추가한 계층을 대신 연결합니다.

대부분의 사전 훈련된 신경망에서(예: GoogLeNet) 마지막 학습 가능한 계층은 완전 연결 계층입니다. 전이 학습을 위해 신경망을 준비하려면 완전 연결 계층을 새로운 완전 연결 계층으로 바꾸고 OutputSize 속성을 새 클래스 개수로 설정하십시오. 예제는 심층 신경망 디자이너 시작하기 항목을 참조하십시오.

다음으로, 분류 출력 계층을 삭제합니다. 그런 다음 새 classificationLayer를 캔버스에 끌어서 놓고 이 계층을 대신 연결합니다. 출력 계층의 디폴트 설정으로 인해 훈련 중에 신경망이 클래스의 개수를 학습하게 됩니다.

디자이너 탭에서 분석을 클릭하여 신경망을 확인합니다. 딥러닝 신경망 분석기에 보고되는 오류가 없으면 신경망이 훈련할 준비가 된 것입니다. 새 영상을 분류하도록 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용한 전이 학습 항목을 참조하십시오.

계층 속성을 이해하고 편집하는 데 도움이 필요하면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

디자이너 창에서 계층을 선택하여 속성을 확인하고 편집합니다. 계층 속성에 대한 자세한 정보를 보려면 계층 이름 옆에 있는 도움말 아이콘을 클릭하십시오.

계층 속성에 대한 자세한 내용은 딥러닝 계층 목록 항목을 참조하십시오.

심층 신경망 디자이너에서 계층을 작업 공간으로부터 신경망에 추가합니다.

심층 신경망 디자이너의 계층 라이브러리에서 디자이너 창으로 내장 계층을 끌어서 놓고 연결하여 신경망을 구축할 수 있습니다. 사용자 지정 계층을 작업 공간으로부터 디자이너 창의 신경망에 추가할 수도 있습니다. 변수 myCustomLayer에 저장된 사용자 지정 계층이 있다고 가정하겠습니다.

  1. 디자이너 탭에서 새로 만들기를 클릭합니다.

  2. 작업 공간에서 일시 중지하고 가져오기를 클릭합니다.

  3. myCustomLayer를 선택하고 확인을 클릭합니다.

  4. 추가를 클릭합니다.

앱이 디자이너 창의 상단에 사용자 지정 계층을 추가합니다. 새 계층을 보려면 마우스를 사용하여 확대하거나 확대를 클릭하십시오.

디자이너 창에서 myCustomLayer를 신경망에 연결합니다. 심층 신경망 디자이너에서 사용자 지정 계층을 사용하여 신경망을 구축하는 방법을 보여주는 예제는 Import Custom Layer into Deep Network Designer 항목을 참조하십시오.

심층 신경망 디자이너에서 신경망을 결합할 수도 있습니다. 예를 들어, 사전 훈련된 신경망을 디코더 하위 신경망과 결합하여 의미론적 분할 신경망을 만들 수 있습니다.

훈련을 위해 심층 신경망 디자이너로 데이터를 가져옵니다.

심층 신경망 디자이너의 데이터 탭을 사용하여 훈련 데이터와 검증 데이터를 가져올 수 있습니다. 심층 신경망 디자이너에서는 영상 데이터 및 datastore 객체를 가져올 수 있습니다. 작업 유형에 따라 가져오기 방법을 선택하십시오.

작업데이터 유형데이터 가져오기 방법시각화 예
영상 분류

ImageDatastore 객체, 또는 각 클래스에 대한 영상을 하위 폴더에 포함하는 폴더. 클래스 레이블은 하위 폴더 이름에서 가져옵니다.

데이터 가져오기 > 영상 데이터 가져오기를 선택합니다.

영상 데이터 가져오기 대화 상자에서 증대 옵션을 선택하고 검증 데이터를 지정할 수 있습니다. 자세한 내용은 Import Data into Deep Network Designer 항목을 참조하십시오.

기타 확장 워크플로(예: 숫자형 특징 입력값, 메모리에 담을 수 없는 큰 데이터, 영상 처리, 오디오 및 음성 처리)

데이터저장소.

그 밖의 확장 워크플로의 경우에는 적합한 datastore 객체를 사용하십시오. 예: AugmentedImageDatastore, CombinedDatastore, pixelLabelImageDatastore (Computer Vision Toolbox) 또는 사용자 지정 데이터저장소.

trainNetwork 함수와 함께 작동하는 모든 datastore 객체를 가져오고 훈련시킬 수 있습니다. 딥러닝 응용 분야를 위해 datastore 객체를 생성하고 사용하는 방법에 대한 자세한 내용은 Datastores for Deep Learning 항목을 참조하십시오.

데이터 가져오기 > 데이터저장소 가져오기를 선택합니다.

데이터저장소 가져오기 대화 상자에서 검증 데이터를 지정할 수 있습니다. 자세한 내용은 Import Data into Deep Network Designer 항목을 참조하십시오.

심층 신경망 디자이너로 가져온 데이터에 대해 신경망을 훈련시키려면 훈련 탭에서 훈련을 클릭하십시오. 훈련을 보다 세부적으로 제어하려면 훈련 옵션을 클릭하고 훈련 설정을 선택합니다. 훈련 옵션 선택에 대한 자세한 내용은 trainingOptions를 참조하십시오. 영상 분류 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용한 전이 학습 항목을 참조하십시오.

심층 신경망 디자이너에서 신경망 아키텍처를 만들고 만든 신경망 아키텍처를 작업 공간으로 내보냅니다.

  • 초기 가중치와 함께 신경망 아키텍처를 내보내려면 디자이너 탭에서 내보내기를 클릭하십시오. 심층 신경망 디자이너는 신경망 아키텍처에 따라 신경망을 LayerGraph lgraph 또는 Layer 객체 layers로 내보냅니다.

  • 훈련된 가중치와 함께 신경망 아키텍처를 내보내려면 훈련 탭에서 내보내기를 클릭하십시오. 심층 신경망 디자이너는 훈련된 신경망 아키텍처를 DAGNetwork 객체 trainedNetwork로 내보냅니다. 심층 신경망 디자이너는 훈련 및 검증 정확도와 같은 훈련 결과도 구조체형 배열 trainInfoStruct로 내보냅니다.

심층 신경망 디자이너에서 생성하고 훈련한 신경망을 다시 만들려면 MATLAB 코드를 생성하십시오.

신경망 계층을 다시 만들려면 디자이너 탭에서 내보내기 > 코드 생성을 선택하십시오. 또는 내보내기 > 초기 파라미터로 코드 생성을 선택하여 학습 가능한 파라미터를 포함한 신경망을 다시 만들 수도 있습니다. 스크립트를 생성한 후에는 다음 작업을 수행할 수 있습니다.

  • 앱에서 만든 신경망 계층을 다시 만들기 위해 스크립트를 실행합니다.

  • 신경망을 훈련시키기 위해, 스크립트를 실행한 후 trainNetwork 함수에 계층을 입력합니다.

  • 코드를 검토하여 프로그래밍 방식으로 계층을 만들고 연결하는 방법을 알아봅니다.

  • 계층을 수정하기 위해 코드를 편집합니다. 스크립트를 실행하고 편집을 위해 신경망을 다시 앱으로 가져올 수도 있습니다.

신경망, 데이터 가져오기 및 훈련을 다시 생성하려면 훈련 탭에서 내보내기 > 훈련에 사용할 코드 생성을 선택하십시오. 스크립트를 생성한 후에는 다음 작업을 수행할 수 있습니다.

  • 신경망 계층 및 앱에서 수행한 훈련을 다시 생성하기 위해 스크립트를 실행합니다.

  • 코드를 검토하여 프로그래밍 방식으로 데이터를 가져오고 신경망을 생성 및 훈련시키는 방법을 알아봅니다.

  • 코드를 수정하여 다른 신경망 아키텍처와 훈련 옵션을 사용해 보며 이것이 결과에 미치는 영향을 살펴봅니다.

자세한 내용은 Generate MATLAB Code from Deep Network Designer 항목을 참조하십시오.

생성된 스크립트는 일련의 하이퍼파라미터 값을 스윕하거나 베이즈 최적화를 사용하여 최적의 훈련 옵션을 찾는 딥러닝 실험을 만들기 위한 출발점으로도 사용할 수 있습니다. 실험 관리자를 사용하여 심층 신경망 디자이너에서 훈련된 신경망의 하이퍼파라미터를 조정하는 방법을 보여주는 예제는 Adapt Code Generated in Deep Network Designer for Use in Experiment Manager 항목을 참조하십시오.

관련 예제

프로그래밍 방식으로 사용

모두 확장

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

deepNetworkDesigner(net)은 심층 신경망 디자이너 앱을 열고 지정된 신경망을 앱으로 불러옵니다. 신경망은 시리즈 신경망, DAG 신경망, 계층 그래프 또는 계층으로 구성된 배열일 수 있습니다.

예를 들어, 사전 훈련된 SqueezeNet 신경망을 사용하여 심층 신경망 디자이너를 엽니다.

net = squeezenet;
deepNetworkDesigner(net);

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

여러 신경망을 훈련시키고 결과를 비교하려면 실험 관리자를 사용해 보십시오.

R2018b에 개발됨