主要内容

PlaceholderLayer

层替换不受支持Keras或万博1manbetxONNX层,或不支持的功能万博1manbetx函数层图

描述

PlaceholderLayer是一层importKerasLayersimportONNXLayers插入到位不受支持Keras或ONNX™层的层阵列或层图形。万博1manbetx它也可以代表从不受支持的功能万博1manbetx函数层图

创建

从具有不受深度学习工具箱支持层的Keras或ONNX网络导入层™创建万博1manbetxPlaceholderLayer对象。同样,当你创建一个层图使用函数层图,不支持万博1manbetx的功能将导致PlaceholderLayer对象。

特性

全部展开

层名,指定为字符向量或字符串标量。

数据类型:烧焦|细绳

图层描述,指定为字符向量或字符串标量。

数据类型:烧焦|细绳

图层类型,指定为字符向量或字符串标量。

数据类型:烧焦|细绳

一个层的Keras结构,指定为结构。该结构的字段取决于层的类型。

笔记

仅当图层是在导入Keras网络时创建的时,此特性才存在。

数据类型:结构

一个层的ONNX结构,指定为结构。该结构的字段取决于层的类型。

笔记

只有当导入ONNX网络时,该层的创建中存在此属性。

数据类型:结构

进口权重,指定为结构。

数据类型:结构

例子

全部崩溃

指定要从中导入图层的Keras网络文件。

modelfile ='digitsDAGnetwithnoise.h5'

导入网络架构。该网络包括未通过深度学习工具箱支持的一些图层类型。万博1manbetx这importKerasLayers功能替换的占位符层中的每个层不受支持并返回警告消息万博1manbetx。

lgraph = importKerasLayers(modelfile)
警告:无法导入某些Keras层,因为深度学习工具箱不支持它们。它们已被占位符层替换。要查找这些层,请对返回的对象调用函数findPl万博1manbetxaceholderLayers。
lgraph = LayerGraph与属性:层:[15X1 nnet.cnn.layer.Layer]连接:[15X2表] InputNames:{ 'INPUT_1'} OutputNames:{ 'ClassificationLayer_activation_1'}

显示网络的进口层。两个占位符层替换Keras网络中的高斯噪声的层。

ans=15x1带层的层阵列:1'输入1'图像输入28x28x1图像2'conv2d_1'卷积20 7x7带跨距的卷积[1]和填充'same'3'conv2d_1_relu'relu 4'conv2d_2'卷积20 3x3带跨距的卷积[1]和填充“相同”5“conv2d_2_relu”relu relu 6“gaussian_noise_1”占位符图层占位符用于“gaussian noise”Keras图层7“gaussian_noise_2”占位符图层占位符用于“gaussian noise”Keras图层8“max_Pooling 2D_1”max Pooling 2x2 max Pooling with stride[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”分类输出交叉熵

查找使用占位符层findPlaceholderLayers. 输出参数包含两个占位符层,这两个占位符层importKerasLayers插入代替Keras网络的高斯噪声层。

占位符= findPlaceholderLayers(lgraph)
占位符= 2×1 PlaceholderLayer阵列层:1 'gaussian_noise_1' PLACEHOLDER LAYER占位符 '高斯噪声' Keras层2 'gaussian_noise_2' PLACEHOLDER LAYER占位符 '高斯噪声' Keras层

为每个占位符图层指定名称。

gaussian1=占位符(1);gaussian2=占位符(2);

显示每个占位符层的配置。

gaussian1.KerasConfiguration
ans=带字段的结构:可训练:1名: 'gaussian_noise_1' STDDEV:1.5000
gaussian2。KerasConfiguration
ans=带字段的结构:可培训:1名:“高斯噪声”标准差:0.7000

这个例子展示了如何从一个预训练的Keras网络导入层,用定制层替代不支持层,并且这些层组装成准备用于预测的网络。万博1manbetx

进口Keras网络

从Keras网络模型导入层。在网络'digitsDAGnetwithnoise.h5'分类的数字图像。

文件名='digitsDAGnetwithnoise.h5';lgraph = importKerasLayers(文件名,“重要性”,真的);
警告:无法导入某些Keras层,因为深度学习工具箱不支持它们。它们已被占位符层替换。要查找这些层,请对返回的对象调用函数findPl万博1manbetxaceholderLayers。

Keras网络包含一些深度学习工具箱不支持的层。万博1manbetx这importKerasLayers功能显示警告和替换占位符层不支持的层。万博1manbetx

使用绘制层图形阴谋

图形绘图(lgraph)标题(“进口网络”

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

替换占位符图层

要替换占位符图层,请首先标识要替换的图层的名称。使用查找占位符图层findPlaceholderLayers

placeholderLayers = findPlaceholderLayers(lgraph)
PLACEHOLDER layers=2x1 PLACEHOLDER LAYER数组,带图层:1“GaussianNoise”Keras图层的“GaussianNoise”Keras图层的“GaussianNoise”Keras图层的“GaussianNoise”Keras图层的“GaussianNoise”图层占位符

显示这些层的Keras配置。

placeholderLayers.KerasConfiguration
ans=带字段的结构:可训练:1名: 'gaussian_noise_1' STDDEV:1.5000
ans=带字段的结构:可培训:1名:“高斯噪声”标准差:0.7000

定义自定义高斯噪声层。要创建此层,保存文件gaussianNoiseLayer.m在当前文件夹中。然后,创建两个高斯噪声层,配置与导入的Keras层相同。

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)标题(“网络替换为图层”

图包含轴对象。轴对象与标题网络替换为层包含类型graphplot的对象。

指定类名

如果导入的分类层不包含类别,则必须在预测之前指定这些类别。如果未指定类别,则软件会自动将类别设置为12,...,N哪里N是的类的数量。

通过查看找到的分类层的折射率层数层图的属性。

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

分类层名称“分类层\激活\ 1”.查看分类层并检查班级财产。

cLayer=lgraph.Layers(结束)
cLayer = ClassificationOutputLayer with properties: Name: 'ClassificationLayer_activation_1' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'

由于班级属性为'汽车',则必须手动指定类。将类设置为0.1,...,9.,然后用新的分类图层替换导入的分类图层。

粘土。类=字符串(0:9)
cLayer=ClassificationOutputLayer及其属性:名称:'ClassificationLayer\u activation\u 1'类:[0 1 2 3 4 5 6 7 8 9]类权重:'none'输出大小:10个超参数丢失函数:'crossentropyex'
lgraph = replaceLayer(lgraph,“分类层\激活\ 1”,CLAYER);

装配网络

使用assembleNetwork.函数返回DAGNetwork准备用于预测的对象。

净= assembleNetwork(lgraph)
net=DAG网络,具有以下属性:层:[15x1 nnet.cnn.layer.layer]连接:[15x2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}
介绍了在R2017b