Main Content

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

심층 신경망 디자이너

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

설명

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

  • 신경망 구축, 편집 및 결합.

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

  • PyTorch® 및 TensorFlow™에서 신경망 가져오기.

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

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

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

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

  • 훈련된 신경망을 작업 공간 또는 Simulink®로 내보내기.

  • 신경망 구축과 훈련을 위한 MATLAB® 코드를 생성하고 실험 관리자를 사용하여 하이퍼파라미터 조정을 위한 실험 생성.

Deep Network Designer app

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

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

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

예제

모두 확장

심층 신경망 디자이너에서 사전 훈련된 신경망을 살펴봅니다.

앱을 열고 사전 훈련된 신경망을 선택합니다. 디자이너 탭을 선택하고 새로 만들기를 클릭하여 사전 훈련된 신경망을 불러올 수도 있습니다. 신경망을 다운로드해야 할 경우에는 설치를 클릭하여 애드온 탐색기를 엽니다. 심층 신경망 디자이너에는 영상과 오디오 작업에 적합한 사전 훈련된 신경망이 있습니다. 사전 훈련된 오디오 신경망을 불러오려면 Audio Toolbox™가 필요합니다.

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

Deep Network Designer start page showing available networks

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

Deep Network Designer displaying a pretrained image classification network

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

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

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

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

deepNetworkDesigner(squeezenet)

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

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

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

Convolution 2-D layer selected in Deep Network Designer. The Properties pane shows NumFilters set to 5.

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

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

다음으로, 분류 출력 계층을 편집합니다. 속성 창에서 계층 잠금 해제를 클릭한 다음 무시하고 잠금 해제를 클릭합니다. 출력 계층의 디폴트 설정으로 인해 훈련 중에 신경망이 클래스의 개수를 학습하게 됩니다.

Classification layer selected in Deep Network Designer. The Properties pane shows OutputSize set to auto.

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

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

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

  • PyTorch의 경우 PyTorch에서 아이콘에서 가져오기를 클릭합니다. 신경망 가져오기 대화 상자에서 모델 파일의 위치를 선택합니다.

  • TensorFlow의 경우 TensorFlow에서 아이콘에서 가져오기를 클릭합니다. 신경망 가져오기 대화 상자에서 모델 폴더의 위치를 선택합니다.

신경망의 위치를 선택한 후 가져오기를 클릭합니다.

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

Example of an import report. The report displays a warning about the input layer and an error about placeholder layers.

PyTorch 또는 TensorFlow에서 가져온 신경망에 대해서는 앱의 데이터 가져오기 및 훈련이 지원되지 않습니다.

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

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

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

Cross channel normalization layer selected in Deep Network Designer

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

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

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

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

  2. 작업 공간에서 잠시 멈추고 가져오기를 클릭합니다.

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

  4. 추가를 클릭합니다.

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

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

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

사용자 지정 계층 클래스 정의를 보거나 편집하려면 계층을 선택한 후 계층 코드 편집을 클릭하십시오. 자세한 내용은 View Autogenerated Custom Layers Using Deep Network Designer 항목을 참조하십시오. (R2023a 이후)

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

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

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

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

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

Import Image Data dialog box

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

Data tab of Deep Network Designer displaying a histogram of the class labels and a selection of random images from the imported data

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

데이터저장소.

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

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

데이터 가져오기 > 사용자 지정 데이터 가져오기를 선택합니다.

Import Datastore dialog box

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

Data tab of Deep Network Designer displaying a preview of the first five observations in the datastore

심층 신경망 디자이너를 사용하여 심층 신경망을 훈련시킵니다.

심층 신경망 디자이너를 통해 trainNetwork 함수와 함께 작동하는 영상 데이터 또는 임의의 datastore 객체를 사용하여 신경망을 훈련시킬 수 있습니다. 예를 들어, CombinedDatastore 객체를 사용하여 의미론적 분할 신경망 또는 다중 입력 신경망을 훈련시킬 수 있습니다. 심층 신경망 디자이너로 데이터를 가져오는 방법에 관한 자세한 내용은 Import Data into Deep Network Designer 항목을 참조하십시오.

심층 신경망 디자이너로 가져온 데이터에 대해 신경망을 훈련시키려면 훈련 탭에서 훈련을 클릭하십시오. 앱은 훈련 과정을 애니메이션된 플롯으로 표시합니다. 이 플롯은 미니 배치 손실과 정확도, 검증 손실과 정확도, 그리고 훈련 진행 상황에 대한 추가 정보를 보여줍니다. 이 플롯은 오른쪽 위 코너에 중지 버튼 이 있습니다. 훈련을 중지하고 신경망의 현재 상태를 반환하려면 버튼을 클릭합니다.

