掌桥专利:专业的专利平台
掌桥专利
首页

用于卷积神经网络的超像素方法

文献发布时间:2023-06-19 10:58:46


用于卷积神经网络的超像素方法

分案说明

本申请属于申请日为2017年7月13日的中国发明专利申请201710570292.6的分案申请。

技术领域

本说明书涉及通过神经网络的层处理输入来生成输出。

背景技术

神经网络是一种对于所接收的输入采用一层或多层的非线性单元来预测输出的机器学习模型。一些神经网络除输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作该网络中的另一层—例如下一隐藏层或输出层-的输入。该网络的每一层依据相应的参数集的当前值来根据所接收的输入生成输出。

发明内容

大体上,本说明书中描述的主题的一个创新方面能够体现在用于更有效率地执行卷积神经网络层的计算的方法中,所述卷积神经网络层被配置来接收X乘Y乘Z输入张量并且使用一个或多个卷积神经网络层权重矩阵处理所接收的输入张量来生成U乘V乘W输出张量。在一些方面中,所述方法包括:将所述X乘Y乘Z输入张量变换为X’乘Y’乘Z’输入张量,其中,X’小于或等于X,Y’小于或等于Y,并且Z’大于或等于Z;获得一个或多个经修改的卷积神经网络层权重矩阵,其中(i)经修改的权重矩阵对所述X’乘Y’乘Z’输入张量进行运算以生成U’乘V’乘W’输出张量,并且(ii)所述U’乘V’乘W’输出张量包括经变换的U乘V乘W输出张量,其中,U’小于或等于U,V’小于或等于V,并且W’大于或等于W;以及使用经修改的权重矩阵处理所述X’乘Y’乘Z’输入张量以生成所述U’乘V’乘W’输出张量,其中,所述U’乘V’乘W’输出张量包括所述U乘V乘W输出张量。

此方面的其他实施例包括对应的计算机系统、装置、和记录在一个或多个计算机存储设备上的计算机程序,其均配置来执行所述方法的动作。一个或多个计算机的系统能够被配置成依靠安装在系统上的软件、固件、硬件、或者以上的任何组合来执行特定操作或动作,所述软件、固件、硬件、或者以上的任何组合在操作时可以使得所述系统执行所述动作。一个或多个计算机程序能够被配置成依靠包括指令来执行特定操作或动作,所述指令在由数据处理装置执行时使得所述装置执行所述动作。

前述实施例和其他实施例均能够可选地独自或以组合方式包括以下特征中的一个或多个。

在一些实施方式中,X’等于X除以自然数N的向上舍入,Y’等于Y除以自然数M的向上舍入,并且Z’等于Z乘以NM。

在一些实施方式中,所述X乘Y乘Z输入张量表示XY个第一输入并且所述X’乘Y’乘Z’输入张量表示X’Y’个超级输入,其中每个超级输入包括多个第一输入。

在一些实施方式中,所述多个第一输入的数目等于NM个输入。

在一些情况下,经修改的权重矩阵对所述X’乘Y’乘Z’输入张量的运算等同于所述卷积神经网络层权重矩阵对所述X乘Y乘Z输入张量的运算。

在一些实施方式中,经修改的权重矩阵的元(entry)包括一个或多个卷积神经网络层权重矩阵。

在一些情况下,经修改权的重矩阵包括具有带状结构的矩阵。

在一些实施方式中,U’等于U除以自然数P的向上舍入,V’等于V除以自然数Q的向上舍入,并且W’等于W乘以PQ。

在一些实施方式中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出。

在一些情况下,所述多个第一输出等于PQ个输出。

在一些实施方式中,所述卷积神经网络层包括池化子层。

在一些情况下,所述方法进一步包括将所述聚合子层替换为在经变换的输入张量上的跨步。

在一些实施方式中,所述卷积神经网络层包括X维度上的步幅S和Y维度上的步幅T,并且其中,步幅S、步幅T、输出张量U乘V乘W以及经变换输出张量U’乘V’乘W’之间的关系为:U’=ceiling(U/NS)和V’=ceiling(V/MT)。

在一些情况下,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,并且所述多个第一输出中的第一输出的数目取决于所述卷积神经网络层权重矩阵的维度。

在一些实施方式中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,并且所述多个第一输出中的输出的数目取决于以下中的一个或多个:(i)所述卷积神经网络层的架构,(ii)包括所述卷积神经网络层的神经网络模型的架构,或者(iii)实现所述卷积神经网络层的设备。

在一些情况下,对所述一个或多个卷积神经网络层权重矩阵的所述修改是仅软件修改。

本说明书中所描述的主题能够被实现在特定实施例中以便实现以下优点中的一个或多个。

卷积神经网络层能够使用矩阵乘法运算来计算。然而,当卷积神经网络层的输入或输出深度浅的时候,软件库和硬件矩阵乘法单元二者可能以低效率来执行,因为这些输入和输出深度映射到相乘的矩阵中的一个的维度。作为一个示例,输入图像可以具有RGB数据,得到3的输入深度,并且该卷积神经网络层可以产生16的输出深度,其中3和16在以上意义下是浅的。这产生了低效率,因为典型的现代计算机架构由于其缓存、存储器存取和计算单元的架构设计,能够以与具有浅深度的层相同或类似的效率来应对具有达一定深度的高深度的层。

