主要内容

dltranspconv

深度学习转置了卷积

描述

转置卷积操作上采样特征映射。

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 =兰特(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;重量=兰德(filterSize (1) filterSize (2), numFilters, numChannels);偏见= 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 =兰特(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;重量=兰德(filterSize (1) filterSize (2), numFiltersPerGroup, numChannelsPerGroup, numGroups);偏见= 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”(空间的,空间的,空间的,通道,未指定)

支持的维度标签组合取决于卷积的类型,有关更多信息,请参阅权重论点。

提示

默认情况下,这个函数对最多三个维度进行卷积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

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

  • “相同”-裁剪设置使输出大小与输入大小相同,当stride为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

Baidu
map