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
选择。
例子
执行二维转置卷积
创建一个格式化的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 '
输入参数
X
- - - - - -输入数据
dlarray
|数字数组
输入数据,指定为格式化的dlarray
,一个非格式化dlarray
,或数字数组。
如果X
是一个非格式化dlarray
或数值数组,则必须使用DataFormat
选择。如果X
是数字数组吗权重
或偏见
必须是一个dlarray
对象。
默认情况下,这个函数对最多三个维度进行卷积X
标签“S”
(空间)。对标注的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
权重
- - - - - -过滤器
dlarray
|数字数组
过滤器,指定为格式化的dlarray
,一个非格式化dlarray
,或数字数组。
权重的大小和格式取决于任务的类型。如果权重
是一个非格式化dlarray
或者一个数字数组,那么的大小和形状权重
取决于WeightsFormat
选择。
下表描述了各种任务的权重的大小和格式。可以使用格式化命令指定具有任意顺序维数的数组dlarray
对象或使用WeightsFormat
选择。当权重具有具有相同标记的多个维度时(例如,多个标记的维度)“S”
),那么这些维度必须按照表中所描述的顺序排列。
任务 | 所需的尺寸 | 大小 | 例子 | |
---|---|---|---|---|
权重 | 格式 | |||
一维卷积转置 | “S” (空间)或“T” (时间) |
过滤器的大小 |
|
“并” (未指明的空间、通道) |
“C” (通道) |
数量的渠道 | |||
“U” (不明) |
数量的过滤器 | |||
一维分组转置卷积 | “S” (空间)或“T” (时间) |
过滤器的大小 |
|
“SCUU” (空间的,通道的,未指定的,未指定的) |
“C” (通道) |
每个组的通道数 | |||
第一个“U” (不明) |
每组过滤器的数量 | |||
第二个“U” (不明) |
数量的组 | |||
二维卷积转置 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSCU” (空间的,空间的,通道,未指定) |
第二个“S” (空间)或“T” (时间) |
滤波器的宽度 | |||
“C” (通道) |
数量的渠道 | |||
“U” (不明) |
数量的过滤器 | |||
二维分组转置卷积 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSCUU” (空间的,空间的,通道的,未指定的,未指定的) |
第二个“S” (空间)或“T” (时间) |
滤波器的宽度 | |||
“C” (通道) |
每个组的通道数 | |||
第一个“U” (不明) |
每组过滤器的数量 | |||
第二个“U” (不明) |
数量的组 | |||
三维转置卷积 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSSCU” (空间的,空间的,空间的,通道,未指定) |
第二个“S” (空间) |
滤波器的宽度 | |||
第三“S” (空间)或“T” (时间) |
过滤器深度 | |||
“C” (通道) |
数量的渠道 | |||
“U” (不明) |
数量的过滤器 |
提示
默认情况下,这个函数对最多三个维度进行卷积X
标签“S”
(空间)。对标注的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
偏见
- - - - - -偏见常数
dlarray
向量|dlarray
标量|数值向量|数字标量
偏差常数,指定为格式化或非格式化dlarray
向量或dlarray
标量,数值向量或数值标量。
如果
偏见
是标量或只有单一维度,则对输出的每个条目应用相同的偏置。如果
偏见
具有非单例维度,的每个元素偏见
是否将偏差应用到相应的卷积滤波器中权重
.元素的个数偏见
参数指定的筛选器数量必须匹配。
如果偏见
是一个格式化的dlarray
,非单例维度必须是标记的通道维度“C”
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:步= 2
将每个过滤器的步幅设置为2。
DataFormat
- - - - - -未格式化数据的维度顺序
特征向量|字符串标量
未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT
它为数据的每个维度提供一个标签。
的格式时dlarray
对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:
“S”
——空间“C”
——频道“B”
-批处理(例如,样品和观察)“T”
-时间(例如,序列的时间步长)“U”
——未指明的
您可以指定多个标记的维度“S”
或“U”
.你可以使用标签“C”
,“B”
,“T”
最多一次。
您必须指定DataFormat
当输入数据没有格式化时dlarray
.
数据类型:字符
|字符串
WeightsFormat
- - - - - -权重的维度顺序
特征向量|字符串标量
权重的维度顺序,指定为字符向量或字符串标量,为权重的每个维度提供标签。
的默认值。WeightsFormat
取决于任务:
任务 | 默认的 |
---|---|
一维卷积转置 | “并” (未指明的空间、通道) |
一维分组转置卷积 | “SCUU” (空间的,通道的,未指定的,未指定的) |
二维卷积转置 | “SSCU” (空间的,空间的,通道,未指定) |
二维分组转置卷积 | “SSCUU” (空间的,空间的,通道的,未指定的,未指定的) |
三维转置卷积 | “SSSCU” (空间的,空间的,空间的,通道,未指定) |
支持的维度标签组合取决于卷积的类型,有关更多信息,请参阅权重
论点。
提示
默认情况下,这个函数对最多三个维度进行卷积X
标签“S”
(空间)。对标注的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
数据类型:字符
|字符串
步
- - - - - -遍历输入数据的步长
1
(默认)|数字标量|数值向量
遍历输入数据的步长,指定为数值标量或数值向量。
若要对所有卷积维度使用相同的步长,请将步幅指定为标量。要为每个卷积维度指定不同的值,请将步幅指定为一个向量,其中元素的顺序与数据格式中的维度标签对应。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
DilationFactor
- - - - - -过滤器膨胀系数
1
(默认)|数字标量|数值向量
过滤器膨胀系数,指定为数值标量或数值向量。
若要在所有卷积维数中使用膨胀因子,请将膨胀因子指定为标量。要为每个卷积维度指定不同的值,请将膨胀因子指定为一个向量,其中元素的顺序与数据格式中的维度标签对应。
使用膨胀因子来增加滤波器对输入数据的接受域(滤波器可以看到的输入区域)。使用膨胀系数对应的有效过滤器尺寸为filterSize + (filterSize-1) * (dilationFactor-1)
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
裁剪
- - - - - -裁剪应用于数据的边缘
0(默认)|“相同”
|数字标量|数值向量|数字矩阵
适用于数据边缘的裁剪,指定为下列之一。
“相同”
-裁剪设置使输出大小与输入大小相同,当stride为1
.更一般地说,每个空间维度的输出大小为inputSize *步
,在那里inputSize
是输入沿卷积维数的大小。数值标量——相同的裁剪值应用于卷积维度的两端。
数字向量——沿着每个卷积维度应用不同的裁剪值。使用一个大小的向量
d
,在那里d
是输入数据的卷积维数。的我
向量的第Th元素指定了应用于开始和结束的裁剪我
卷积的维度。数值矩阵——不同的裁剪值应用于每个卷积维度的开始和结束。使用大小为2乘-的矩阵
d
,在那里d
是输入数据的卷积维数。的元素(d)
指定应用于卷积维的开始的裁剪d
.的元素(2 d)
指定应用到卷积维度末端的裁剪d
.例如,二维的格式是(前、左;下,右)
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
Y
——功能图
dlarray
特性映射,返回为dlarray
.输出Y
是否与输入具有相同的基础数据类型X
.
如果输入数据X
是一个格式化的dlarray
,然后Y
格式与X
.如果输入数据没有格式化dlarray
,然后Y
是一个非格式化dlarray
或具有与输入数据相同维度顺序的数值数组。
的大小“C”
(频道)的维度Y
取决于大小权重
输入。的大小“C”
(通道)输出尺寸Y
这是尺寸的乘积吗numFiltersPerGroup
而且numGroups
在权重
论点。如果权重
是一个格式化的dlarray
,此产品的尺寸与本产品相同“C”
(通道)次元和次元“U”
(不明)维度。
算法
转置卷积
的标准卷积操作downsamples通过对输入应用滑动卷积滤波器来实现输入。通过将输入和输出扁平化,可以将卷积运算表示为 对于卷积矩阵C和偏见向量B这可以从层权重和偏差中推导出来。
类似地,转置卷积操作upsamples通过对输入应用滑动卷积滤波器来实现输入。为了对输入进行上采样而不是使用滑动滤波器进行下采样,该层对输入的每条边进行零填充,填充的大小为相应的滤波器边大小减1。
通过将输入和输出压扁,转置卷积运算等价于 ,在那里C而且B分别表示由层权值和层偏差导出的标准卷积的卷积矩阵和偏差向量。这个操作相当于标准卷积层的后向函数。
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
当以下输入参数中至少有一个是
gpuArray
或者一个dlarray
使用类型的基础数据gpuArray
,该功能运行在GPU上。X
权重
偏见
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
介绍了R2019b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。