在卷积神经网络层中的标准运算将例如单个像素的单个输入,映射至矩阵乘法运算的单个行或列。本说明书中所述的超像素卷积神经网络层将与例如多个输入像素的多个输入相当的数据聚组在一起,以空间范围或索引(spatial extent or indexing)(例如,X和Y维度)换得深度范围或索引(例如,Z维度)。经聚组的输入被更有效率地实现并且使用矩阵乘法单元来处理,由此提高了系统实现超像素卷积神经网络层技术的计算效率。例如,超像素CNN中的被配置来处理经聚组的输入的神经网络层的存储器内表示可以更为紧凑,由此使得所述层能够在具有有限大小的低时延存取存储器中来存储和处理所接收的输入。因此,实现这样的技术的系统可以受益于任何矩阵机器上的卷积神经网络的更高的计算吞吐量、更低的计算时延、更短的I/O传输时间和更好的能量使用,所述矩阵机器例如中央处理单元、图形处理器单元、或专用神经网络处理单元。此外,系统可以实现所述技术而无需修改系统硬件,即所述技术可以完全使用系统软件来实现,并且因此适用于用来执行矩阵乘法的所有机器。

本说明书中所述的超像素卷积神经网络层可以包括比标准卷积神经网络层数目减少的内核元素,其进而可以减少在使用超像素卷积神经网络层时需要执行的矩阵乘法运算的数目。

此外,本说明书中所述的实现超像素卷积神经网络层的系统可以将具有大于1的步幅的卷积神经网络层变换为具有等于1的步幅的超像素卷积神经网络层。实现神经网络系统的一些计算机架构可能要求具有等于1的步幅的超像素卷积神经网络层,所述计算机架构例如仅能够以等于1的步幅来直接执行卷积计算的那些架构,诸如包括诸如脉动(systolic)阵列的矩阵乘法单元的架构。此外,在一些情况下,具有等于1的步幅的超像素卷积神经网络层在所述架构上可以更有效率地操作,例如因为可以不需要以大于1的步幅执行卷积计算所需的芯片外处理或其他替代办法。因此,改进了实现超像素卷积神经网络层的系统的计算效率和可用性。

本说明书中描述的主题还涉及使用超像素卷积神经网络层的图像识别方法/系统。

本说明书中的主题的一个或多个实施例的细节在附图和以下描述中的阐述。本主题的其他特征、方面、和优点根据该描述、附图、和权利要求书将变得显而易见。

附图说明

图1A是超像素卷积神经网络系统的示例。

图1B是示出卷积神经网络层与超像素卷积神经网络层之间的关系的图。

图2是有效率地执行卷积神经网络层的计算的示例过程的流程图。

图3是超像素输入张量变换的示例图示。

图4是卷积神经网络层权重矩阵修改的示例图示。

图5是包括超像素内核跨步的卷积神经网络层权重矩阵修改的示例图示。

各附图中,相似附图标记和名称指示相似的元件。

具体实施方式

图1A示出了示例超像素(superpixel)卷积神经网络系统100。超像素卷积神经网络系统100是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中可以实现以下描述的系统、组件和技术。

超像素卷积神经网络系统100是机器学习系统,其接收系统输入端102并根据系统输入端102生成系统输出104。

超像素卷积神经网络系统100可以被配置为接收数字数据输入并且基于此输入来生成分值或分类输出。例如,如果向超像素卷积神经网络系统100的输入是图像或者已从图像提取的特征,则对于给定图像,例如使用被包括在神经网络系统100中的一个或多个完全连接或卷积神经网络层,由超像素卷积神经网络系统100生成的输出可以是一组对象类别中的每一个的分值。每个分值可以表示图像包含属于该类别的对象的图像的估计可能性。

特别地,超像素卷积神经网络系统100实现卷积神经网络,其包括多个卷积神经网络层,该多个卷积神经网络层包括卷积神经网络层A106、卷积神经网络层B 108和超像素卷积神经网络层110的。卷积神经网络层是其神经元或节点在逻辑上布置成三维阵列:宽度、高度和深度的神经网络层。卷积神经网络层内的神经元连接到该卷积神经网络层之前的层的小区域,该区域称为感受域(receptive field)或内核块(kernel patch),并且卷积神经网络层内部的每个神经元检测相同的特征,构成平移不变性的性质。卷积神经网络层可以与存储该层的参数的当前值的各个权重矩阵或内核相关联。该层依据该神经网络层的参数的当前值,例如通过执行多个矩阵乘法运算来根据输入生成输出。示例卷积神经网络层在“Large-scale Video Classication with Convolutional Neural Networks(具有卷积神经网络的大规模视频分类)”,Andrej Karpathy,George Toderici,Sanketh Shetty,Thomas Leung,Rahul Sukthankar和Li Fei-Fei,Proceedings of InternationalComputer Vision and Pattern Recognition(CVPR 2014),IEEE中被更详细地描述。

超像素卷积神经网络的每个层被配置为接收相应的层输入并处理该层输入以根据该输入来生成相应的层输出。例如,包括在超像素卷积神经网络系统100中的卷积神经网络层可以被配置为接收X乘Y乘Z输入张量,并且使用一个或多个相应的卷积神经网络层权重矩阵或内核来处理所接收的输入张量,以生成U乘V乘W输出张量。张量是数字或例如字符串的其他值的多维数组,具有与该数组的维度相对应的特定阶数。例如,标量值是0阶张量,数值向量是一阶张量,并且矩阵是二阶张量。

例如,卷积神经网络层可以被配置为接收表示包括特征深度为3的64×64个像素的图像的64×64×3输入张量,其中特征深度由红色、绿色和蓝色特征通道表示。卷积神经网络层可以使用一个或多个相应的卷积神经网络层矩阵来处理所接收的64×64×3输入张量,以生成相应的输出张量。

在一些实施方式中,卷积神经网络层可以包括控制卷积神经网络层的大小和输出量的一个或多个超参数(hyperparameter)。例如,卷积神经网络层可以包括内核步幅(stride),该内核步幅控制卷积滤波器或权重矩阵在滤波器相对输入数据的评估之间在X和Y上移位多少。在一些实施方式中,卷积神经网络层可以包括或连接到池化(pooling)层——非线性下采样的形式。例如,卷积神经网络层可以包括对输入张量的深度切层(slice)运算并在空间上调整输入张量大小的池化步幅。继续上述示例,卷积神经网络层因此可以生成相应的U乘V乘W输出张量,其中U小于或等于X,V小于或等于Y并且W大于或等于Z,例如,32乘32乘32的输出张量(例如,对应于7乘7内核步幅和2乘2的池化步幅)。通常,内核跨步(striding)可以被认为是省略原始计算(例如,“在评估之间在X上中跳过2并且在Y上跳过2”),而池化是在步幅-1评估之后的后传递(例如,在池化中,利用1的步幅进行计算,并且选择池化窗口中每个组中的最大值,例如,输入数据的2×2部分。)

