【matlab深度学习工具箱】classificationLayer参数详解

classificationLayer


分类输出图层

语法

layer = classificationLayer
layer = classificationLayer(Name,Value)

描述

分类层计算具有互斥类的分类和加权分类任务的交叉熵损失。

该层根据前一层的输出大小推断类的数量。例如,要指定网络的类 K 的数量,可以在分类图层之前包括输出大小为 K 的全连接图层和 softmax 图层。

图层 = 分类图层创建分类图层。

layer = classificationLayer(Name,Value)` 使用一个或多个名称-值对设置可选的 、 和属性。例如,创建名为 的分类图层。`Name``ClassWeights``Classes``classificationLayer('Name','output')``'output'

例子

创建分类图层

复制命令复制代码

创建名为 的分类图层。'output'

layer = classificationLayer('Name','output')
layer = 
  ClassificationOutputLayer with properties:

            Name: 'output'
         Classes: 'auto'
    ClassWeights: 'none'
      OutputSize: 'auto'

   Hyperparameters
    LossFunction: 'crossentropyex'

在数组中包括分类输出图层。Layer

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

创建加权分类图层

复制命令复制代码

为名称分别为“cat”、“dog”和“fish”的三个类创建加权分类图层,权重分别为 0.7、0.2 和 0.1。

classes = ["cat" "dog" "fish"];
classWeights = [0.7 0.2 0.1];

layer = classificationLayer( ...
    'Classes',classes, ...
    'ClassWeights',classWeights)
layer = 
  ClassificationOutputLayer with properties:

            Name: ''
         Classes: [cat    dog    fish]
    ClassWeights: [3x1 double]
      OutputSize: 3

   Hyperparameters
    LossFunction: 'crossentropyex'

在图层数组中包括加权分类输出图层。

numClasses = numel(classes);

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer('Classes',classes,'ClassWeights',classWeights)]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         3 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   Class weighted crossentropyex with 'cat' and 2 other classes

输入参数

名称-值参数

指定可选的逗号分隔参数对。 是参数名称,并且是相应的值。 必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如 。Name,Value``Name``Value``Name``Name1,Value1,...,NameN,ValueN

示例:分类层(“名称”、“输出”)创建一个名为“输出”的分类图层

Name— 图层名称 " "(默认)|字符向量|字符串标量

图层名称,指定为字符向量或字符串标量。对于 Layer 数组输入,trainNetworkassembleNetworklayerGraphdlnetwork 函数会自动为 Name 设置为 '' 的层分配名称

数据类型: char|string

ClassWeights— 加权交叉熵损失 "none"(默认值)的类权重|正数向量

加权交叉熵损失的类权重,指定为正数或 的向量。'none'

对于矢量类权重,每个元素表示属性中相应类的权重。若要指定类权重的向量,还必须使用“Classes”指定类。Classes

如果属性为 ,则层应用未加权的交叉熵损失。ClassWeights``'none'

Classes— 输出层 的类"auto"(默认)|分类向量|字符串数组 |字符向量的单元格数组

输出层的类,指定为分类向量、字符串数组、字符向量单元格数组或“auto”。如果课程“自动”的,则软件会在训练时自动设置课程。如果指定字符串数组或字符向量 str 的单元格数组,则软件会将输出层的类设置为 categorical(str,str)。

数据类型: char| categorical|string|cell

输出参数

layer— 分类层 分类输出层对象

分类层,作为 ClassificationOutputLayer 对象返回。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab深度学习工具箱中,我们可以使用不同的方法来指定初始参数。一种常用的方法是使用预训练的模型来初始化参数。通过预训练的模型,我们可以将已经学习到的特征迁移到新的任务中,从而加快模型训练的速度,提高性能。 另一种常用的方法是手动指定初始参数。在深度学习中,参数的初始值非常重要,它可能会对模型的训练过程和性能产生很大的影响。Matlab提供了一些函数和工具,可以帮助我们指定合适的初始参数。 首先,可以使用randn函数生成服从标准正态分布的随机数作为初始参数。这种方法的优点是简单易用,但可能需要更多的训练时间来调整参数,以使其达到最佳状态。 其次,可以使用Xavier初始化方法,该方法是根据输入和输出的维度来计算初始参数。Xavier初始化方法使得初始参数的方差相对较小,从而能够更好地适应不同的输入和输出分布。 此外,还可以使用He初始化方法,该方法在深层网络中表现更好。He初始化方法根据输入维度来计算初始参数,并考虑了激活函数的性质。相较于Xavier初始化方法,He初始化方法通常能够更好地处理深层网络中的梯度消失和梯度爆炸问题。 当然,以上只是一些常用的方法,实际上还有其他更复杂的初始化方法可以尝试。在实际应用中,我们可以根据具体情况选择合适的初始化方法,以帮助我们获取更好的模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值