主要内容

functionLayer

    描述

    一层功能层指定函数适用于输入。

    如果深入学习工具箱™不提供所需的层,你的任务,你可以定义新的层通过创建函数层使用functionLayer。功能层只支持操作,不需要额外的属性,可学的万博1manbetx参数或状态。对于需要此功能层,该层定义为一个自定义层。有关更多信息,请参见定义定制的深度学习层

    创建

    描述

    例子

    = functionLayer (有趣的)创建一个功能层和设置PredictFcn财产。

    例子

    = functionLayer (有趣的,名称=值)设置可选属性使用一个或多个名称参数。例如,functionLayer(有趣,NumInputs = 2, NumOutputs = 3)指定层有两输入三输出。您可以指定多个名称参数。

    属性

    全部展开

    函数

    这个属性是只读的。

    适用于层输入函数,指定为一个函数处理。

    指定的函数必须有语法(日元…,YM] = fun(X1,...,XN),输入和输出dlarray对象,N对应于NumOutputsNumInputs属性,分别。

    输入X1、…XN对应的层输入名字InputNames。输出日元、…YM对应的层输出的名字OutputNames

    支持的功能列表万博1manbetxdlarray输入,看到与dlarray支持函数的列表万博1manbetx

    提示

    当使用层时,您必须确保指定的函数是可访问的。例如,确保层在多个脚本,生活可以重用函数保存在它自己的单独的文件。

    数据类型:function_handle

    这个属性是只读的。

    标志指示是否层函数作用于格式化的dlarray对象,指定为0(假)1(真正的)

    数据类型:逻辑

    这个属性是只读的。

    国旗表示层功能是否支持使用加速度万博1manbetxdlaccelerate,指定为0(假)1(真正的)

    提示

    设置Acceleratable1(真正的)可以显著提高培训和推理的性能(预测)使用dlnetwork

    支持加速使用最简单的功能万博1manbetxdlaccelerate。有关更多信息,请参见深度学习功能定制培训循环的加速

    数据类型:逻辑

    图层名称,指定为一个特征向量或字符串标量。为数组输入,trainNetwork,assembleNetwork,layerGraph,dlnetwork函数自动分配名称层的名称

    数据类型:字符|字符串

    这个属性是只读的。

    一行的描述层,指定为字符串标量或特征向量。这个描述层显示在一个时出现数组中。

    如果你不指定层的描述,然后软件显示层操作。

    数据类型:字符|字符串

    这个属性是只读的。

    输入数量,指定为一个正整数。

    层必须有一个固定数量的输入。如果PredictFcn万博1manbetx支持数量可变的输入参数使用变长度输入宗量,那么你必须指定层投入使用的数量NumInputs

    如果你不指定NumInputs,那么软件集NumInputs输入参数个数(PredictFcn)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    这个属性是只读的。

    输入层的名称指定为一个正整数。

    如果你不指定InputNamesNumInputs1,那么软件集InputNames{'在'}。如果你不指定InputNamesNumInputs大于1,那么软件集InputNames{“三机”,…,“客栈”},在那里N输入的数量。

    数据类型:字符串|细胞

    这个属性是只读的。

    输出层的数量,指定为一个正整数。

    层必须有一个固定数量的输出。如果PredictFcn万博1manbetx支持数量可变的输出参数,那么您必须指定层输出使用的数量NumOutputs

    如果你不指定NumOutputs,那么软件集NumOutputsnargout (PredictFcn)

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    这个属性是只读的。

    输出层的名称指定为字符串数组或单元阵列的特征向量。

    如果你不指定OutputNamesNumOutputs1,那么软件集OutputNames{“出”}。如果你不指定OutputNamesNumOutputs大于1,那么软件集OutputNames{着干活,…,“outM”},在那里是输出的数量。

    数据类型:字符串|细胞

    例子

    全部折叠

    创建一个功能层对象,softsign操作适用于输入。softsign操作的功能 f ( x ) = x 1 + | x |

    层= 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 =“渣打银行”

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

    图包含一个ConfusionMatrixChart类型的对象。

    扩展功能

    版本历史

    介绍了R2021b