主要内容

이페이지의최신내용은아직번역되지않았습니다。최신내용은영문으로볼수있습니다。

심층신경망디자이너

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

설명

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

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

  • 신경망을가져와서편집한후새신경망구축。

  • 끌어서놓기를통해새계층을추가하고새연결만들기。

  • 계층속성보기및편집。

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

  • 분류문제를위해영상데이터를가져오고증대옵션선택。

  • 영상분류작업을위해신경망훈련시키기。

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

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

신경망설계를마친후에는신경망을저장하거나훈련시킬수있는작업공간으로내보낼수있습니다。심층신경망디자이너를사용하여영상분류문제를위해신경망을훈련시킬수도있습니다。훈련된신경망과결과를작업공간으로내보낼수있습니다。

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

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

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

예제

모두확장

사전훈련된간단한신경망을심층신경망디자이너앱에서살펴보겠습니다。

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

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

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

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

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

앱으로데이터를가져오려면데이터탭에서데이터가져오기를클릭하십시오。

각클래스별영상으로구성된하위폴더가있는폴더에서데이터를가져오거나작업공간의imageDatastore에서데이터를가져올수있습니다。

심층신경망디자이너는일련의영상증대옵션을제공합니다。데이터에무작위방식의증대를적용하여훈련데이터의양을효과적으로늘릴수있습니다。데이터를증대하도록선택한경우심층신경망디자이너가각时代에대해훈련데이터를무작위로섭동합니다。그러면각时代에서서로약간씩다른데이터세트를사용하게됩니다。

심층신경망디자이너는다음과같은증대옵션을제공합니다。

  • x축에서의무작위반사

  • y축에서의무작위반사

  • 무작위회전

  • 무작위재스케일링

  • 무작위가로평행이동

  • 무작위세로평행이동

참고

특정데이터세트에는일부증대가적절하지않으므로심층신경망디자이너는기본적으로데이터를증대하지않습니다。자세한내용은무작위기하변환을사용하여훈련용영상증대하기항목을참조하십시오。

폴더를선택하거나작업공간에서imageDatastore를가져와서검증데이터를가져옵니다。훈련데이터에서검증데이터를분할하도록선택할수도있습니다。검증데이터는성능을모니터링하고과적합을방지하는데도움을줍니다。

훈련데이터의위치를선택한후에는검증데이터를지정하고증대옵션을설정한다음(있는경우)가져오기를클릭하여데이터세트를가져옵니다。

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

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

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

deepNetworkDesigner

심층신경망디자이너시작페이지에서사전훈련된신경망을선택하여불러옵니다。사전훈련된신경망목록에서SqueezeNet을선택해보십시오。열기를클릭하여신경망을불러옵니다。

전이학습을위해신경망을준비하려면마지막학습가능한계층과마지막분류계층을바꾸십시오。

  • 마지막학습가능한계층이2차원컨벌루션계층(예:SqueezeNet의”conv10“계층)인경우:

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

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

  • 마지막학습가능한계층이완전연결계층(GoogLeNet과같은대부분의사전훈련된신경망의경우)인경우:

    • 새로운fullyConnectedLayer를캔버스에끌어서놓은다음OutputSize속성을새클래스개수로설정합니다。

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

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

신경망이훈련준비가되었는지확인하려면디자이너탭에서분석을클릭하십시오。

신경망을훈련시키려면훈련탭을선택하십시오。자세한내용은심층신경망디자이너를사용한전이학습항목을참조하십시오。

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

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

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

심층신경망디자이너앱에서영상분류신경망을훈련시킵니다。

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

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

다른유형의데이터에대해신경망을훈련시키려면디자이너탭을선택하고내보내기를클릭하여초기신경망아키텍처를내보내십시오。그런다음프로그래밍방식으로신경망을훈련시킬수있습니다。간단한예제는使用深度网络设计器创建简单的序列分类网络항목을참조하십시오。

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

  • 초기가중치와함께신경망아키텍처를내보내려면디자이너탭에서내보내기를클릭하십시오。

  • 훈련된가중치와함께신경망아키텍처를내보내려면훈련탭에서내보내기를클릭하십시오。

심층신경망디자이너앱에서만든신경망계층을다시만들기위해MATLAB코드를생성합니다。

신경망계층을다시만들려면디자이너탭에서내보내기>코드생성을선택하십시오。

또는내보내기>초기파라미터로코드생성을선택하여학습가능한파라미터를포함한신경망을다시만들수도있습니다。

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

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

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

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

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

자세한내용은生成MATLAB代码重建网络层항목을참조하십시오。

심층신경망디자이너에서수행한데이터가져오기및훈련을다시생성하려면MATLAB코드를생성하십시오。

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

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

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

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

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

자세한내용은生成MATLAB代码训练网络항목을참조하십시오。

관련예제

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

R2018b에개발됨