CN109034385A - 用稀疏数据训练神经网络的系统和方法 - Google Patents

用稀疏数据训练神经网络的系统和方法 Download PDF

Info

Publication number
CN109034385A
CN109034385A CN201810589639.6A CN201810589639A CN109034385A CN 109034385 A CN109034385 A CN 109034385A CN 201810589639 A CN201810589639 A CN 201810589639A CN 109034385 A CN109034385 A CN 109034385A
Authority
CN
China
Prior art keywords
vector
sparse
sample
neural network
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810589639.6A
Other languages
English (en)
Inventor
C·J·蒙克贝里
J·N·T·黑塞尔格伦
J·T·莱赫蒂宁
T·O·艾拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/881,632 external-priority patent/US11244226B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority to CN202211695918.3A priority Critical patent/CN116050495A/zh
Publication of CN109034385A publication Critical patent/CN109034385A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

公开了用于训练神经网络模型的方法、计算机可读介质和系统。所述方法包括步骤:从包括输入向量和稀疏目标向量的一组训练数据中选择输入向量,其中每个稀疏目标向量包括对应于神经网络模型的输出向量内的样本子集的目标数据。所述方法还包括步骤:通过神经网络模型处理输入向量以针对输出向量内的样本产生输出数据,以及调整神经网络模型的参数值以针对样本子集减小输出向量与稀疏目标向量之间的差。

Description

