主要内容

大数据深度学习

通常,训练深度神经网络需要大量的数据,而这些数据往往不适合内存。您不需要多台计算机来解决使用大到无法装入内存的数据集的问题。相反,您可以将训练数据划分为包含部分数据集的小批量。通过在小批量上迭代,网络可以从大型数据集中学习,而不需要一次将所有数据加载到内存中。

如果数据太大,内存无法容纳,可以使用数据存储来处理小批量数据,以进行训练和推断。MATLAB®为不同的应用程序提供许多不同类型的数据存储。有关不同应用程序的数据存储的详细信息,请参见用于深度学习的数据存储

augmentedImageDatastore专门为机器学习和计算机视觉应用程序预处理和增强批量图像数据而设计。作为一个例子,展示如何使用augmentedImageDatastore若要在训练期间管理图像数据,请参见列车网络与增强图像

与大数据并行工作

如果你想使用大量的数据来训练一个网络,并行训练会很有帮助。这样做可以减少训练网络所需的时间,因为您可以同时使用多个迷你批进行训练。

建议使用一个或多个图形处理器进行训练。如果没有GPU,只能使用单个CPU或多个CPU。在训练和推断方面,cpu通常比gpu慢得多。运行在单个GPU上通常比运行在多个CPU内核上提供更好的性能。

有关并行训练的更多信息,请参见并行、gpu和云中扩展深度学习

后台预处理数据

并行训练时,可以在后台获取和预处理数据。如果您希望在培训期间对小批量进行预处理,例如在使用变换函数将小批量预处理函数应用于数据存储。

当你训练一个网络使用trainNetwork函数,通过启用后台调度,可以在后台获取和预处理数据:

在训练过程中,一些worker被用来对数据进行预处理,而不是网络训练计算。属性可以微调工人之间的训练计算和数据调度负载WorkerLoad培训选项使用trainingOptions函数。对于高级选项,您可以尝试修改并行池的工作人员数量。

您可以使用内置的迷你批处理数据存储,例如augmentedImageDatastoredenoisingImageDatastore(图像处理工具箱),或pixelLabelImageDatastore(计算机视觉工具箱).您还可以使用启用后台分派的自定义小批数据存储。有关创建自定义小批数据存储的详细信息,请参见开发自定义小批量数据存储

有关后台调度的数据存储需求的详细信息,请参见使用数据存储进行并行训练和后台调度

在云端使用大数据

将数据存储在云中可以使您更容易访问云应用程序,而无需在每次创建云资源时上传或下载大量数据。两个AWS®和Azure®提供数据存储服务,如AWS S3和Azure Blob storage。

为了避免与传输大量数据相关的时间和成本,建议您使用用于在云中存储数据的相同云提供商和区域为深度学习应用程序设置云资源。

要从MATLAB访问存储在云中的数据,必须使用访问凭证配置计算机。您可以使用环境变量从MATLAB内部配置访问。有关如何设置环境变量以从客户端MATLAB访问云数据的详细信息,请参见使用远程数据.有关如何在远程集群中的并行工作线程上设置环境变量的详细信息,请参见在Workers上设置环境变量(并行计算工具箱)

有关显示如何将数据上载到云的示例,请参见将深度学习数据上传到云端

有关云中的深度学习的更多信息,请参见云中的深度学习

预处理自定义训练循环的数据

当您使用自定义训练循环训练网络时,您可以使用minibatchqueue以及启用后台调度。一个minibatchqueue对象在a上迭代数据存储为定制培训循环准备小批量。当您的小批量需要大量预处理时,启用后台调度。

要启用后台调度,您必须:

  • 设置DispatchInBackground属性真正的

  • 设置DispatchInBackground的属性minibatchqueue真正的

使用此选项时,MATLAB将打开一个本地并行池,用于预处理数据。当只使用本地资源进行训练时,支持对自定义训练循环进行数据预处理。金宝app例如,当在本地机器上使用单个GPU进行训练时,请使用此选项。

有关后台调度的数据存储需求的详细信息,请参见使用数据存储进行并行训练和后台调度

另请参阅

||

相关的话题