Main Content

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

importKerasNetwork

사전 훈련된 Keras 신경망과 가중치 가져오기

설명

예제

net = importKerasNetwork(modelfile)modelfile에서 사전 훈련된 TensorFlow™ -Keras 신경망과 가중치를 가져옵니다.

이 함수를 사용하려면 Deep Learning Toolbox™ Importer for TensorFlow -Keras Models 지원 패키지가 필요합니다. 이 지원 패키지가 설치되어 있지 않으면 함수에서 다운로드 링크를 제공합니다.

net = importKerasNetwork(modelfile,Name,Value)는 하나 이상의 이름-값 쌍 인수로 지정된 추가 옵션을 사용하여 사전 훈련된 TensorFlow -Keras 신경망과 가중치를 가져옵니다.

예를 들어, importKerasNetwork(modelfile,'WeightFile',weights)는 모델 파일 modelfile에서 신경망을 가져오고 가중치 파일 weights에서 가중치를 가져옵니다. 이 경우, modelfile은 HDF5 또는 JSON 형식일 수 있고, 가중치 파일은 HDF5 형식이어야 합니다.

예제

모두 축소

Deep Learning Toolbox Importer for TensorFlow-Keras Models 지원 패키지를 다운로드하고 설치합니다.

명령줄에 importKerasNetwork를 입력합니다.

importKerasNetwork

Deep Learning Toolbox Importer for TensorFlow-Keras Models 지원 패키지가 설치되어 있지 않은 경우, 필요한 지원 패키지로 연결되는 애드온 탐색기 링크를 함수에서 제공합니다. 지원 패키지를 설치하려면 링크를 클릭한 다음 설치를 클릭하십시오. 모델 파일 'digitsDAGnet.h5'에서 신경망을 가져와서 설치가 성공적으로 완료되었는지 명령줄에서 확인합니다. 필요한 지원 패키지가 설치되어 있는 경우, 함수가 DAGNetwork 객체를 반환합니다.

modelfile = 'digitsDAGnet.h5';
net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes
will be set to categorical(1:N), where N is the number of classes
in the classification output layer of the network.  To specify
classes, use the 'Classes' argument. 

net = 

  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

가져올 파일을 지정합니다. 파일 digitsDAGnet.h5는 숫자 영상을 분류하는 유방향 비순환 그래프 컨벌루션 신경망을 포함합니다.

modelfile = 'digitsDAGnet.h5';

신경망을 가져옵니다.

net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

신경망 아키텍처를 플로팅합니다.

figure
plot(net);
title('DAG Network Architecture')

가져올 신경망 파일과 가중치 파일을 지정합니다.

modelfile = 'digitsDAGnet.json';
weights = 'digitsDAGnet.weights.h5';

이 신경망은 숫자 데이터에 대해 훈련된 유방향 비순환 그래프 컨벌루션 신경망입니다.

신경망 아키텍처와 가중치를 각각 별도의 파일에서 가져옵니다. .json 파일은 출력 계층 또는 비용 함수에 대한 정보를 포함하지 않습니다. 파일을 가져올 때 출력 계층 유형을 지정합니다.

net = importKerasNetwork(modelfile,'WeightFile',weights, ...
      'OutputLayerType','classification')
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

모델 파일을 지정합니다.

modelfile = 'digitsDAGnet.h5';

클래스 이름을 지정합니다.

classNames = {'0','1','2','3','4','5','6','7','8','9'};

클래스 이름을 사용하여 Keras 신경망을 가져옵니다.

net = importKerasNetwork(modelfile,'Classes',classNames);

분류할 영상을 읽어 들입니다.

digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets', ...
    'DigitDataset');
I = imread(fullfile(digitDatasetPath,'5','image4009.png'));

사전 훈련된 신경망을 사용하여 영상을 분류합니다.

label = classify(net,I);

영상과 분류 결과를 표시합니다.

