主要内容

dltranspconv

深度学习转置卷积

自从R2019b

描述

转置卷积运算向上采样特征图。

dltranspconv函数将深度学习转置卷积运算应用于dlarray数据。使用dlarray对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”“T”“C”,“B”标签,分别。对于未指定的维度和其他维度,使用“U”标签。为dlarray对象的函数在特定维度上操作时,可以通过格式化dlarray对象,或者使用DataFormat选择。

请注意

该函数将深度学习转置卷积运算应用于dlarray数据。如果你想对a进行转置卷积layerGraph对象或数组,使用以下图层之一:

例子

Y= dltranspconv (X权重偏见计算输入的深度学习转置卷积X使用定义的筛选器权重,并加上常数偏见.输入X必须是格式化的dlarray.输出Y是格式化的dlarray相同的维度格式X

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

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

Y= dltranspconv (X权重偏见, DataFormat = FMT)将深度学习转置卷积运算应用于非格式化dlarray对象X的格式,由FMT.输出Y是未格式化的dlarray对象,其维度顺序与X

例子

Y= dltranspconv (___名称=值除以前语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,步= 3设置卷积操作的步幅。

例子

全部折叠

创建格式化的dlarray对象,该对象包含128个28 × 28图像,有3个通道。指定格式“SSCB”(空间,空间,通道,批次)。

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

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

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

初始化二维转置卷积的权值和偏置。对于权重,指定64个3 × 3筛选器。对于偏差,指定一个零向量。

filterSize = [3 3];numFilters = 64;weights = rand(filterSize(1),filterSize(2),numFilters,numChannels);bias = 0 (1,numFilters);

应用二维转置卷积dltranspconv函数。

Y = dltranspconv(X,权重,偏差);

查看输出的大小和格式。

大小(Y)
ans =1×430 30 64 128
退去(Y)
ans = 'SSCB'

创建格式化的dlarray对象,该对象包含一批128张28 × 28图像,具有16个通道。指定格式“SSCB”(空间,空间,通道,批次)。

miniBatchSize = 128;inputSize = [28 28];numChannels = 16;X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);X = dlarray(X,“SSCB”);

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

大小(X)
ans =1×428 28 16 128
dim (X)
ans = 'SSCB'

初始化二维分组转置卷积的权值和偏置。对于权重,指定两组64个3 × 3筛选器。对于偏差,指定一个零向量。

每组的通道数由输入数据的通道数除以组数给出。偏差向量的大小是每组过滤器的数量乘以组的数量。

filterSize = [3 3];numFiltersPerGroup = 64;numGroups = 2;numChannelsPerGroup = numChannels / numGroups;weights = rand(filterSize(1),filterSize(2),numFiltersPerGroup,numChannelsPerGroup,numGroups);bias = 0 (1,numFiltersPerGroup*numGroups);

应用二维分组转置卷积dltranspconv函数。

Y = dltranspconv(X,权重,偏差);

查看输出的大小和格式。

大小(Y)
ans =1×430 30 128 128
退去(Y)
ans = 'SSCB'

输入参数

全部折叠

输入数据,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。

如果X是未格式化的dlarray或数值数组,则必须使用DataFormat选择。如果X是数字数组吗权重偏见一定是dlarray对象。

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

过滤器,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。

权重的大小和格式取决于任务的类型。如果权重是未格式化的dlarray或者一个数字数组,那么大小和形状权重取决于WeightsFormat选择。

下表描述了各种任务权重的大小和格式。可以使用格式化方法指定具有任意顺序的维度的数组dlarray对象或使用WeightsFormat选择。当权重具有具有相同标签的多个维度时(例如,多个维度被标记为“S”),则这些尺寸必须按表中所示的顺序排列。

任务 所需的尺寸 大小 例子
权重 格式
一维转置卷积 “S”(空间)或“T”(时间) 过滤器的大小

filterSize——- - - - - -numFilters——- - - - - -numChannels数组,filterSize为一维滤波器的大小,numFilters是过滤器的数量,和numChannels输入数据的通道数。

“并”(空间,通道,未指明)
“C”(通道) 通道数
“U”(不明) 过滤器数量
一维分组转置卷积 “S”(空间)或“T”(时间) 过滤器的大小

filterSize——- - - - - -numFiltersPerGroup——- - - - - -numChannelsPerGroup——- - - - - -numGroups数组,filterSize为一维滤波器的大小,numFiltersPerGroup是每组过滤器的数量,numChannelsPerGroup是每组输入数据的通道数,和numGroups是数组。

numChannelsPerGroup必须等于输入数据的通道数除以numGroups

“SCUU”(空间,通道,未指明,未指明)
“C”(通道) 每组通道数
第一个“U”(不明) 每组过滤器的数量
第二个“U”(不明) 组数
二维转置卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -numFilters——- - - - - -numChannels数组,filterSize (1)而且filterSize (2)分别为二维滤波器的高度和宽度,numFilters是过滤器的数量,和numChannels输入数据的通道数。

“SSCU”(空间,空间,通道,未指明)
第二个“S”(空间)或“T”(时间) 滤波器的宽度
“C”(通道) 通道数
“U”(不明) 过滤器数量
二维分组转置卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -numFiltersPerGroup——- - - - - -numChannelsPerGroup——- - - - - -numGroups数组,filterSize (1)而且filterSize (2)分别为二维滤波器的高度和宽度,numFiltersPerGroup是每组过滤器的数量,numChannelsPerGroup是每组输入数据的通道数,和numGroups是组的数目。

numChannelsPerGroup必须等于输入数据的通道数除以numGroups

“SSCUU”(空间,空间,通道,未指明,未指明)
第二个“S”(空间)或“T”(时间) 滤波器的宽度
“C”(通道) 每组通道数
第一个“U”(不明) 每组过滤器的数量
第二个“U”(不明) 组数
三维转置卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -filterSize (3)——- - - - - -numFilters——- - - - - -numChannels数组,filterSize (1)filterSize (2),filterSize (3)分别为三维滤波器的高度、宽度和深度,numFilters是过滤器的数量,和numChannels输入数据的通道数。

“SSSCU”(空间,空间,空间,通道,未指明)
第二个“S”(空间) 滤波器的宽度
第三“S”(空间)或“T”(时间) 过滤器深度
“C”(通道) 通道数
“U”(不明) 过滤器数量

提示

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

偏差常数,指定为格式化或非格式化dlarray向量或dlarray标量,数值向量或数值标量。

  • 如果偏见是标量或仅具有单个维度,则对输出的每个项应用相同的偏置。

  • 如果偏见有一个非单维度,每个元素偏见偏差是否应用于?所指定的相应卷积滤波器权重.元素的个数偏见所指定的筛选器数目必须匹配权重

如果偏见是格式化的dlarray,则非单维度必须是标记的通道维度“C”

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:步= 2将每个过滤器的步幅设置为2。

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

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

  • “S”——空间

  • “C”——频道

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

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

  • “U”——未指明的

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

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

数据类型:字符|字符串

权重的维度顺序,指定为字符向量或字符串标量,为权重的每个维度提供一个标签。

的默认值WeightsFormat取决于任务:

任务 默认的
一维转置卷积 “并”(空间,通道,未指明)
一维分组转置卷积 “SCUU”(空间,通道,未指明,未指明)
二维转置卷积 “SSCU”(空间,空间,通道,未指明)
二维分组转置卷积 “SSCUU”(空间,空间,通道,未指明,未指明)
三维转置卷积 “SSSCU”(空间,空间,空间,通道,未指明)

支持的维万博1manbetx度标签组合取决于卷积的类型,有关详细信息,请参阅权重论点。

提示

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

数据类型:字符|字符串

用于遍历输入数据的步长,指定为数值标量或数值向量。

若要对所有卷积维使用相同的步长,请将步幅指定为标量。若要为每个卷积维度指定不同的值,请将步幅指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

过滤器膨胀系数,指定为数值标量或数值向量。

若要在所有卷积维数中使用膨胀因子,请将膨胀因子指定为标量。若要为每个卷积维度指定不同的值,请将膨胀因子指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。

使用膨胀因子来增加过滤器在输入数据上的接受域(过滤器可以看到的输入区域)。使用膨胀因子对应于的有效滤镜尺寸filterSize + (filterSize-1)*(dilationFactor-1)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

应用于数据边缘的裁剪,指定为下列之一。

  • “相同”-裁剪的设置,使输出大小是相同的输入大小时,步幅1.一般来说,每个空间维度的输出大小为inputSize *步,在那里inputSize是输入沿卷积维数的大小。

  • 数值标量-相同的裁剪值应用于卷积维的两端。

  • 数值向量——沿着每个卷积维度应用不同的裁剪值。使用一个大小相同的向量d,在那里d输入数据的卷积维数。的向量的第Th元素指定应用到的开始和结束处的裁剪卷积维数。

  • 数值矩阵——不同的裁剪值应用于每个卷积维的开始和结束。使用大小为2 × -的矩阵d,在那里d输入数据的卷积维数。的元素(d)指定应用于卷积维数开始处的裁剪d.的元素(2 d)指定应用到卷积维数末端的裁剪d.例如,在二维中,格式为(前、左;下,右)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出参数

全部折叠

特性映射,返回为dlarray.输出Y具有与输入相同的底层数据类型X

如果输入数据X是格式化的dlarray,然后Y格式与X.如果输入数据没有格式化dlarray,然后Y是未格式化的dlarray或与输入数据具有相同维序的数值数组。

的大小“C”(通道)的尺寸Y取决于的大小权重输入。的大小“C”(通道)输出维数Y是尺寸的乘积吗numFiltersPerGroup而且numGroups权重论点。如果权重是格式化的dlarray,此产品的尺寸与该产品的尺寸相同“C”(信道)维和二次“U”(不明)维度。

算法

全部折叠

转置卷积

标准卷积操作downsamples通过对输入应用滑动卷积滤波器得到的输入。通过将输入和输出扁平化,可以将卷积运算表示为 Y C X + B 对于卷积矩阵C偏差向量B这可以从层权重和偏差中推导出来。

类似地,转置卷积操作upsamples通过对输入应用滑动卷积滤波器得到的输入。为了对输入进行上采样,而不是使用滑动滤波器进行下采样,层零填充输入的每个边,其大小为对应的滤波器边大小- 1。

通过将输入和输出扁平化,转置卷积运算等价于 Y C X + B ,在那里C而且B分别表示由层权值和偏差导出的标准卷积的卷积矩阵和偏差向量。这个操作相当于一个标准卷积层的后向函数。

扩展功能

版本历史

R2019b引入