主要内容

findPlaceholderLayers

找到占位符层网络体系结构从Keras或进口ONNX

描述

例子

placeholderLayers= findPlaceholderLayers (importedLayers)返回所有占位符层中存在的网络体系结构importedLayers进口的importKerasLayersimportONNXLayers功能。占位符层是这些功能插入的层的层所不支持的深度学习工具箱™。金宝app

使用导入网络,这个函数需要的深度学习工具箱转换器TensorFlow™模型金宝app支持包或深度学习工具箱转换器ONNX™模型格式金宝app支持包。

(placeholderLayers,指数)= findPlaceholderLayers (importedLayers)还返回占位符的指标层。

例子

全部折叠

从指定Keras网络文件导入层。

modelfile =“digitsDAGnetwithnoise.h5”;

导入网络体系结构。网络层包括一些类型不支持的深度学习工具。金宝app的importKerasLayers函数替换每个不支持的一层一层和一个占位符,并返回一金宝app个警告消息。

lgraph = importKerasLayers (modelfile)
警告:无法导入一些Keras层,因为他们是不支持的深度学习工具。金宝app他们已经被占位符层。为了找到这些层,调用这个函数findPlaceholderLayers返回的对象。
lgraph = LayerGraph属性:InputNames: {“input_1”} OutputNames: {“ClassificationLayer_activation_1”}层:x1 nnet.cnn.layer.Layer[15]连接:[15 x2表)

显示导入的网络层。两个占位符层Keras取代高斯噪声层网络。

lgraph.Layers
ans x1 = 15层阵列层:1“input_1”28 x28x1图像输入图像2 conv2d_1的二维卷积20 7 x7旋转步[1]和填充“相同”3“conv2d_1_relu”ReLU ReLU 4“conv2d_2”二维卷积20 3 x3的隆起与步幅[1]和填充“相同”5“conv2d_2_relu”ReLU ReLU 6“gaussian_noise_1”占位符层占位符的GaussianNoise Keras一层一层7“gaussian_noise_2”占位符的占位符的GaussianNoise Keras层8“max_pooling2d_1”二维最大池2 x2马克斯池步(2 - 2)和填充“相同”9“max_pooling2d_2”二维最大池2 x2马克斯池步(2 - 2)和填充“相同”10 ' flatten_1 Keras平压平激活成一维假设c风格的(行)订单11的flatten_2 Keras平压平激活成一维假设c风格的(行)订单12的concatenate_1深度连接深度连接2输入13“dense_1”完全连接10完全连接层14的activation_1 Softmax Softmax 15 ClassificationLayer_activation_1 crossentropyex分类输出

发现使用占位符层findPlaceholderLayers。输出参数包含两层占位符importKerasLayers插入到位的高斯噪声层Keras网络。

占位符= findPlaceholderLayers (lgraph)
占位符= 2 x1 PlaceholderLayer阵列层:1“gaussian_noise_1”占位符层占位符的GaussianNoise Keras层2的gaussian_noise_2占位符一层一层的GaussianNoise Keras的占位符

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

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

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

gaussian1.KerasConfiguration
ans =结构体字段:可训练的:1名称:“gaussian_noise_1”stddev: 1.5000
gaussian2.KerasConfiguration
ans =结构体字段:可训练的:1名称:“gaussian_noise_2”stddev: 0.7000

这个例子展示了如何导入层从pretrained Keras网络取代不支持自定义层的层,和组装层准备网络预测。金宝app

进口Keras网络

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

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

Keras网络不支持包含一些层深度学习工具箱。金宝app的importKerasLayers函数显示一个警告,取代了支持层,一层一层的占位符。金宝app

绘制层图使用情节

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

图包含一个坐标轴对象。坐标轴对象与标题进口网络包含graphplot类型的一个对象。

替换占位符层

替换占位符层,首先识别层的名称来代替。发现使用占位符层findPlaceholderLayers

placeholderLayers = findPlaceholderLayers (lgraph)
placeholderLayers = 2 x1 PlaceholderLayer阵列层:1“gaussian_noise_1”占位符层占位符的GaussianNoise Keras层2的gaussian_noise_2占位符一层一层的GaussianNoise Keras的占位符

显示Keras配置这些层。

placeholderLayers.KerasConfiguration
ans =结构体字段:可训练的:1名称:“gaussian_noise_1”stddev: 1.5000
ans =结构体字段:可训练的:1名称:“gaussian_noise_2”stddev: 0.7000

创建两个高斯噪声层相同的配置进口Keras层使用助手gaussianNoiseLayer函数。

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类型的对象。

指定类名

如果导入的分类层不包含的类,那么您必须指定这些之前的预测。如果你不指定的类,然后软件自动设置类1,2、……N,在那里N类的数量。

找到的索引分类层通过查看层的属性图。

lgraph.Layers
ans x1 = 15层阵列层: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 7 new_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_2 Keras平压平激活成一维假设c风格的(行)订单12的concatenate_1深度连接深度连接2输入13“dense_1”完全连接10完全连接层14的activation_1 Softmax Softmax 15 ClassificationLayer_activation_1 crossentropyex分类输出

分类层的名字“ClassificationLayer_activation_1”。查看分类层和检查财产。

粘土= lgraph.Layers(结束)
粘土= ClassificationOutputLayer属性:名称:“ClassificationLayer_activation_1”类:“汽车”ClassWeights:“没有一个”OutputSize:‘汽车’Hyperparameters LossFunction:“crossentropyex”

因为层的属性“汽车”,您必须手动指定的类。设置类0,1、……9,然后用新的代替进口分类层。

粘土。类=字符串(0:9)
粘土= ClassificationOutputLayer属性:名称:“ClassificationLayer_activation_1”类:[0 1 2 3 4 5 6 7 8 9]ClassWeights:“没有一个”OutputSize: 10 Hyperparameters LossFunction:“crossentropyex”
lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);

组装网络

组装层图使用assembleNetwork。函数返回一个DAGNetwork为预测对象,已经可以使用了。

净= assembleNetwork (lgraph)
网= DAGNetwork属性:层:x1 nnet.cnn.layer.Layer[15]连接:[15 x2表]InputNames: {“input_1”} OutputNames: {“ClassificationLayer_activation_1”}

输入参数

全部折叠

网络体系结构从Keras进口或ONNX,指定为一个数组或LayerGraph对象。

输出参数

全部折叠

所有的占位符层网络体系结构,作为一个数组返回PlaceholderLayer对象。

占位符的指标层,作为一个向量返回。

  • 如果importedLayers是一层数组,然后呢指数占位符的指标层吗importedLayers

  • 如果importedLayers是一个LayerGraph对象,然后指数占位符的指标层吗importedLayers.Layers

如果删除或添加一层一层数组或LayerGraph对象,然后指数可以改变其他层的对象。你必须使用findPlaceholderLayers再找到其余的占位符的更新指标层。

提示

  • 如果你已经安装了深度学习工具箱转换器TensorFlow模型findPlaceholderLayers是无法找到占位符层时创建ONNX网络是进口的,然后试着更新深度学习工具箱转换器TensorFlow模型金宝app在插件浏览器支持包。

版本历史

介绍了R2017b