Training progress plot in Deep Network Designer

자세한 내용은 항목을 참조하십시오.

훈련을 보다 세부적으로 제어하려면 훈련 옵션을 클릭하고 훈련 설정을 선택합니다. 훈련 옵션 선택에 대한 자세한 내용은 trainingOptions를 참조하십시오.

Training Options dialog box in Deep Network Designer

영상 분류 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용한 전이 학습 항목을 참조하십시오. sequence-to-sequence LSTM 신경망을 훈련시키는 방법을 보여주는 예제는 심층 신경망 디자이너를 사용하여 시계열을 전망하는 신경망 훈련시키기 항목을 참조하십시오.

심층 신경망 디자이너에서 지원하지 않는 데이터에 대해 신경망을 훈련시키려면 디자이너 탭을 선택하고 내보내기를 클릭하여 초기 신경망 아키텍처를 내보내십시오. 그런 다음 프로그래밍 방식으로 신경망을 훈련시킬 수 있습니다(예: 사용자 지정 훈련 루프 사용).

심층 신경망 디자이너에서 신경망 아키텍처를 작업 공간 또는 Simulink로 내보내고 코드를 생성하여 신경망과 훈련을 다시 만듭니다.

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

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

  • 심층 신경망 디자이너에서 Simulink로 훈련된 신경망을 내보내려면 훈련 탭에서 내보내기 > Simulink로 내보내기를 클릭하십시오. 심층 신경망 디자이너가 훈련된 신경망을 MAT 파일로 저장하고 훈련된 신경망을 나타내는 Simulink 블록을 생성합니다. 생성된 블록은 훈련된 신경망 유형에 따라 달라집니다.

    • Image Classifier — 훈련된 딥러닝 신경망을 사용하여 데이터를 분류합니다.

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

    • Stateful Classify — 훈련된 순환 신경망을 사용하여 데이터를 분류합니다.

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

심층 신경망 디자이너에서 Simulink로 신경망을 내보내는 방법을 보여주는 예제는 항목을 참조하십시오.

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

  • 학습 가능한 파라미터를 포함하여 신경망 계층을 다시 만들려면 디자이너 탭에서 내보내기 > 파라미터를 사용하여 신경망 코드를 생성합니다를 선택하십시오.

  • 단지 신경망 계층을 다시 만들려면 디자이너 탭에서 내보내기 > 파라미터를 사용하지 않고 신경망 코드를 생성합니다를 선택하십시오.

  • 신경망, 데이터 가져오기 및 훈련을 다시 생성하려면 훈련 탭에서 내보내기 > 훈련에 사용할 코드 생성을 선택하십시오.

스크립트를 생성한 후에는 다음 작업을 수행할 수 있습니다.

  • 앱에서 만든 신경망 계층을 다시 만들기 위해 스크립트를 실행합니다. 훈련 스크립트를 생성한 경우 스크립트 실행 시 신경망 훈련도 복제됩니다.

  • 코드를 검토하여 프로그래밍 방식으로 계층을 만들고 연결하는 방법과 심층 신경망을 훈련시키는 방법을 알아봅니다.

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

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

일련의 하이퍼파라미터 값을 스윕하거나 베이즈 최적화를 사용하여 최적의 훈련 옵션을 찾는 딥러닝 실험을 만들기 위해 심층 신경망 디자이너를 사용할 수도 있습니다. 실험 관리자를 사용하여 심층 신경망 디자이너에서 훈련된 신경망의 하이퍼파라미터를 조정하는 방법을 보여주는 예제는 항목을 참조하십시오.

관련 예제

프로그래밍 방식으로 사용

모두 확장

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

deepNetworkDesigner(net)은 심층 신경망 디자이너 앱을 열고 지정된 신경망을 앱으로 불러옵니다. 신경망은 시리즈 신경망, DAG 신경망, 계층 그래프, 계층으로 구성된 배열 또는 dlnetwork 객체일 수 있습니다. dlnetwork 객체에 대해서는 앱의 데이터 가져오기 및 훈련이 지원되지 않습니다.

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

net = squeezenet;
deepNetworkDesigner(net);

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

복수의 신경망을 훈련시키고 결과를 비교하려면 실험 관리자를 사용해 보십시오. 심층 신경망 디자이너를 사용하여 실험 관리자에 적합한 실험을 만들 수 있습니다.

버전 내역

R2018b에 개발됨