被包括在超像素神经网络系统100中的至少一个卷积神经网络层是超像素卷积神经网络层,例如,超像素卷积神经网络层110。超像素卷积神经网络层是如下的卷积神经网络层,其将超像素变换(transformation)(替选地称为修改(modification))应用到接收的卷积层输入和卷积神经网络层权重矩阵,以便生成不同形状但是数学上等效的超像素卷积神经网络层。

超像素卷积神经网络层110可以从超像素卷积神经网络层110之前的卷积神经网络层接收例如输入112的输入,例如,所接收的输入可以包括由超像素卷积神经网络层110之前的卷积神经网络层生成的输出。

超像素卷积神经网络层110可以包括超像素生成器114。超像素生成器114被配置为接收卷积神经网络输入并将接收到的输入变换成超像素层输入。超像素生成器114将接收到的输入的多个分量聚组在一起,以空间范围或索引——例如X和Y维度换得深度范围或索引——例如Z维度。这具有如下效果,Z层中的卷积神经网络层的深度不再浅,使得可以避免由浅Z层造成的低效率。

例如,超像素卷积神经网络层110可以接收X乘Y乘Z的输入张量以作为输入,该X乘Y乘Z的输入张量例如表示深度为Z的XY(X乘以Y)个像素。超像素生成器114被配置为将X乘Y乘Z输入张量变换为X’乘Y’乘Z’超像素输入张量,其中X’小于或等于X,Y’小于或等于Y,并且Z’大于或等于Z。下面的图3图示了由超像素生成器执行的示例超像素输入张量变换。

超像素卷积神经网络层110包括超像素权重矩阵116。超像素权重矩阵116是与该卷积神经网络层相对应的经修改的(替选地称为经变换的)卷积神经网络层权重矩阵。例如,响应于选择相应的卷积神经网络层来变换为超像素卷积神经网络层,可以相应地修改卷积神经网络层权重矩阵。超像素权重矩阵116对变换的卷积神经网络层输入进行运算。

例如,与超像素神经网络层110相对应的卷积神经网络层可以被配置为接收X乘Y乘Z输入张量。超像素神经网络层110可以将接收到的输入变换为X’乘Y’乘Z’超像素输入张量。在这种情况下,超像素权重矩阵可以包括对X’乘Y’乘Z’输入张量进行运算以生成U’乘V’乘W’输出张量的修改的权重矩阵,其中X’不一定等于U’,Y’不一定等于V’,并且Z’不一定等于W’。U’乘V’乘W’输出张量是变换的U乘V乘W输出张量,其中U’小于或等于U,V’小于或等于V,并且W’大于或等于W。例如,U’乘V’乘W’输出张量可以表示超像素输出张量,例如U乘V乘W输出张量的经聚组分量。在一些实施方式中,用于创建超像素输入张量或表示超像素输出张量的聚组可以不相同,例如,分量的数目和分量被聚组在一起的方式可以不同。下面参考图4图示了示例卷积神经网络层权重矩阵修改。此外,下面给出了用于生成超像素权重矩阵(具有跨步或不具有跨步,例如stride_x=stride_y=1)的示例算法(包括注释)

上面使用的示例超索引例程(SuperIndex routine)可以由以下定义,但不限于以下:

以上仅供说明之用。例如,在一些实施方式中,超索引例程可以不依赖于超像素内部的封包顺序。

超像素卷积神经网络层110使用修改的权重矩阵来处理变换的输入张量以生成变换的卷积神经网络层输出,例如超像素层输出118。所生成的经变换卷积神经网络层输出可以在数学上等效于使用未修改的卷积神经网络层权重矩阵来处理未变换的卷积神经网络输入而生成的神经网络输出。未修改的计算的所有输出值可以以这样的形式存在于所生成的变换卷积神经网络层输出中,使得它们可以通过执行反同态变换来计算,如下面参照图1B所述。例如,所生成的经变换卷积神经网络层输出可以包括输出的超集,其包括神经网络输出,该神经网络输出对应于通过使用(未修改)卷积神经网络层来处理(未变换)卷积神经网络输入而生成的神经网络输出。在一些实施方式中,可以将包含在超集中的附加输出提供给超像素神经网络系统100的后续层。例如,附加输出可对应于最初请求的未变换输出的“边缘外(off the edge)”的输出的“部分和(partial sums)”。如果超像素计算正在以比在单个超像素计算中有效率处置的X和Y大得多的X和Y来处置较大计算的一个“片(tile)”,则该部分和可以被保存和重用以获得更高的效率。下面参考图2更详细地描述使用超像素卷积神经网络层来处理输入输入。

在一些实施方式中,超像素卷积神经网络层110可以包括超像素去格式化器,其被配置为接收超像素输出并将接收的超像素输出变换成正常排序的输出。例如,如果当前的超像素卷积神经网络层产生4×4超像素输出,而下一个超像素卷积神经网络层被配置为处理8×8个超像素,则系统可以使用超像素去格式化器将4×4超像素变换为8×8超像素。在一些实施方式中,超像素卷积神经网络层——例如层110——的超像素去格式化器可以跟随该超像素权重矩阵——例如权重矩阵116,并且对该权重矩阵生成的输出取消聚组。在其他实施方式中,超像素卷积神经网络层的超像素去格式化器可以与超像素卷积神经网络层序列中的下一个超像素卷积神经网络层的超像素生成器一起包含或作为其一部分。

