functionLayer
功能层
描述
一层功能层指定函数适用于输入。
如果深入学习工具箱™不提供所需的层,你的任务,你可以定义新的层通过创建函数层使用functionLayer
。功能层只支持操作,不需要额外的属性,可学的万博1manbetx参数或状态。对于需要此功能层,该层定义为一个自定义层。有关更多信息,请参见定义定制的深度学习层。
创建
属性
函数
PredictFcn
- - - - - -适用于层输入函数
函数处理
这个属性是只读的。
适用于层输入函数,指定为一个函数处理。
指定的函数必须有语法(日元…,YM] = fun(X1,...,XN)
,输入和输出dlarray
对象,米
和N
对应于NumOutputs
和NumInputs
属性,分别。
输入X1
、…XN
对应的层输入名字InputNames
。输出日元
、…YM
对应的层输出的名字OutputNames
。
支持的功能列表万博1manbetxdlarray
输入,看到与dlarray支持函数的列表万博1manbetx。
提示
当使用层时,您必须确保指定的函数是可访问的。例如,确保层在多个脚本,生活可以重用函数保存在它自己的单独的文件。
数据类型:function_handle
Formattable
- - - - - -标志,指示函数作用于格式化的dlarray
对象
0(假)
(默认)|1(真正的)
这个属性是只读的。
标志指示是否层函数作用于格式化的dlarray
对象,指定为0(假)
或1(真正的)
。
数据类型:逻辑
Acceleratable
- - - - - -标志,指示函数支持加速度万博1manbetx
0(假)
(默认)|1(真正的)
这个属性是只读的。
国旗表示层功能是否支持使用加速度万博1manbetxdlaccelerate
,指定为0(假)
或1(真正的)
。
提示
设置Acceleratable
来1(真正的)
可以显著提高培训和推理的性能(预测)使用dlnetwork
。
支持加速使用最简单的功能万博1manbetxdlaccelerate
。有关更多信息,请参见深度学习功能定制培训循环的加速。
数据类型:逻辑
层
的名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
图层名称,指定为一个特征向量或字符串标量。为层
数组输入,trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数自动分配名称层的名称”
。
数据类型:字符
|字符串
描述
- - - - - -一行的描述层
字符串标量|特征向量
这个属性是只读的。
一行的描述层,指定为字符串标量或特征向量。这个描述层显示在一个时出现层
数组中。
如果你不指定层的描述,然后软件显示层操作。
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
正整数
这个属性是只读的。
输入数量,指定为一个正整数。
层必须有一个固定数量的输入。如果PredictFcn
万博1manbetx支持数量可变的输入参数使用变长度输入宗量
,那么你必须指定层投入使用的数量NumInputs
。
如果你不指定NumInputs
,那么软件集NumInputs
来输入参数个数(PredictFcn)
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
InputNames
- - - - - -输入名字
字符串数组|单元阵列的特征向量
这个属性是只读的。
输入层的名称指定为一个正整数。
如果你不指定InputNames
和NumInputs
是1
,那么软件集InputNames
来{'在'}
。如果你不指定InputNames
和NumInputs
大于1
,那么软件集InputNames
来{“三机”,…,“客栈”}
,在那里N
输入的数量。
数据类型:字符串
|细胞
NumOutputs
- - - - - -数量的输出
1
(默认)|正整数
这个属性是只读的。
输出层的数量,指定为一个正整数。
层必须有一个固定数量的输出。如果PredictFcn
万博1manbetx支持数量可变的输出参数,那么您必须指定层输出使用的数量NumOutputs
。
如果你不指定NumOutputs
,那么软件集NumOutputs
来nargout (PredictFcn)
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OutputNames
- - - - - -输出的名字
字符串数组|单元阵列的特征向量
这个属性是只读的。
输出层的名称指定为字符串数组或单元阵列的特征向量。
如果你不指定OutputNames
和NumOutputs
是1
,那么软件集OutputNames
来{“出”}
。如果你不指定OutputNames
和NumOutputs
大于1
,那么软件集OutputNames
来{着干活,…,“outM”}
,在那里米
是输出的数量。
数据类型:字符串
|细胞
例子
Softsign层定义为功能层
创建一个功能层对象,softsign操作适用于输入。softsign操作的功能 。
层= functionLayer (@ X (X)。/ (1 + abs (X)))
层= FunctionLayer属性:名称:“PredictFcn: @ X (X) / (1 + abs (X)) Formattable: 0 Acceleratable: 0可学的参数没有属性。状态参数没有属性。显示所有属性
包括softsign层,指定为功能层,一层数组。指定层的描述“softsign”
。
层= [imageInputLayer ([28 28 1]) convolution2dLayer (5、20) functionLayer (@ X (X)。/ (1 + abs (X)),描述=“softsign”)maxPooling2dLayer(2步= 2)fullyConnectedLayer (10) softmaxLayer classificationLayer]
层= 7 x1层与层:数组1”的形象输入28 x28x1图像zerocenter正常化2”二维卷积20 5 x5旋转步[1]和填充[0 0 0 0]3”功能softsign 4”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“完全连接10完全连接层6”Softmax Softmax crossentropyex 7”分类输出
使用函数重新格式化数据层
创建一个功能层,将输入数据的格式“CB”
(通道、批处理)的格式“南方浸信会”
(空间、批处理、渠道)。指定层作用于格式化的数据,设置Formattable
选项真正的
。指定层函数支持加速使用万博1manbetxdlaccelerate
,设置一个cceleratable
选项真正的
。
层= functionLayer (@ (X) dlarray (X,“南方浸信会”),Formattable = true, Acceleratable = true)
层= FunctionLayer属性:名称:“PredictFcn: @ (X) dlarray (X,“南方浸信会”)Formattable: 1 Acceleratable: 1可学的参数没有属性。状态参数没有属性。显示所有属性
包括一个功能层,重新格式化的输入格式“某人”
在一层数组中。设置层的描述“空间通道”
。
层= [featureInputLayer (10) functionLayer (@ (X) dlarray (X,“南方浸信会”),Formattable = true, Acceleratable = true,描述=“空间通道”)convolution1dLayer (16))
层= 3 x1层与层:数组1”功能输入10特性2”函数空间3“一维卷积16通道3 1步的卷积和填充[0 0]
在这个网络中,一维卷积层可变的“S”
(空间)输入数据的维度。这个操作的卷积相当于“C”
(频道)维度的网络输入数据。
层数组转换为一个dlnetwork
对象,并通过一系列随机的数据的格式“CB”
。
dlnet = dlnetwork(层);X =兰德(64);dlX = dlarray (X,“CB”);海底=前进(dlnet dlX);
视图的大小和格式输出数据。
大小(海底)
ans =1×364年8日16日
dim(海底)
ans =“渣打银行”
替换支持Keras层万博1manbetx和功能层
这个例子展示了如何导入层从pretrained Keras网络取代不支持层和功能层,和组装层准备网络预测。万博1manbetx
进口Keras网络
导入从Keras层网络模型。网络在“digitsNet.h5”
分类的图像数字。
文件名=“digitsNet.h5”;层= importKerasLayers(文件名,ImportWeights = true)
警告:不能进口层。Keras层“激活”,不支持指定的设置。万博1manbetx问题是:激活类型不支持“softsign”。万博1manbetx
警告:不能进口层。Keras层“激活”,不支持指定的设置。万博1manbetx问题是:激活类型不支持“softsign”。万博1manbetx
警告:无法导入一些Keras层,因为他们是不支持的深度学习工具。万博1manbetx他们已经被占位符层。为了找到这些层,调用这个函数findPlaceholderLayers返回的对象。
层x1 = 13层阵列层:1“ImageInputLayer”图像输入28 x28x1图片2的conv2d二维卷积8 3 x3x1旋转步[1]和填充[0 0 0 0]3“conv2d_softsign”占位符层占位符“激活”Keras第四层“max_pooling2d”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“conv2d_1”二维卷积16 3 x3x8旋转步[1]和填充[0 0 0 0]6“conv2d_1_softsign”占位符层占位符“激活”Keras Layer 7“max_pooling2d_1”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]8“平面化”Keras平压平激活成一维假设c风格的(行)订单9“密集”完全连接100完全连接层的dense_relu ReLU ReLU 11“dense_1”完全连接10完全连接层12的dense_1_softmax Softmax Softmax 13 ClassificationLayer_dense_1 crossentropyex分类输出
Keras网络不支持包含一些层深度学习工具箱。万博1manbetx的importKerasLayers
函数显示一个警告,取代了支持层,一层一层的占位符。万博1manbetx
替换占位符层
替换占位符层,首先识别层的名称来代替。发现使用占位符层findPlaceholderLayers
函数。
placeholderLayers = findPlaceholderLayers(层)
placeholderLayers = 2 x1 PlaceholderLayer阵列层:1“conv2d_softsign”占位符层占位符“激活”Keras一层一层2的conv2d_1_softsign占位符的占位符“激活”Keras层
替换占位符和指定的功能层和功能层softsign
函数,列出的例子。
创建一个指定的功能层的功能softsign
功能,附加到这个例子作为支持文件。万博1manbetx访问这个函数,打开这个例子作为一个活的脚本。设置层的描述“softsign”
。
层= functionLayer (@softsign、描述=“softsign”);
取代层使用replaceLayer
函数。使用replaceLayer
函数,第一层数组转换成一层图。
lgraph = layerGraph(层);lgraph = replaceLayer (lgraph,“conv2d_softsign”层);lgraph = replaceLayer (lgraph,“conv2d_1_softsign”层);
指定类名
如果导入的分类层不包含的类,那么您必须指定这些之前的预测。如果你不指定的类,然后软件自动设置类1
,2
、……N
,在那里N
类的数量。
找到的索引分类层通过查看层
层的属性图。
lgraph.Layers
ans x1 = 13层阵列层:1“ImageInputLayer”图像输入28 x28x1图片2的conv2d二维卷积8 3 x3x1旋转步[1]和填充[0 0 0 0]3层的函数softsign 4“max_pooling2d”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“conv2d_1”二维卷积16 3 x3x8旋转步[1]和填充[0 0 0 0]6“layer_1”函数softsign 7“max_pooling2d_1”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]8“平面化”Keras平压平激活成一维假设c风格的(行)订单9“密集”完全连接100完全连接层的dense_relu ReLU ReLU 11“dense_1”完全连接10完全连接层12的dense_1_softmax Softmax Softmax 13 ClassificationLayer_dense_1 crossentropyex分类输出
分类层的名字“ClassificationLayer_dense_1”
。查看分类层和检查类
财产。
粘土= lgraph.Layers(结束)
粘土= ClassificationOutputLayer属性:名称:“ClassificationLayer_dense_1”类:“汽车”ClassWeights:“没有一个”OutputSize:‘汽车’Hyperparameters LossFunction:“crossentropyex”
因为类
层的属性“汽车”
,您必须手动指定的类。设置类0
,1
、……9
,然后用新的代替进口分类层。
粘土。类=字符串(0:9); lgraph = replaceLayer(lgraph,“ClassificationLayer_dense_1”、粘土);
组装网络
组装层图使用assembleNetwork
。函数返回一个DAGNetwork
为预测对象,已经可以使用了。
净= assembleNetwork (lgraph)
网= DAGNetwork属性:层:x1 nnet.cnn.layer.Layer[13]连接:[12 x2表]InputNames: {“ImageInputLayer”} OutputNames: {“ClassificationLayer_dense_1”}
测试网络
做出预测与网络使用测试数据集。
[XTest,欧美]= digitTest4DArrayData;YPred =分类(净,XTest);
视图的准确性。
意思是(YPred = =次)
ans = 0.9900
可视化预测混淆矩阵。
YPred confusionchart(欧美)
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
层的功能
有趣的
必须指定函数的道路上。的
Formattable
属性必须0
(假)
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
层的功能
有趣的
必须指定函数的道路上。的
Formattable
属性必须0
(假)
版本历史
介绍了R2021b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。