maxpool
将数据池到最大值
语法
描述
最大池化操作通过将输入划分为池化区域并计算每个区域的最大值来执行下采样。
的maxpool
函数将最大池化操作应用于dlarray
数据。使用dlarray
对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”
,“T”
,“C”
,“B”
标签,分别。对于未指定的维度和其他维度,使用“U”
标签。为dlarray
对象的函数在特定维度上操作时,可以通过格式化dlarray
对象,或者使用DataFormat
选择。
对格式化的对象应用最大池化操作Y
= maxpool (X
,poolsize
)dlarray
对象X
.通过将输入划分为定义的区域,函数对输入进行采样poolsize
并计算各区域数据的最大值。输出Y
是格式化的dlarray
相同的维度格式X
.
默认情况下,该函数最多在三个维度上进行池化X
标签“年代”
(空间)。在标记的维度上进行池化“T”
(time)时,使用“T”
使用“PoolFormat”
选择。
对于未格式化的输入数据,使用“DataFormat”
选择。
例子
执行2-D最大池化
创建格式化的dlarray
对象,该对象包含128个28 × 28图像,有3个通道。指定格式“SSCB”
(空间,空间,通道,批次)。
miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);dlX = dlarray(X,“SSCB”);
查看输入数据的大小和格式。
大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = 'SSCB'
属性应用2-D最大池化和2 * 2池化窗口maxpool
函数。
poolSize = [2 2];dlX = maxpool(dlX,poolSize);
查看输出的大小和格式。
大小(海底)
ans =1×427 27 3 128
dim(海底)
ans = 'SSCB'
执行二维全局最大池化
创建格式化的dlarray
对象,该对象包含128个28 × 28图像,有3个通道。指定格式“SSCB”
(空间,空间,通道,批次)。
miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);dlX = dlarray(X,“SSCB”);
查看输入数据的大小和格式。
大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = 'SSCB'
类应用二维全局最大池化maxpool
函数,通过指定“全球”
选择。
dlX = maxpool(dlX,“全球”);
查看输出的大小和格式。
大小(海底)
ans =1×41 1 3 128
dim(海底)
ans = 'SSCB'
执行1-D最大池化
创建格式化的dlarray
对象,该对象包含128个序列,长度为100,有12个通道。指定格式“认知行为治疗”
(通道,批次,时间)。
miniBatchSize = 128;sequenceLength = 100;numChannels = 12;X = rand(numChannels,miniBatchSize, sequencelth);dlX = dlarray(X,“认知行为治疗”);
查看输入数据的大小和格式。
大小(dlX)
ans =1×312 128 100
dim (dlX)
ans =“CBT”
属性应用1-D最大池化,池化区域大小为2,步幅为2maxpool
函数,通过指定“PoolFormat”
而且“步”
选项。
poolSize = 2;dlX = maxpool(dlX,poolSize,“PoolFormat”,“T”,“步”2);
查看输出的大小和格式。
大小(海底)
ans =1×312 128 50
dim(海底)
ans =“CBT”
取消2-D最大数据池
创建格式化的dlarray
对象,该对象包含128个28 × 28图像,有3个通道。指定格式“SSCB”
(空间,空间,通道,批次)。
miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);dlX = dlarray(X,“SSCB”);
查看输入数据的大小和格式。
大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = 'SSCB'
使用跨步2在大小为2的池化区域上将数据池到最大值。
[dlY,indx,dataSize] = maxpool(dlX,2,“步”2);
查看已池数据的大小和格式。
大小(海底)
ans =1×414 14 3 128
dim(海底)
ans = 'SSCB'
查看数据大小。
dataSize
dataSize =1×428 28 3 128
属性中的索引和数据大小取消数据池maxpool
操作。
dlY = maxunpool(dlY,indx,dataSize);
查看未池数据的大小和格式。
大小(海底)
ans =1×428 28 3 128
dim(海底)
ans = 'SSCB'
取消1-D最大数据池
创建格式化的dlarray
对象,该对象包含128个序列,长度为100,有12个通道。指定格式“认知行为治疗”
(通道,批次,时间)。
miniBatchSize = 128;sequenceLength = 100;numChannels = 12;X = rand(numChannels,miniBatchSize, sequencelth);dlX = dlarray(X,“认知行为治疗”);
查看输入数据的大小和格式。
大小(dlX)
ans =1×312 128 100
dim (dlX)
ans =“CBT”
属性应用1-D最大池化,池化区域大小为2,步幅为2maxpool
函数,通过指定“PoolFormat”
而且“步”
选项。
poolSize = 2;[dlY,indx,dataSize] = maxpool(dlX,poolSize,“PoolFormat”,“T”,“步”2);
查看输出的大小和格式。
大小(海底)
ans =1×312 128 50
dim(海底)
ans =“CBT”
属性中的索引和数据大小取消数据池maxpool
操作。
dlY = maxunpool(dlY,indx,dataSize);
查看未池数据的大小和格式。
大小(海底)
ans =1×312 128 100
dim(海底)
ans =“CBT”
输入参数
X
- - - - - -输入数据
dlarray
输入数据,指定为格式化或非格式化dlarray
对象。
如果X
是未格式化的dlarray
,则必须使用DataFormat
选择。
默认情况下,该函数最多在三个维度上进行池化X
标签“年代”
(空间)。在标记的维度上进行池化“T”
(time)时,使用“T”
使用“PoolFormat”
选择。
poolsize
- - - - - -池化区域大小
正整数|正整数向量
池化区域的大小,指定为数值标量或数值向量。
若要使用边缘大小相同的池化区域进行池化,请指定poolsize
作为一个标量。池化区域在指定的所有维度上具有相同的大小“PoolFormat”
.
若要使用边缘大小不同的池化区域进行池化,请指定poolsize
作为一个向量,其中poolsize(我)
对应尺寸的尺寸在吗“PoolFormat”
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“步”,2
指定池化区域的步幅为2
.
DataFormat
- - - - - -未格式化数据的维度顺序
特征向量|字符串标量
未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT
它为数据的每个维度提供了一个标签。
的格式时dlarray
对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:
“S”
——空间“C”
——频道“B”
-批次(例如,样品和观察)“T”
-时间(例如序列的时间步长)“U”
——未指明的
您可以指定多个有标记的维度“S”
或“U”
.你可以使用标签“C”
,“B”
,“T”
最多一次。
您必须指定DataFormat
当输入数据未被格式化时dlarray
.
数据类型:字符
|字符串
PoolFormat
- - - - - -池化区域的维度顺序
特征向量|字符串标量
池化区域的维度顺序,指定为由逗号分隔的对组成“PoolFormat”
以及为池化区域的每个维度提供标签的字符向量或字符串标量。
的默认值“PoolFormat”
取决于任务:
任务 | 默认的 |
---|---|
一维池 | “年代” (空间) |
二维池 | “党卫军” (空间、空间) |
3 d池 | “SSS” (空间,空间,空间) |
格式必须有或没有“年代”
(空间)维度,或同样多的维度“年代”
(空间)维度作为输入数据。
默认情况下,该函数最多在三个维度上进行池化X
标签“年代”
(空间)。在标记的维度上进行池化“T”
(time)时,使用“T”
使用“PoolFormat”
选择。
例子:“PoolFormat”、“T”
步
- - - - - -遍历输入数据的步长
1
(默认)|数字标量|数值向量
遍历输入数据的步长,指定为逗号分隔的对,由“步”
和一个数值标量或数值向量。如果你指定“步”
作为标量,所有空间维度都使用相同的值。如果你指定“步”
作为与输入数据的空间维数相同大小的向量,向量值用于相应的空间维数。
的默认值“步”
是1
.如果“步”
小于poolsize
在任何维度上,池化区域都会重叠。
的步
属性的全局池不支持金宝app“全球”
选择。
例子:“步”,3
数据类型:单
|双
填充
- - - - - -应用于数据边缘的填充大小
0
(默认)|“相同”
|数字标量|数值向量|数字矩阵
应用于数据边缘的填充大小,指定为逗号分隔的对,由“填充”
和以下其中之一:
“相同”
-设置填充大小,以便在步幅为时输出大小与输入大小相同1
.一般来说,每个空间维度的输出大小为装天花板(inputSize /步)
,在那里inputSize
是沿空间维度输入的大小。数值标量——所有空间维度的两端应用相同数量的填充。
数值向量——沿着每个空间维度应用不同数量的填充。使用一个大小相同的向量
d
,在那里d
输入数据的空间维数。的我
向量的第Th元素指定应用于开始和结束处的填充大小我
空间维度。数值矩阵——每个空间维度的开始和结束都应用了不同数量的填充。使用大小为2 × -的矩阵
d
,在那里d
输入数据的空间维数。的元素(d)
指定应用于空间维度开始的填充的大小d
.的元素(2 d)
指定应用于空间维度末尾的填充大小d
.例如,在二维空间中,格式为(前、左;下,右)
.
的“填充”
属性的全局池不支持金宝app“全球”
选择。
例子:“填充”,“相同”
数据类型:单
|双
输出参数
Y
-合并数据
dlarray
数据池,返回为dlarray
使用相同的底层数据类型X
.
如果输入数据X
是格式化的dlarray
,然后Y
格式与X
.如果输入数据没有格式化dlarray
,然后Y
是未格式化的dlarray
具有与输入数据相同的维度顺序。
indx
—最大值索引
dlarray
每个池化区域中最大值的索引,返回为dlarray
.中的每个值indx
中对应的最大值的位置Y
中值的线性索引X
.
如果X
是格式化的dlarray
,indx
具有与输出相同的大小和格式Y
.
如果X
不是格式化的dlarray
,indx
是未格式化的dlarray
.这样的话,indx
以以下维度顺序返回:all“年代”
维度,然后是“C”
,“B”
,“T”
维度,然后是所有“U”
维度。的大小indx
匹配的大小Y
当Y
排列以匹配前面指定的维度顺序。
使用indx
输出maxunpool
的输出maxpool
.
indx
方法时不支持输出金宝app“全球”
选择。
inputSize
-输入特征图的大小
数值向量
更多关于
最大池
的maxpool
函数将输入数据池到最大值。有关更多信息,请参见2-D最大池化层部份maxPooling2dLayer
参考页面。
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
版本历史
R2019b引入R2020a:maxpool
索引输出参数改变形状和数据类型
类的索引输出参数的数据类型和形状从R2020a开始maxpool
函数都改变了。的maxpool
函数将最大值的下标输出为adlarray
具有与池数据相同的形状和格式,而不是数值向量。
的指数输出maxpool
的索引输入保持兼容maxunpool
.的maxunpool
函数接受最大值的下标作为adlarray
具有与输入数据相同的形状和格式。方法的索引输出,以防止出现错误maxpool
函数作为索引输入maxunpool
函数。
要重现前面的行为,并获得作为数字向量的索引输出,使用以下代码:
[Y,indx,inputSize] = maxpool(Y,poolsize);Indx =提取数据(Indx);Indx =重塑(Indx,[],1);
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。