超像素卷积神经网络层110可以被包括在神经网络层序列中的各个位置处,并且在一些实施方式中,可以在序列中包括多个超像素卷积神经网络层。例如,在一些实施方式中,卷积神经网络层A和B中的一个或多个可以是超像素卷积神经网络层。在神经网络层序列中包括多个超像素卷积神经网络层的实施方式中,每个超像素卷积神经网络层可以对接收到的输入应用相应的变换来生成相应的超级输入,其中所生成的相应的超级输入可以包括不同大小的超级输入。

下表列出了多个超像素卷积神经网络层的系统的示例布局:

在上面的示例布局中,大多数神经网络层包括每层8×8的超像素集。响应于内核跨步,调整每超像素的像素数。“原始输入深度(Z)”列指定原始神经网络模型中的输入深度,“经变换输入深度(U)”列指定在使用指定的每超像素的像素对输入和权重进行变换后的输入深度。

下表中表示了多个超像素卷积神经网络层的系统的第二示例布局:

超像素卷积神经网络系统100可以在多批训练示例上训练,以便确定神经网络层的参数的训练值,即将参数的值从初始值调整为训练值。例如,在训练期间,超像素卷积神经网络系统100可以处理一批训练示例,并为该批次中的每个训练示例生成相应的神经网络输出。然后,可以使用该神经网络输出——例如通过常规梯度下降和反向传播神经网络训练技术——来调整超像素卷积网络系统100的组件的参数的值。由于修改的权重矩阵作出了每个原始权重的NM个副本,其中N和M表示超像素大小,如下文参照图2的步骤202所述,所以在反向传播训练过程期间,系统可以跨所有NM个副本添加权重梯度,以确定每个原始权重的值的净变化。超像素神经网络层训练是一个反向过程,其中深度范围或索引可以被换为空间范围或索引。

一旦神经网络被训练,超像素卷积神经网络系统100就可以接收新的神经网络输入以用于处理,并且处理通过该神经网络层输入的神经网络,以依据超像素卷积神经网络系统100的组件的参数的训练值来针对该输入生成新的神经网络输出。

在一些实施方式中,超像素神经网络系统100可以包括一个或多个解卷积神经网络层。在这些情况下,上述组件和技术可以反向操作以达到相同的效果,即超像素解卷积神经网络层可以将多个输入聚组在一起,以深度范围或索引换得空间范围或索引,并且可以相应地修改相应的解卷积神经网络层权重矩阵。

图1B是示出卷积神经网络层和超像素卷积神经网络层之间的关系的图160。

如图160所示,卷积神经网络层可以被配置为对输入激活(activation)I和权重矩阵W执行卷积运算“convolve”162,以生成层输出激活O 164。

类似地,例如上面参照图1A描述的修改的或变换的卷积神经网络层的超像素卷积神经网络层可以被配置来执行对变换的输入激活Transform(I)和变换的权重矩阵Transform(W)的卷积运算“convolve”168,以生成变换的层输出激活170。

图160示出分别将输入I连接到变换的输入Transform(I)以及将权重矩阵W连接到变换的权重矩阵Transform(W)的两个同态箭头。该同态箭头表示原始卷积神经网络层和修改的卷积神经网络成之间的同态关系。例如,该箭头将原始模型激活和权重映射到修改的或变换的模型激活和权重。类似地,图160示出将变换的输出Transform(O)连接到输出O的反同态箭头。该反同态表示原始的卷积神经网络层和修改的卷积神经网络层之间的反同态关系。例如,该箭头将变换的输出映射回到原始输出。

以下给出了用于变换原始模型激活的示例算法:

以下给出用于反同态的示例算法:

如图160所示,因为在应用卷积之前可能需要变换输入I和权重矩阵W,所以使用超像素卷积神经网络层生成卷积神经网络层输出所需要的运算数目可能大于对应的原始神经网络层所需要的运算数目。然而,由于超像素卷积神经网络层架构,执行较大数目的运算与由对应的原始神经网络层执行的较小数目的运算相比在运行时可以在计算上更快。

图2是有效率执行卷积神经网络层的计算的示例过程200的流程图,该卷积神经网络层被配置为接收X乘Y乘Z输入张量并且使用一个或多个卷积神经网络层权重矩阵来处理所接收的输入以生成U乘V乘W输出张量。为了方便起见,过程200将会被描述为由位于一个或更多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的例如图1A的超像素卷积神经网络系统100的超像素卷积神经网络系统能够执行过程200。

系统将X乘Y乘Z输入张量变换成X’乘Y’乘Z’超像素输入张量(步骤202)。系统通过以下来变换该输入张量:将多个输入聚组在一起,深度范围或索引换得空间范围或索引。例如,X’乘Y’乘Z’输入张量可以具有与X乘Y乘Z输入张量不同的维度。更具体地,X’可以小于或等于X,Y’可以小于或等于Y,以及Z’可以大于或等于Z。在一些实现方式中,X’等于X除以自然数N的向上舍入(ceiling)——例如,大于或等于X除以自然数N的最小整数,Y’等于Y除以自然数M的向上舍入,以及Z’等于Z乘以NM。

X乘Y乘Z输入张量可以表示XY个第一输入。例如,X乘Y乘Z输入张量可以表示特征深度为Z的X乘Y个像素的图像。类似地,X’乘Y’乘Z’输入张量可以表示X’Y’个超级输入,其中每个超级输入包括多个第一输入。例如,X’乘Y’乘Z’输入张量可以表示深度为Z’的X’乘Y’个超像素的图像。在一些实现方式中,多个第一输入的数目等于NM个输入,例如,每个超级输入可以由NM个第一输入组成。以下在图3中图示输入张量的示例变换。

