预测
使用训练过的深度学习神经网络预测响应
语法
描述
你可以在CPU或GPU上使用经过训练的深度学习神经网络进行预测。使用GPU需要并行计算工具箱™和支持的GPU设备。有关支持的设备的信息,请参见GPU计算要求(并行计算工具箱).方法指定硬件要求ExecutionEnvironment
名称-值参数。
使用这个函数来预测使用训练过的SeriesNetwork
或DAGNetwork
对象。有关使用a预测响应的信息dlnetwork
对象,看到预测
.
[
预测响应日元…,
预测,预测___)米
使用前面任何输入参数的多输出网络的输出。输出Yj
对应网络输出net.OutputNames (j)
.要为分类输出层返回分类输出,请设置ReturnCategorical
选项1
(真正的)。
___=预测(___,
使用由一个或多个名称-值参数指定的附加选项预测响应。名称=值
)
提示
使用
预测
函数使用回归网络预测响应或使用多输出网络对数据进行分类。若要使用单输出分类网络对数据进行分类,请使用分类
函数。当您使用不同长度的序列进行预测时,小批大小可能会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪种值最适合您的网络。要指定小批大小和填充选项,请使用
MiniBatchSize
而且SequenceLength
选项,分别。用于预测响应
dlnetwork
对象,看到预测
.
例子
使用训练过的卷积神经网络预测数字响应
加载预训练的网络digitsRegressionNet
.该网络是一种预测手写体数字旋转角度的回归卷积神经网络。
负载digitsRegressionNet
查看网络层次。网络的输出层是一个回归层。
层=网。层
带有图层的图层数组:1' imageinput'图像输入28x28x1图像与'zerocenter'归一化2' conv_1'二维卷积8 3x3x1卷积与stride[1 1]和填充'same' 3 'batchnorm_1' Batch归一化批处理归一化8通道4 'relu_1' ReLU ReLU 5 'avgpool2d_1'二维平均归一化2x2平均归一化与stride[2 2]和填充[0 0 0 0]6 'conv_2'二维卷积16 3x3x8卷积与stride[1 1]和填充'same' 7 'batchnorm_2' Batch归一化批处理归一化与16channel8 'relu_2' ReLU ReLU 9 'avgpool2d_2' 2d Average Pooling 2x2 Average Pooling with stride[2 2]和padding [0 0 0 0] 10 'conv_3' 2d Convolution 32 3x3x16 convolutions with stride[1 1]和padding 'same' 11 'batchnorm_3' Batch Normalization Batch Normalization with 32 channels 12 'relu_3' ReLU ReLU 13 'conv_4' 2d Convolution 32 3x3x32 convolutions with stride[1 1]和padding 'same' 14 'batchnorm_4' Batch Normalization Batch Normalization with 32 channels 15 'relu_4' ReLU ReLU 16'dropout' dropout' 20% dropout' 17 'fc'全连接1全连接层18 'regressionoutput'回归输出均方误差响应' response '
加载测试图像。
XTest = digitTest4DArrayData;
方法预测输入数据的响应预测
函数。
YTest = predict(net,XTest);
随机查看一些测试图像及其预测。
numplot = 9;idx = randperm(size(XTest,4), numplot);sz = size(XTest,1);偏移量= sz/2;图tiledlayout (“流”)为i = 1:numPlots nexttile imshow(XTest(:,:,:,idx(i)))“观察”+ idx(i))等待在情节(抵消* [1-tand(欧美(idx (i))) 1 +罐内(欧美(idx (i)))),(深圳0),“r——”)举行从结束
利用训练过的LSTM网络预测序列的数值响应
加载预训练的网络freqNet
.该网络是一个预测波形频率的LSTM回归神经网络。
负载freqNet
查看网络层次。网络的输出层是一个回归层。
网层
2 'lstm' lstm lstm带有100个隐藏单元3 'fc'全连接1全连接Layer 4 'regressionoutput' Regression Output mean-squared-error with response ' response '
加载测试序列。
负载WaveformDataX =数据;
方法预测输入数据的响应预测
函数。由于网络训练使用截断到每个小批的最短序列长度的序列,也截断测试序列通过设置SequenceLength
选项“最短”
.
Y = predict(net,X,SequenceLength=“最短”);
在一个图中想象最初的几个预测。
图tiledlayout (2, 2)为i = 1:4 nexttile stackedplot(X{i}',DisplayLabels=“通道”+ (1:3)) xlabel(“时间步”)标题(“预计频率:”+字符串(Y (i)))结束
输入参数
网
- - - - - -训练网络
SeriesNetwork
对象|DAGNetwork
对象
训练过的网络,指定为SeriesNetwork
或者一个DAGNetwork
对象。可以通过导入预先训练的网络(例如,通过使用googlenet
功能)或通过训练自己的网络使用trainNetwork
.
有关预测反应的信息,请使用dlnetwork
对象,看到预测
.
图片
- - - - - -图像数据
数据存储|数字数组|表格
图像数据,指定为以下之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | ImageDatastore |
保存在磁盘上的映像的数据存储 | 用保存在磁盘上的图像进行预测,其中图像的大小相同。 当图像大小不同时,使用 |
AugmentedImageDatastore |
应用随机仿射几何变换的数据存储,包括调整大小、旋转、反射、剪切和平移 | 用保存在磁盘上的图像进行预测,其中图像的大小不同。 |
|
TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
|
CombinedDatastore |
从两个或多个基础数据存储读取数据的数据存储 |
|
|
自定义小批处理数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。 详情请参见开发自定义小批量数据存储. |
|
数字数组 | 指定为数字数组的图像 | 使用适合内存的数据进行预测,不需要调整大小等额外处理。 | |
表格 | 指定为表的图像 | 使用存储在表格中的数据进行预测。 |
当使用具有多个输入的网络的数据存储时,该数据存储必须是TransformedDatastore
或CombinedDatastore
对象。
提示
对于图像序列,例如视频数据,使用序列
输入参数。
数据存储
数据存储读取小批的图像和响应。当您的数据无法装入内存中时,或者当您希望调整输入数据的大小时,请使用数据存储。
这些数据存储直接兼容预测
对于图像数据:
自定义小批处理数据存储。详情请参见开发自定义小批量数据存储.
请注意,ImageDatastore
对象允许使用预取批量读取JPG或PNG图像文件。如果使用自定义函数读取图像,则ImageDatastore
对象不预取。
提示
使用augmentedImageDatastore
用于深度学习的图像高效预处理,包括图像调整。
请勿使用readFcn
选择imageDatastore
函数用于预处理或调整大小,因为此选项通常非常慢。
方法可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储中读取的数据转换为所需的格式分类
.
所需的数据存储输出格式取决于网络架构。
网络体系结构 | 数据存储输出 | 示例输出 |
---|---|---|
单输入 | 表或单元格数组,其中第一列指定预测器。 表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。 自定义数据存储必须输出表。 |
数据=读取(ds) data = 4×1表预测器__________________ {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} |
数据=读取(ds) Data = 4×1 cell array {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} |
||
多个输入 | 单元格数组至少 第一个 输入的顺序由 |
数据=读取(ds) 数据= 4×2 cell array {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} |
预测器的格式取决于数据的类型。
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c数值数组,其中h,w,c图像的高度、宽度和通道数是分别的吗 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数值数组,其中h,w,d,c图像的高度、宽度、深度和通道数是否分别为 |
有关更多信息,请参见用于深度学习的数据存储.
数字数组
对于适合内存且不需要额外处理(如增强)的数据,可以将图像数据集指定为数字数组。
数值数组的大小和形状取决于图像数据的类型。
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c——- - - - - -N数值数组,其中h,w,c图像的高度、宽度和通道数是否分别为N是图像的数量吗 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数值数组,其中h,w,d,c图像的高度、宽度、深度和通道数是否分别为N是图像的数量吗 |
表格
作为数据存储或数字数组的替代方案,您还可以在表中指定图像。
在表中指定图像时,表中的每一行都对应于一个观察值。
对于图像输入,预测器必须在表的第一列中,指定为以下之一:
图像的绝对或相对文件路径,指定为字符向量
1 × 1单元格数组包含h——- - - - - -w——- - - - - -c表示二维图像的数值数组,其中h,w,c分别对应于图像的高度、宽度和通道数
提示
将复值数据输入到网络中SplitComplexInputs
输入层的选项必须为1
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|表格
复数支持:是的
序列
- - - - - -序列或时间序列数据
数据存储|数值数组的单元格数组|数字数组
序列或时间序列数据,指定为下列之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个基础数据存储读取数据的数据存储 |
|
|
自定义小批处理数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。 详情请参见开发自定义小批量数据存储. |
|
数字或单元格数组 | 指定为数值数组的单个序列或指定为数值数组的单元数组的序列数据集 | 使用适合内存的数据进行预测,不需要额外的处理,如自定义转换。 |
数据存储
数据存储读取小批序列和响应。当您的数据无法装入内存时,或者当您想对数据应用转换时,请使用数据存储。
这些数据存储直接兼容预测
对于序列数据:
自定义小批处理数据存储。详情请参见开发自定义小批量数据存储.
方法可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式预测
.例如,可以转换和组合从内存数组和CSV文件中读取的数据ArrayDatastore
和一个TabularTextDatastore
对象,分别。
数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。
数据存储输出 | 示例输出 |
---|---|
表格 |
数据=读取(ds) data = 4×2表预测 __________________ { 12×50双}{12×50双}{12×50双}{12×50双} |
单元阵列 |
数据=读取(ds) Data = 4×2 cell array {12×50 double} {12×50 double} {12×50 double} {12×50 double} |
预测器的格式取决于数据的类型。
数据 | 预测器的格式 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c序列的特征数和年代是序列长度 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h而且c分别对应于图像的高度和通道数,和年代为序列长度。 小批中的每个序列必须具有相同的序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应于图像的高度、宽度和通道数,和年代为序列长度。 小批中的每个序列必须具有相同的序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,h,w,d,c分别对应于图像的高度、宽度、深度和通道数,和年代为序列长度。 小批中的每个序列必须具有相同的序列长度。 |
对于表中返回的预测器,元素必须包含数值标量、数值行向量或包含数值数组的1 × 1单元格数组。
有关更多信息,请参见用于深度学习的数据存储.
数字或单元格数组
对于适合内存且不需要其他处理(如自定义转换)的数据,可以将单个序列指定为数值数组,或将序列数据集指定为数值数组的单元格数组。
对于单元格数组输入,单元格数组必须是N-by-1单元格数组的数字数组,其中N是观察数。表示序列的数值数组的大小和形状取决于序列数据的类型。
输入 | 描述 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c序列的特征数量和年代是序列长度 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h而且c分别对应图像的高度和通道数,和年代是序列长度 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应于图像的高度、宽度和通道数,和年代是序列长度 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c分别为三维图像的高度、宽度、深度和通道数,和年代是序列长度 |
提示
将复值数据输入到网络中SplitComplexInputs
输入层的选项必须为1
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|细胞
复数支持:是的
特性
- - - - - -特性数据
数据存储|数字数组|表格
特征数据,指定为以下之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个基础数据存储读取数据的数据存储 |
|
|
自定义小批处理数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。 详情请参见开发自定义小批量数据存储. |
|
表格 | 作为表指定的特性数据 | 使用存储在表格中的数据进行预测。 | |
数字数组 | 指定为数值数组的特征数据 | 使用适合内存的数据进行预测,不需要额外的处理,如自定义转换。 |
数据存储
数据存储读取特性数据和响应的小批。当您的数据无法装入内存时,或者当您想对数据应用转换时,请使用数据存储。
这些数据存储直接兼容预测
对于特性数据:
自定义小批处理数据存储。详情请参见开发自定义小批量数据存储.
方法可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式预测
.有关更多信息,请参见用于深度学习的数据存储.
对于有多个输入的网络,数据存储必须是TransformedDatastore
或CombinedDatastore
对象。
数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。数据存储输出的格式取决于网络架构。
网络体系结构 | 数据存储输出 | 示例输出 |
---|---|---|
单输入层 | 包含至少一列的表或单元格数组,其中第一列指定预测器。 表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。 自定义小批处理数据存储必须输出表。 |
有一个输入的网络表: 数据=读取(ds) data = 4×2表预测 __________________ { 24×24×1双}{1双}{24×1双}{24×1双} |
有一个输入的网络单元格数组: 数据=读取(ds) Data = 4×1 cell array {24×1 double} {24×1 double} {24×1 double} {24×1 double} |
||
多个输入层 | 单元格数组至少 第一个 输入的顺序由 |
有两个输入的网络单元阵列: 数据=读取(ds) 数据= 4×3 cell array {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} |
预测器肯定是这样c-by-1列向量,其中c就是特征的数量。
有关更多信息,请参见用于深度学习的数据存储.
表格
对于适合内存且不需要额外处理(如自定义转换)的特征数据,可以将特征数据和响应指定为表。
表中的每一行都对应一个观察结果。预测器在表列中的排列取决于任务的类型。
任务 | 预测 |
---|---|
功能分类 | 在一个或多个列中指定为标量的特性。 |
数字数组
对于适合内存且不需要其他处理(如自定义转换)的特征数据,可以将特征数据指定为数值数组。
数值数组必须是N——- - - - - -numFeatures
数值数组,其中N观察的次数和numFeatures
是输入数据的特征数。
提示
将复值数据输入到网络中SplitComplexInputs
输入层的选项必须为1
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|表格
复数支持:是的
X1,…,XN
- - - - - -具有多个输入的网络的数字或单元格数组
数字数组|单元阵列
具有多个输入的网络的数字或单元格数组。
对于图像、序列和特征预测器输入,预测器的格式必须与中描述的格式相匹配图片
,序列
,或特性
参数描述。
有关演示如何训练具有多个输入的网络的示例,请参见图像与特征数据训练网络.
将复值数据输入到网络中SplitComplexInputs
输入层的选项必须为1
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|细胞
复数支持:是的
混合
- - - - - -混合数据
TransformedDatastore
|CombinedDatastore
|自定义小批处理数据存储
混合数据,指定为以下之一。
数据类型 | 描述 | 示例使用 |
---|---|---|
TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个基础数据存储读取数据的数据存储 |
|
自定义小批处理数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。 详情请参见开发自定义小批量数据存储. |
方法可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式预测
.有关更多信息,请参见用于深度学习的数据存储.
数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。数据存储输出的格式取决于网络架构。
数据存储输出 | 示例输出 |
---|---|
单元格数组 输入的顺序由 |
数据=读取(ds) 数据= 4×3 cell array {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} |
对于图像、序列和特征预测器输入,预测器的格式必须与中描述的格式相匹配图片
,序列
,或特性
参数描述。
有关演示如何训练具有多个输入的网络的示例,请参见图像与特征数据训练网络.
提示
若要将数字数组转换为数据存储,请使用arrayDatastore
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:MiniBatchSize = 256
指定小批处理大小为256。
MiniBatchSize
- - - - - -小批次的尺寸
128
(默认)|正整数
用于预测的小批量的大小,指定为正整数。更大的迷你批处理大小需要更多的内存,但可以导致更快的预测。
当您使用不同长度的序列进行预测时,小批大小可能会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪种值最适合您的网络。要指定小批大小和填充选项,请使用MiniBatchSize
而且SequenceLength
选项,分别。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
加速度
- - - - - -性能优化
“汽车”
(默认)|“墨西哥人”
|“没有”
性能优化,指定为以下之一:
“汽车”
-自动应用适合输入网络和硬件资源的一些优化。“墨西哥人”
—编译并执行MEX函数。该选项仅在使用GPU时有效。使用GPU需要并行计算工具箱和支持的GPU设备。有关支持的设备的信息,请参见GPU计算要求(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,则软件返回一个错误。“没有”
—禁用所有加速。
如果加速度
是“汽车”
,然后是MATLAB®应用许多兼容优化,但不生成MEX函数。
的“汽车”
而且“墨西哥人”
选项可以以增加初始运行时间为代价提供性能优势。使用兼容参数的后续调用会更快。当您计划使用新的输入数据多次调用函数时,请使用性能优化。
的“墨西哥人”
选项根据函数调用中使用的网络和参数生成并执行MEX函数。您可以同时拥有与单个网络相关联的多个MEX函数。清除网络变量也会清除与该网络关联的任何MEX函数。
的“墨西哥人”
选项在使用单一GPU时可用。
要使用“墨西哥人”
选项,你必须安装C/ c++编译器和GPU Coder™接口深度学习库支持包。在MATLAB中使用Add-On Explorer安装支持包。有关设置说明,请参见墨西哥人设置(GPU编码器).GPU Coder不需要。
的“墨西哥人”
选项支持包含在支持层(GPU编码器)页,除了sequenceInputLayer
而且featureInputLayer
对象。
MATLAB编译器™不支持在使用“墨西哥人”
选择。
ExecutionEnvironment
- - - - - -硬件资源
“汽车”
(默认)|“图形”
|“cpu”
|“multi-gpu”
|“平行”
硬件资源,指定为以下之一:
“汽车”
—如果有图形处理器,请使用;否则,请使用CPU。“图形”
—使用GPU。使用GPU需要并行计算工具箱和支持的GPU设备。有关支持的设备的信息,请参见GPU计算要求(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,则软件返回一个错误。“cpu”
—使用CPU。“multi-gpu”
—在一台机器上使用多个gpu,根据默认集群配置文件使用本地并行池。如果当前没有并行池,软件启动一个并行池,池大小等于可用gpu的数量。“平行”
—根据默认集群配置文件使用本地或远程并行池。如果当前没有并行池,软件将使用默认的集群配置文件启动一个并行池。如果池可以访问GPU,那么只有具有唯一GPU的工作者执行计算。如果池中没有gpu,那么计算将在所有可用的CPU工作者上进行。
有关何时使用不同执行环境的更多信息,请参见在并行、gpu和云上扩展深度学习.
的“图形”
,“multi-gpu”
,“平行”
选项需要并行计算工具箱。要使用GPU进行深度学习,还必须有支持的GPU设备。有关支持的设备的信息,请参见GPU计算要求(并行计算工具箱).如果您选择了其中一个选项,而并行计算工具箱或合适的GPU不可用,那么软件将返回一个错误。
与具有循环层的网络并行进行预测(通过设置ExecutionEnvironment
要么“multi-gpu”
或“平行”
),SequenceLength
选项必须为“最短”
或“最长”
.
具有自定义层的网络包含状态
参数不支持并行预测。
ReturnCategorical
- - - - - -选项返回类别标签
0
(假)(默认)|1
(真正的)
选项返回类别标签,指定为0
(虚假的)或1
(真正的)。
如果ReturnCategorical
是1
(true),则函数返回分类输出层的分类标签。否则,函数返回分类输出层的预测分数。
SequenceLength
- - - - - -选项填充或截断序列
“最长”
(默认)|“最短”
|正整数
填充、截断或分割输入序列的选项,指定为以下之一:
“最长”
-每个小批中的衬垫序列与最长序列的长度相同。这个选项不会丢弃任何数据,尽管填充会给网络带来噪音。“最短”
-截断每个小批中的序列,使其长度与最短的序列相同。此选项确保不添加填充,但代价是丢弃数据。正整数——对于每个小批,将序列填充为小批中最长序列的长度,然后将序列分割为指定长度的更小的序列。如果发生分裂,那么软件会创建额外的小批量。如果指定的序列长度没有平均分配数据的序列长度,那么包含这些序列末端的小批次的长度小于指定的序列长度。如果完整序列不适合内存,则使用此选项。或者,尝试减少每个小批处理的序列数量
MiniBatchSize
选项设置为较低的值。
要了解关于填充、截断和分割输入序列的效果的更多信息,请参见序列填充、截断和分割.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
SequencePaddingDirection
- - - - - -填充或截断的方向
“正确”
(默认)|“左”
填充或截断的方向,指定为下列之一:
“正确”
-在右侧填充或截断序列。序列开始在同一时间步骤和软件截断或添加填充序列的结尾。“左”
-在左侧填充或截断序列。该软件截断或添加填充序列的开始,以使序列结束在同一时间步骤。
因为循环层每次处理一个时间步的序列数据,当循环层OutputMode
属性是“最后一次”
,在最后的时间步长的任何填充都会对图层输出产生负面影响。若要在左侧填充或截断序列数据,请设置SequencePaddingDirection
选项“左”
.
对于序列到序列网络(当OutputMode
属性是“序列”
对于每个循环层),第一个时间步骤中的任何填充都可能对早期时间步骤的预测产生负面影响。若要在右侧填充或截断序列数据,请设置SequencePaddingDirection
选项“正确”
.
要了解关于填充、截断和分割输入序列的效果的更多信息,请参见序列填充、截断和分割.
SequencePaddingValue
- - - - - -填充序列的值
0
(默认)|标量
用来填充输入序列的值,指定为标量。
该选项仅在以下情况下有效SequenceLength
是“最长”
或者一个正整数。不垫序列用南
因为这样做会在整个网络中传播错误。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
Y
-预测反应
数字数组|分类数组|单元格数组
预测的响应,作为数字数组、分类数组或单元格数组返回。的格式Y
这取决于问题的类型。
下表描述了回归问题的格式。
任务 | 格式 |
---|---|
二维图像回归 |
|
三维图像回归 |
|
Sequence-to-one回归 | N——- - - - - -R矩阵,N序列的个数和R是回复的数量吗 |
Sequence-to-sequence回归 | N-by-1单元格数组的数字序列,其中N是序列的个数。序列是矩阵R行,R是回应的数量。每个序列的时间步数与后面相应的输入序列的时间步数相同 对于单次观测的序列对序列回归任务, |
功能回归 | N——- - - - - -R矩阵,N观察的次数和R是回复的数量吗 |
对于只有一个观测值的序列到序列回归问题,序列
可以是一个矩阵。在这种情况下,Y
是一个响应矩阵。
如果ReturnCategorical
是0
(false),网络的输出层为分类层,则Y
是预测的分类分数。该表描述了分类任务的评分格式。
任务 | 格式 |
---|---|
图像分类 | N——- - - - - -K矩阵,N观察的次数和K是班级的数量吗 |
Sequence-to-label分类 | |
功能分类 | |
Sequence-to-sequence分类 | N-by-1的矩阵单元数组,其中N是观察数。序列是矩阵K行,K是类的数量。每个序列的时间步数与后面相应的输入序列的时间步数相同 |
如果ReturnCategorical
是1
(true),网络的输出层为分类层,则Y
是类别向量或类别向量的单元格数组。该表描述分类任务的标签格式。
任务 | 格式 |
---|---|
图像或特征分类 | N-by-1标签分类向量,其中N观察的次数是多少 |
Sequence-to-label分类 | |
Sequence-to-sequence分类 | N-by-1单元格的标签分类序列数组,其中N是观察数。每个序列的时间步数与后面相应的输入序列的时间步数相同 对于单次观测的序列到序列分类任务, |
日元…,
-预测多输出网络的分数或响应
数字数组|分类数组|单元格数组
具有多个输出的网络的预测分数或响应,作为数字数组、类别数组或单元格数组返回。
每个输出Yj
对应网络输出net.OutputNames (j)
的格式描述Y
输出参数。
算法
训练网络时使用trainNetwork
函数,或者在使用预测或验证函数时DAGNetwork
而且SeriesNetwork
对象,该软件使用单精度浮点算术执行这些计算。用于训练、预测和验证的函数包括trainNetwork
,预测
,分类
,激活
.当你使用cpu和gpu训练网络时,该软件使用单精度算法。
选择
对于只有单一分类层的网络,您可以使用分类
函数。
要从网络层计算激活,请使用激活
函数。
对于周期性网络,如LSTM网络,您可以使用classifyAndUpdateState
而且predictAndUpdateState
.
参考文献
[1]工藤,美一,富山俊,Shimbo Masaru。“利用穿过区域的多维曲线分类”。模式识别信20日,没有。11-13(1999年11月):1103-11。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x.
[2]UCI机器学习库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
c++代码生成支持以下语法:
Y =预测(网络,图像)
,在那里图片
是一个数值数组Y =预测(净,序列)
,在那里序列
是单元格数组Y =预测(净,特征)
,在那里特性
是一个数值数组(日元…,Y米预测,预测__)
使用任何前面的语法__ = predict(__,Name=Value)
使用任何前面的语法
对于数字输入,输入的大小不能可变。大小必须在代码生成时固定。
对于矢量序列输入,在代码生成过程中特征的数量必须是恒定的。序列长度可以可变大小。
对于图像序列输入,在代码生成期间,高度、宽度和通道数量必须是一个常数。
只有
MiniBatchSize
,ReturnCategorical
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
代码生成支持名称-值对参数。所有名称-值对必须是编译时常量。只有
“最长”
而且“最短”
的选项SequenceLength
在代码生成中支持名称-值对。如果
ReturnCategorical
是1
(正确)并且使用GCC C/ c++编译器8.2或以上版本,您可能会得到一个-Wstringop-overflow
警告。为英特尔生成代码®MKL-DNN靶标不支持组合
SequenceLength =“最长”
,SequencePaddingDirection =“左”
,SequencePaddingValue = 0
名称-值参数。
有关为深度学习神经网络生成代码的更多信息,请参见基于MATLAB Coder的深度学习代码生成工作流程(MATLAB编码器).
GPU代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。
使用注意事项和限制:
GPU代码生成支持以下语法:
Y =预测(网络,图像)
,在那里图片
是一个数值数组Y =预测(净,序列)
,在那里序列
单元格数组还是数字数组Y =预测(净,特征)
,在那里特性
是一个数值数组(日元…,Y米预测,预测__)
使用任何前面的语法__ = predict(__,Name=Value)
使用任何前面的语法
对于数字输入,输入的大小不能可变。大小必须在代码生成时固定。
不支持GPU代码生成
gpuArray
的输入预测
函数。cuDNN库支持向量和二维图像序列。TensorRT库只支持向量输入序列。手臂®
计算库
for GPU不支持循环网络。对于矢量序列输入,在代码生成过程中特征的数量必须是恒定的。序列长度可以可变大小。
对于图像序列输入,在代码生成期间,高度、宽度和通道数量必须是一个常数。
只有
MiniBatchSize
,ReturnCategorical
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
代码生成支持名称-值对参数。所有名称-值对必须是编译时常量。只有
“最长”
而且“最短”
选择SequenceLength
在代码生成中支持名称-值对。GPU代码生成
预测
函数支持定义为半精度浮点数据类型的输入。有关更多信息,请参见一半
(GPU编码器).如果
ReturnCategorical
设置为1
(正确)并且使用GCC C/ c++编译器8.2或以上版本,您可能会得到一个-Wstringop-overflow
警告。
自动平行支撑
通过使用并行计算工具箱™自动并行运行计算来加速代码。
若要并行运行计算,请设置ExecutionEnvironment
选项“multi-gpu”
或“平行”
.
详情请参见在并行、gpu和云上扩展深度学习.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
的
ExecutionEnvironment
选项必须为“汽车”
或“图形”
当输入数据为:一个
gpuArray
单元格数组包含
gpuArray
对象包含以下内容的表
gpuArray
对象一种输出单元格数组的数据存储
gpuArray
对象一种数据存储,输出包含
gpuArray
对象
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2016a中介绍R2022b:预测功能垫小批量到长度最长序列之前分裂时,当您指定SequenceLength
选项作为整数
从R2022b开始,当您使用序列数据进行预测时预测
,分类
,predictAndUpdateState
,classifyAndUpdateState
,激活
功能和SequenceLength
选项为整数时,软件将每个小批中的序列填充为最长序列的长度,然后按照指定的序列长度将序列拆分为小批。如果SequenceLength
没有均匀划分小批量的序列长度,那么最后划分的小批量的长度小于SequenceLength
.此行为防止仅包含填充值的时间步骤影响预测。
在以前的版本中,软件填充小批量的序列,使其长度与最接近的倍数匹配SequenceLength
它大于或等于小批处理长度,然后拆分数据。若要再现此行为,请手动填充输入数据,以便小批量的长度为的适当倍数SequenceLength
.对于序列到序列工作流,您可能还需要手动删除与填充值对应的输出的时间步长。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。