用于卷积神经网络的权重移位机制的制作方法_5

文档序号:9564425阅读:来源:国知局
算电路1200可以接受来 自缩放因子1208的输入。每一输入都可以以任何合适的方式实现,诸如闩锁。权重1204 可以通过例如权重1118来实现。输入数据1202可以由例如用于将较大的输入(诸如图像 或其他数据)分割为离散的切片的逻辑来作出。临时数据1206可包括从另一计算电路接 收到的数据。缩放因子1208可包括与这样的临时数据1206相关联地使用的标度信息。
[0092] 在一个实施例中,计算电路1200可包括16比特算术左移位器1240,以按比例扩大 用于计算电路1200的计算的输入。在另一个实施例中,计算电路1200可包括右移位器和 截断逻辑1232,用于按比例缩小计算电路1200的所产生的计算。
[0093] 权重1204或输入数据1202可以是低精度。在一个实施例中,计算电路1200可以 在计算期间按比例扩大权重。这样的按比例扩大可包括增大可以使用权重1204的数值精 度。此外,还可以在计算电路1200的操作过程中跟踪权重1204被按比例扩大的程度。在 另一个实施例中,计算电路1200可以对权重1204的被移位的值执行其计算,以及以其他方 式在扩展的表示和精度内操作。在再一个实施例中,计算电路1200可以将计算的结果按比 例缩小回原始权重1204所使用的精度。这样的反向缩放可以通过使用权重1204最初被按 比例缩放所采用的被跟踪的值来执行。
[0094] 计算电路1200可以与对于CNN的卷积计算相关联地执行按比例扩大和按比例缩 小。如上文所描述的,神经网络的多层可以是完全连接的。卷积操作可以不是完全连接的。 这样的计算中所包括的操作可以是输入数据1202的所有线性变换。
[0095] 可以在例如CNN的函数的学习期间计算权重1204。权重1204可以基于例如可用 于对图像执行的不同的滤波函数而变化。权重1204可以存储在处理器的存储器中,直到它 们被计算电路1200需要。可以从,例如,图像的各种输入层中读取输入数据1202。
[0096] 在一个实施例中,对于给定层,可以确定权重1204的最大和最小值。在另一个实 施例中,并基于这样的判断,可以按比例扩大权重1204,以符合定义的范围。例如,如果权 重1204是作为小于1的正的和负的小数给出的,那么,可以将权重1204按比例扩大到范围 (-1,1)。可以使用任何合适的按比例缩放技术。在又一实施例中,这样的按比例缩放可以通 过移位操作来执行,相应地,按2的幂(a power of two)进行比例缩放。在这样的实施例 中,向左移位一个数字可以按比例放大该数字,向右移位一个数字可以按比例缩小该数字。 在各实施例中,权重1204的按比例缩放和存储标度值可以由例如处理设备1000在计算电 路1204外面执行,并向计算电路1200提供。此外,其他层所使用的权重值还可以由例如16 比特算术左移位器1240来按比例扩大。
[0097] -旦权重1204被移位,计算电路1200就可以存储权重1204被移位的程度。移位 过程可以模仿浮点编码。权重1204的原始值可以类似于浮点运算的尾数,而被存储的标度 值可以类似于相关联的指数。在一个实施例中,所有权重1204的标度值可以在计算电路 1200的单一操作过程中相同。
[0098] 在权重1204被计算电路1200用于层的卷积的计算之后,可以将结果向右移,或按 比例缩回至权重1204反映的原始精度。在一个实施例中,这样的移位可以由右移位器和截 断逻辑1232来执行。
[0099] 尽管计算电路1200可以以低精度使用权重1204,但是,这样的权重可以由处理设 备1000以最大精度学习,诸如在32比特浮点数字下。权重可以被按比例扩大以供在计算 电路1200内使用,以便最大化它们的可能的精度。此外,在权重被按比例扩大以用于权重 1204中之后,可以将权重值截断,以便保留所希望的较低的精度。例如,如果计算电路1200 将以八比特的精度来使用权重,则可以从权重中截断底部十六个比特,然后,它们被作为权 重1204提供。计算电路1200可以使用这些,例如,八比特权重值来执行对于CNN的点积、 卷积,或其他计算。在这样的计算之后,计算电路1200可以执行被执行以按比例扩大权重 的逆运算。具体而言,计算电路1200可以使用,例如,右移位器和截断逻辑1232按比例缩 小结果,以将值按比例缩小。
[0100] 虽然示出了从例如三十二比特浮点值到八比特定点值的示例按比例缩放,但是, 按比例缩放可以从较高精度固定或浮点中的任何值到固定点中的任何较低精度值来执行。
[0101] 图13A、13B,以及13C是根据本发明的各实施例的计算电路1200的各种组件的比 较详细的图示。图13A是MAC单元1210的比较详细的图示。给定来自输入闩锁1302的N 个输入值(它们又可以来自输入数据1202和权重1204),在1304,将输入数据1202和权重 1204的元素逐对相乘,然后,在累加器1306中加在一起。乘法可以由执行整数或定点输入 的乘法操作的硬件组件来进行。在一个实施例中,这样的乘法器可包括8比特定点乘法器。 如果输入数据1202和权重1204各自分别是八比特宽(并以1. 7格式,其中,一个比特用于 表示符号,七个比特用于表示定点数的小数部分),那么,可以有来自输入闩锁1302的十六 对输入。
[0102] 返回到图12,在一个实施例中,MAC单元1210可以向闩锁1212U214输出卷积和 点积操作的结果。输出形式可包括用于符号的比特,用于整数的两个比特,以及用于小数部 分的十四比特。此输出可包括可以与来自,例如,相同计算单元1200、另一计算单元,或存储 器的其他部分结果相加的部分结果。部分结果可以保留为十六比特格式。如果部分结果被 发送到存储器或另一计算单元1200,则它可以被截断为八比特定点格式,如下面所描述的。
[0103] 这样的部分结果可以使用额外的比特来处理增强的精度。这样的添加的比特可 以被添加到结果的整数部分。使用这样的额外的比特,4:2 CSA1218和24比特宽的加法器 1220可以累加超越输出范围的值,如此,可以导致计算电路1200避免在溢出的情况下丢失 精度。在一个实施例中,以及在24比特宽的加法器1220中,可以为符号预留一比特,九个 比特用于整数,十四比特用于小数部分。然而,可以使用任何合适的格式,包括为整数使用 多一些或少一些额外的比特。
[0104] 图13B是24比特宽的加法器1220的比较详细的图示,该加法器1220可以在穿过 信号扩展1216之后接受卷积和点积操作的结果。将结果与从另一层判断接收到的临时数 据1206相加,并与24比特宽的加法器1220的前一迭代相加。这样的加法可以,例如,由 4:2 CSA 1220进行。4:2 CSA 1220的输出可包括,例如,两个输出,包括部分总和比特的序 列和进位比特的序列。可以在10比特加法器1308中将来自相应的输入的整数组件求和, 在14比特加法器1310中将来自相应的输入的小数组件求和。可以将输出1312,1314发送 到右移位器和截断逻辑1232。
[0105] 返回到图12,在一个实施例中,右移位器和截断逻辑1232可以按比例缩小结果, 以便它们被归一化,用于由诸如其他计算电路之类的其他元件预期的范围中。根据用于正 在被使用的权重的缩放因子1208,按比例缩小值。缩放因子1208可以对应于用于按比例扩 大权重的相同缩放因子。在另一个实施例中,右移位器和截断逻辑1232可以削减来自按比 例缩小的结果的比特,这取决于数据的目的地。可以丢弃整数的高比特和小数部分的低比 特。在一个实施例中,右移位器和截断逻辑1232可以以3. 7格式输出数据,带有一符号比 特、两个整数比特,以及五个小数比特。这样的格式可以由例如激活函数1234预期。
[0106] 图13C是右移位器和截断逻辑1232的比较详细的图示。可以输入整型数据 1312 (带有示例10比特宽度)和小数数据1314 (带有示例14比特宽度)。小数数据1314 可以被小数截断1314截断其七个低比特。16比特算术右移位器1318可以根据缩放因子 1208,按比例缩放整数和小数数据。输出可以是10. 7格式,该10. 7格式又可以由最终的截 断1322截断为3. 7格式,供输出。
[0107] 返回到图12, 一旦结果是最终的,就可以将它传递到激活函数1234。从那里,最终 可以将它作为输出1244传递。如果结果不是最终的,则可以将它写入到存储器,或以别的 方式传递到另一计算电路。可以将这样的非最终的结果输出,以变为另一计算电路的临时 数据1206。
[0108] 相应地,在一个实施例中,增强的,按比例放大的结果可以维持在计算电路1200 内,但是,当将这样的结果传出计算电路1200时,可以将其截断。权重1204和输入数据 1202,例如,可以被保留为较低精度。部分结果被存储在存储器中,以便不会丢失不同的计 算电路对相同层的连续的部分的连续的操作之间的中间精度。当被随后的计算电路所使用 时,可以由16比特算术向左移位器1240按比例扩大部分结果。
[0109] 对乘法电路的不同的实例之间的信息的控制可以以任何合适的方式执行。例如, 处理设备1000可包括用于存储权重或输入值的寄存器以及将值路由到合适的乘法电路的 多路复用器。信号的路由和影响CNN 900的操作的协调可以由例如分布逻辑1116和1122 来执行。
[0110] 为示出计算电路1200的影响和操作,考虑下列可能的输入矩阵:
[0112] 表1:示例输入矩阵
[0113] 此外,还考虑在七个位数的完全精度确定的滤波器的示例权重。注意,下列示例是 使用十进制(base-ten)值作出的,但是,在一个实施例中,计算电路1200可以操作,以在二 进制(base-two)执行这样的操作。
[0115] 表2 :示例完全精度滤波器
[0116] 这样的滤波器,当应用于示例输入时,将具有0. 1704128的卷积结果。这是比较其 他结果的基准测量。使用较大的位数或比特数来计算卷积可包括额外的功率消耗以及较大 的处理器资源。如果计算卷积结果的架构仅限于较少位数的精度,则通过使用原始七位观 察来创建的额外的精度可能会受到消极的影响。例如,如果限于四位精度,则考虑相同滤波 器,假设用于计算卷积的架构不受限制:
[0118] 表3 :示例4位精度滤波器
[0119] 这样的滤波器,当应用于示例输入时,可以具有0. 1568的卷积结果,当与基准计 算相比时,具有7. 988%的误差。误差可归因于仅限于四位精度的滤波器的权重中的精度的 损失。
[0120] 如上文所描述的,在一个实施例中,可以通过向左移位数据,并截断任何额外的比 特,来使用相同四位的精度。可以进行移位,以便在十进制(或二进制)移位方案内将权重 扩展到尽可能靠近"1"。移位的位数被存储,并用于缩回结果。例如,将移位并截断的并在 下面呈现的表2的完全精度内容视为权重移位的滤波器:
[0122] 表4 :示例4位精度,权重移位的滤波器
[0123] 如上文所讨论的,在一个实施例中,对于给定层内的所有权重,可以使移位的位数 或比特的数量保持恒定,尽管可以再次移位某些权重值。例如,在不超出[_1,1]的示例边 界的情况下,不能再次移位"〇. 2381",尽管"0. 0029"可以被再次移位两次。相应地,在这样 的实施例中,某些权重仍可以包括前导零。
[0124] 这样的滤波器,当由计算电路1200应用于示例输入时,将具有17.0368的未调整 的卷积结果。这样的结果随后将由计算电路1200向右移位,并将其截断。例如,卷积结果 可以是0.1703。此结果可以具有0.066%的误差。
[0125] 图14是根据本发明的各实施例的用于权重移位的方法1400的示例实施例的流程 图。方法1400可以示出由,例如,CNN 900、处理设备1000,或计算电路1200执行的操作。 方法1400可以从任何合适的点开始,并可以以任何合适的顺序执行。在一个实施例中,方 法1400可以从1405开始。
[0126] 在1405,可以学习要应用于CNN的权重。在一个实施例中,可以利用精度的最大 位数,学习这样的权重。在1410,可以将这样的权重扩大到固定间隔。在一个实施例中,可 以通过将权重的值向左移位,作出这样的缩放,直到权重在该固定间隔内最佳拟合。在另一 个实施例中,可以对于给定层的所有权重,应用相同移位,即使额外的移位将对某些
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1