系统获得一个或多个修改的卷积神经网络层权重矩阵(步骤204)。修改的权重矩阵对X’乘Y’乘Z’输入张量运算以生成U’乘V’乘W’输出张量。在一些实施方式中,修改的权重矩阵对X’乘Y’乘Z’输入张量的运算等效于卷积神经网络层权重矩阵对X乘Y乘Z输入张量的运算,例如,修改的权重矩阵对X’乘Y’乘Z’输入张量的运算实现了相同的效果。U’乘V’乘W’输出张量可以包括变换的U乘V乘W输出张量,其中U’小于或等于U,V’小于或等于V,以及W’大于或等于W。例如,U’乘V’乘W’输出张量可以表示来自U乘V乘W输出张量的经聚组的多个输出,其中如上所述已经以空间范围或索引换得深度范围或索引。

修改的权重矩阵的元(entry)包括一个或多个卷积神经网络层权重矩阵,例如,修改的权重矩阵可以包括可以解释为被分解成称作块或子矩阵的区段的块矩阵(blockmatrix)。在一些实施方式中,修改的权重矩阵的元可以展现出带状结构。例如,可以通过其中将每个输入连接到每个输出的完全连接矩阵来表示卷积神经网络层。完全连接矩阵展现出带状结构,其中矩阵的大多元是零且矩阵中的少量的对角带具有非零元。

通常,对于一个维度,修改的内核元素的数目可以等于ceiling((superinput_size+original convolutional neural network layer kernel width-1)/superinput_size)。以下参照图4图示卷积神经网络层权重矩阵修改。

可选地,系统可以实现对卷积神经网络层的有效率的内核跨步(步骤206)。例如,在一些实施方式中,卷积神经网络层可以包括池化子层。在这些情况下,系统可以利用变换的输入张量X’乘Y’乘Z’上的跨步替换池化子层。例如,如以下参照步骤208所述,在一些实施方式中,U乘V乘W输出张量可以表示UV个第一输出,以及U’乘V’乘W’输出张量可以表示U’V’个超级输出,其中每个超级输出包括多个第一输出。在这样的情况下,所实现的有效率的内核跨步大小可以不等于多个第一输出中的输出的数目。内核跨步的效果可以被组合成修改的权重矩阵。例如,(未变换的)卷积神经网络层可以通过将卷积应用到相应的输入I和相应的权重矩阵W并且将跨步应用到卷积的输入I和权重矩阵W——即通过执行两个运算——来生成层输出O。具有跨步的变换的超级卷积神经网络层可以通过将卷积应用到变换的相应的输入transform(I)和经跨步的、变换的权重矩阵strided_transform(2,W)来生成变换的层输出transform(O)。

在一些实施方式中,卷积神经网络层可以已经包括内核跨步。在这些情况下,系统可以利用有效率的内核跨步来替换该内核跨步。系统可以通过使用不同的输入和输出超像素大小来实现有效率的内核跨步,其中超像素大小的比率等于步幅。例如,如果卷积神经网络层包括在X维度上的步幅S和在Y维度上的步幅T,并且将卷积神经网络层变换成具有大小为NM的超像素输入的超级卷积神经网络层,则通过选择(N/S)(M/T)的输出超像素大小,系统实现超像素修改的权重矩阵的内核跨步。在一些实施方式中,步幅S、输出张量U乘V乘W和变换的输出张量U’乘V’乘W’之间的关系可以为U’=ceiling(U/NS)以及V’=ceiling(V/MT)。以下参照图5图示了实现有效率的内核跨步。

系统使用修改的权重矩阵来处理X’乘Y’乘Z’输入张量以生成变换的卷积神经网络层输出——例如U’乘V’乘W’输出张量(步骤208)。U’乘V’乘W’输出张量包括U乘V乘W输出张量,例如,U’乘V’乘W’输出张量可以包括包含U乘V乘W输出张量的输出的超集。

U’乘V’乘W’输出张量可以具有与U乘V乘W输出张量的不同维度。更具体地,U’可以等于U除以自然数P的向上舍入,V’可以等于V除以自然数Q的向上舍入,以及W’可以等于W乘以PQ。在一些实施方式中,自然数P和Q可以分别等于以上参照步骤202描述的自然数N和M。此外,在一些实施方式中,当前超像素卷积神经网络层的P和Q可以等于随后超像素卷积神经网络层的N和M,例如,在系统在当前超像素卷积神经网络层和随后超像素卷积神经网络层之间没有包括超像素生成器和超像素去格式化器的情况下。

U乘V乘W输出张量可以表示UV个深度为W的第一输出。例如,U乘V乘W输出张量可以表示U乘V个深度为W的输出的特征映射。类似地,U’乘V’乘W’输出张量可以表示U’V’个超级输出,其中每个超级输出包括多个第一输出。例如,U’乘V’乘W’输出张量可以表示深度为W’的U’乘V’个像素的图像。在一些实施方式中,多个第一输出的数目等于P×Q个输出像素,例如,每个超级输出可以由PQ个第一输出组成。

自然数P和Q可以与以上参照步骤202描述的自然数N和M不同。例如,以上描述的超级输入的大小可以不等于超级输出的大小。在一些实施方式中,多个第一输出中的第一输出的数目——例如超级输出的大小——取决于卷积神经网络层权重矩阵的维度。在一些实施方式中,多个第一输出中的输出的数目取决于以下中的一个或多个:(i)卷积神经网络层的架构,(ii)包括卷积神经网络层的神经网络模型的架构,或(iii)实现卷积神经网络层的设备。

作为示例,假设原始的卷积层具有输入大小X乘Y乘Z,并且产生输出大小U乘V乘W,以及超像素变换的卷积层具有输入大小X’乘Y’乘Z’,并且产生输出大小U’乘V’乘W’。令KL表示权重矩阵中的卷积内核元素的数目,并且K'L'表示修改的权重矩阵中的卷积内核元素的数目。进一步假设输入和输出像素/超像素是相同的,并且由N和M来指定。则,U'=ceiling(U/N),V'=ceiling(V/M),以及W'=W×N×M。此外,K'=ceiling((N+K-1)/N)和L'==ceiling((M+L-1)/N)。PQ可以不等于NM的情况包括:系统可以在实现内核跨步的情况或在每变换的超像素的像素的数目从输入到输出发生改变的情况。

