图像深度预测神经网络 [0001] 相关申请的交叉引用 [0002] 本申请要求2016年9月15日提交的美国临时申请序列号为62/395,326的优先权。 在先申请的公开内容被认为是本申请的公开内容的一部分,并且通过引用并入本申请的公开内容中。 背景技术 [0003] 本说明书涉及使用神经网络处理图像。 [0004] 机器学习模型接收输入并基于接收的输入生成输出,例如预测的输出。一些机器学习模型是参数模型,并基于接收的输入和模型的参数值生成输出。 [0005] 一些机器学习模型是深度模型,其采用多层模型来为接收的输入生成输出。例如,深度神经网络是深度机器学习模型,其包括输出层和一个或多个隐藏层,其中,每个隐藏层将非线性变换应用于接收的输入以生成输出。 [0006] 一些神经网络是递归神经网络。递归神经网络是接收输入序列并从输入序列生成输出序列的神经网络。特别地,递归神经网络在处理输入序列中的先前输入之后使用网络的一些或全部内部状态,以从输入序列中的当前输入生成输出。 发明内容 [0007] 本说明书描述了在一个或多个位置中的一个或多个计算机上被实施为计算机程序的系统,该系统可以生成未来图像的预测。 [0008] 通常,一个创新方面可以体现在一种系统中,该系统包括:由一个或多个计算机实施的图像深度预测神经网络,其中图像深度预测神经网络是被配置为接收图像序列的递归神经网络并且,对于序列中的每个图像:根据递归神经网络的当前内部状态处理图像,以(i)更新当前内部状态,以及(ii)生成表征序列中未来图像的预测深度的深度输出。图像的深度可以包括在第三深度维度中定义由2D图像表示的场景的拓扑的一组值。 [0009] 该系统可以进一步包括图像生成子系统,该图像生成子系统被配置为对于序列中的每个图像:接收表征未来图像的预测深度的深度输出,并使用深度输出生成未来图像的预测。深度输出可以包括未来图像中的多个像素的每个像素的预测深度值,该预测深度值表示在该像素处描绘的场景距未来图像的焦平面的相应距离。未来图像可以紧跟图像序列中的图像。本领域技术人员将理解,这里对焦平面的引用并不意指要求存在物理相机。 [0010] 在一些实施方式中,图像序列是由机器人代理或车辆的相机捕获的视频帧。 [0011] 图像深度预测神经网络可以包括一个或多个卷积长短期记忆(long short-term memory,LSTM)神经网络层。这可以有助于从空间和时间分布的信息学习图像深度结构。图像深度预测神经网络可以包括一个或多个前馈卷积神经网络层。 [0012] 在一些实施方式中,图像深度预测神经网络包括下采样递归子神经网络,随后是上采样递归子网络。下采样递归子神经网络可以被配置为对于序列中的每个图像:处理该图像以生成具有比该图像更低的分辨率的下采样输出。上采样递归子神经网络可以被配置为对于序列中的每个图像:处理该图像的下采样输出以生成深度输出。这可以有助于系统学习跨空间和时间的广义图像深度特征。 [0013] 另一创新方面可以体现在一种方法中,该方法包括:接收图像序列;并且对于序列中的每个图像,使用图像深度预测神经网络处理图像。图像深度预测神经网络是递归神经网络,该递归神经网络被配置为对于序列中的每个图像:根据递归神经网络的当前内部状态处理图像,以(i)更新当前内部状态,以及(ii)生成表征序列中未来图像的预测深度的深度输出。 [0014] 该方法可以进一步包括,对于序列中的每个图像:接收表征未来图像的预测深度的深度输出;并使用深度输出生成未来图像的预测。深度输出可以包括未来图像中的多个像素的每个像素的预测深度值,该预测深度值表示在该像素处描绘的场景距未来图像的焦平面的相应距离。未来图像可以紧跟图像序列中的图像。 [0015] 在一些实施方式中,图像序列可以是由机器人代理的相机捕获的视频帧。 [0016] 图像深度预测神经网络可以包括一个或多个卷积长短期记忆(LSTM)神经网络层。 图像深度预测神经网络还可以包括一个或多个前馈卷积神经网络层。 [0017] 在一些实施方式中,图像深度预测神经网络包括下采样递归子神经网络,随后是上采样递归子网络。下采样递归子神经网络可以被配置为对于序列中的每个图像:处理该图像以生成具有比该图像更低的分辨率的下采样输出。上采样递归子神经网络可以被配置为对于序列中的每个图像:处理该图像的下采样输出以生成深度输出。 [0018] 可以实施本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。本说明书中描述的主题一般涉及利用基于几何的方法的图像预测系统,该基于几何的方法与预测未来图像的先前方法相比具有许多优点。先前方法可以分类为基于模型的方法和无模型的方法。基于模型的方法依赖于关于环境的强假设(例如,什么种类的场景是允许的,例如,弹跳球或刚性对象)并且仅在这种受限制的环境中表现良好。另一方面,无模型方法不依赖于关于世界的任何假设,因为它们直接从来自先前图像的像素值序列预测非结构化像素值。像素值可以是RGB值、单色值、亮度和色度值或像素的视觉特性的任何其他表示。 因此,无模型方法可以在不受约束的环境中很好地工作。然而,在这些无模型方法中得到的下一个图像通常没有对视觉质量进行优化。 [0019] 本说明书中描述的图像预测系统的示例首先从先前图像的像素值序列估计深度图,并且然后使用生成计算机图形技术使用估计的深度图来渲染下一图像的下一像素值。 该方法可以称为基于几何的方法。可以使用递归神经网络来估计深度图,因此其不对环境施加任何假设,因此允许系统在不受约束的环境(例如,现实生活环境)中良好地工作。另外,生成计算机图形技术可以利用在深度图中捕获的场景的几何形状和相机轨迹来进一步提供高质量的预测图像。 [0020] 特别地,通过包括例如包括卷积LSTM神经网络层而不是全连接层的递归卷积神经网络,系统不仅可以考虑当前输入图像而且可以考虑先前输入图像的历史,以便预测未来图像的深度,因此与现有方法相比,可以使用预测深度来产生未来图像的更准确和现实的预测。虽然无模型方法产生保守和模糊的预测(例如,使用基于预测图像中的像素值(诸如RGB值)的损失函数的方法),但是通过使用具有卷积LSTM层的递归神经网络,系统可以产生具有显著更高质量和清晰度(sharpness)的未来图像的预测。此外,图像的丰富3D表示可用于模拟将来(ahead)的多个未来图像,从而允许系统具有在许多情况下有用的预测能力。 [0021] 所提出的方法还可以用于生成假设的下一帧预测,例如,那些将从探索性或假设性动作产生的预测。该能力使得决策制定算法能够使用下一帧预测来评估一组可用动作的潜在结果。类似地,可以从先前的观察来预测真实或虚拟相机的近期未来轨迹(near-future trajectory)。预测未来帧的深度图而不是输入帧允许捕获场景中的动态对象的运动。该方法也可以应用于异常检测。例如,下一帧预测可以叠加在实际观察到的帧上,并且分析场景拓扑(深度)或外观(例如RGB帧或基于其他像素值的帧)中的不匹配。大的不匹配可以是对象以意外的速度移动的指示,并且可以用作警告信号,例如用于车辆中的更安全的导航或用于其他目的。 [0022] 本公开中的技术尤其可以用在车辆和机器人中。例如,可以使无人驾驶车辆和机器人能够预测运动或其他动作的后果。 [0023] 在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。 附图说明 [0024] 图1是图像预测系统的示例的框图。 [0025] 图2是图像深度预测神经网络的示例的框图。 [0026] 图3是用于处理图像序列以生成未来图像的预测的示例过程的流程图。 [0027] 图4是由图像预测系统产生的示例图像预测。 [0028] 各个附图中相同的附图标记和名称表示相同的元件。 具体实施方式 [0029] 本说明书描述了在一个或多个位置中的一个或多个计算机上被实施为计算机程序的图像预测系统,该图像预测系统包括图像深度预测神经网络。 [0030] 图1示出了示例图像预测系统100。系统100是在一个或多个位置中的一个或多个计算机上被实施为计算机程序的系统的示例,其中可以实施下面描述的系统、组件和技术。 [0031] 通常,图像预测系统100被配置为接收图像序列106并处理图像序列106以对于序列中的每个图像生成输出图像,该输出图像是图像序列中的未来图像的预测。例如,图像序列106可以包括由机器人代理的相机捕获的视频帧,并且未来图像可以是未来将由机器人代理的相机捕获的图像。未来图像可以是,例如,紧跟在序列中的当前图像的图像、序列中的当前图像之后三个图像的图像或者序列中的当前图像之后五个图像的图像。 [0032] 为了生成未来图像的预测,图像预测系统100包括图像深度预测神经网络102和图像生成子系统104。通常,图像深度预测神经网络102是递归神经网络,该递归神经网络包括一个或多个卷积长短期记忆(LSTM)神经网络层并且,可选地包括一个或多个前馈卷积神经网络层。下面参考图2更详细地描述图像深度预测神经网络102的结构。图像深度涉及图像中捕获的场景的拓扑。深度图包括图像中每个像素的深度值。像素的深度值是记录图像的平面与像素代表的对象或对象的一部分的实际或虚拟位置之间的垂直距离的表示。记录图像的平面可以是焦平面,例如,相机或虚拟相机的焦平面。 [0033] 在实施例中,图像深度预测神经网络102被配置为接收图像并从该图像导出深度图。在实施例中,这通过使用具有已知深度的图像训练神经网络来实现,其中已知深度被称为基础事实(ground truth)。 [0034] 在每个时间步骤,图像深度预测神经网络102被配置为接收图像序列106中的图像。然后,神经网络102使用包括一个或多个卷积LSTM神经网络层的神经网络层来处理图像,以生成图像的深度预测。神经网络102中的每个卷积LSTM神经网络层具有在每个时间步骤更新的状态。一旦图像被接收,则神经网络102处理该图像以更新卷积LSTM神经网络层的当前状态,并生成当前图像的深度预测。卷积LSTM神经网络层的更新的状态用于生成后续图像的深度预测。由于卷积LSTM神经网络层的状态在每个时间步骤被更新并因此包括序列中所有先前图像的深度信息,神经网络102可以从图像序列中(例如,在视频中)的多个图像预测深度,而不是如现有方法中那样从单个静止图像预测深度。结果,与现有方法相比,神经网络102可以从预测深度生成具有显著更高质量和清晰度的更准确和真实的未来图像。 [0035] 特别地,在一些情况下,对于图像序列106中的给定图像(例如,图像112),神经网络102生成深度预测,该深度预测包括表征当前图像112的当前深度的深度图,并且图像生成子系统104使用变换层从当前图像112的当前深度图生成未来图像(例如,未来图像108)的未来深度图。通常,图像的深度图包括图像中的多个像素中的每一个像素的相应深度值,并且每个深度值表示在像素处描绘的场景距该图像的焦平面的相应距离。在一些其他情况下,神经网络102直接生成表征未来图像108的预测深度的未来深度图。图像生成子系统104然后使用未来图像108的预测深度生成未来图像108的预测。 [0036] 例如,在一些实施方式中,给定图像序列{X1,X2,…,Xk-1}中的图像Xk-1,神经网络 102被配置为生成表征当前图像Xk-1的当前深度的深度图Dk-1。深度图Dk-1是包括多个像素的二维(two-dimensional,2D)图像,其中深度图中的每个像素对应于当前图像中的不同像素,并且具有与其在当前图像中的对应像素相同的2D坐标。深度图中的每个像素具有深度值,该深度值表示当前图像中其对应像素的深度信息,即当前图像中其对应像素处描绘的场景距当前图像的焦平面的相应距离。 [0037] 一旦神经网络102生成了深度图Dk-1,子系统104就使用深度图Dk-1和当前图像Xk-1来构建多个三维(three-dimensional,3D)点,每个3D点对应于当前图像Xk-1中的不同像素。 特别地,对于当前图像中的多个像素中的每个像素,子系统使用(i)像素的x和y坐标,以及(ii)从深度图Dk-1获得的像素的深度值,以便构建一个3D点。新构建的3D点形成点云C。每个点具有的x、y、z坐标,其中在点云C中的3D点的x和y坐标基于当前图像中的像素的x和y坐标确定,并且3D点的z坐标基于像素的深度值确定。3D点被分配与当前图像Xk-1中其对应像素相同的像素值(例如RGB值)。 [0038] 在实施例中,子系统104然后将一个或多个变换层应用于3D点以预测表征未来图像的预测深度的未来深度图(例如,未来图像Xk的深度图Dk)。在实施例中,将变换应用于深度图、预测深度图、图像或预测图像。这些变换可以是神经网络的层,例如一个或多个空间变换器网络层,或者它们可以是使用确定性算法实施的确定性变换。 [0039] 例如,一个或多个变换层包括可以如下构造的基于几何的变换矩阵。假设图像序列106包括由机器人代理的相机捕获的视频帧,子系统104可以使用当前帧和未来帧之间的相机运动来预测未来帧的未来深度图。通常,可以基于给定的相机姿势向量序列{P1,P2,…,Pk}来计算相机的相机运动。相机姿势向量Pi表示在时间步骤i的相机的位置和方位。具体地,相机姿势向量Pi包括在时间步骤i的相机的3D位置和3D方位,即偏转、俯仰和滚动角度。 为了预测未来图像Xk的深度图Dk,子系统104基于相机姿态向量Pk-1和Pk-计算帧Xk-1和Xk之间的相机运动。计算的相机运动包括三个平移分量(translation component)tx、ty、tz和三个旋转分量rx、ry、rz。子系统104然后基于帧Xk-1和Xk之间的相机运动计算在时间步骤k的相机的新的坐标和方位。给定相机的新的坐标和方位,子系统104将点云C投影到与相机预定距离的平面,并且该平面与相机的主轴正交,该主轴由相机的偏航、俯仰和滚动方位角度形成。子系统104然后基于从点云C中的其对应3D点到平面的相应新计算的距离来更新平面中的每个投影点的深度值。平面中获得的投影点形成未来帧Xk的未来深度图Dk。子系统104然后通过利用分配给点云C中其对应3D点的相应像素值(诸如RGB值)来绘制平面中的每个投影点,从而创建未来帧Xk的预测。 [0040] 在一些实施方式中,系统100可以预测将来多个时间步骤的未来图像的未来深度图,即预测t>k的Dt和Xt,为此,例如,一个或多个变换层使用机器人代理从时间k到时间t的假设相机运动来预测时间步骤t的相机的新的坐标和方位。子系统104然后在时间步骤t将点云C投影到距相机预定距离、并且与相机的主轴正交的平面,以产生Dt和Xt。例如,基于机器人代理(例如移动车辆)的运动的先验知识来对相机的假设运动进行建模和估计。 [0041] 在一些其他实施方式中,代替生成当前图像的深度图,神经网络102可以直接预测未来图像的未来深度图,例如未来图像Xk的未来深度图Dk。存在的子系统104然后可以接收未来深度图并使用未来深度图生成未来图像的预测。 [0042] 系统预测将来多幅图像的能力在许多情况下非常有用。例如,系统可以归纳将来多个图像并使用它们来检测异常或出人意料的结果。特别地,系统可以将预测的未来图像与实际观察的图像进行比较,并分析场景拓扑或外观中的不匹配。大的不匹配可能指示对象以意外的速度移动,并且可以用作通知信号以更安全地导航对象。 [0043] 图2示出了图像深度预测神经网络102的示例架构。 [0044] 通常,图像深度预测神经网络102是递归神经网络,该递归神经网络包括一个或多个卷积长短期记忆(LSTM)神经网络层并且,可选地包括一个或多个前馈卷积神经网络层。 图像深度预测神经网络被配置为接收图像序列并且对于序列中的每个图像生成表征当前图像的当前深度或未来图像的预测深度的深度图。图像深度预测神经网络可以是使用与基础事实深度图相关联的图像序列的监督训练来训练的神经网络。 [0045] 特别地,在一些实施方式中,图像深度递归神经网络102包括下采样递归子神经网络202,随后是上采样递归子网络204。下采样递归子神经网络202包括一个或多个卷积LSTM神经网络层208和一个或多个前馈卷积神经网络层206。类似地,上采样递归子神经网络204包括一个或多个卷积LSTM神经网络层212和一个或多个前馈卷积神经网络层214。卷积LSTM神经网络层类似于常规LSTM神经网络层,然而,它们的门由卷积而不是全连接神经网络层来实施。在X.Shi et al.“Convolutional LSTM network:A machine learning approach for precipitation nowcasting.”NIPS,2015中更详细地描述了卷积LSTM神经网络层。 [0046] 对于图像序列中的每个图像,例如,图像112,下采样递归子神经网络202被配置为处理图像112以生成具有分辨率低于图像112的下采样输出210(例如,大小减小的特征图)。 为了减小图像112的大小,下采样递归子神经网络202包括一个或多个具有步幅(stride)2的前馈卷积神经网络层。具有步幅2的一个或多个卷积神经网络层被放置在一个或多个卷积LSTM神经网络层附近/之间。例如,下采样递归子神经网络202可以包括具有步幅2的第一卷积神经网络层,随后是第一卷积LSTM神经网络层,随后是具有步幅2的第二卷积神经网络层,随后是第二卷积LSTM神经网络层,随后是具有步幅2的第三卷积神经网络层,随后是第三卷积LSTM神经网络层。在一些实施方式中,子神经网络202不包括最大池化层以保留特征图的空间结构。 [0047] 上采样递归子神经网络204被配置为处理图像112的下采样输出210以生成深度图 118。当生成深度图时,上采样递归子神经网络204通过使用具有块大小2的一个或多个深度到空间(depth-to-space)神经网络层来增大下采样输出210的大小以达到图像112的分辨率,其中,具有块大小2的一个或多个深度到空间神经网络层被放置在一个或多个具有步幅 1的卷积神经网络层和一个或多个卷积LSTM神经网络层附近或之间。例如,上采样递归子神经网络204可以包括具有块大小2的第一深度到空间神经网络层,随后是具有步幅1的第一卷积神经网络层,随后是第一卷积LSTM神经网络层,随后是具有块大小2的第二深度到空间神经网络层,随后是具有步幅1的第二卷积神经网络层,随后是第二卷积LSTM神经网络层,随后是具有块大小2的第三深度到空间神经网络层,随后是具有步幅1的第三卷积神经网络层。深度到空间层中对“深度”的引用不是指图像深度,而是指将张量数据从深度维度重新排列成高度和宽度维度。通常,深度到空间神经网络层被配置为将值从空间块中的输入中的深度维度移动到高度和宽度维度。在https://www.tensorflow.org/api_docs/python/tf/depth_to_space中更详细地描述了深度到空间的神经网络层。在某些情况下,深度到空间神经网络层可以被实施为Tensorflow(www.tensorflow.org)op tf.depth_to_space。 [0048] 在实施例中,在每个时间步骤,网络接收一个视频帧并产生一个深度预测。由于LSTM状态在后续帧之间保留,因此它们使模型能够捕获两个或更多帧之间的运动。LSTM单元的输出传递到下一层,而它们的状态通过时间传递到下一帧。因此,块处理帧i接收输入帧Xi和LSTM状态Si-1作为输入,其中Si是在处理帧i之后来自所有层的一组LSTM状态Si,并且可选地S0=0。展开模型简化了训练。在实施例中,尽管实例化了网络的多个副本,但是存在跨该实例共享的单组模型参数。在实施例中,该模型在每个卷积或LSTM单元之后应用层标准化(J.Ba,J.Kiros,and G.Hinton.Layer normalization.arXiv:1607.06450,2016)。 [0049] 可选地,可以如下进行一个或多个修改:跳过连接(skip connection)被从编码器添加到解码器。跳过连接将解码器中的层的输出连接到解码器中其对应的相似大小的层的输入。执行中间低分辨率预测,如在Flownet中(P.Fischer et al“Flownet:Learning Optical Flow with Conventional Networks”arXiv:1504.06852,2015)。中间预测也用于损失函数。在模型瓶颈中添加了全连接层。在实施例中,添加丢失(dropout)作为全连接网络层可能导致过度拟合。 [0050] 为了训练图像深度预测神经网络102,可以使用一个或多个深度预测损失函数,诸如L2损失函数和反向Huber或Berhu损失函数(I.Laina et al,“Deeper Depth Prediction with Fully Convolutional Residual Networks arXiv:1606.00373,2016)。损失函数可以包括最小化深度梯度差损失(Gradient Difference Loss,GDL)的项(Eigen et al“Predicting Depth,Surface normal and Semantic Labels with a Common Multi-Scale Convolutional Architecture”ICCV 2015)。GDL项的目的是鼓励预测和基础事实深度之间的局部结构相似性。在实施例中,通过计算序列中所有帧上的平均损失来形成最终损失函数。在实施例中,掩蔽了没有基础事实深度的像素。 [0051] 在实施例中,神经网络102可以进一步包括一个或多个变换层。例如,一个或多个变换层可以包括基于几何的变换矩阵。一个或多个变换层可用于从当前图像的当前深度生成未来图像的预测深度。因此,在实施例中,可以训练图像深度预测子系统102以基于先前图像中的一个或一系列来预测未来图像的深度图。因此,在这样的实施例中,不需要存在图像生成子系统104。 [0052] 图3是用于处理图像序列以生成未来图像的预测的示例过程300的流程图。为方便起见,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,根据本说明书适当编程的图像预测系统(例如,图1的图像预测系统100)可以执行过程 300。 [0053] 系统接收图像序列(步骤302)。例如,图像序列包括由机器人代理的相机捕获的视频帧。 [0054] 对于序列中的每个图像,系统使用图像深度预测神经网络处理图像以生成序列中的未来图像的预测(步骤304)。图像深度预测神经网络是递归神经网络,该递归神经网络包括一个或多个卷积长短期记忆(LSTM)神经网络层并且,可选地包括一个或多个前馈卷积神经网络层。未来图像可以是紧跟在序列中的当前图像的图像。 [0055] 系统根据递归神经网络的当前内部状态处理图像,以(i)更新当前内部状态,以及(ii)生成表征序列中未来图像的预测深度的深度输出。递归神经网络的当前内部状态包括递归神经网络中所有卷积LSTM神经网络层的当前状态。递归神经网络包括(i)下采样递归子神经网络,其被配置为处理图像以生成具有比该图像更低分辨率的下采样输出,以及(ii)上采样递归子神经网络,其被配置为处理图像的下采样输出以生成深度输出。深度输出可以是包括多个点的深度图,每个点与未来图像中的多个像素的像素的预测深度值相关联,该预测深度值表示在该像素处描绘的场景距未来图像的焦平面的相应距离。 [0056] 接下来,系统接收表征未来图像的预测深度的深度输出(步骤306)。 [0057] 系统然后使用深度输出生成未来图像的预测(步骤308)。 [0058] 图4示出了由图像预测系统(例如,图1的图像预测系统100)产生的示例下一图像预测。图4包括图4A-图4D。 [0059] 特别地,图4A示出了来自输入图像序列的输入图像的示例。示例输入图像示出了在街道上行驶的汽车的当前位置。 [0060] 图4B示出了可以使用示例输入图像生成的深度图。深度图由图像预测系统的图像深度预测神经网络(例如,图1的图像深度预测神经网络102)生成。 [0061] 图4C示出了可以由图像预测系统使用深度图生成的下一图像的示例预测。下一个图像预测示出了汽车已向前移动到新位置。 [0062] 图4D是跟随序列中的示例输入图像的基础事实下一图像。基础事实下一图像中的汽车已向前移动,这由图像预测系统精确预测,如图4C的下一图像预测中所示。 [0063] 本说明书结合系统和计算机程序组件使用术语“配置”。对于被配置为执行特定操作或动作的一个或多个计算机的系统意味着该系统已经在其上安装了在操作中使得该系统执行操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括当由数据处理装置运行时使该装置执行操作或动作的指令。 [0064] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中实施,其中包括本说明书中公开的结构及其结构等同物、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即编码在有形非暂时性存储介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备、或者它们中的一个或多个的组合。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号上,该信号被生成来编码信息,以传输到合适的接收器设备,以供数据处理装置运行。 [0065] 术语“数据处理装置”是指数据处理硬件并且涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以或者进一步包括专用逻辑电路,例如FPGA(field programmable gate array,现场可编程门阵列)或ASIC(application-specific integrated circuit,专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。 [0066] 计算机程序也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码,可以用任何形式的编程语言编写,包括编译或解释语言,或者声明性或过程性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或其他适合在计算环境中使用的单元。程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本中,专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,例如存储一个或多个模块、子程序或代码部分的文件中。计算机程序可以被部署为在一个计算机上运行,或者在位于一个站点或跨多个站点分布并由数据通信网络互连的多个计算机上执行。 [0067] 本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。该过程和逻辑流程也可以由专用逻辑电路(例如,FPGA或ASIC)或专用逻辑电路和一个或多个编程计算机的组合来执行。 [0068] 适合于运行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),以从该一个或多个大容量存储设备接收数据或将数据传输到该一个或多个大容量存储设备或两者。然而,计算机不需要这样的设备。此外,计算机可以嵌入在另一设备中,例如嵌入移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(Global Positioning System,GPS)接收器或便携式存储设备(例如,通用串行总线(universal serial bus,USB)闪存驱动器)中,仅举几例。 [0069] 适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD光盘。 [0070] 为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如CRT(cathode ray tube,阴极射线管)或LCD(liquid crystal display,液晶显示器)监视器,以及用户可以通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式(包括声学、语音或触觉输入)接收来自用户的输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求将网页发送到用户设备上的web浏览器。此外,计算机可以通过向个人设备(例如,运行消息收发应用的智能电话)发送文本消息或其他形式的消息并从用户接收返回的响应消息来与用户交互。 [0071] 用于实施机器学习模型的数据处理装置还可以包括,例如,专用硬件加速器单元,用于处理机器学习训练或生产(即推断、工作负载)的公共和计算密集部分。 [0072] 可以使用机器学习框架(例如TensorFlow框架、Microsoft认知工具包框架、Apache Singa框架或Apache MXNet框架)来实施和部署机器学习模型。 [0073] 本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如用户可以通过其与本说明书中描述的主题的实施例交互的具有图形用户界面的客户端计算机、web浏览器或app的前端组件,或者一个或多个这样的后端、中间件或前端组件的任意组合。 系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(local area network,LAN)和例如互联网的广域网(wide area network,WAN)。 [0074] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而出现。在一些实施例中,服务器将数据(例如,HTML页面)传输到用户设备,例如,用于向作为客户端的设备显示数据以及从与该设备交互的用户接收用户输入。可以在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。 [0075] 虽然本说明书包含许多特定的实施细节,但这些细节不应被解释为对任何发明的范围或所要求保护的范围的限制,而应被解释为对特定发明的特定实施例所特有的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实施。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中切除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。 [0076] 类似地,虽然在附图中描绘了操作并且以特定顺序在权利要求中叙述,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现理想的效果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或封装成多个软件产品。 [0077] 已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中叙述的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定顺序或顺序的顺序来实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。