figure
imshow(I)
title(['Classification result: ' char(label)])

입력 인수

모두 축소

신경망 아키텍처와 (해당하는 경우) 가중치를 포함하는 모델 파일의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 파일은 현재 폴더 또는 MATLAB® 경로에 있는 폴더에 있어야 합니다. 또는 파일에 대한 전체 또는 상대 경로를 포함해야 합니다.

modelfile

  • 신경망 아키텍처와 가중치를 포함하는 경우, 파일은 HDF5(.h5) 형식이어야 합니다.

  • 신경망 아키텍처만 포함하는 경우, HDF5 또는 JSON(.json) 형식일 수 있습니다.

modelfile이 신경망 아키텍처만 포함하는 경우 'WeightFile' 이름-값 쌍 인수를 사용하여 HDF5 파일에 가중치를 제공해야 합니다.

예: 'digitsnet.h5'

데이터형: char | string

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: importKerasNetwork(modelfile,'OutputLayerType','classification','Classes',classes)는 모델 파일 modelfile에서 신경망을 가져오고, Keras 계층의 끝에 분류 문제를 위한 출력 계층을 추가하고, 출력 계층의 클래스로 classes를 지정합니다.

가중치를 포함하는 파일의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. WeightFile은 현재 폴더 또는 MATLAB 경로에 있는 폴더에 있어야 합니다. 또는 파일에 대한 전체 또는 상대 경로를 포함해야 합니다.

예: 'WeightFile','weights.h5'

modelfile이 손실 함수를 지정하지 않았을 때 신경망 아키텍처의 끝부분에 추가되는 출력 계층의 유형으로, 'classification', 'regression' 또는 'pixelclassification'으로 지정됩니다. pixelClassificationLayer (Computer Vision Toolbox) 객체를 추가하려면 Computer Vision Toolbox™가 필요합니다.

modelfile의 신경망이 여러 개의 출력값을 가질 경우 이 인수를 사용하여 출력 계층 유형을 지정할 수 없습니다. importKerasLayers를 대신 사용하십시오. importKerasLayers는 출력값을 위한 자리 표시자 계층을 삽입합니다. 가져온 후에는 findPlaceholderLayers를 사용하여 자리 표시자 계층을 찾고 replaceLayer를 사용하여 자리 표시자 계층을 바꿀 수 있습니다.

예: 'OutputLayerType','regression'

신경망의 입력 영상의 크기로, 2개 또는 3개의 숫자형 값으로 구성된 벡터 [height,width](회색조 영상) 또는 [height,width,channels](컬러 영상)로 지정됩니다. 신경망은 modelfile이 입력 크기를 지정하지 않은 경우 이 정보를 사용합니다.

modelfile의 신경망이 여러 개의 입력값을 가질 경우 이 인수를 사용하여 입력 크기를 지정할 수 없습니다. importKerasLayers를 대신 사용하십시오. importKerasLayers는 입력값을 위한 자리 표시자 계층을 삽입합니다. 가져온 후에는 findPlaceholderLayers를 사용하여 자리 표시자 계층을 찾고 replaceLayer를 사용하여 자리 표시자 계층을 바꿀 수 있습니다.

예: 'ImageInputSize',[28 28]

출력 계층의 클래스로, categorical형 벡터, string형 배열, 문자형 벡터로 구성된 셀형 배열 또는 'auto'로 지정됩니다. string형 배열 또는 문자형 벡터로 구성된 셀형 배열 str을 지정하면, 출력 계층의 클래스가 categorical(str,str)로 설정됩니다. Classes'auto'인 경우, 함수는 클래스를 categorical(1:N)으로 설정합니다. 여기서 N은 클래스의 개수입니다.

데이터형: char | categorical | string | cell

출력 인수

모두 축소

