このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,事前学習済みのKerasネットワークから層をインポートし,サポートされていない層をカスタム層に置き換え,予測の準備が整ったネットワークをこれらの層から組み立てる方法を説明します。
Kerasネットワークモデルから層をインポートします。“digitsDAGnetwithnoise.h5”
のネットワークは数字のイメージを分類します。
文件名=“digitsDAGnetwithnoise.h5”;lgraph = importKerasLayers(文件名,“ImportWeights”,真正的);
警告:无法导入一些Keras层,因为它们不被深度学习工具箱支持。万博1manbetx它们已经被占位符层所取代。要查找这些层,调用返回对象上的函数findPlaceholderLayers。
Kerasネットワークには,深度学习工具箱ではサポートされていない層がいくつか含まれています。関数importKerasLayers
は警告を表示して,サポートされていない層をプレースホルダー層に置き換えます。
情节
を使用して層グラフをプロットします。
图绘制(lgraph)标题(“进口网络”)
プレースホルダー層を置き換えるには,まず,置き換える層の名前を特定します。findPlaceholderLayers
を使用してプレースホルダー層を見つけます。
placeholderLayers = findPlaceholderLayers (lgraph)
placeholderLayers = 2x1 PlaceholderLayer array with layers: 1' gaussian_noise_1' PLACEHOLDER LAYER PLACEHOLDER for 'GaussianNoise' Keras LAYER 2' gaussian_noise_2' PLACEHOLDER LAYER PLACEHOLDER for 'GaussianNoise' Keras LAYER
これらの層のKeras構成を表示します。
placeholderLayers。KerasConfiguration
ans =结构体字段:可训练:1 name: 'gaussian_noise_1' stddev: 1.5000
ans =结构体字段:可训练: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);
情节
を使用して,更新された層グラフをプロットします。
图绘制(lgraph)标题(“替换图层的网络”)
インポートした分類層にクラスが含まれていない場合,予測の前にこれらを指定しなければなりません。クラスを指定しない場合,クラスは1
、2
、...、N
に自動的に設定されます。ここで,N
はクラスの数です。
層グラフの层
プロパティを表示して,分類層のインデックスを見つけます。
lgraph。层
ans = 15x1图层数组:1“input_1”图像输入28 x28x1图片2的conv2d_1卷积20 7 x7x1旋转步[1]和填充“相同”3“conv2d_1_relu”ReLU ReLU 4 conv2d_2的卷积20 3 x3x1旋转步[1]和填充“相同”5“conv2d_2_relu”ReLU ReLU 6 new_gaussian_noise_1高斯噪声的高斯噪声标准差为1.5 7new_gaussian_noise_2高斯噪声的高斯噪声标准差为0.7 8“max_pooling2d_1”马克斯池2 x2马克斯池步(2 - 2)和填充“相同”9“max_pooling2d_2”马克斯池2 x2马克斯池步(2 - 2)和填充“相同”10 ' flatten_1 Keras平压平激活成一维假设c风格的(行)11' Flatten ' Flatten激活到1-D假设C-style(行-主要)顺序12 'concatenate_1' Depth concatenate_1' Depth concatenate_1' Fully Connected 10 Fully Connected layer 14 'activation_1' Softmax Softmax 15 'ClassificationLayer_activation_1' Classification Output crossentropyex
分類層の名前は“ClassificationLayer_activation_1”
です。分類層を表示して,类
プロパティを確認します。
粘土= lgraph.Layers(结束)
cLayer = ClassificationOutputLayer with properties: Name: 'ClassificationLayer_activation_1' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
この層の类
プロパティは“汽车”
であるため,クラスを手動で指定しなければなりません。クラスを0
、1
、...、9
に設定してから,インポートした分類層を新しい層に置き換えます。
粘土。类=字符串(0:9)
class: [0 1 2 3 4 5 6 7 8 9] ClassWeights: 'none' OutputSize: 10 Hyperparameters LossFunction: 'crossentropyex'
lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);
assembleNetwork
を使用して層グラフを組み立てます。この関数は,予測に使用する準備が整ったDAGNetwork
オブジェクトを返します。
净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [15x1 net.cnn.layer. layer] Connections: [15x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}
importKerasNetwork
|assembleNetwork
|replaceLayer
|importKerasLayers
|trainNetwork
|layerGraph
|DAGNetwork
|findPlaceholderLayers