RegressionOutputLayer
回归输出层
说明
回归层计算回归任务的半均方误差损失。
创建对象
使用 regressionLayer
创建一个回归输出层。
属性
回归输出
ResponseNames
— 响应的名称
{}
(默认) | 字符向量元胞数组 | 字符串数组
响应的名称,指定为字符向量元胞数组或字符串数组。在训练时,软件根据训练数据自动设置响应名称。默认值为 {}
。
数据类型: cell
LossFunction
— 用于训练的损失函数
'mean-squared-error'
软件用于训练的损失函数,指定为 'mean-squared-error'
。
层
Name
— 层名称
""
(默认) | 字符向量 | 字符串标量
层名称,指定为字符向量或字符串标量。对于 Layer
数组输入,trainNetwork
函数会自动为层指定名称 ""
。
RegressionOutputLayer
对象将此属性存储为字符向量。
数据类型: char
| string
NumInputs
— 输入的数目
1
(默认)
层的输入数,返回为 1
。此层只接受一个输入。
数据类型: double
InputNames
— 输入名称
{'in'}
(默认)
输入名称,返回为 {'in'}
。此层只接受一个输入。
数据类型: cell
NumOutputs
— 输出的数目
0
(默认)
层的输出的数目,以 0
形式返回。此层没有输出。
数据类型: double
OutputNames
— 输出名称
{}
(默认)
层的输出的名称,以 {}
形式返回。此层没有输出。
数据类型: cell
示例
创建回归输出层
创建一个回归输出层。
创建一个名为 'routput'
的回归输出层。
layer = regressionLayer('Name','routput')
layer = RegressionOutputLayer with properties: Name: 'routput' ResponseNames: {} Hyperparameters LossFunction: 'mean-squared-error'
回归的默认损失函数是均方误差。
在层数组中包含一个回归输出层。
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(12,25)
reluLayer
fullyConnectedLayer(1)
regressionLayer]
layers = 5x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 25 12x12 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' Fully Connected 1 fully connected layer 5 '' Regression Output mean-squared-error
详细信息
回归输出层
回归层计算回归任务的半均方误差损失。对于典型的回归问题,回归层必须位于最终全连接层之后。
对于单个观测值,均方误差由下式给出:
其中,R 是响应的数目,ti 是目标输出,yi 是网络对响应 i 的预测。
对于图像和“序列到单个”回归网络,回归层的损失函数是预测响应的半均方误差,未由 R 进行归一化:
对于图像到图像回归网络,回归层的损失函数是每个像素的预测响应的半均方误差,未由 R 进行归一化:
其中 H、W 和 C 分别表示输出的高度、宽度和通道数,p 对 t 和 y 的每个元素(像素)进行线性索引。
对于“序列到序列”回归网络,回归层的损失函数是每个时间步的预测响应的半均方误差,未由 R 进行归一化:
其中 S 是序列长度。
在训练时,软件计算小批量中各观测值的均值损失。
版本历史记录
在 R2017a 中推出R2024a: 不推荐
从 R2024a 开始,不推荐使用 RegressionOutputLayer
对象,请改用 trainnet
并将损失函数设置为 "mse"
。
目前没有停止支持 RegressionOutputLayer
对象的计划。但是,推荐改用 trainnet
函数,该函数具有以下优势:
trainnet
支持dlnetwork
对象,这些对象支持更广泛的网络架构,您可以创建或从外部平台导入这些网络架构。trainnet
使您能够轻松指定损失函数。您可以从内置损失函数中进行选择或指定自定义损失函数。trainnet
输出dlnetwork
对象,这是一种统一的数据类型,支持网络构建、预测、内置训练、可视化、压缩、验证和自定义训练循环。trainnet
通常比trainNetwork
快。
下表显示了 trainNetwork
函数与 RegressionOutputLayer
对象的一些典型用法,以及如何更新您的代码以改用 trainnet
函数。
不推荐 | 推荐 |
---|---|
net = trainNetwork(X,T,layers,options) ,其中 layers 包含 RegressionOutputLayer 对象。 | net = trainnet(X,T,layers,"mse",options); layers 指定了同一网络,但没有 RegressionOutputLayer 对象。 |
net = trainNetwork(data,layers,options) ,其中 layers 包含 RegressionOutputLayer 对象。 | net = trainnet(data,layers,"mse",options); layers 指定了同一网络,但没有 RegressionOutputLayer 对象。 |
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)