主要内容

crosschannelnorm

使用本地响应进行跨信道方规范化

描述

跨通道归一化操作使用不同通道中的本地响应来归一化每个激活。跨渠道标准化通常遵循线性整流函数(Rectified Linear Unit)操作。跨通道归一化也称为局部响应归一化。

请注意

该函数将跨通道归一化操作应用于dlarray数据。类中应用跨通道规范化layerGraph对象或数组,使用以下图层:

例子

Y= crosschannelnorm (XwindowSize的每个元素归一化X相对于附近通道中相同位置的局部值。中的规范化元素Y都是从元素中计算出来的X用下面的公式。

y x K + α * 年代 年代 w n d o w 年代 z e β

在哪里yYx对应的元素是X党卫军通道区域中元素平方和是否定义为windowSize,αβ,K归一化中的超参数。

例子

Y= crosschannelnorm (XwindowSize、“DataFormat”FMT)还指定维度格式FMTX是未格式化的dlarray,除了前面语法中的输入参数外。输出Y未格式化的数组是否具有相同的维度顺序X

例子

Y= crosschannelnorm (___名称,值除以前语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,“贝塔”,0.8属性的值β对比常数0.8

例子

全部折叠

使用crosschannelnorm使用邻近通道的值将每个小批的观测值归一化。

将输入数据创建为10个随机值的观察值,其高和宽分别为8个和6个通道。

身高= 8;宽度= 8;通道= 6;观察值= 10;X = rand(高度,宽度,通道,观测值);X = dlarray(X,“SSCB”);

使用通道窗口大小为3计算跨通道归一化。

Y = crosschannelnorm(X,3);

的每一个值X使用前一个通道中的元素和下一个通道中的元素进行规范化。

数组边缘的值使用来自较少通道的贡献进行规范化,具体取决于通道窗口的大小。

将输入数据创建为一个数组,数组的高和宽分别为两个和三个通道。

身高= 2;宽度= 2;通道= 3;X = ones(高度,宽度,通道);dlX = dlarray(X);

使用通道窗口大小的数据规范化3.,一个 α 1,一个 β 1,以及 K 1 e-5.指定的数据格式SSC的

d = crosschannelnorm(dlX,3,“α”,1,“β”,1,“K”1 e-5“DataFormat”SSC的);

通过将三通道阵列重塑为二维矩阵,比较原始数据和规范化数据中的值。

dlX =重塑(dlX,2,6)
dlX = 2x6 dlarray 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
dlY =重塑(dlY,2,6)
dlY = 2x6 dray 1.5000 1.5000 1.0000 1.0000 1.5000 1.5000 1.5000 1.5000 1.0000 1.5000 1.5000 1.5000

对于第一个和最后一个通道,平方和仅使用两个值计算。对于中间的通道,平方和包含所有三个通道的值。

通常,跨通道归一化操作紧随ReLU操作之后。例如,GoogLeNet架构包含卷积操作,然后是ReLU和跨通道归一化操作。

这个函数modelFunction在本例的末尾定义了如何在模型中使用跨通道归一化。使用modelFunction找到部分输入数据的分组卷积和ReLU激活,然后使用窗口大小为的跨通道归一化对结果进行归一化5

将输入数据创建为随机值的单个观测值,其高和宽分别为10和4个通道。

高度= 10;宽度= 10;通道= 4;观察结果= 1;X = rand(高度,宽度,通道,观测值);dlX = dlarray(X,“SSCB”);

创建分组卷积操作的参数。对于权重,使用3的滤波器高度和宽度,每组2个通道,每组3个滤波器,以及两组。使用0作为偏差值。

filterSize = [3 3];numChannelsPerGroup = 2;numFiltersPerGroup = 3;numGroups = 2;Params = struct;params. convc .weights = rand(filterSize(1),filterSize(2),numChannelsPerGroup,numFiltersPerGroup,numGroups);params. convc .bias = 0;

应用modelFunction数据dlX

dlY = modelFunction(dlX,params);
函数dlY = modelFunction(dlX,params) dlY = dlconv(dlX,params. convn .weights,params. convn .bias);dlY = relu(dlY);ly = crosschannelnorm(ly,5);结束

输入参数

全部折叠

输入数据,指定为dlarray有或没有数据格式。当X是未格式化的dlarray时,必须使用FMT, DataFormat”名称-值对。

你最多可以指定两个维度X作为“年代”维度。

数据类型:|

通道窗口的大小,它控制用于规范化每个元素的通道数量,指定为正整数。

如果windowSize是偶数,那么窗口是不对称的。软件会查看之前的数据地板((windowSize-1) / 2)渠道和以下内容地板((windowSize) / 2)频道。例如,如果windowSize4,则该函数通过前一个通道中的相邻元素和后两个通道中的相邻元素对每个元素进行归一化。

例子:3.

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

名称-值参数

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

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

例子:“阿尔法”,2的军医,β,0.8将乘法归一化常数设置为0.0002,将对比常数指数设置为0.8。

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

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

  • “S”——空间

  • “C”——频道

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

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

  • “U”——未指明的

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

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

数据类型:字符|字符串

标准化常数(α),它将平方值的和相乘,指定为逗号分隔的对,由“α”和一个数值标量。默认值为1的军医

例子:“阿尔法”,2的军医

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

对比常数(β),指定为逗号分隔的对,由“β”和一个大于或等于的数字标量0.01.默认值为0.75

例子:“贝塔”,0.8

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

归一化超参数(K)用于避免归一化中的奇点,指定为由逗号分隔的对组成“K”和一个大于或等于的数字标量1 e-5.默认值为2

例子:“K”,2.5

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

输出参数

全部折叠

规范化的数据,返回为dlarray.输出Y具有与输入相同的底层数据类型X

如果输入数据X是格式化的dlarrayY尺寸标签和X.如果输入数据是未格式化的dlarrayY是未格式化的dlarray具有与输入数据相同的维度顺序。

更多关于

全部折叠

横跨海峡的正常化

crosschannelnorm函数根据指定通道窗口中的本地响应对每个激活响应进行规范化。有关的详细信息,请参见局部响应规范化crossChannelNormalizationLayer参考页面。

扩展功能

版本历史

R2020a中引入