사전 훈련된 Keras 신경망으로, 다음 중 하나로 반환됩니다.

  • Keras 신경망이 Sequential 유형인 경우, netSeriesNetwork 객체입니다.

  • Keras 신경망이 Model 유형인 경우, netDAGNetwork 객체입니다.

  • importKerasNetwork는 다음과 같은 Keras 계층 유형을 갖는 신경망을 가져올 수 있으며, 몇 가지 제한 사항이 있습니다. 신경망에 그 밖의 다른 유형의 계층이 포함된 경우, 오류 메시지가 반환됩니다. 이 경우에도 importKerasLayers를 사용하여 신경망 아키텍처와 가중치를 가져올 수 있습니다.

    지원되는 Keras 계층대응되는 Deep Learning Toolbox 계층
    AddadditionLayer

    다음과 같은 활성화 이름을 갖는 Activation:

    • 'elu'

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    계층:

    고급 활성화:

    • ELU

    • Softmax

    • ReLU

    • LeakyReLU

    • PReLu*

    계층:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    CuDNNLSTMlstmLayer
    DensefullyConnectedLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer (Text Analytics Toolbox)(Text Analytics Toolbox™)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2DglobalAveragePooling2dLayer
    GlobalMaxPooling2DglobalMaxPooling2dLayer
    GRUgruLayer
    InputimageInputLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    SeparableConv2DgroupedConvolution2dLayer 또는 convolution2dLayer
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

    *PReLU 계층의 경우, importKerasNetwork 함수가 벡터 값 스케일링 파라미터를 벡터 요소의 평균값으로 바꿉니다. 가져온 후에 파라미터를 다시 벡터로 변경할 수 있습니다. 예제는 Import Keras PReLU Layer 항목을 참조하십시오.

  • importKerasNetwork는 다음과 같은 Keras 손실 함수를 지원합니다.

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

  • 다중 입력/다중 출력(MIMO)을 포함하는 Keras 신경망을 가져올 수 있습니다. 신경망이 입력값에 대한 입력 크기 정보를 포함하고 출력값에 대한 손실 정보를 포함하는 경우 importKerasNetwork를 사용하십시오. 그 밖의 경우에는 importKerasLayers를 사용하십시오. importKerasLayers 함수는 입력값과 출력값을 위한 자리 표시자 계층을 삽입합니다. 가져온 후에는 findPlaceholderLayers를 사용하여 자리 표시자 계층을 찾고 replaceLayer를 사용하여 자리 표시자 계층을 바꿀 수 있습니다. MIMO Keras 신경망을 가져오는 워크플로는 MIMO ONNX™ 신경망을 가져오는 워크플로와 같습니다. 예제는 Import ONNX Network with Multiple Outputs 항목을 참조하십시오. 여러 개의 입력값과 여러 개의 출력값을 갖는 딥러닝 신경망에 대해 자세히 알아보려면 Multiple-Input and Multiple-Output Networks 항목을 참조하십시오.

  • 사전 훈련된 신경망을 새 영상에 대한 예측 또는 전이 학습을 위해 사용하려면 모델을 훈련시킬 때 사용한 영상의 전처리 방식과 동일하게 영상을 전처리해야 합니다. 가장 일반적인 전처리 연산으로 영상 크기 조정하기, 평균값 영상 빼기, 영상을 RGB에서 BGR 형식으로 변환하기 등을 들 수 있습니다.

    • 영상의 크기를 조정하려면 imresize를 사용하십시오. 예를 들면 imresize(im,[227 227])과 같습니다.

    • 영상을 RGB에서 BGR 형식으로 변환하려면 flip을 사용하십시오. 예를 들면 flip(im,3)과 같습니다.

    훈련 및 예측을 위한 영상 전처리에 대한 자세한 내용은 딥러닝을 위해 영상 전처리하기 항목을 참조하십시오.

호환성 관련 고려 사항

모두 확장

R2018b부터 권장되지 않음

참고 문헌

[1] Keras: The Python Deep Learning library. https://keras.io.

R2017b에 개발됨