图3是超像素输入张量变换的示例图示300。例如,示例图示示出如以上参照图2的步骤202描述的超像素输入张量变换。可以通过位于一个或多个位置中的一个或多个计算机的系统执行所图示的变换。例如,依据本说明书所适当编程的例如图1A的超像素生成器114的超像素生成器能够执行图示的变换。

该示例图示示出了示例X乘Y乘Z输入张量302。如图3所示,输入张量包括XY个输入,每个深度为Z。如以上参照图2所述的,通过将多个输入聚组在一起可以将X乘Y乘Z输入张量变换成X’乘Y’乘Z’超像素输入张量。在聚组期间,用空间维度(X和Y维度)上的索引或布局换的深度维度(Z维度)上的索引或范围。在示例图示300中,X乘Y乘Z输入张量已经被变换成X/2乘Y/2乘4Z超像素输入张量304。如图3所示,超像素输入张量包括(X/2)(Y/2)个输入,每个深度为4Z。在输入张量304中包括的每个超像素输入表示4个原始输入,并且因此表示4倍的由原始输入表示的数据的量。

图4是卷积神经网络层权重矩阵修改的示例图示400。例如,示例图示示出了上面参照图2的步骤204所述的卷积神经网络层权重修改。所示的修改可以由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的超像素卷积神经网络层,例如图1A的超像素卷积神经网络层110,可以执行所示的修改。

在步骤(a),示例图示400示出了用于卷积神经网络层的3乘3内核块402,其中内核块的每个元素包括二维权重矩阵,其中维度等于原始输入深度乘原始输出深度,例如Z乘W,其适用于矩阵乘法。示例图示进一步示出了表示输入的4个2乘2网格404-410。输入聚组为2乘2超级输入,每个超级输入包括2乘2个原始输入。示例图示示出了包括4个原始输出的超级输出412。

在步骤(b),示例图示400示出了与步骤(a)中所示相同的扩展为4个原始输出中的每一个的点积计算的二维卷积。2乘2栅格后面的例如阴影414的阴影示出了输入数据的哪个3乘3子集影响每个输出。如每个网格的阴影所示,每个超级输入影响每个输出,但每个超级输入的有用部分为9/16。

在步骤(c),示例图示400示出了可以用于计算超级输出的示例经修改的二维权重矩阵416-422。矩阵416-422中的每个是一起构成2乘2经修改的内核块的内核元素。矩阵416-422的维度为4Z乘4W,因此是内核块402的原始二维矩阵的16倍。纵轴表示输入深度、超级输入内的输入和内核元素。横轴表示输出深度和超级输出内的输出。步骤(c)中的示例图示描绘了矩阵乘法。列424表示输入,并且当输入被示出为与经修改的权重矩阵416-422的元相同的高度时,其被乘以该权重。列中的所有权重-输入乘积可以相加,以产生超级输出内的输出的总值。总共示出4个超级输入,例如16个原始输入,用于计算一个超级输出,例如4个原始输出。

4个超级输入中的每一个与超级输出具有不同的X和Y坐标关系。为了说明的目的,图4示出了每个超像素的2x2个像素,并且图示出了超像素的2x2集。进而,2x2=4个权重矩阵被绘制。每个超像素和超像素集的像素的数目可以例如基于系统架构等因素而变化。例如,在某些情况下,每个超像素可能有4x4个像素,并且大图像大小为100x100个超像素(因此400x400个原始输入像素)。在这种情况下,只要ceiling((pixels_per_superpixel+kernel_size-1)/pixels_per_superpixel)在每个维度上小于或等于2,仍然可能有2x2=4个权重矩阵。

如上所述,经修改的权重矩阵是内核元素。在这方面,修改过程可以被视为已经通过将输入上的3乘3卷积改变成超级输入上的2乘2卷积来减少块中的内核元素的数目,其中每个内核元素是更大的二维矩阵,例如,在行和列上都是4倍(对应于输入深度Z和输出深度W)。堆叠的经修改的权重矩阵416-422中的每列包含3乘3内核402的每个元素的一个副本。在一些实施方式中,经修改的权重矩阵可以呈现带状结构,如例如由例如对角线426的以类似对角线方式标记的内核元素所示。

图5是包含超像素内核跨步的卷积神经网络层权重矩阵修改的示例图示500。例如,示例图示示出了如上参照图2的步骤206所述的内核跨步的有效率的实施方式。所示实施方式可以由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的超像素卷积神经网络层,例如图1A的超像素卷积神经网络层110,可以执行所示的实施方式。

示例图示500示出了具有5乘5内核块506的权重图,其元素是二维权重矩阵,其中维度等于原始输入深度乘原始输出深度,例如Z乘W;4乘4超级输入502,每个包括4乘4原始输入;和2乘2超级输出504,每个包括2乘2原始输出。示例内核步幅为2乘2。示例图示500包括4个超像素内核元素508-514。每个超像素内核元素是16Z乘4W矩阵。输入/超级输入对输出/超级输出由于2乘2内核步幅而改变,因此每16个输入只有4个输出。

本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或它们中的一个或多个的组合。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,一个或多个计算机程序指令的模块,其编码在有形的非暂态程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。替选地或附加地,程序指令可以在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上进行编码,该信号被生成以编码信息以便传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器件,或其中的一个或多个的组合。然而,计算机存储介质不是传播信号。

术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所述计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们的一个或多个的组合的代码。

