간단한용딥러닝신경망만들기
이예제딥러닝용으로간단컨벌루션신경망만들고시키는방법을보여줍니다줍니다。컨벌루션신경망은의툴로서,특히영상에합니다합니다합니다。
이예제다음수행방법방법줍니다줍니다줍니다。
영상데이터불러와서살펴봅니다。
신경망아키텍처정의합니다。
훈련옵션을합니다。
신경망을훈련시킵니다。
새로운데이터을하고정확도정확도합니다합니다합니다。
간단한신경망대화형방식으로만들고방법을보여주는는는심층신경망를하여간단영상분류신경망만들기항목을하십시오。
영상데이터를살펴보기
샘플숫자영상데이터저로서옵니다옵니다옵니다。成像
는폴더을영상에자동으로을지정하고데이터를成像
객체로합니다。영상데이터저사용메모리에담을수를포함다량의영상데이터데이터를저장저장저장할할수있고컨벌루션신경망신경망훈련훈련중중중에에에영상영상배치배치배치를효율효율효율효율효율적적읽어
digitdatasetpath = fullfile(matlabroot,'工具箱',,,,'nnet',,,,'nndemos',,,,...'nndatasets',,,,“ digitdataset”);imds = imagedatastore(digitdatasetpeth,...“包括橡皮folders”,真的,“ Labelsource”,,,,“折叠式”);
데이터저장소영상개표시합니다합니다。
数字;perm = randperm(10000,20);为了i = 1:20子图(4,5,i);imshow(imds.files {perm(i)});结尾
각범주영상의를합니다합니다합니다。标签
는레이블레이블갖는영상의포함테이블입니다입니다입니다。데이터저장소에는에는9까지까지의각숫자숫자대해대해대해대해대해대해대해대해대해대해대해대해대해,10,000개개의됩니다됩니다됩니다됩니다。신경망의완전계층에클래스의개수를输出尺寸
인수로할있습니다있습니다。
labelCount = counteachlabel(imds)
LabelCount =10×2桌标签计数_____ _____ 0 1000 1 1000 2 1000 3 1000 4 1000 5 1000 6 1000 7 1000 8 1000 9 1000
신경망입력있는의를를합니다합니다합니다。Digitdata
에있는영상의를합니다합니다합니다。각각영상은28×28×1픽셀입니다。
img = deadImage(imds,1);尺寸(IMG)
ans =1×228 28
훈련세트검증세트지정하기
750개개개이되고검증세트에각레이블의나머지나머지영상이포함포함되도록데이터데이터를를훈련데이터데이터데이터데이터세트세트세트와검증세트로세트로나눕니다SpliteachLabel
은데이터저장소Digitdata
2개개새로운장소장소장소Traindigitdata
와valdigitdata
로분할합니다。
numtrainfiles = 750;[imdstrain,imdsvalidation] = spliteachlabel(imds,numtrainfiles,“随机化”);
신경망아키텍처정의하기
컨벌루션신경망를합니다합니다。
layers = [imageInputlayer([28 28 1])卷积2Dlayer(3,8,'填充',,,,'相同的')batchnormalizationlayer relulayer maxpooling2dlayer(2,“大步”,2)卷积2Dlayer(3,16,,'填充',,,,'相同的')batchnormalizationlayer relulayer maxpooling2dlayer(2,“大步”,2)卷积2Dlayer(3,32,,'填充',,,,'相同的')batchnormalizationlayer relulayer plullconnectedlayer(10)softmaxlayer classificationlayer];
영상입력계층ImageInputlayer
에영상를합니다합니다。28×28×1입니다。각,너비,채널크기대응됩니다。숫자데이터회색조으로이루어져있으므로채널(색채널)는1입니다。RGB값값값값값에에하는하는하는하는하는하는하는하는하는하는하는하는하는하는하는하는하는하는값값값값값값。火车网
는기본훈련시작할때를섞기에를직접섞지않아도됩니다됩니다。火车网
는훈련매매가가시작때데이터자동섞을수도있습니다있습니다있습니다。
컨벌루션계층컨벌루션계층첫번째인수는过滤
입니다。이것은따라캔할때사용하는필터너비입니다입니다입니다。3은은필터크기크기가가가가가가나타냅니다나타냅니다나타냅니다나타냅니다나타냅니다나타냅니다。필터의를크기지정지정있습니다있습니다있습니다。두번째는필터의개수数字
입니다。이것은동일영역에연결뉴런개수입니다입니다입니다。이파라미터맵의를합니다합니다합니다。'填充'
- 값-값인수사용입력특징에를추가합니다합니다합니다합니다합니다。디폴트디폴트가인인계층경우,'相同的'
채우기를공간크기가입력와집니다집니다집니다。卷积2Dlayer
의-쌍-쌍인수사용하여계층의와학습률정의할할있습니다있습니다。
배치정규화계층배치정규은전체전파되는화과기울기값을정규화하여신경망훈련훈련을보다보다쉬운쉬운최적화화문제문제문제로로만들어줍니다。(relu계층등)사이사이정규계층사용하면신경망훈련속도속도를높이고신경망신경망초기화에대한대한대한민감도민감도민감도를수있습니다있습니다있습니다있습니다배치정규화은batchnormalizationlayer
를사용만듭니다。
relu계층배치정규뒤비선형활성함수가옵니다옵니다。가장자주되는활성화함수는는는는는는는는는는함수함수함수함수함수함수함수함수함수함수함수relu계층은Relulayer
를사용만듭니다。
최댓값풀링계층컨벌루션(활성화)에는에는맵를주고중복된공간정보정보제거하는하는다운샘플링플링연산이뒤뒤뒤따르는따르는있습니다있습니다있습니다있습니다있습니다다운샘플링하면필요한을늘리지보다심층컨벌루션컨벌루션계층에있는필터필터개수를를늘릴늘릴수수。다운샘플링수행하는가지방법인최댓값풀링은maxpooling2dlayer
를사용만듭니다。최댓값풀링은첫번째인수泳池大小
로지정값나타내는각형영역최댓값을합니다합니다합니다。이예제직사영역의[2,2]입니다。“大步”
이름-값쌍훈련입력값차례스캔할때적용하는스텝스텝크기를지정합니다합니다
완전연결계층컨벌루션계층플링뒤에는이상의연결계층옵니다옵니다옵니다。이름에서있듯이연결계층의은계층의뉴런에연결됩니다됩니다。이계층계층영상에서학습특징들을하여큰패턴을식별합니다합니다。마지막완전은을조합하여을합니다합니다합니다。따라서마지막완전계층의输出尺寸
파라미터는데이터클래스와같습니다같습니다。10개개개의클래스클래스클래스에에하는하는10입니다。완전연결계층은完整连接的layerer
를사용만듭니다。
소프트맥스계층소프트맥스함수완전연결계층출력을정규화합니다합니다。소프트맥스의값은은합이인인됩니다됩니다됩니다됩니다。이값계층의해분류확률사용수있습니다있습니다있습니다。소프트맥스계층은SoftMaxlayer
함수를마지막연결계층에만듭니다만듭니다。
분류계층마지막계층분류입니다입니다。이계층맥스화함수가입력입력반환확률확률을사용하여하여상호배타배타적인클래스중하나하나에에에입력입력값값을을할당할당하고하고손실손실손실을을합니다。분류계층을만들려면分类器
를사용하십시오。
훈련옵션지정하기
신경망구조한에는훈련지정합니다합니다。sgdm(具有动量的随机梯度下降:모멘텀을확률적하강법하강법하강법하강법하강법을사용하여초기초기학습률학습률학습률학습률학습률학습률학습률훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다훈련시킵니다。최대时期횟수횟수를를로합니다합니다합니다합니다。时期1회전체데이터대한의완전한주기를의미합니다합니다합니다합니다합니다。검증데이터빈도지정하여중에정확도를합니다합니다합니다。매时期마다마다섞습니다섞습니다섞습니다。훈련데이터신경망이되고되고되고되고중규칙인간격검증데이터에에대한정확도정확도계산됩니다됩니다됩니다검증데이터가중치업데이트데데않습니다않습니다않습니다。훈련진행켜고명령출력끕니다끕니다끕니다。
选项=训练('sgdm',,,,...“初始删除”,0.01,...“ maxepochs”,4,...“洗牌”,,,,“每个段”,,,,...'验证data',imdsvalidation,...“验证频率”,30,...“冗长”,错误的,...“绘图”,,,,“训练过程”);
훈련데이터사용하여신경망시키기시키기
层
에의해아키텍처,훈련데이터훈련사용신경망훈련시킵니다훈련시킵니다훈련시킵니다。기본적으로火车网
는gpu를할수있으면있으면있으면있으면를사용그렇지않은경우에는에는에는에는에는에는합니다합니다합니다。gpu에서시키려면시키려면平行计算工具箱™와지원되는되는장치가장치가합니다합니다。지원되는에대한자세한은은릴리스별gpu지원(并行计算工具箱)항목을하십시오。训练
의“执行环境”
이름-값값사용실행환경을지정있습니다있습니다있습니다있습니다。
훈련진행미니의손실및와의손실정확도가표시됩니다됩니다。훈련진행플롯에대한자세한은은딥러닝훈련진행모니터링하기항목을하십시오。손실은엔트로피입니다입니다。정확도는분류한의입니다입니다입니다。
net = trainnetwork(IMDSTRAIN,层,选项);
검증영상분류하고정확도하기하기
훈련된사용검증데이터의을하고최종정확도를계산합니다합니다。정확도는예측하는의입니다입니다입니다。99%이상이상검증세트의참참레이블합니다합니다합니다합니다합니다합니다
ypred =分类(net,imdsvalidation);yvalidation = imdsvalidation.labels;精度= sum(ypred == yvalidation)/numel(yvalidation)
精度= 0.9988