主要内容

dltranspconv

深入学习转置卷积

描述

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

笔记

该功能适用​​于换档卷积操作的深度学习dlarray.数据。如果你想在a内应用转置卷积layerGraph对象或者数组,使用以下图层之一:

例子

d= dltranspconv (DLX.权重偏见计算输入的深度学习转置卷积DLX.使用定义的过滤器权重,并添加一个常数偏见.输入DLX.是一个格式化的dlarray.与尺寸标签。转置卷积作用于你指定的维数'“C”方面。输出d是一个格式化的dlarray.尺寸标签与DLX.

d= dltranspconv (DLX.权重偏见、“DataFormat”FMT)还指定维度格式FMT.DLX.不是格式化的dlarray..输出d是一个非格式化dlarray.尺寸顺序和DLX.

例子

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

例子

全部收缩

对图像进行卷积,然后使用转置卷积来调整卷积图像的大小,使其与原始图像的大小相同。

导入图像数据并将其转换为adlarray.

X = imread (“sherlock.jpg”);dlX = dlarray(单(X),'SSC');

显示图像。

imshow(x)

图中包含一个坐标轴。轴包含一个image类型的对象。

初始化卷积滤波器和偏置项。指定一个未完成的卷积,将单个过滤器应用于输入数据的所有三个通道。

filterHeight = 10;filterWidth = 10;numChannelsPerGroup = 3;numFiltersPerGroup = 1;numGroups = 1;重量=兰德(filterHeight filterWidth、numChannelsPerGroup numFiltersPerGroup, numGroups);偏见=兰德(numFiltersPerGroup * numGroups, 1);

执行卷积。使用一个'走吧'的价值2和一个“DilationFactor”的价值2

dly = dlconv(DLX,权重,偏见,'走吧'2,“DilationFactor”,3);

显示卷积图像。

Y = extractdata(海底);imshow(重新调节(Y))

图中包含一个坐标轴。轴包含一个image类型的对象。

初始化转置卷积滤波器和偏置。指定对输入应用三个滤波器的未分组转置卷积。使用与卷积操作相同的滤波器高度和宽度。

numChannelsPerGroupTC = 1;numFiltersPerGroupTC = 3;weightsTC =兰德(filterHeight filterWidth、numFiltersPerGroupTC numChannelsPerGroupTC, numGroups);biasTC =兰德(numFiltersPerGroupTC * numGroups, 1);

执行转置卷积。使用与卷积运算相同的步幅和扩张因子。

dlz = dltranspconv(dly,proceivestc,biacstc,'走吧'2,“DilationFactor”,3);

显示转置卷积后的图像。

z =提取数据(DLZ);imshow(Rescale(z))

图中包含一个坐标轴。轴包含一个image类型的对象。

在转换卷积之后比较原始图像,卷积图像和图像的大小。

sizeX大小(X) =
sizeX =1×3640 960 3
sizey = size(y)
sizeY =1×2307 467.
sizez = size(z)
sizeZ =1×3640 960 3

转置卷积将卷积数据上采样到原始输入数据的大小。

将转置卷积应用于三组输入数据,每组两个通道。每组应用四个过滤器。

使用六个通道创建输入数据100乘100的10个观察。

身高= 100;宽度= 100;渠道= 6;numObservations = 10;X =兰德(高度、宽度、通道numObservations);dlX = dlarray (X,“SSCB”);

初始化用于转换卷积操作的滤波器。指定三组转换卷积,每个卷积将四个过滤器应用于输入数据的两个通道。

filterHeight = 8;filterWidth = 8;numChannelsPerGroup = 2;numFiltersPerGroup = 4;numGroups = 3;重量=兰德(filterHeight filterWidth、numFiltersPerGroup numChannelsPerGroup, numGroups);

初始化偏差项。

偏见=兰德(numFiltersPerGroup * numGroups, 1);

执行转置卷积。

海底= dltranspconv (dlX、重量偏差);大小(海底)
ans =.1×4107 107 12 10
昏暗(dly)
ans ='sscb'

卷积输出的12个通道代表了每组四个过滤器的三组转换卷积。

输入参数

全部收缩

输入数据,指定为dlarray.有或没有维度标签或数字数组。什么时候DLX.不是格式化的dlarray.,则必须使用FMT, DataFormat”.如果DLX.是一个数字数组,至少是权重偏见必须是A.dlarray.

卷积在尺寸上使用您使用的空间尺寸指定'尺寸标签。您可以指定最多三个维度DLX.作为'方面。

数据类型:|

过滤器,指定为dlarray.有或没有标签或数字阵列。这权重参数指定过滤器的大小和值,以及分组转换卷积的筛选器数量和组数。

将权重指定为a过滤——- - - - - -numFiltersPerGroup——- - - - - -numchannelspergroup.——- - - - - -numgroups.大批。

  • 过滤- 卷积滤波器的大小。过滤最多可以有三个维度,这取决于输入数据中的空间维度的数量。

    输入数据'方面 过滤
    一维 H,在那里H对应于过滤器的高度
    2-D. H——- - - - - -W.,在那里HW.分别对应于滤波器的高度和宽度
    3-D. H——- - - - - -W.——- - - - - -D.,在那里HW.,D.对应于过滤器的高度,宽度和深度

  • numFiltersPerGroup-每个组内应用的过滤器数量。

  • numchannelspergroup.- 用于分组转换卷积的每个组内的通道数。numchannelspergroup.必须等于输入数据中的通道数除以numgroups.,组的数量。对于未完成的卷积,在哪里numGroups = 1numchannelspergroup.必须等于输入数据中的通道数。

  • numgroups.- 组数(可选)。什么时候numGroups > 1时,函数进行分组转置卷积。什么时候numGroups = 1时,函数执行非分组转置卷积;在本例中,这个维度是单例的,可以省略。

如果权重是一个格式化的dlarray.,它可以标记多个空间维度',一个通道尺寸标记“C”,以及至多两个标注的其他维度'U'.的数量'尺寸必须匹配的数量'输入数据的维度。标签尺寸与过滤器规格如下所示。

过滤器规格 尺寸标签
过滤 最多三个'
numFiltersPerGroup “C”
numchannelspergroup. 第一个'U'
numgroups.(可选的) 第二个'U'

数据类型:|

偏差常量,指定为adlarray.矢量或dlarray.标量或没有标签,数字矢量或数字标量。

  • 如果偏见是标量或仅具有单级尺寸,对输出的每个条目应用相同的偏差。

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

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

数据类型:|

名称值对参数

指定可选的逗号分离对名称,价值参数。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

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

未格式化输入数据的维度顺序,指定为逗号分隔对,由“DataFormat”以及字符向量或字符串标量FMT.为数据的每个维度提供标签。

在指定格式的时候dlarray.对象中,每个字符为数据的每个维度提供一个标签,并且必须是以下内容之一:

  • '——空间

  • “C”——频道

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

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

  • 'U'——未指明的

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

您必须指定“DataFormat”当输入数据不是格式化时dlarray.

例子:'dataformat','sscb'

数据类型:字符|字符串

遍历输入数据的步长,指定为包括的逗号分隔对'走吧'和数字标量或数字向量。如果您指定'走吧'作为标量,相同的值用于所有空间尺寸。如果您指定'走吧'作为与输入数据的空间维数相同大小的向量,向量值用于对应的空间维数。

的默认值'走吧'1

例子:'stride',3

数据类型:|

过滤器膨胀系数,指定为逗号分隔对,由“DilationFactor”以及以下之一。

  • 数值标量-对所有空间维度应用相同的膨胀因子值。

  • 数值向量-在每个空间维度上应用不同的膨胀因子值。使用大小向量D.,在那里D.是输入数据的空间维数。这一世向量的第Th元素指定应用于的膨胀因子一世空间维度。

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

例子:“DilationFactor”,2

数据类型:|

裁剪应用于数据的边缘,指定为逗号分隔对组成“种植”以及以下之一。

  • “相同”-设置裁剪,以便当步幅为时,输出大小与输入大小相同1.更一般地,每个空间维度的输出大小是inputSize *步,在那里inputSize是沿空间尺寸的输入的大小。

  • 数字标量-对所有空间维度的两端应用相同的裁剪值。

  • 数字向量——沿着每个空间维度应用不同的裁剪值。使用大小向量D.,在那里D.是输入数据的空间维数。这一世向量的第Th元素指定了沿着的开始和结束的裁剪一世空间维度。

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

例子:“裁剪”、“相同”

数据类型:|

输出参数

全部收缩

特征映射,作为一个返回dlarray..输出d具有与输入相同的底层数据类型DLX.

如果输入数据DLX.是一个格式化的dlarray.d有相同的尺寸标签DLX..如果输入数据没有格式化dlarray.d是一个非格式化dlarray.或数字阵列与输入数据相同的维度顺序。

尺寸“C”通道尺寸d取决于权重输入。尺寸“C”维度的输出y是尺寸大小的产物numFiltersPerGroupnumgroups.权重论点。如果权重是一个格式化的dlarray.,这个产品和这个产品的尺寸是一样的“C”尺寸和第二'U'维度。

扩展功能

在R2019B中介绍