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

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 지원 패키지가 설치되어 있지 않은 경우, 필요한 지원 패키지로 연결되는 애드온 탐색기 링크를 함수에서 제공합니다. 지원 패키지를 설치하려면 링크를 클릭한 다음 설치(Install)를 클릭하십시오. 모델 파일 '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™가 필요합니다.

예: 'OutputLayerType','regression'

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

예: '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 계층

    Keras 계층Deep Learning Toolbox 계층
    AddadditionLayer

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

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    계층:

    고급 활성화:

    • Softmax

    • ReLU

    • LeakyReLU

    계층:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DensefullyConnectedLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer(Text Analytics Toolbox™)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2Dnnet.keras.layer.GlobalAveragePooling2DLayer
    InputimageInputLayer
    LeakyReLUleakyReluLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    SeparableConv2DgroupedConvolution2dLayerconvolution2dLayer
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

  • 사전 훈련된 네트워크를 새 이미지에 대한 예측 또는 전이 학습을 위해 사용하려면 모델을 훈련시킬 때 사용한 이미지의 전처리 방식과 동일하게 이미지를 전처리해야 합니다. 가장 일반적인 전처리 연산으로 이미지 크기 조정하기, 평균 이미지 빼기, 이미지를 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에 개발됨