ClassificationOutputLayer
(不推荐)分类输出层
说明
分类层计算具有互斥类的分类和加权分类任务的交叉熵损失。
创建对象
使用 classificationLayer 创建一个分类层。
属性
分类输出
加权交叉熵损失的类权重,指定为正数向量或 'none'。
对于向量类权重,每个元素都表示 Classes 属性中对应类的权重。要指定类权重的向量,还必须使用 Classes 选项指定类。
如果 ClassWeights 属性为 'none',则该层应用未加权交叉熵损失。
输出层的类,指定为分类向量、字符串数组、字符向量元胞数组或 "auto"。如果 Classes 是 "auto",则软件会在训练时自动设置类。如果您指定字符串数组或字符向量元胞数组 str,则软件会将输出层的类设置为 categorical(str,str)。
数据类型: char | categorical | string | cell
此 属性 为只读。
输出的大小,指定为正整数。此值是数据中的标签数量。在训练之前,输出大小设置为 'auto'。
此 属性 为只读。
用于训练的损失函数,指定为 'crossentropyex',即适用于 k 个互斥类的交叉熵函数。
层
层名称,指定为字符向量或字符串标量。对于 Layer 数组输入,trainNetwork 函数会自动为层指定名称 ""。
ClassificationOutputLayer 对象将此属性存储为字符向量。
数据类型: char | string
层的输入数,返回为 1。此层只接受一个输入。
数据类型: double
输入名称,返回为 {'in'}。此层只接受一个输入。
数据类型: cell
层的输出的数目,以 0 形式返回。此层没有输出。
数据类型: double
层的输出的名称,以 {} 形式返回。此层没有输出。
数据类型: cell
示例
创建一个分类层。
创建一个名为 '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 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' 2-D 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
详细信息
参考
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
版本历史记录
在 R2016a 中推出从 R2024a 开始,不推荐使用 ClassificationOutputLayer 对象,请改用 trainnet 并将损失函数设置为 "crossentropy"。
目前没有停止支持 ClassificationOutputLayer 对象的计划。但是,推荐改用 trainnet 函数,该函数具有以下优势:
trainnet支持dlnetwork对象,这些对象支持更广泛的网络架构,您可以创建或从外部平台导入这些网络架构。trainnet使您能够轻松指定损失函数。您可以从内置损失函数中进行选择或指定自定义损失函数。trainnet输出dlnetwork对象,这是一种统一的数据类型,支持网络构建、预测、内置训练、可视化、压缩、验证和自定义训练循环。trainnet通常比trainNetwork快。
下表显示了 trainNetwork 函数与 ClassificationOutputLayer 对象的一些典型用法,以及如何更新您的代码以改用 trainnet 函数。
| 不推荐 | 推荐 |
|---|---|
net = trainNetwork(data,layers,options),其中 layers 包含 ClassificationOutputLayer 对象。 | net = trainnet(data,layers,"crossentropy",options);layers 指定了同一网络,但没有 ClassificationOutputLayer 对象。 |
net = trainNetwork(data,layers,options),其中 layers 包含 ClassWeights 设置为数值向量的 ClassificationOutputLayer 对象。 | lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options);weights 指定类权重,layers 指定了同一网络,但没有 ClassificationOutputLayer 对象。 |
ClassNames 将被删除。请改用 Classes。要新代码时,请将 ClassNames 的所有实例替换为 Classes。这两个属性之间存在一些差异,因此需要对代码进行额外的更新。
输出层的 ClassNames 属性是一个字符向量元胞数组。Classes 属性是一个分类数组。要将 Classes 的值用于需要元胞数组作为输入的函数,请使用 cellstr 函数对类别进行转换。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)