主要内容

replaceLayer

取代层在层图

描述

例子

newlgraph= replaceLayer (lgraph,layerName,larray)取代了层layerName在层图lgraph层的larray

replaceLayer连接层larray顺序和连接larray成层图。

例子

newlgraph= replaceLayer (lgraph,layerName,larray“ReconnectBy”,模式)另外指定的方法重新连接层。

例子

全部折叠

定义一个简单的网络体系结构和情节。

层= [imageInputLayer ([28 28 1],“名字”,“输入”)convolution2dLayer(3, 16岁,“填充”,“相同”,“名字”,“conv_1”)reluLayer (“名字”,“relu_1”)additionLayer (2“名字”,“添加”)fullyConnectedLayer (10“名字”,“俱乐部”)softmaxLayer (“名字”,“softmax”)classificationLayer (“名字”,“classoutput”));lgraph = layerGraph(层);lgraph = connectLayers (lgraph,“输入”,“添加/ in2”);图绘制(lgraph)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

换上一批ReLU层网络中归一化层,后跟一个漏水的ReLU层。

larray = [batchNormalizationLayer (“名字”,“BN1”)leakyReluLayer (“名字”,“leakyRelu_1”,“规模”0.1)];lgraph = replaceLayer (lgraph,“relu_1”,larray);情节(lgraph)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

这个例子展示了如何导入层从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

定义一个自定义高斯噪声层。创造这一层,保存文件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类型的对象。

指定类名

如果导入的分类层不包含的类,那么您必须指定这些之前的预测。如果你不指定的类,然后软件自动设置类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”}

输入参数

全部折叠

层图,指定为一个LayerGraph对象。创建一个层图,使用layerGraph

层的名称来代替,指定为字符串标量或一个特征向量。

网络层,指定为一个数组中。

一个内置的图层列表,看到深度学习层的列表

方法重新连接层指定为以下之一:

  • “名字”——重新连接larray使用输入和输出的名称替换层。取代的每一层都连接到一个输入层、连接层输入相同的输入名称larray (1)。取代的每一层都连接到一个输出层、连接层的输出相同的输出的名称larray(结束)

  • “秩序”——重新连接larray使用的顺序输入的名字larray (1)和输出的名字larray(结束)。重新连接层连接输入替换层th的输入larray (1)。重新连接层连接j取代层的输出jth的输出larray(结束)

数据类型:字符|字符串

输出参数

全部折叠

输出层图,作为一个返回LayerGraph对象。

版本历史

介绍了R2018b