主要内容

maxpool

将数据池到最大值

描述

最大池操作通过将输入划分到池区域并计算每个区域的最大值来执行下采样。

maxpool函数将最大池化操作应用到dlarray数据。使用dlarray对象允许对维度进行标记,从而使处理高维数据更加容易。方法标识哪些维度对应于空间、时间、通道和批处理维度“S”“T”“C”,“B”标签,分别。对于未指定的和其他维度,请使用“U”标签。为dlarray对象函数对特定维度进行操作时,可以通过格式化dlarray对象直接调用,或使用DataFormat选择。

请注意

在对象中应用最大池layerGraph对象或数组,使用以下层之一:

例子

Y= maxpool (Xpoolsize将最大池操作应用于格式化的dlarray对象X.函数通过将输入分为由定义的区域来对其进行下采样poolsize并计算每个区域的数据最大值。输出Y是一个格式化的dlarray具有相同的尺寸格式X

默认情况下,该函数最多使用三个维度X标签“年代”(空间)。聚集在标有的尺寸上“T”(time),指定一个池区域“T”维度使用“PoolFormat”选择。

对于未格式化的输入数据,请使用“DataFormat”选择。

YindxinputSize) = maxpool (Xpoolsize还返回每个池区域内最大值的线性索引和输入特征映射的大小Xmaxunpool函数。

例子

Y= maxpool (X, '全球')计算输入的空间维度上的全局最大值X.此语法等同于设置poolsize的大小“年代”的尺寸X

___= maxpool (___、“DataFormat”FMT)将最大池操作应用到未格式化的dlarray对象X格式由FMT使用任何前面的语法。输出Y是一个非格式化dlarray的对象,其维度顺序与X.例如,“DataFormat”、“SSCB”用格式指定二维最大池化的数据“SSCB”(空间,空间,渠道,批处理)。

例子

___= maxpool (___名称,值使用一个或多个名称-值对参数指定选项。例如,“PoolFormat”、“T”指定用格式进行一维池化的池化区域“T”(时间)。

例子

全部折叠

创建一个格式化的dlarray对象,该对象包含一批128张28乘28的3通道图像。指定的格式“SSCB”(空间,空间,渠道,批处理)。

miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X =兰特(inputSize (1) inputSize (2), numChannels, miniBatchSize);dlX = dlarray (X,“SSCB”);

查看输入数据的大小和格式。

大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = ' SSCB '

方法在2乘2池窗口中应用二维最大池maxpool函数。

poolSize = [2 2];海底= 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 =兰特(inputSize (1) inputSize (2), numChannels, miniBatchSize);dlX = dlarray (X,“SSCB”);

查看输入数据的大小和格式。

大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = ' SSCB '

方法应用二维全局最大池maxpool函数通过指定“全球”选择。

海底= maxpool (dlX,“全球”);

查看输出的大小和格式。

大小(海底)
ans =1×41 1 3 128
dim(海底)
ans = ' SSCB '

创建一个格式化的dlarray对象,该对象包含128个长度为100、有12个通道的序列。指定的格式“认知行为治疗”(通道、批量、时间)。

miniBatchSize = 128;sequenceLength = 100;numChannels = 12;X =兰德(numChannels miniBatchSize sequenceLength);dlX = dlarray (X,“认知行为治疗”);

查看输入数据的大小和格式。

大小(dlX)
ans =1×312 128 100
dim (dlX)
ans =“认知行为治疗”

方法应用1-D最大池化,池化区域大小为2,步幅为2maxpool函数通过指定“PoolFormat”而且“步”选项。

poolSize = 2;海底= maxpool (dlX poolSize,“PoolFormat”“T”“步”2);

查看输出的大小和格式。

大小(海底)
ans =1×312 128 50
dim(海底)
ans =“认知行为治疗”

创建一个格式化的dlarray对象,该对象包含一批128张28乘28的3通道图像。指定的格式“SSCB”(空间,空间,渠道,批处理)。

miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X =兰特(inputSize (1) inputSize (2), numChannels, miniBatchSize);dlX = dlarray (X,“SSCB”);

查看输入数据的大小和格式。

大小(dlX)
ans =1×428 28 3 128
dim (dlX)
ans = ' SSCB '

使用跨步2在大小为2的池化区域中将数据池到最大值。

[海底,indx dataSize] = maxpool (dlX 2“步”2);

查看池数据的大小和格式。

大小(海底)
ans =1×414 14 3 128
dim(海底)
ans = ' SSCB '

查看数据大小。

dataSize
dataSize =1×428 28 3 128

使用索引和数据大小从maxpool操作。

海底= maxunpool(海底,indx dataSize);

查看未池数据的大小和格式。

大小(海底)
ans =1×428 28 3 128
dim(海底)
ans = ' SSCB '

创建一个格式化的dlarray对象,该对象包含128个长度为100、有12个通道的序列。指定的格式“认知行为治疗”(通道、批量、时间)。

miniBatchSize = 128;sequenceLength = 100;numChannels = 12;X =兰德(numChannels miniBatchSize sequenceLength);dlX = dlarray (X,“认知行为治疗”);

查看输入数据的大小和格式。

大小(dlX)
ans =1×312 128 100
dim (dlX)
ans =“认知行为治疗”

方法应用1-D最大池化,池化区域大小为2,步幅为2maxpool函数通过指定“PoolFormat”而且“步”选项。

poolSize = 2;[海底,indx dataSize] = maxpool (dlX poolSize,“PoolFormat”“T”“步”2);

查看输出的大小和格式。

大小(海底)
ans =1×312 128 50
dim(海底)
ans =“认知行为治疗”

使用索引和数据大小从maxpool操作。

海底= maxunpool(海底,indx dataSize);

查看未池数据的大小和格式。

大小(海底)
ans =1×312 128 100
dim(海底)
ans =“认知行为治疗”

输入参数

全部折叠

输入数据,指定为格式化或非格式化dlarray对象。

如果X是一个非格式化dlarray,则必须使用DataFormat选择。

默认情况下,该函数最多使用三个维度X标签“年代”(空间)。聚集在标有的尺寸上“T”(time),指定一个池区域“T”维度使用“PoolFormat”选择。

池区域的大小,指定为数值标量或数值向量。

要使用边缘大小相同的池化区域进行池化,请指定poolsize作为一个标量。所指定的所有维度上的池区域具有相同的大小“PoolFormat”

要使用具有不同大小边缘的池化区域进行池化,请指定poolsize作为一个向量poolsize(我)对应尺寸的尺寸在吗“PoolFormat”

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“步”,2指定池区域的跨距为2

未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT它为数据的每个维度提供一个标签。

的格式时dlarray对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:

  • “S”——空间

  • “C”——频道

  • “B”-批处理(例如,样品和观察)

  • “T”-时间(例如,序列的时间步长)

  • “U”——未指明的

您可以指定多个标记的维度“S”“U”.你可以使用标签“C”“B”,“T”最多一次。

您必须指定DataFormat当输入数据没有格式化时dlarray

数据类型:字符|字符串

池区域的维度顺序,指定为逗号分隔的对,由“PoolFormat”以及为池区域的每个维度提供标签的字符向量或字符串标量。

的默认值。“PoolFormat”取决于任务:

任务 默认的
一维池 “年代”(空间)
二维池 “党卫军”(空间、空间)
3 d池 “SSS”(空间、空间、空间)

格式必须有no“年代”(空间)维度,或同样多“年代”(空间)维度作为输入数据。

默认情况下,该函数最多使用三个维度X标签“年代”(空间)。聚集在标有的尺寸上“T”(time),指定一个池区域“T”维度使用“PoolFormat”选择。

例子:“PoolFormat”、“T”

遍历输入数据的步长,指定为逗号分隔的对,由“步”和一个数字标量或数字向量。如果您指定“步”作为标量,对所有空间维度使用相同的值。如果您指定“步”作为与输入数据的空间维数相同大小的向量,向量值用于对应的空间维数。

的默认值。“步”1.如果“步”小于poolsize在任何维度中,池化区域都会重叠。

参数的全局池不支持“全球”选择。

例子:“步”,3

数据类型:|

应用于数据边缘的填充大小,指定为逗号分隔的对,由“填充”和以下其中之一:

  • “相同”-设置填充大小,这样当步幅为时,输出大小与输入大小相同1.更一般地说,每个空间维度的输出大小为装天花板(inputSize /步),在那里inputSize是输入沿空间维度的大小。

  • 数值标量——在所有空间维度的两端应用相同数量的填充。

  • 数值向量——沿着每个空间维度应用不同数量的填充。使用一个大小的向量d,在那里d是输入数据的空间维度数。的向量的第Th元素指定应用于开始和结束的填充大小空间维度。

  • 数值矩阵——对每个空间维度的开始和结束应用不同数量的填充。使用大小为2乘-的矩阵d,在那里d是输入数据的空间维度数。的元素(d)指定应用于空间维度开始的填充的大小d.的元素(2 d)指定应用到空间维度结尾的填充大小d.例如,在2d中,格式为(前、左;下,右)

“填充”参数的全局池不支持“全球”选择。

例子:“填充”,“相同”

数据类型:|

输出参数

全部折叠

池数据,返回为dlarray具有相同的基础数据类型X

如果输入数据X是一个格式化的dlarray,然后Y格式与X.如果输入数据没有格式化dlarray,然后Y是一个非格式化dlarray具有与输入数据相同的维度顺序。

每个池区域中最大值的索引,返回为dlarray.每个值在indx中对应最大值的位置Y中的值的线性索引X

如果X是一个格式化的dlarrayindx是否与输出的大小和格式相同Y

如果X不是格式化的dlarrayindx是一个非格式化dlarray.在这种情况下,indx以以下维度顺序返回:all“年代”维度,其次是“C”“B”,“T”维度,那么所有“U”维度。的大小indx的大小匹配YY排列以匹配前面声明的维度顺序。

使用indx输出的maxunpool的输出maxpool

indx方法时不支持输出“全球”选择。

输入特征映射的大小,作为数字向量返回。

使用inputSize输出的maxunpool的输出maxpool

inputSize方法时不支持输出“全球”选择。

更多关于

全部折叠

最大池

maxpool函数将输入数据汇集到最大值。有关更多信息,请参见二维最大池化层部分的maxPooling2dLayer参考页面。

扩展功能

版本历史

介绍了R2019b

全部展开

Baidu
map