Main Content

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

系列网络

딥러닝을 위한 시리즈 신경망

설명

시리즈신경망은하나씩대로연결것으로을위한입니다입니다입니다。시리즈신경망은입력과하나의계층갖습니다갖습니다갖습니다。

생성

系列网络객체를 만드는 방법에는 여러 가지가 있습니다.

참고

googlenet,,,,resnet50과같은사전된신경망에대해알아보려면알아보려면사전훈련된신경망항목을하십시오。

속성

모두확장

이 속성은 읽기 전용입니다.

신경망 계층으로,Layer배열로됩니다。

이 속성은 읽기 전용입니다.

신경망입력으로,문자형벡터로된배열지정됩니다됩니다。

데이터형:cell

신경망출력으로,문자형벡터로된배열지정됩니다됩니다。

데이터형:cell

객체함수

activations 딥러닝 신경망 계층 활성화 계산
classify 훈련된신경망을사용분류분류
predict 훈련된 딥러닝 신경망을 사용하여 응답 변수 예측
预测和dateState 훈련된을사용응답변수예측신경망업데이트업데이트업데이트
classifyAndUpdateState 훈련된 순환 신경망을 사용하여 데이터 분류 및 신경망 상태 업데이트
resetState 순환 신경망의 상태 재설정
阴谋 신경망계층그래프플로팅

예제

모두 축소

사전 훈련된 AlexNet 컨벌루션 신경망을 불러와서 계층과 클래스를 살펴봅니다.

Alexnet신경망신경망신경망신경망을alexnet을사용불러옵니다。출력값net系列网络객체입니다。

Net = Alexnet
net =带有属性的系列网络:层:[25×1 nnet.cnn.layer.layer]

속성을하여아키텍처표시합니다합니다。25개개계층이있습니다있습니다있습니다。학습가능가중치갖는계층은은은은은은은,5개컨벌루션이고,3개이고이고이고이고이고이고이고이고이고이고입니다입니다입니다입니다。

net.Layers
ans = 25x1层阵列带有图层:1'数据'图像输入227x227x3图像,带有“ zerecenter”标准化2'Conv1'卷积96 11x11x3卷积,步幅[4 4]和Padding [0 0 0 0 0 0] 3'relu1'relu relu 4 relu 4 relu 4“ NORM1”跨通道归一化横向通道归一化,每元素5通道5'pool1'最大boming 3x3 max boming plid [2 2]和填充[0 0 0 0 0] 6'conv2'分组卷积2组128 5x5x48卷积,步幅[1 1]和填充[2 2 2] 7'RERU2'RELU 2'relu 8'norm2'跨通道横向通道横向通道归一化,每个元素9'pool2'最大池2'最大boming 3x3 max bol [2 2]和填充[0 0 0 0] 10'Conv3'卷积384 3X3X256大步[1 1]和填充[1 1 1 1] 11'RELU3'RELU3'RELU RELU RELU 12'CORV4'分组的卷积2组192 3x3x192卷积,横步[1 1]和填充[1 1 1 1] 13'relu4'relu relu 14'conv5'分组2组128 3x3x192卷积[1 1]和填充[1 1 1 1] 15'relu5'relu relu 16'pool5'最大池池3x3最大池,步幅[2 2]和填充[0 0 0 0 0] 17'fc6'FC6'完全连接4096完全连接第18层'relu6'relu 19'drop6'辍学50%辍学20'fc7'完全连接4096完全连接的层21'relu7'relu 22'relu 22'drop7 drop7 drop7'辍学50%辍学23'fc8 fc8完全连接1000完全连接的层24'Prob'SoftMax SoftMax 25“输出”分类'带有“ Tench”和999个其他类

신경망에서한의이름보려면분류분류계층(마지막계층)의课程속성을됩니다。10개개선택처음처음처음처음처음처음개클래스표시합니다합니다합니다。

net.Layers(end).Classes(1:10)
ans =10×1 categorical arraytench goldfish great white shark tiger shark hammerhead electric ray stingray cock hen ostrich

가져올예제파일'digitsnet.prototxt'를 지정합니다.

Protofile ='digitsnet.prototxt';

신경망 계층을 가져옵니다.