用稀疏数据训练神经网络的系统和方法
优先权要求
本申请要求于2017年6月12日提交的题为“用稀疏数据训练神经网络(TRAININGNEURAL NETWORKS WITH SPARSE DATA)”的62/518,435号美国临时申请(代理人案卷号NVIDP1167+/17-HE-0122-US01)的权益,其全部内容通过引用并入本文。
技术领域
本发明涉及训练神经网络,并且更具体地涉及使用稀疏数据来训练神经网络。
背景技术
通常使用反向传播来训练用于图像处理的神经网络,以将神经网络模型的输出(即,预测)与目标图像进行匹配。例如,神经网络模型可以被训练成升档(upscale)图像,从低分辨率图像生成高分辨率图像,或被训练成去噪图像,从有噪声图像产生干净的输出图像。假设可微函数g被描述为具有可训练参数集Θ的神经网络,其将输入向量x={x1,x2,...,xn}映射到输出向量
神经网络通过最小化损失函数来训练,
量化目标y={y1,y2,...,ym}与神经网络输出之间的误差。
对于图像处理网络来说,L2标准经常被用作损失函数。生成和存储训练所需的输入和目标对(x,y)的大数据集常常是一个重大挑战。例如,图像处理网络通常用成千上百万图像训练图像处理网络。在离线渲染场景下用路径追踪图像训练时,经常花费数周来生成参考图像和许多兆兆字节的数据存储。计算精确的目标图像是耗时的并且需要很大的数据存储和传输能力。具有解决这些问题和/或与现有技术相关的其他问题的需求。
发明内容
公开了用于训练神经网络模型的方法、计算机可读介质和系统。该方法包括从包括输入向量和稀疏目标向量的训练数据集中选择输入向量的步骤,其中每个稀疏目标向量包括对应于神经网络模型的输出向量内的样本子集的目标数据。该方法还包括通过神经网络模型处理输入向量以针对输出向量内的样本产生输出数据以及调整神经网络模型的参数值以针对样本子集减小输出向量与稀疏目标向量之间的差的步骤。
附图说明
图1A示出了根据一个实施例的用于训练神经网络的方法的流程图;
图1B示出了使用稀疏输入数据和地面实况训练目标的现有技术神经网络训练的示意图;
图1C示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的示意图;
图1D示出了根据一个实施例的用于使用稀疏目标向量来训练神经网络的系统的框图;
图1E示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的另一个示意图;
图1F示出了根据一个实施例的用于使用稀疏输入数据和稀疏地面实况训练目标来训练神经网络的方法的流程图;
图2A示出了根据一个实施例的用于使用稀疏目标向量来训练神经网络的系统的框图;
图2B示出了用于使用输入数据和稀疏地面实况训练目标来训练神经网络的方法的另一个流程图;
图2C示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的示意图;
图2D示出了根据一个实施例的使用稀疏输入数据和稀疏目标数据训练以生成抗锯齿图像的神经网络的稀疏输入数据、地面实况目标数据和输出数据;
图3示出了根据一个实施例的并行处理单元;
图4A示出了根据一个实施例的图3的并行处理单元的通用处理集群;
图4B示出了根据一个实施例的图3的并行处理单元的分区单元;
图5示出了根据一个实施例的图4A的流式多处理器;以及
图6示出了示例性系统,其中可以实现各种先前实施例的各种架构和/或功能。
具体实施方式
描述了一种用于使用稀疏目标数据来训练神经网络的技术,而不是使用输入数据和密集目标数据来训练神经网络。在一个实施例中,仅存在密集目标数据的选定子集。在以下描述的上下文中,密集目标数据包括针对图像数据的每像素至少一个样本。相反,稀疏目标数据包括针对图像数据的每像素少于一个样本。在一个实施例中,为每个稀疏目标向量随机选择密集目标数据的子集。在另一个实施例中,基于某个预定标准来选择密集目标数据的子集。为了在训练神经网络模型期间实现收敛,所有数据样本(例如图像数据的像素)应该在稀疏目标数据中被均等地表示。重要的是,只需要生成和存储密集目标数据的选定子集。使用稀疏目标数据而不是密集目标数据可以大大减少生成训练数据集所需的时间和计算。因此,可以减少完成整个训练过程所需的时间。
在一个实施例中,输入数据也是稀疏的,使得只有输入数据的选定子集被生成和存储。当输入数据是稀疏的时,输入数据的选定子集不应与训练数据对内的目标数据的选定子集相关。训练还可以实时执行。例如,可以将训练执行为从图像捕获设备接收稀疏输入图像或者使用计算机图形渲染稀疏输入图像可以训练神经网络以生成精确匹配密集目标图像的输出图像-在训练过程期间不再使用密集目标图像Y。相反,稀疏目标图像被用来训练神经网络。
图1A示出了根据一个实施例的用于训练神经网络的方法100的流程图。方法100在神经网络的上下文中被描述,并且方法100也可以由程序、定制电路或由定制电路和程序的组合来执行。例如,方法100可以由图形处理单元(GPU)、中央处理单元(CPU)或能够执行必要处理操作的任何处理器来执行。此外,本领域的普通技术人员将理解,执行方法100的任何系统都在本发明的实施例的范围和精神内。
在步骤110中,从包括密集输入向量X和稀疏目标向量的训练数据集中选择输入向量X,其中每个稀疏目标向量包括对应于神经网络模型的输出向量f(X)内的样本子集的目标数据。密集目标向量Y包括稀疏目标向量在一个实施例中,针对每个稀疏目标向量随机选择样本子集中的样本。针对训练数据中的每个稀疏目标向量使用随机选择的目标数据的不同排列使得神经网络模型收敛到与使用采用密集目标向量的传统训练时相同的结果。相比之下,常规的密集目标向量包括与神经网络模型的输出向量内的所有样本而不仅仅是样本子集相对应的目标数据。
重要的是,跨越稀疏目标向量,所有数据样本应该被均等地表示。换句话说,在稀疏目标向量中,每个数据样本(或者在图像处理的情况下的像素)均等地可能存在或者缺失。例如,对于稀疏目标向量集,只有奇数像素存在于图像的一半中,而对于该稀疏目标向量集,只有偶数像素存在于图像的另一半中。在另一个示例中,只要每个像素在该稀疏目标向量集中被均等地表示,就可以从每个稀疏目标向量中缺失像素的块或区域。
在一个实施例中,该训练数据集是图像数据。在另一个实施例中,该训练数据集是音频数据。在下面描述的上下文中,该训练数据集可以包括表示任何类型的数据的信号的样本。换句话说,使用稀疏目标向量的训练技术是域独立的。
输入向量可以是密集的(X)或稀疏的但是,如前所解释的,获得密集目标和/或输入向量有时是困难的。重要的是,如果训练数据集中的输入向量是稀疏的,则稀疏输入向量中的样本位置不应该与训练对的稀疏目标向量中存在的样本子集相关。换句话说,样本子集对于训练对是不相关的。
在步骤120,由神经网络模型处理输入向量以针对输出向量内的样本产生输出数据。虽然神经网络模型产生密集输出向量,但只需要与稀疏目标向量中的样本相对应的样本子集用于与稀疏目标向量进行比较。换句话说,输出向量中与稀疏目标向量中缺失的样本相对应的样本可能被丢弃或不需要由神经网络模型生成。当针对输入向量生成的输出数据与稀疏目标向量内的样本子集相匹配或者达到训练数据集的阈值准确度时,认为神经网络模型被充分训练。
在步骤130,调整神经网络模型的参数值以针对样本子集减小输出向量与稀疏目标向量之间的差。在一个实施例中,未包括在样本子集中的缺失样本的差被设置为预定值,诸如零,或者指示缺失样本与输出向量中的对应样本相匹配的值。在以下描述的上下文中,差是误差梯度。在一个实施例中,将最小平方(即L2)损失函数应用于差以调整参数值。在另一个实施例中,最小绝对偏差(即,L1)损失函数应用于差来调整参数值。
在一个实施例中,低分辨率密集输入向量X被升档以生成稀疏输入向量在一个实施例中,用于训练数据集的稀疏输入数据和/或稀疏目标数据在传输过程中(on-the-fly)被计算而不是存储整个训练数据集。在一个实施例中,位掩码指示与存在于稀疏目标数据中的样本子集相关联的位置。在一个实施例中,对应于存在的位置的每个位被设置(即被断言(assert))。在另一个实施例中,对应于缺失位置的每个位被设置。在一个实施例中,密度掩码(density mask)(例如,标量浮点值)指示存在于稀疏目标数据中的每个个体样本的强度。密度掩码可用于缩放或调制所计算的输出向量与稀疏目标数据之间的差。这些差被用于在反向传播期间更新网络。
根据用户的期望,现在将阐述关于可以或不可以实现前述框架所采用的各种可选架构和特征的更多说明性信息。应该强烈指出的是,下面的信息是为了说明的目的而提出的,并且不应该被解释为以任何方式进行限制。任何以下特征可以可选地并入或不包括所描述的其他特征。
图1B示出了使用稀疏输入数据和地面实况训练目标Y的现有技术神经网络训练的示意图。训练经升档的神经网络122以升档输入图像并产生密集输出图像例如,输入图像可以是32×32像素分辨率,并且密集目标图像Y可以是128×128像素分辨率。由于输入图像分辨率是每个维度中密集目标图像的四分之一,因此输入图像被认为是128x128像素图像的稀疏输入数据。反向传播单元123接收密集输出图像和密集目标图像,并且基于密集输出图像和密集目标图像之间的差来调整经升档的神经网络122的参数。
图1C示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的示意图。稀疏(地面实况训练)目标每个包括与密集地面实况训练目标Y相比较的样本子集。每个稀疏地面实况训练目标中存在的样本子集是不同的。
训练经升档的神经网络140以升档稀疏输入数据并产生密集输出图像f其为输入图像的经升档版本。与使用密集目标数据的传统训练技术相比,训练数据包括与稀疏目标向量配对的稀疏输入向量(存在的稀疏数据显示为黑白,是缺失数据)。重要的是,在训练对内,包括在稀疏输入数据中的样本子集(即,像素)不应该与包括在稀疏目标数据中的样本子集相关。稀疏反向传播单元142接收密集输出图像和稀疏目标数据并且调整经升档的神经网络140的参数。
在一个实施例中,稀疏反向传播单元142包括计算损失函数的第一单元和执行反向传播(基于损失梯度更新神经网络权重)的第二单元。如本文进一步所描述的,修改由第一单元执行的损失计算,并且仅将稀疏损失梯度而不是密集损失梯度输入到第二单元。随后的反向传播操作与传统的神经网络训练阶段相同,除了仅处理稀疏损失梯度而不是密集损失梯度以产生更新的权重。
在一个实施例中,与使用密集目标图像训练经升档的神经网络122相比,使用稀疏目标数据训练经升档的神经网络140使得经升档的神经网络140以相似的速率收敛。一个可能的解释是由经升档的神经网络140执行的卷积操作被同样地应用于每个样本(即,像素),并且因此在反向传播期间用所有像素的平均梯度来更新权重。甚至稀疏目标向量包含足够多的样本,以至于可以准确估计出梯度。
尽管一个动机已经减少了生成训练目标向量所需的努力,但是稀疏目标向量也可能能够通过减少针对每个训练对执行的计算的数目来加速神经网络模型训练过程-特别是当使用稀疏输入向量时。稀疏矩阵乘法是一个充分研究的领域,并且计算效率技术可以直接应用于神经网络,因为大多数层(例如完全连接层和卷积层)是使用矩阵乘法实现的。
此外,可能存在通过使用稀疏目标向量训练神经网络模型来避免物理限制的用例。例如,假设一片硬件可以在某个有限的频率下对信号s(t)进行采样,但是具有可配置的时序。通过随机对信号进行采样,可以对神经网络模型进行有效训练,以使用大量稀疏训练数据执行上采样/信号预测。
图1D示出了根据一个实施例的用于使用稀疏目标向量145训练神经网络125的系统150的框图。输入向量115可以是稀疏或密集X。当输入向量115是稀疏的时,可以使用位掩码来指示存在于每个输入向量中的样本的位置。包括在输入向量115中的每个输入向量与包括在稀疏目标向量145中的稀疏目标向量配对。在一个实施例中,与每个稀疏目标向量相关联的位掩码指示样本子集中样本的位置。与样本子集中存在的样本相对应的位置因稀疏目标向量145中的每个稀疏目标向量而变化。换句话说,两个稀疏目标向量的两个位掩码中的至少一个位置是不同的。当输入向量115稀疏时,用于训练对的位掩码不能相等,因为训练对内的稀疏输入向量和稀疏目标向量不能相关。
在训练期间,将输入向量或X应用于神经网络模型125以生成输出f或f(X)。稀疏参数调整单元135接收输出f或f(X)以及稀疏目标向量两者,稀疏目标向量与被应用以生成输出f或f(X)的输入向量或X分别成对。可以将用于每个训练对的一个或更多个位掩码提供给参数调整单元135。参数调整单元135被配置为调整参数值以减小输出和有噪声目标样本之间的差。可以由参数调整单元135计算损失函数,以测量稀疏目标向量145和输出向量之间的距离(即,差或梯度)。参数调整单元135基于距离和目标位掩码来调整参数。
更具体地,可微函数g描述了具有一组可训练参数Θ的神经网络模型125,其将密集输入向量X={x1,x2,...,xn}映射到图像尽可能接近密集目标Y。神经网络125通过最小化损失函数来训练,
其中稀疏目标向量是密集目标向量Y的子集。
当输入向量115包括稀疏输入向量时,通过最小化损失函数来训练神经网络125,
其中稀疏输入向量是密集输入向量X的子集。
在一个实施例中,针对损失函数计算的损失是分量方式的损失项的总和。例如,对于灰度图像,分量将是像素值,对于RGB图像,分量将是颜色通道值,等等。在一个实施例中,损失的等式是所有分量的总和(损失是单个标量值)
其中分量损失函数为ε(x,y)。例如,对于L2损失,分量损失函数为
ε(x,y)=(x-y)2。在一个实施例中,损失函数的梯度是
注意,总和中的每个项仅取决于因此,要确定损失如何随单个分量而变化,对于每个其他项,梯度为零,导致
直观上,梯度是具有与密集目标和网络的输出一样多分量的向量
在一个实施例中,当计算梯度时,其中具有缺失样本的所有分量被设置为预定值,例如零。
当使用密度掩码时,梯度计算如下:
其中wi是特定分量的密度掩码值。在一个实施例中,密度掩码包括指示每个目标样本的确定性/置信度的[0,1]之间的浮点值,其中1.0是完全有效的样本,而0.0是完全忽略的样本。例如,值0.2表示与值0.9相比,反向传播对应像素的损失时置信度级别较低。
具有缺失样本的分量设置为预定值,确保了稀疏目标向量缺失样本的位置的梯度被最小化(即变为零)。因此,稀疏参数调整单元135执行的反向传播过程将仅基于存在于稀疏目标向量中的实际数据来更新参数Θ。在一个实施例中,参数是神经网络125的权重。在一个实施例中,不针对每个输出向量调整参数值,而是针对一批N个输出向量调整参数值,其中N大于1。由参数调整单元135计算的差(即梯度)可以在调整参数值之前针对N个输出进行平均。
将缺失样本的差或梯度设置为预定值不同于传统dropout技术。传统的dropout技术被用于将梯度设置为零,其使用密集输出向量和密集目标向量计算。设置为零的梯度是随机选择的。相比之下,当使用稀疏目标向量时被设置为预定值的梯度不是随机选择的。反而,设置为预定值的梯度分别与稀疏目标向量中的缺失样本相关联。缺失样本不需要被生成或存储。
在神经网络125被训练之后,可以部署神经网络125以将调整后的参数值应用于输入数据并且生成密集输出数据,诸如由图1C中所示的升档神经网络140输出的经升档的图像。
在一个实施例中,稀疏目标向量145也是有噪声的,并且神经网络125被训练以产生以生成干净的图像。2017年11月8日提交的标题为“在没有地面实况训练样本的情况下训练用于回归的神经网络的系统和方法(Systems and Methods for Training NeuralNetworks for Regression Without Ground Truth Training Samples)”的15/807,401号美国专利申请中描述了用噪声训练数据训练神经网络的技术,其全部内容通过引用并入本文。
在一个实施例中,有噪声目标样本相对于潜在干净目标样本的分布是这样的,即潜在干净目标样本是有噪声目标样本的平均(即平均值)。例如,对于图像的特定像素,有噪声目标样本中所有图像的该像素的颜色值的平均值是潜在干净目标样本中相同像素的颜色值。在另一个实施例中,有噪声目标样本相对于潜在干净目标样本的数据分布是这样的,即潜在干净目标样本是有噪声目标样本的最频繁出现的(即中值)。例如,对于图像的特定像素,有噪声目标样本中所有图像的该像素最频繁出现的颜色值是潜在干净目标样本中相同像素的颜色值。
当用稀疏目标向量145中的有噪声目标样本代替地面实况目标数据时,有噪声目标向量145中的噪声是附加水平的随机性。然而,当使用有噪声稀疏目标向量145时,由稀疏参数调整单元135计算的且被用于平均调整参数值的梯度,朝向与使用地面实况目标向量(即,密集目标向量)时相同的经调整参数值进行收敛。
尽管由噪声引起的附加水平的随机性使得训练神经网络125更加困难,需要更多时间来收敛,一旦训练完成,神经网络125的准确度与传统训练的神经网络的准确度相似。然而,与生成具有地面实况目标样本的密集训练数据集相比,可以生成包括有噪声目标样本的稀疏训练数据集的速度可以抵消附加训练时间。
图1E示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的另一个示意图。稀疏输入向量的每一个与稀疏目标向量配对。在训练期间,稀疏参数调整单元185接收由神经网络模型180生成的输出和与输入向量配对的稀疏目标向量稀疏参数调整单元185针对该子集中的样本计算稀疏目标向量与输出之间的差。用于缺失样本的差可设置为零。如前所述,基于差来调整参数。在神经网络125被训练之后,神经网络125可以被部署以将经调整的参数值应用于输入数据并且生成密集输出数据,诸如图1E所示的由神经网络180输出的图像。
在每个训练对内,稀疏输入向量中的样本子集中的至少一个样本位置不同于稀疏目标向量中的样本子集中的样本位置。换句话说,稀疏输入向量中的样本子集与稀疏目标向量中样本子集中的样本位置不相关。初始实验表明,使用稀疏输入向量和稀疏目标向量的训练以相似的速率收敛,并且与使用密集输入向量和稀疏目标向量相比具有相似的质量。在一个实施例中,使用预定值(诸如零)代替稀疏输入向量的缺失样本。使用稀疏输入向量的训练可能是有用的,例如,当尝试在事件的时间不能被控制而仅能被测量的过程上应用或训练网络时(例如放射性衰减)。
与密集训练数据集相比,可以实时产生包括稀疏输入向量和稀疏目标向量的稀疏训练数据集,使得“实况训练”成为交互系统中的排练(walk-through)的一部分。例如,当用户导航穿过三维(3D)场景时,可以渲染稀疏训练数据集并且可以训练在查看应用程序中部署的神经网络125或180,以便以交互速率生成3D场景的高分辨率图像。在另一个示例中,可以以低分辨率捕获诸如自主车辆前方的视野之类的环境图像,并且可以将显示器内的神经网络125或180训练成以交互速率生成干净(去噪)的环境图像。在另一个示例中,诸如自动车辆前方的视野之类的环境的图像可以在夜间低照明条件下捕获,这在短曝光时间引入噪声。在显示器内的神经网络125或180可被训练成以交互速率生成干净和/或高分辨率图像。在又一个示例中,可以使用深度感测设备(诸如飞行时间传感器或激光雷达)来捕获视图,导致深度的有噪声估计。神经网络125将学习去除这种噪声。在进一步的示例中,使用不同的随机化切片或经受扫描的体积的光谱表示的其他子集捕获的功能磁共振(MRI)图像可以作为序列馈送以训练神经网络,以仅基于对应于短脉冲序列的有限量的信息重建高质量体积图像。重要的是,使用方法100用稀疏目标样本训练神经网络125或180的技术是域独立的。
图1F示出了根据一个实施例的用于使用输入数据和稀疏地面实况训练目标来训练神经网络(诸如神经网络125、升档神经网络140或神经网络180)的方法160的流程图。方法160在神经网络的上下文中描述,并且方法160也可以由程序、定制电路或者由定制电路和程序的组合来执行。例如,方法160可以由图形处理单元(GPU)、中央处理单元(CPU)或能够执行必要处理操作的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法160的任何系统都在本发明的实施例的范围和精神内。
在步骤165,从包括稀疏输入向量和稀疏目标向量的一组训练数据中选择稀疏输入向量其中每个稀疏目标向量包括对应于神经网络模型的输出向量中的样本子集。在一个实施例中,针对每个稀疏输入向量和稀疏目标向量随机地选择样本子集中的样本。稀疏输入向量中样本的位置不应该与训练对的稀疏目标向量中的样本子集相关联。换言之,样本子集在训练对内不相关。
在步骤168,针对缺失样本将值插入到稀疏输入向量中。在一个实施例中,稀疏输入向量以压缩格式存储和传输。输入向量单元(未示出)接收压缩格式的稀疏输入向量,并根据位掩码为缺失样本插入值。这些值可以是预定的,例如零。
在步骤170,通过神经网络模型处理稀疏输入向量以针对输出向量内的样本产生输出数据。虽然神经网络模型产生密集输出向量,但只需要与稀疏目标向量中的样本相对应的样本子集以用于与稀疏目标向量进行比较。在一个实施例中,神经网络模型可以被配置为仅产生用于输出向量的样本子集而不是产生密集输出向量。
在步骤130,调节神经网络模型的参数值以针对样本子集减小输出向量与稀疏目标向量之间的差,如前面结合图1A所描述的。当针对输入向量生成的输出数据与稀疏目标向量内的样本子集相匹配或者达到训练数据集的阈值精度时,认为神经网络模型被充分训练。
图2A示出了根据一个实施例的用于使用稀疏目标向量145训练神经网络125的系统200的框图。输入向量115可以是稀疏或密集X。包括在输入向量115中的每个输入向量与包括在稀疏目标向量145中的稀疏目标向量配对。在训练期间,稀疏参数调整单元235接收由神经网络模型125生成的输出或f(X),以及与被应用以分别生成输出或f(X)的输入向量或X配对的稀疏目标向量稀疏参数调整单元235还接收与目标样本数据相对应的密度掩码。在一个实施例中,密度掩码指示密集目标向量的每个样本位置的密度值或强度。目标样本数据205可以包括指示存在于样本子集中的样本位置的密度掩码和/或位掩码。在一个实施例中,为每个稀疏目标向量提供密度掩码。密度掩码指示稀疏目标向量的样本子集中存在的每个样本位置的密度值。当为每个稀疏目标向量提供密度掩码时,不需要位掩码并可以省略。在一个实施例中,对应于不同稀疏目标向量的密度掩码不同。在一个实施例中,提供了定义所有样本位置的密度值的密度掩码,并且为每个稀疏目标向量提供位掩码以指定存在于每个稀疏目标向量中的样本子集。
当输入向量115包括密集输入向量时,通过最小化等式(3)中所示的损失函数来训练神经网络。当输入向量115包括稀疏输入向量时,通过最小化等式(4)中所示的损失函数来训练神经网络。稀疏参数调整单元235计算样本子集的梯度并且以由样本位置的密度掩码提供的相应密度值来缩放每个梯度。稀疏参数调整单元235然后使损失函数最小化以生成用于神经网络125的更新的参数Θ。
图2B示出了使用输入数据和稀疏地面实况训练目标来训练神经网络(诸如神经网络125、升档神经网络140或神经网络180)的方法210的另一个流程图。方法210在神经网络的上下文中描述,并且方法210也可以由程序、定制电路或者由定制电路和程序的组合来执行。例如,方法210可以由图形处理单元(GPU)、中央处理单元(CPU)或能够执行必要的处理操作的任何处理器执行。此外,本领域普通技术人员将理解,执行方法210的任何系统都在本发明的实施例的范围和精神内。
如先前结合图1A所描述的那样执行步骤110和120。在一个实施例中,当使用稀疏输入向量时,将用于缺失样本的值插入稀疏输入向量中。
在步骤225,稀疏参数调整单元235基于密度掩码计算在子集中存在的样本的差。更具体地,稀疏参数调整单元235计算输出向量中与稀疏目标向量中的样本子集之间的差,然后以密度掩码来缩放该差。在一个实施例中,密度掩码定义存在于子集中的样本。
在步骤230,将不存在于子集中的缺失样本的差设置为预定值。在一个实施例中,预定值是零。与传统的dropout技术相比,设置为零的差不是随机选择的。相反,设置为预定值的差是不在子集中的样本,因此样本的数据在目标向量中缺失。因此,一个重要的优点是不需要为稀疏目标向量生成缺失的样本。
在步骤130,调整神经网络模型的参数值以针对样本子集减小输出向量与稀疏目标向量之间的差(以密度掩码缩放),如先前结合图1A所描述的。当为输入向量生成的输出数据与稀疏目标向量内的样本子集相匹配或者达到训练数据集的阈值精度时,认为神经网络模型被充分训练。
图2C示出了根据一个实施例的使用稀疏输入数据和稀疏地面实况训练目标的神经网络训练的示意图。训练神经网络250以生成抗锯齿图像。通过在两个维度上将输入图像升档4个因子来生成升档的图像240,使得稀疏输入向量240中的每个像素表示输入图像中的4×4区域。随机样本位置被捕捉(snap)到升档的图像240内的每个4×4网格中的一个单元,并且4×4网格中剩余的15个单元由稀疏输入向量240保留为黑色(不存在),以生成稀疏输入向量。目标图像248是抗锯齿图像。稀疏目标向量由稀疏样本选择单元242通过以小于每像素一个样本的速率对目标图像248进行采样来生成。被采样的位置用包括在目标样本数据205中的位掩码进行编码。在目标样本数据205被提供给稀疏参数调整单元235之前,位掩码可以用密度掩码替换。
在训练期间,神经网络250处理稀疏输入向量并生成输出向量。输出向量中的样本子集与稀疏目标向量进行比较以生成更新的参数。如前所解释的,可以计算差并且以密度掩码来缩放该差以生成更新的参数。方法100、160或210可以用于调整神经网络250的参数值。
图2D示出根据一个实施例的使用稀疏输入数据和稀疏目标数据训练以生成抗锯齿图像的神经网络的稀疏输入数据、地面实况目标数据和输出数据。
稀疏目标(和输入)训练数据集可以快速生成,比密集目标(和输入)样本更快并且具有更少的计算。使用稀疏目标(和输入)数据而不是密集目标(和输入)数据可以显著加速训练数据集集合的生成,并由此加速整个训练过程。在一个实施例中,将训练数据集存储在存储器中所需的存储量降低。重要的是,训练可以实时执行,并且存储容量和数据传输能力要低得多。
并行处理架构
图3示出根据一个实施例的并行处理单元(PPU)300。PPU 300可以被配置为实现神经网络训练系统150或250。
在一个实施例中,PPU 300是在一个或更多个集成电路设备上实现的多线程处理器。PPU 300是设计用于并行处理大量线程的延迟隐藏架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现图形渲染管线,所述图形渲染管线用于处理三维(3D)图形数据以便生成二维(2D)图像数据用于在显示装置(诸如液晶显示器(LCD)设备)上显示。在其他实施例中,PPU300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
如图3所示,PPU 300包括输入/输出(I/O)单元305、主机接口单元310、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。PPU 300可以经由系统总线302连接到主机处理器或其他外围设备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。
I/O单元305被配置为通过系统总线302从主机处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元305可以经由系统总线302或通过一个或更多个中间设备(诸如存储器桥)与主机处理器直接通信。在一个实施例中,I/O单元305实现用于通过PCIe总线进行通信的高速外围组件互连(PCIe)接口。在替代实施例中,I/O单元305可以实现用于与外部设备进行通信的其他类型的公知接口。
I/O单元305耦合到主机接口单元310,其对经由系统总线302接收到的数据包进行解码。在一个实施例中,数据包表示被配置为使PPU 300执行各种操作的命令。主机接口单元310按照命令指定的方式将解码的命令发送到PPU 300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,主机接口单元310被配置为在PPU 300的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 300提供用于处理的工作负载。工作负载可以包括多个指令以及要由那些指令处理的数据。缓冲区是存储器中可由主机处理器和PPU 300访问(即,读/写)的区域。例如,主机接口单元310可被配置为经由由I/O单元305通过系统总线302发送的存储器请求访问连接到系统总线302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 300发送指向命令流开始的指针。主机接口单元310向前端单元315提供指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被分配给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的多个调度任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理任务池和活动任务池。待处理任务池可以包括多个时隙(例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括多个时隙(例如,4个时隙),用于正在由GPC 350有效处理的任务。当GPC 350完成任务的执行时,该任务从GPC 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar 370与一个或更多个GPC 350通信。XBar 370是将PPU300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的GPC 350。虽然没有明确示出,但是可以将PPU 300的一个或更多个其他单元耦合到主机接口单元310。其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。GPC 350被配置为处理任务并生成结果。结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。结果可以经由分区单元380写入存储器304,这实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。在一个实施例中,PPU 300包括数量为U的分区单元380,其等于耦合到PPU 300的分离且不同的存储器设备304的数量。下面将结合图4B更详细地描述分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得在主机处理器上执行的一个或更多个应用程序能够调度操作用于在PPU 300上执行。应用程序可以生成指令(即API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,在此称为线程束(warp)。线程块可以指包括用于执行任务的指令的多个线程组。同一线程组中的线程可以通过共享存储器交换数据。在一个实施例中,一个线程组包括32个相关线程。
图4A示出了根据一个实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个纹理处理集群(TPC)420。将会理解,图4A的GPC 350可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个TPC 420的配置。在一个实施例中,管线管理器410可以将一个或更多个TPC 420中的至少一个配置为实现图形渲染管线的至少一部分。例如,TPC 420可以被配置为在可编程流式多处理器(SM)440上执行顶点着色程序。管线管理器410还可以被配置为将从工作分配单元325接收的数据包路由到GPC 350内适当的逻辑单元。例如,一些数据包可以被路由到PROP 415和/或光栅引擎425中的固定功能硬件单元,而其他数据包可以被路由到TPC 420以由图元引擎435或SM 440处理。
PROP单元415被配置为将由光栅引擎425和TPC 420生成的数据路由到分区单元380中的光栅操作(ROP)单元,下面将更详细地描述。PROP单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片合并引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被传输到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎的输出被传输到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并被传输到裁剪引擎,其中位于视锥之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程来生成像素片段的属性。光栅引擎425的输出包括要由例如在TPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个TPC 420包括M管道控制器(MPC)430、图元引擎435、一个或更多个SM 440以及一个或更多个纹理单元445。MPC 430控制TPC 420的操作,将从管线管理器410接收的数据包路由到TPC 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304获取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被传输到SM 440。
在一个实施例中,纹理单元445被配置为从存储器304加载纹理图(texture map)(例如,纹理像素的2D阵列)并对纹理图进行采样以产生采样纹理值,以用于在由SM 440执行的着色程序中使用。纹理单元445实现纹理操作,例如使用mip图(即,不同细节层次的纹理图)的过滤操作。纹理单元445还用作SM 440到MMU 490的加载/存储路径。在一个实施例中,每个TPC 420包括两个(2)纹理单元445。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)架构,其中线程组(即,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。换句话说,当针对该线程组的指令被分派用于执行时,该线程组中的一些线程可以是活动的,从而执行该指令,而该线程组中的其他线程可以是不活动的,从而执行空操作(NOP)而不是执行指令。下面可以结合图5更详细地描述SM 440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于改善虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲区(TLB)。
图4B示出了根据一个实施例的图3的PPU 300的存储器分区单元380。如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级(L2)高速缓存460、存储器接口470和L2交叉开关(XBar)465。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的16、32、64、128位数据总线等。在一个实施例中,PPU 300包括U个存储器接口470,每个分区单元380一个存储器接口470,其中每个分区单元380连接到对应的存储器设备304。例如,PPU 300可以连接到多达U个存储器设备304,诸如图形双数据速率版本5的同步动态随机存取存储器(GDDR5SDRAM)。在一个实施例中,存储器接口470实现DRAM接口并且U等于8。
在一个实施例中,PPU 300实现多级存储器分层结构。存储器304位于耦合到PPU300的SDRAM中的片外。来自存储器304的数据可以被获取并存储在L2高速缓存460中,其位于片上并且在各个GPC 350之间共享。如图所示,每个分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350内的各种单元中实现较低级高速缓存。例如,每个SM 440可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar 370。
ROP单元450包括ROP管理器455、颜色ROP(CROP)单元452和Z ROP(ZROP)单元454。CROP单元452执行与像素颜色相关的光栅操作,诸如颜色压缩、像素混合等。ZROP单元454结合光栅引擎425实现深度测试。ZROP单元454从光栅引擎425的剔除引擎接收与像素片段相关联的采样位置的深度。ZROP单元454测试相对于深度缓冲区中与片段相关联的样本位置的对应深度的深度。如果片段通过样本位置的深度测试,则ZROP单元454更新深度缓冲区并将深度测试的结果发送给光栅引擎425。ROP管理器455控制ROP单元450的操作。应该理解,分区单元380的数量可以不同于GPC 350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。因此,ROP管理器455跟踪从不同GPC 350接收到的数据包并确定由ROP单元450生成的结果被路由到哪个GPC 350。CROP单元452和ZROP单元454经由L2 XBar465耦合到L2高速缓存460。
图5示出了根据一个实施例的图4A的流式多处理器440。如图5所示,SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。
如上所述,工作分配单元325分派用于在PPU 300的GPC 350上执行的任务。任务被分配给GPC 350内的特定TPC 420,并且如果任务与着色程序相关联,则该任务可以被分配给SM 440。调度器单元510从工作分配单元325接收任务并且管理指派给SM 440的一个或更多个线程组(即,warp)的指令调度。调度器单元510调度线程以在并行线程组中执行,其中每个组称为warp。在一个实施例中,每个warp包括32个线程。调度器单元510可管理多个不同的warp,调度warp以执行,然后在每个时钟周期期间将来自多个不同warp的指令分派到各个功能单元(即,核心550、SFU 552和LSU 554)。
在一个实施例中,每个调度器单元510包括一个或更多个指令分派单元515。每个分派单元515被配置为向一个或更多个功能单元传送指令。在图5所示的实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同warp的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同的warp之间被划分。寄存器文件520为连接到功能单元的数据通路(data path)的操作数提供临时存储。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。核心550还可以包括双精度处理单元,其包括浮点运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。每个SM 440还包括执行特殊功能(例如,属性评估、倒数平方根等)的M个SFU 552,以及在共享存储器/L1高速缓存570和寄存器文件520之间实现加载和存储操作的N个LSU 554。在一个实施例中,SM 440包括128个核心550、32个SFU 552和32个LSU 554。
每个SM 440包括将每个功能单元连接到寄存器文件520并将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,并将LSU 554连接到寄存器文件和共享存储器/L1高速缓存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的数据通信。在一个实施例中,共享存储器/L1高速缓存570包括64KB的存储容量并且处于从SM 440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。
上述PPU 300可以被配置为比常规CPU更快地执行高度并行计算。并行计算在图形处理、数据压缩、生物统计学、流处理算法等方面具有优势。
当被配置用于通用并行计算时,可以使用更简单的配置。在这个模型中,如图3所示,固定功能图形处理单元被绕过,创建了一个更简单的编程模型。在该配置中,工作分配单元325将线程块直接指派并分配给TPC 420。块中的线程执行相同的程序,在计算中使用唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554通过分区共享存储器/L1高速缓存570和分区单元380来读取和写入全局存储器。
当被配置为用于通用并行计算时,SM 440还可写入调度器单元320可用来在TPC420上启动新工作的命令。在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形条等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)以及与图元的每个顶点相关联的属性的数据。PPU 300可以被配置为处理图形图元以生成帧缓冲区(即,用于显示器的每个像素的像素数据)。
应用程序将场景的模型数据(即,顶点和属性的集合)写入存储器(诸如系统存储器或存储器304)。模型数据定义可能在显示器上可见的每个对象。应用程序然后对驱动程序内核进行API调用,其请求要渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以引用要在PPU 300的SM440上实现的不同着色程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或更多个。例如,SM 440中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 440可以被配置为同时执行不同的着色程序。例如,SM 440的第一子集可以被配置为执行顶点着色程序,而SM 440的第二子集可以被配置为执行像素着色程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在将经处理的顶点数据光栅化(即,从三维数据变换成屏幕空间中的二维数据)以产生片段数据之后,SM440的第二子集执行像素着色程序以产生经处理的片段数据,然后将其与其它经处理的片段数据混合并写入存储器304中的帧缓冲区。顶点着色程序和像素着色程序可以同时执行,以管线化方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲区。然后,帧缓冲区的内容被传输到显示控制器以显示在显示设备上。
PPU 300可以包括在台式计算机、膝上型计算机、平板电脑、智能电话(例如无线、手持设备)、个人数字助理(PDA)、数码相机、手持式电子装置等中。在一个实施例中,PPU300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他逻辑单元(诸如精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,其包括一个或更多个存储器设备304,诸如GDDR5SDRAM。图形卡可以被配置为与台式计算机(包括例如北桥芯片组和南桥芯片组)的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片组(即,北桥)中的集成图形处理单元(iGPU)。
可以在PPU 300内执行各种程序以便实现和训练各种神经网络模型122、125、180、200和250。例如,设备驱动程序可以启动PPU 300上的内核以实现一个SM 440(或多个SM440)上的至少一个神经网络层。设备驱动程序(或由PPU 300执行的初始内核)也可启动PPU300上的其他内核以执行神经网络的其他层。另外,一些神经网络层可以在PPU 300内实现的固定单元硬件上实现。
示例性系统
图6示出了示例性系统600,其中可以实现各种先前实施例的各种架构和/或功能。示例性系统600可以用于实现神经网络训练系统150和/或200。
如图所示,提供了系统600,其包括连接到通信总线602的至少一个中央处理器601。通信总线602可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、HyperTransport或任何其他总线或点对点通信协议。系统600还包括主存储器604。控制逻辑(软件)和数据被存储在主存储器604中,主存储器604可以采取随机存取存储器(RAM)的形式。
系统600还包括输入装置612、图形处理器606和显示器608,即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。用户输入可以从输入设备612接收,例如键盘、鼠标、触摸板、麦克风等。在一个实施例中,图形处理器606可以包括多个着色器模块、光栅化模块等。前述模块中的每一个甚至可以位于单个半导体平台上以形成图形处理单元(GPU)。
在本说明书中,单个半导体平台可以指唯一的单一的基于半导体的集成电路或芯片。应该指出的是,术语单个半导体平台还可以指具有增加的连接性的多芯片模块,其模拟片上操作,并且相对于利用传统的中央处理单元(CPU)和总线实现而言有明显改进。当然,根据用户的需要,各种模块也可以单独地或以各种组合位于半导体平台。
系统600还可以包括辅助存储610。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器,代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能光盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器604和/或辅助存储610中。这些计算机程序在被执行时使得系统600能够执行各种功能。存储器604、存储610和/或任何其他存储是计算机可读介质的可能示例。与手势相关联的数据流可以被存储在主存储器604和/或辅助存储610中。
在一个实施例中,可以在中央处理器601、图形处理器606、集成电路(未示出)、芯片组(即,设计为作为用于执行相关功能的单元工作和出售的一组集成电路)和/或用于此的任何其他集成电路的上下文中实现各种在先附图的架构和/或功能,所述集成电路能够实现中央处理器601和图形处理器606两者的能力的至少一部分。
此外,各种先前附图的架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他期望的系统的上下文中实现。例如,系统600可以采用台式计算机、膝上型计算机、服务器、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。此外,系统600可以采用各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机、头戴式显示器、自主车辆、虚拟现实系统等等。
此外,虽然未示出,但系统600可以耦合到网络(例如,电信网络、局域网(LAN)、无线网络、诸如因特网的广域网(WAN)、对等网络、线缆网络等)用于通信目的。
虽然上文已经描述了各种实施例,但应该理解,它们仅作为示例呈现,而不是限制。因此,优选实施例的宽度和范围不应被任何上述示例性实施例限制,而应仅根据所附权利要求及其等同物来限定。

Claims (20)

1.一种用于训练神经网络模型的计算机实现的方法,包括:
从包括输入向量和稀疏目标向量的一组训练数据中选择输入向量,其中每个稀疏目标向量包括对应于神经网络模型的输出向量内的样本子集的目标数据;
通过所述神经网络模型处理所述输入向量,以针对所述输出向量内的样本产生输出数据;以及
调整所述神经网络模型的参数值,以针对所述样本子集减小所述输出向量与所述稀疏目标向量之间的差。
2.根据权利要求1所述的计算机实现的方法,其中所述输入向量的分辨率低于所述输出向量的分辨率。
3.根据权利要求1所述的计算机实现的方法,其中每个稀疏目标向量不同于所述组训练数据中的其他稀疏目标向量。
4.根据权利要求1所述的计算机实现的方法,其中所述输入向量包括针对所述输出向量内的所述样本的第二子集的输入数据。
5.根据权利要求4所述的计算机实现的方法,其中所述样本的所述第二子集与所述样本子集不相关。
6.根据权利要求1所述的计算机实现的方法,其中指示所述样本子集中的样本的强度的密度掩码被用于缩放所述差。
7.根据权利要求6所述的计算机实现的方法,其中与每一个所述稀疏目标向量相对应的所述密度掩码不同。
8.根据权利要求1所述的计算机实现的方法,其中针对所述样本子集中的每个样本计算所述差的一部分,并且未包括在所述样本子集中的样本的剩余样本的所述差的剩余部分被设置为零。
9.根据权利要求1所述的计算机实现的方法,其中指示所述样本子集中的所述样本的位置的位掩码被用于计算所述差。
10.根据权利要求9所述的计算机实现的方法,其中与每个所述稀疏目标向量相对应的所述位掩码不同。
11.根据权利要求1所述的计算机实现的方法,其中与每个所述稀疏目标向量中的所述样本子集中的样本相对应的位置不同。
12.根据权利要求1所述的计算机实现的方法,还包括:
对于至少一个附加输出,重复选择所述输入向量并处理所述输入向量;以及
在调整所述参数值之前,将针对所述输出向量的差和针对至少一个附加输出向量的附加差组合,然后调整所述整神经网络模型的参数值以减小所述组合的差。
13.一种系统,包括:
存储器,其存储包括输入向量和稀疏目标向量的一组训练数据,其中每个稀疏目标向量包括对应于神经网络模型的输出向量内的样本子集的目标数据;
并行处理单元,其耦合到所述存储器并且被配置为:
从所述组训练数据中选择输入向量;
通过所述神经网络模型处理所述输入向量以针对所述输出向量内的样本产生输出数据;以及
调整所述神经网络模型的参数值,以针对所述样本子集减小所述输出向量与所述稀疏目标向量之间的差。
14.根据权利要求13所述的系统,其中所述输入向量的分辨率低于所述输出向量的分辨率。
15.根据权利要求13所述的系统,其中每个稀疏目标向量不同于所述组训练数据中的其他稀疏目标向量。
16.根据权利要求13所述的系统,其中所述输入向量包括针对所述输出向量内的所述样本的第二子集的输入数据。
17.根据权利要求16所述的系统,其中所述样本的所述第二子集与所述样本子集不相关。
18.根据权利要求13所述的系统,其中指示所述样本子集中的样本的强度的密度掩码被用于缩放所述差。
19.一种存储用于训练神经网络模型的计算机指令的非暂时性计算机可读介质,所述计算机指令当由处理器执行时,使所述处理器执行以下步骤:
从包括输入向量和稀疏目标向量的一组训练数据中选择输入向量,其中每个稀疏目标向量包括对应于神经网络模型的输出向量内的样本子集的目标数据;
通过所述神经网络模型处理所述输入向量以针对所述输出向量内的样本产生输出数据;以及
调整所述神经网络模型的参数值,以针对所述样本子集减小所述输出向量与所述稀疏目标向量之间的差。
20.根据权利要求19所述的非暂时性计算机可读介质,其中所述输入向量包括针对所述输出向量内的所述样本的第二子集的输入数据。
CN201810589639.6A 2017-06-12 2018-06-08 用稀疏数据训练神经网络的系统和方法 Pending CN109034385A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211695918.3A CN116050495A (zh) 2017-06-12 2018-06-08 用稀疏数据训练神经网络的系统和方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762518435P 2017-06-12 2017-06-12
US62/518,435 2017-06-12
US15/881,632 US11244226B2 (en) 2017-06-12 2018-01-26 Systems and methods for training neural networks with sparse data
US15/881,632 2018-01-26

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211695918.3A Division CN116050495A (zh) 2017-06-12 2018-06-08 用稀疏数据训练神经网络的系统和方法

Publications (1)

Publication Number Publication Date
CN109034385A true CN109034385A (zh) 2018-12-18

Family

ID=64563574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810589639.6A Pending CN109034385A (zh) 2017-06-12 2018-06-08 用稀疏数据训练神经网络的系统和方法

Country Status (1)

Country Link
CN (1) CN109034385A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110426560A (zh) * 2019-06-28 2019-11-08 北京大学 一种脉冲阵列信号时空上采样器生成方法
CN110490315A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 神经网络的反向运算稀疏方法及相关产品
CN110490314A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 神经网络的稀疏方法及相关产品
CN110852974A (zh) * 2019-11-12 2020-02-28 网易(杭州)网络有限公司 图像抗锯齿处理方法、图像生成器的训练方法及装置
CN111831901A (zh) * 2020-03-26 2020-10-27 北京嘀嘀无限科技发展有限公司 数据处理方法、装置、设备和存储介质
CN111856362A (zh) * 2019-04-24 2020-10-30 深圳先进技术研究院 磁共振成像方法、装置、系统及存储介质
CN112016669A (zh) * 2019-05-31 2020-12-01 辉达公司 使用选择性权重更新训练神经网络
CN113078974A (zh) * 2020-01-03 2021-07-06 百度(美国)有限责任公司 用于神经网络稀疏信道生成和推断的方法
CN114631102A (zh) * 2019-11-05 2022-06-14 辉达公司 神经网络的反向传播的分布式权重更新
WO2023222113A1 (zh) * 2022-05-19 2023-11-23 华为技术有限公司 稀疏参数的更新方法、训练节点、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912990A (zh) * 2016-04-05 2016-08-31 深圳先进技术研究院 人脸检测的方法及装置
CN106156003A (zh) * 2016-06-30 2016-11-23 北京大学 一种问答系统中的问句理解方法
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106372402A (zh) * 2016-08-30 2017-02-01 中国石油大学(华东) 一种大数据环境下模糊区域卷积神经网络的并行化方法
CN106650653A (zh) * 2016-12-14 2017-05-10 广东顺德中山大学卡内基梅隆大学国际联合研究院 基于深度学习的人脸识别和年龄合成联合模型的构建方法
CN106682734A (zh) * 2016-12-30 2017-05-17 中国科学院深圳先进技术研究院 一种提升卷积神经网络泛化能力的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912990A (zh) * 2016-04-05 2016-08-31 深圳先进技术研究院 人脸检测的方法及装置
CN106156003A (zh) * 2016-06-30 2016-11-23 北京大学 一种问答系统中的问句理解方法
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106372402A (zh) * 2016-08-30 2017-02-01 中国石油大学(华东) 一种大数据环境下模糊区域卷积神经网络的并行化方法
CN106650653A (zh) * 2016-12-14 2017-05-10 广东顺德中山大学卡内基梅隆大学国际联合研究院 基于深度学习的人脸识别和年龄合成联合模型的构建方法
CN106682734A (zh) * 2016-12-30 2017-05-17 中国科学院深圳先进技术研究院 一种提升卷积神经网络泛化能力的方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
MASSIH-REZA AMINI: "A co-classification approach to learning from multilingual corpora", 《MACHINE LEARNING》 *
PASCAL VINCENT: "Efficient exact gradient update for training deep networks with very large sparse targets", 《COMPUTER SCIENCE,NEURAL EVOLUTIONARY COMPUTING》 *
YINGYING ZHANG: "Single-Image Crowd Counting via Multi-Column Convolutional Neural Network", 《2016 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR)》 *
胡永强: "基于稀疏表示的多特征融合害虫图像识别", 《万方数据知识服务平台》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111856362A (zh) * 2019-04-24 2020-10-30 深圳先进技术研究院 磁共振成像方法、装置、系统及存储介质
CN112016669A (zh) * 2019-05-31 2020-12-01 辉达公司 使用选择性权重更新训练神经网络
CN110426560A (zh) * 2019-06-28 2019-11-08 北京大学 一种脉冲阵列信号时空上采样器生成方法
CN110426560B (zh) * 2019-06-28 2020-08-25 北京大学 一种脉冲阵列信号时空上采样器生成方法
CN110490315A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 神经网络的反向运算稀疏方法及相关产品
CN110490314A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 神经网络的稀疏方法及相关产品
CN110490314B (zh) * 2019-08-14 2024-01-09 中科寒武纪科技股份有限公司 神经网络的稀疏方法及相关产品
CN110490315B (zh) * 2019-08-14 2023-05-23 中科寒武纪科技股份有限公司 神经网络的反向运算稀疏方法及相关产品
CN114631102A (zh) * 2019-11-05 2022-06-14 辉达公司 神经网络的反向传播的分布式权重更新
CN110852974B (zh) * 2019-11-12 2022-08-05 网易(杭州)网络有限公司 图像抗锯齿处理方法、图像生成器的训练方法及装置
CN110852974A (zh) * 2019-11-12 2020-02-28 网易(杭州)网络有限公司 图像抗锯齿处理方法、图像生成器的训练方法及装置
CN113078974A (zh) * 2020-01-03 2021-07-06 百度(美国)有限责任公司 用于神经网络稀疏信道生成和推断的方法
CN111831901A (zh) * 2020-03-26 2020-10-27 北京嘀嘀无限科技发展有限公司 数据处理方法、装置、设备和存储介质
WO2023222113A1 (zh) * 2022-05-19 2023-11-23 华为技术有限公司 稀疏参数的更新方法、训练节点、设备和存储介质

Similar Documents

Publication Publication Date Title
CN109034385A (zh) 用稀疏数据训练神经网络的系统和方法
US20220405582A1 (en) Systems and methods for training neural networks with sparse data
US11315018B2 (en) Systems and methods for pruning neural networks for resource efficient inference
US10115229B2 (en) Reinforcement learning for light transport
US10565686B2 (en) Systems and methods for training neural networks for regression without ground truth training samples
US11367160B2 (en) Simultaneous compute and graphics scheduling
US11068781B2 (en) Temporal ensembling for semi-supervised learning
CN110046537A (zh) 使用递归神经网络进行动态面部分析的系统和方法
US9355483B2 (en) Variable fragment shading with surface recasting
US9177413B2 (en) Unique primitive identifier generation
US12045924B2 (en) Real-time hardware-assisted GPU tuning using machine learning
CN109426519A (zh) 线内数据检查以进行工作量简化
CN109978751A (zh) 多gpu帧渲染
CN107977703A (zh) 用于修剪神经网络以实现资源有效推理的系统和方法
CN110458905A (zh) 用于层级自适应曲面细分的设备和方法
CN105321143A (zh) 来自片段着色程序的采样掩膜的控制
US9305324B2 (en) System, method, and computer program product for tiled deferred shading
CN108335349A (zh) 利用神经网络滤波图像数据
US20210012562A1 (en) Probe-based dynamic global illumination
US9905037B2 (en) System, method, and computer program product for rejecting small primitives
US9721381B2 (en) System, method, and computer program product for discarding pixel samples
WO2017201676A1 (en) Self-adaptive window mechanism
DE102020108476A1 (de) Mechanismus zum Ausführen nichtlinearer Funktionen in einem Beschleuniger des maschinellen Lernens
US11315310B2 (en) Reservoir-based spatiotemporal importance resampling utilizing a global illumination data structure
CN109844802A (zh) 用于在图形处理器中提高线程并行性的机制

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination