Main Content

assembleNetwork

사전 훈련된 계층에서 딥러닝 신경망 조합

설명

assembleNetwork는 훈련 없이 계층에서 딥러닝 신경망을 만듭니다.

다음과 같은 작업에 assembleNetwork를 사용합니다.

  • 계층 배열 또는 계층 그래프를 예측을 실행할 준비가 된 신경망으로 변환합니다.

  • 가져온 계층에서 신경망을 조합합니다.

  • 훈련된 신경망의 가중치를 수정합니다.

신경망을 처음부터 훈련시키려면 trainNetwork를 사용하십시오.

예제

assembledNet = assembleNetwork(layers)는 계층 배열 또는 계층 그래프 layers를 예측에 사용할 준비가 된 딥러닝 신경망으로 조합합니다.

예제

모두 축소

사전 훈련된 Keras 신경망에서 계층을 가져오고 지원되지 않는 계층을 사용자 지정 계층으로 바꾼 다음 이러한 계층을 예측을 실행할 준비가 된 신경망으로 조합합니다.

Keras 신경망 가져오기

Keras 신경망 모델에서 계층을 가져옵니다. 'digitsDAGnetwithnoise.h5'의 신경망은 숫자 영상을 분류합니다.

filename = 'digitsDAGnetwithnoise.h5';
lgraph = importKerasLayers(filename,'ImportWeights',true);
Warning: Unable to import some Keras layers, because they are not supported by the Deep Learning Toolbox. They have been replaced by placeholder layers. To find these layers, call the function findPlaceholderLayers on the returned object.

Keras 신경망은 Deep Learning Toolbox™에서 지원하지 않는 몇몇 계층을 포함합니다. importKerasLayers 함수는 경고를 표시하고 지원되지 않는 계층을 자리 표시자 계층으로 바꿉니다.

자리 표시자 계층 바꾸기

자리 표시자 계층을 바꾸려면 먼저 바꾸려는 계층의 이름을 식별하십시오. findPlaceholderLayers를 사용하여 자리 표시자 계층을 찾고 Keras 구성을 표시합니다.

placeholderLayers = findPlaceholderLayers(lgraph);
placeholderLayers.KerasConfiguration
ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_1'
       stddev: 1.5000

ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_2'
       stddev: 0.7000

현재 폴더에 파일 gaussianNoiseLayer.m을 저장하여 사용자 지정 가우스 잡음 계층을 정의합니다. 그런 다음 가져온 Keras 계층과 같은 구성을 갖는 가우스 잡음 계층을 2개 만듭니다.

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1');
gnLayer2 = gaussianNoiseLayer(0.7,'new_gaussian_noise_2');

replaceLayer를 사용하여 자리 표시자 계층을 사용자 지정 계층으로 바꿉니다.

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1);
lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnLayer2);

클래스 이름 지정하기

가져온 분류 계층이 클래스를 포함하지 않으므로 신경망을 조합하기 전에 먼저 클래스를 지정해야 합니다. 클래스를 지정하지 않으면 클래스가 자동으로 1, 2, ..., N으로 설정됩니다. 여기서 N은 클래스의 개수입니다.

분류 계층의 이름은 'ClassificationLayer_activation_1'입니다. 클래스를 0, 1, ..., 9로 설정한 다음 가져온 분류 계층을 새로운 분류 계층으로 바꿉니다.

cLayer = lgraph.Layers(end);
cLayer.Classes = string(0:9);
lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

신경망 조합하기

assembleNetwork를 사용하여 계층 그래프를 조합합니다. 함수가 예측을 실행할 준비가 된 DAGNetwork 객체를 반환합니다.

net = assembleNetwork(lgraph)
net = 
  DAGNetwork with properties:

         Layers: [15x1 nnet.cnn.layer.Layer]
    Connections: [15x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

입력 인수

모두 축소

신경망 계층으로, Layer 배열 또는 LayerGraph 객체로 지정됩니다.

모든 계층이 순차적으로 연결된 신경망을 만들려면 입력 인수로 Layer 배열을 사용하면 됩니다. 이 경우, 반환되는 신경망은 SeriesNetwork 객체입니다.

DAG(유방향 비순환 그래프) 신경망은 계층이 여러 개의 입력값과 출력값을 가질 수 있는 복잡한 구조를 갖습니다. DAG 신경망을 만들려면 신경망 아키텍처를 LayerGraph 객체로 지정한 다음 해당 계층 그래프를 assembleNetwork에 대한 입력 인수로 사용하십시오.

assembleNetwork 함수는 최대 하나의 시퀀스 입력 계층을 갖는 신경망을 지원합니다.

내장 계층 목록은 딥러닝 계층 목록 항목을 참조하십시오.

출력 인수

모두 축소

예측을 실행할 준비가 된 조합된 신경망으로, SeriesNetwork 객체 또는 DAGNetwork 객체로 반환됩니다. 반환되는 신경망은 layers 입력 인수에 따라 다릅니다.

  • layersLayer 배열인 경우, assembledNetSeriesNetwork 객체가 됩니다.

  • layersLayerGraph 객체인 경우, assembledNetDAGNetwork 객체가 됩니다.

버전 내역

R2018b에 개발됨