layers = importCaffeLayers(protofile)
layers = 1x7 Layer array with layers: 1 'testdata' Image Input 28x28x1 images 2 'conv1' Convolution 20 5x5x1 convolutions with stride [1 1] and padding [0 0] 3 'relu1' ReLU ReLU 4 'pool1' Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0] 5 'ip1' Fully Connected 10 fully connected layer 6 'loss' Softmax softmax 7 'output' Classification Output crossentropyex with 'class1', 'class2', and 8 other classes

데이터를成像객체로서옵니다。

digitdatasetpath = fullfile(matlabroot,'toolbox',,,,'nnet',,,,...'nndemos',,,,'nndatasets',,,,'DigitDataset'); imds = imageDatastore(digitDatasetPath,...'IncludeSubfolders',真的,...'LabelSource',,,,“折叠式”);

이 데이터저장소에는 0부터 9까지 숫자를 나타내는 합성 영상 10,000개가 있습니다. 이 영상은 서로 다른 글꼴로 만들어진 숫자 영상에 무작위 변환을 적용하여 생성됩니다. 각 숫자 영상은 28×28픽셀입니다. 이 데이터저장소에는 범주당 동일한 개수의 영상이 포함되어 있습니다.

데이터저장소의 영상 몇 개를 표시합니다.

figure numImages = 10000; perm = randperm(numImages,20);为了i = 1:20子图(4,5,i);imshow(imds.files {perm(i)});drawnow;结尾

Figure contains 20 axes objects. Axes object 1 contains an object of type image. Axes object 2 contains an object of type image. Axes object 3 contains an object of type image. Axes object 4 contains an object of type image. Axes object 5 contains an object of type image. Axes object 6 contains an object of type image. Axes object 7 contains an object of type image. Axes object 8 contains an object of type image. Axes object 9 contains an object of type image. Axes object 10 contains an object of type image. Axes object 11 contains an object of type image. Axes object 12 contains an object of type image. Axes object 13 contains an object of type image. Axes object 14 contains an object of type image. Axes object 15 contains an object of type image. Axes object 16 contains an object of type image. Axes object 17 contains an object of type image. Axes object 18 contains an object of type image. Axes object 19 contains an object of type image. Axes object 20 contains an object of type image.

훈련 세트의 각 범주에 영상 750개가 포함되고 테스트 세트에 각 레이블의 나머지 영상이 포함되도록 데이터저장소를 분할합니다.

NumTrainingFiles = 750;[imdstrain,imdstest] = spliteachlabel(imds,numtrainingfiles,“随机化”);

SpliteachLabelDigitdata의영상을을개개의데이터저장소인인ImdsrainimdsTest로분할합니다。

컨벌루션 신경망 아키텍처를 정의합니다.

layers = [...imageInputlayer([28 28 1])卷积2Dlayer(5,20)Relulayer MaxPooling2Dlayer(2,“大步”,2)完整连接的layerer(10)SoftMaxlayer ClassificationLayer];

옵션을 모멘텀을 사용한 확률적 경사하강법의 디폴트 설정으로 설정합니다. 최대 Epoch 횟수를 20으로 설정하고, 초기 학습률 0.0001로 훈련을 시작합니다.

options = trainingOptions('sgdm',,,,...“ maxepochs”,20,...'InitialLearnRate',1E-4,...'Verbose',,,,false,...“绘图”,,,,“训练过程”);

신경망을훈련시킵니다。

net = trainNetwork(imdsTrain,layers,options);

图训练进度(Jul-2021 12:33:39)包含2个轴对象和另一个类型Uigridlayout对象。轴对象1包含6个类型补丁,文本,行的对象。轴对象2包含6个类型补丁,文本,行的对象。

이렇게훈련을신경망에사용않은테스트에대해하고영상영상레이블(숫자)을을을을을을을예측예측합니다합니다。

YPred = classify(net,imdsTest); YTest = imdsTest.Labels;

정확도를 계산합니다. 정확도는 테스트 데이터에 있는 영상의 개수 대비 테스트 데이터에서classify의 분류와 일치하는 실제 레이블의 개수의 비율입니다.

精度= sum(ypred == ytest)/numel(ytest)
accuracy = 0.9404

확장 기능

버전내역

R2016a에 개발됨