计算机程序(也可以被称为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、或声明性或过程语言,并且可以以任何形式部署,包括作为独立程序或模块、组件、子例程或适用于计算环境的其他单元。计算机程序可以但不一定对应于文件系统中的文件。程序可存储在保持其他程序或数据(例如,存储在标志语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于讨论中的程序的单个文件中,或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。

如本说明书中所使用的,“引擎”或“软件引擎”是指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,诸如库、平台、软件开发工具包(“SDK”)或对象。每个引擎可以在任何适当类型的计算设备上实现,例如服务器、移动电话、平板电脑、笔记本电脑、音乐播放器、电子书阅读器、膝上型或桌面式计算机、PDA、智能电话或包括一个或多个处理器和计算机可读介质的其他固定或便携式设备。另外,所述引擎中的两个或更多个可以在相同的计算设备上或在不同的计算设备上实现。

本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

例如,适用于执行计算机程序的计算机可以基于通用或专用微处理器或两者或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本要素是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备以从其接收数据或向其传输数据或两者,所述大容量存储设备例如磁、磁光盘或光盘。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几例。

适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM,EEPROM和闪存器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;和CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入其中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有:显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器),用于向用户显示信息;以及用户可以向计算机提供输入的键盘和指示设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档并从其接收文档来与用户进行交互;例如,通过响应于从web浏览器接收的请求,将web页面发送到用户的客户端设备上的web浏览器来与用户进行交互。

本说明书中描述的主题的实施例可以在包括后端组件(例如,作为数据服务器)、或包括中间件组件(例如,应用服务器)、或包括前端组件(例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实施方式进行交互)、或者一个或多个这样的后端、中间件或前端组件的组合的计算系统中实现。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信而互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是由于各自计算机上运行和彼此之间具有客户端-服务器关系的计算机程序而生成的。在一些实施例中,服务器将数据(例如,HTML页面)传送到用户设备,例如,为了向与用户设备交互的用户显示数据和从用户接收用户输入,该用户设备用作客户端。可以从服务器处的用户设备接收在用户设备处生成的数据,例如作为用户交互的结果。

虽然本说明书包含许多具体的实施方式细节,但是这些细节不应被解释为对任何发明的范围或所要求保护的范围的限制,而是作为可以对于特定发明的特定实施例所特有的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也可以分开地或以任何合适的子组合在多个实施例中实现。此外,虽然以上可以将特征描述为以某些组合的方式起作用,并且甚至最初如此要求保护,但要求保护的组合的一个或多个特征在某些情况下可以从该组合中被移除。

类似地,虽然在附图中以特定顺序描绘操作,但是这不应被理解为要求以所示的特定顺序或按次序顺序执行此类操作,或者执行所有所示的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中需要这种分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或打包成多个软件产品。

以下示例中描述了所公开技术的进一步实施方式:

示例1:一种用于更有效率地执行卷积神经网络层的计算的计算机实现的方法,所述卷积神经网络层被配置来接收X乘Y乘Z输入张量,并且使用一个或多个卷积神经网络层权重矩阵处理所接收的输入张量来生成U乘V乘W输出张量,所述方法包括:将X乘Y乘Z输入张量变换为X’乘Y’乘Z’输入张量,其中,X’小于或等于X,Y’小于或等于Y,并且Z’大于或等于Z;获得一个或多个经修改的卷积神经网络层权重矩阵,其中(i)经修改的权重矩阵对X’乘Y’乘Z’输入张量进行运算以生成U’乘V’乘W’输出张量,并且(ii)U’乘V’乘W’输出张量包括经变换的U乘V乘W输出张量,其中U’小于或等于U,V’小于或等于V,并且W’大于或等于W;并使用经修改的权重矩阵处理X’乘Y’乘Z’输入张量以生成U’乘V’乘W’输出张量,其中,U’乘V’乘W’输出张量包括U乘V乘W输出张量。

示例2:示例1的方法,其中,X’等于X除以自然数N的向上舍入,Y’等于Y除以自然数M的向上舍入,并且Z’等于Z乘以NM。

示例3:示例2的方法,其中,所述X乘Y乘Z输入张量表示XY个第一输入并且所述X’乘Y’乘Z’输入张量表示X’Y’个超级输入,其中每个超级输入包括多个第一输入。

示例4:示例3的方法,其中,所述多个第一输入的数目等于NM个输入。

示例5:示例1至4中任一项所述的方法,其中,经修改的权重矩阵对所述X’乘Y’乘Z’输入张量的运算等同于所述卷积神经网络层权重矩阵对所述X乘Y乘Z输入张量的运算。

示例6:示例1至5中任一项所述的方法,其中,经修改的权重矩阵的元包括一个或多个卷积神经网络层权重矩阵。

示例7:示例1至6中任一项所述的方法,其中,经修改的权重矩阵包括具有带状结构的矩阵。

示例8:示例1至7中任一项所述的方法,其中,U’等于U除以自然数P的向上舍入,V’等于V除以自然数Q的向上舍入,并且W’等于W乘以PQ。

示例9:示例8的方法,其中,所述卷积神经网络层包括X维度上的步幅S和Y维度上的步幅T,并且其中,步幅S、步幅T、输出张量U乘V乘W以及经变换的输出张量U’乘V’乘W’之间的关系为:U’=ceiling(U/NS)和V’=ceiling(V/MT)。

示例10:示例8或9的方法,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出。

示例11:示例10的方法,其中,所述多个第一输出等于PQ个输出。

示例12:示例1至11中任一项所述的方法,其中,所述卷积神经网络层包括池化子层。

示例13:示例12的方法,其中,所述方法进一步包括将所述聚合子层替换为在经变换的输入张量上的跨步。

示例14:示例12或13的方法,其中,所述卷积神经网络层包括内核跨步,并且其中,所述方法进一步包括:基于经变换的输入张量和经修改的权重矩阵来实现有效率的内核跨步。

示例15:示例1至14中任一项所述的方法,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,以及其中,所述多个第一输出中的第一输出的数目取决于所述卷积神经网络层权重矩阵的维度。

示例16:示例1至15中任一项所述的方法,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,以及其中,所述多个第一输出中的输出的数目取决于以下中的一个或多个:(i)所述卷积神经网络层的架构,(ii)包括所述卷积神经网络层的神经网络模型的架构,或者(iii)实现所述卷积神经网络层的设备。

示例17:示例1至16中任一项所述的方法,其中,对所述一个或多个卷积神经网络层权重矩阵的所述修改是仅软件修改。

示例18:一种系统,包括一个或多个计算机和存储指令的一个或多个存储设备,所述指令可操作在由所述一个或多个计算机执行时使得所述一个或多个计算机执行用于更有效率地执行卷积神经网络层的计算的操作,所述卷积神经网络层被配置来接收X乘Y乘Z输入张量并且使用一个或多个卷积神经网络层权重矩阵处理所接收的输入张量来生成U乘V乘W输出张量,所述操作包括:将所述X乘Y乘Z输入张量变换为X’乘Y’乘Z’输入张量,其中,X’小于或等于X,Y’小于或等于Y,并且Z’大于或等于Z;获得一个或多个经修改的卷积神经网络层权重矩阵,其中(i)经修改的权重矩阵对所述X’乘Y’乘Z’输入张量进行运算以生成U’乘V’乘W’输出张量,并且(ii)所述U’乘V’乘W’输出张量包括经变换的U乘V乘W输出张量,其中,U’小于或等于U,V’小于或等于V,并且W’大于或等于W;以及使用经修改的权重矩阵处理所述X’乘Y’乘Z’输入张量以生成所述U’乘V’乘W’输出张量,其中,所述U’乘V’乘W’输出张量包括所述U乘V乘W输出张量。

示例19:示例18的系统,其中,X’等于X除以自然数N的向上舍入,Y’等于Y除以自然数M的向上舍入,并且Z’等于Z乘以NM。

示例20:示例19的系统,其中,所述X乘Y乘Z输入张量表示XY个第一输入并且所述X’乘Y’乘Z’输入张量表示X’Y’个超级输入,其中每个超级输入包括多个第一输入。

示例21:示例20的系统,其中,所述多个第一输入的数目等于NM个输入。

示例22:示例18至21中任一项所述的系统,其中,经修改的权重矩阵对所述X’乘Y’乘Z’输入张量的运算等同于所述卷积神经网络层权重矩阵对所述X乘Y乘Z输入张量的运算。

示例23:示例18至22中任一项所述的系统,其中,经修改的权重矩阵的元包括一个或多个卷积神经网络层权重矩阵。

示例24:示例18至23中任一项所述的系统,其中,经修改的权重矩阵包括具有带状结构的矩阵。

示例25:示例18至24中任一项所述的系统,其中,U’等于U除以自然数P的向上舍入,V’等于V除以自然数Q的向上舍入,并且W’等于W乘以PQ。

示例26:示例25的系统,其中,所述卷积神经网络层包括X维度上的步幅S和Y维度上的步幅T,并且其中,步幅S、步幅T、输出张量U乘V乘W以及经变换的输出张量U’乘V’乘W’之间的关系为:U’=ceiling(U/NS)和V’=ceiling(V/MT)。

示例27:示例25或26的系统,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出。

示例28:示例27的系统,其中,所述多个第一输出等于PQ个输出。

示例29:示例18的系统,其中,所述卷积神经网络层包括池化子层。

示例30:示例29的系统,其中,所述操作进一步包括将所述聚合子层替换为在经变换的输入张量上的跨步。

示例31:示例18至30中任一项所述的系统,其中,所述卷积神经网络层包括内核跨步,并且其中,所述方法进一步包括:基于经变换的输入张量和经修改的权重矩阵来实现有效率的内核跨步。

示例32:示例18至31中任一项所述的系统,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,以及其中,所述多个第一输出中的第一输出的数目取决于所述卷积神经网络层权重矩阵的维度。

示例33:示例18至32中任一项所述的系统,其中,所述U乘V乘W输出张量表示UV个第一输出并且所述U’乘V’乘W’输出张量表示U’V’个超级输出,其中每个超级输出包括多个第一输出,以及其中,所述多个第一输出中的第一输出的数目取决于以下中的一个或多个:(i)所述卷积神经网络层的架构,(ii)包括所述卷积神经网络层的神经网络模型的架构,或者(iii)实现所述卷积神经网络层的设备。

示例34:示例18至33中任一项所述的系统,其中,对所述一个或多个卷积神经网络层权重矩阵的所述修改是仅软件修改。

示例35:一种编码有指令的计算机存储介质,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行用于更有效率地执行卷积神经网络层的计算的操作,所述卷积神经网络层被配置来接收X乘Y乘Z输入张量并且使用一个或多个卷积神经网络层权重矩阵处理所接收的输入张量来生成U乘V乘W输出张量,所述操作包括:将所述X乘Y乘Z输入张量变换为X’乘Y’乘Z’输入张量,其中,X’小于或等于X,Y’小于或等于Y,并且Z’大于或等于Z;获得一个或多个经修改的卷积神经网络层权重矩阵,其中(i)经修改的权重矩阵对所述X’乘Y’乘Z’输入张量进行运算以生成U’乘V’乘W’输出张量,并且(ii)所述U’乘V’乘W’输出张量包括经变换的U乘V乘W输出张量,其中,U’小于或等于U,V’小于或等于V,并且W’大于或等于W;以及使用经修改的权重矩阵处理所述X’乘Y’乘Z’输入张量以生成所述U’乘V’乘W’输出张量,其中,所述U’乘V’乘W’输出张量包括所述U乘V乘W输出张量。

已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或次序顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

相关技术
  • 用于卷积神经网络的超像素方法
  • 用于卷积神经网络的超像素方法
技术分类

06120112757400