컨벌루션 신경망의 계층 지정하기
다양한 방법으로 딥러닝 모델을 구축하고 사용자 지정할 수 있습니다. 예를 들어 사전 훈련된 모델을 가져와서 조정하거나, 신경망을 처음부터 구축하거나, 딥러닝 모델을 함수로 정의할 수 있습니다.
대부분의 경우, 여러 유형의 딥러닝 모델을 계층으로 구성된 신경망으로 지정한 다음 trainnet 함수를 사용하여 훈련시킬 수 있습니다. 계층의 목록과 이들 계층을 만드는 방법은 딥러닝 계층 목록 항목을 참조하십시오.
계층이 직렬로 연결된 단순한 신경망이라면 아키텍처를 계층으로 구성된 배열로 지정할 수 있습니다. 예를 들어, 28×28 회색조 영상을 10개 클래스로 분류하는 신경망을 만들려면 다음과 같이 계층 배열을 지정할 수 있습니다.
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer];구조가 더 복잡한 신경망, 예를 들어 분기가 있는 신경망이라면 신경망을 dlnetwork 객체로 지정할 수 있습니다. addLayers 함수를 사용하여 계층을 추가하고 connectLayers 함수를 사용하여 계층을 연결할 수 있습니다. 예를 들어, 224×224 RGB 영상과 64×64 회색조 영상 쌍을 10개의 클래스로 분류하는 다중 입력 신경망을 만들려면 다음과 같이 신경망을 지정할 수 있습니다.
net = dlnetwork;
layers = [
imageInputLayer([224 224 3])
convolution2dLayer(5,128)
batchNormalizationLayer
reluLayer
flattenLayer
concatenationLayer(1,2,Name="cat")
fullyConnectedLayer(10)
softmaxLayer];
net = addLayers(net,layers);
layers = [
imageInputLayer([64 64 1])
convolution2dLayer(5,128)
batchNormalizationLayer
reluLayer
flattenLayer(Name="flatten2")];
net = addLayers(net,layers);
net = connectLayers(net,"flatten2","cat/in2");figure plot(net)
계층 신경망으로 지정할 수 없는 모델의 경우 모델을 함수로 정의할 수 있습니다. 함수로 정의된 딥러닝 모델을 훈련시키는 방법을 보여주는 예제는 Train Network Using Model Function 항목을 참조하십시오.
참고 항목
trainnet | trainingOptions | dlnetwork