主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

事前学習済みのKeras層からのネットワークの組み立て

この例では、事前学習済みの 凯拉斯ネットワークから層をインポートし、サポートされていない層をカスタム層に置き換え、予測の準備が整ったネットワークをこれらの層から組み立てる方法を説明します。

Kerasネットワークのインポート

凯拉斯ネットワーク モデルから層をインポートします。“digitsDAGnetwithnoise.h5”のネットワークは数字のイメージを分類します。

文件名=“digitsDAGnetwithnoise.h5”;lgraph=importKerasLayers(文件名,“ImportWeights”,真正的);
警告:无法导入一些Keras层,因为它们不被深度学习工具箱支持。金宝app它们已经被占位符层所取代。要查找这些层,调用返回对象上的函数findPlaceholderLayers。

Kerasネットワークには,深度学习工具箱ではサポートされていない層がいくつか含まれています。関数进口卡拉斯层は警告を表示して,サポートされていない層をプレースホルダー層に置き換えます。

情节を使用して層グラフをプロットします。

图绘制(lgraph)标题(“导入的网络”

图中包含一个坐标轴。标题为“导入网络”的轴包含一个graphplot类型的对象。

プレースホルダー層の置き換え

プレースホルダー層を置き換えるには,まず,置き換える層の名前を特定します。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=高斯各向异性层(0.7,“new_gaussian_noise_2”);

replaceLayerを使用してプレースホルダー層をカスタム層に置き換えます。

lgraph = replaceLayer (lgraph,“gaussian_noise_1”, gnLayer1);lgraph = replaceLayer (lgraph,“gaussian_noise_2”,gn2);

情节を使用して,更新された層グラフをプロットします。

图绘制(lgraph)标题(“替换图层的网络”

图中包含一个坐标轴。标题为“替换层网络”的轴包含一个graphplot类型的对象。

クラス名の指定

インポートした分類層にクラスが含まれていない場合,予測の前にこれらを指定しなければなりません。クラスを指定しない場合,クラスは12、...、Nに自動的に設定されます。ここで、Nはクラスの数です。

層グラフのプロパティを表示して,分類層のインデックスを見つけます。

lgraph。层
ans=15x1带层的层阵列:1“输入1”图像输入28x28x1图像2“conv2d_1”卷积20 7x7x1带跨距的卷积[1]和填充“相同的”3“conv2d_1_relu”relu relu 4“conv2d_2”卷积20 3x3x1带跨距的卷积[1]和填充“相同的”5“conv2d_2_relu”relu relu 6“新的_高斯_噪声_1”高斯噪声标准偏差为1.5 7“新的_高斯_噪声_2”高斯噪声标准偏差为0.7 8“最大_池2d_1”最大池2x2最大池步幅[2]和填充“相同的”9“最大池2D_2”最大池2x2最大池带跨距[2 2]和填充“相同的”10“展平_1”Keras展平激活为1-D假设C样式(行主)顺序11“展平_2”Keras展平激活为1-D假设C样式(行主)顺序12“串联1”深度串联2个输入的深度串联13“密集1”完全连接10完全连接层14“激活1”Softmax Softmax 15“分类层激活1”分类输出交叉熵

分類層の名前は“ClassificationLayer_activation_1”です。分類層を表示して、プロパティを確認します。

粘土= lgraph.Layers(结束)
cLayer=ClassificationOutputLayer,属性:Name:'ClassificationLayer\u activation\u 1'类:'auto'类权重:'none'输出大小:'auto'超参数丢失函数:'crossentropyex'

この層のプロパティは“汽车”であるため,クラスを手動で指定しなければなりません。クラスを01、...、9に設定してから,インポートした分類層を新しい層に置き換えます。

cLayer.Classes=string(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”、粘土);

ネットワークの組み立て

装配网络を使用して層グラフを組み立てます。この関数は、予測に使用する準備が整ったDAGNetworkオブジェクトを返します。

净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [15x1 net.cnn.layer. layer] Connections: [15x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

参考

|||||||

関連するトピック