大数据深度学习
通常情况下,训练深度神经网络需要大量的数据,而这些数据往往不适合存储在内存中。您不需要多台计算机来解决使用大到无法装入内存的数据集的问题。相反,您可以将训练数据划分为包含部分数据集的小批。通过在小批量上迭代,网络可以从大数据集中学习,而不需要一次将所有数据加载到内存中。
如果数据太大,无法装入内存,则使用数据存储来处理小批量数据,以便进行训练和推断。MATLAB®为不同的应用程序量身定制许多不同类型的数据存储。有关不同应用程序的数据存储的更多信息,请参见用于深度学习的数据存储.
augmentedImageDatastore
专门为机器学习和计算机视觉应用程序预处理和增强批量图像数据。举个例子说明如何使用augmentedImageDatastore
若要在训练过程中管理图像数据,请参见增强图像的列车网络
与大数据并行工作
如果您想使用大量数据来训练网络,并行训练可能会很有帮助。这样做可以减少训练网络所需的时间,因为您可以同时使用多个小批进行训练。
建议使用一个或多个GPU进行训练。如果没有GPU,只能使用单CPU或多CPU。在训练和推断方面,cpu通常比gpu慢得多。运行在单个GPU上通常比运行在多个CPU核上提供更好的性能。
有关并行训练的更多信息,请参见在并行、gpu和云上扩展深度学习.
在后台预处理数据
当并行训练时,可以在后台获取和预处理数据。如果您希望在培训期间预处理小批,例如在使用变换
函数将小批预处理函数应用到数据存储。
训练网络时使用trainNetwork
函数,通过启用后台调度,可以在后台获取和预处理数据:
设置
DispatchInBackground
属性的数据存储真正的
.设置
DispatchInBackground
培训选项真正的
使用trainingOptions
函数。
在训练过程中,一些工位被用来对数据进行预处理,而不是网络训练计算。的值,可以微调工人之间的训练计算和数据分派负载WorkerLoad
培训选项使用trainingOptions
函数。对于高级选项,您可以尝试修改并行池的工作人员数量。
您可以使用内置的小批处理数据存储,例如augmentedImageDatastore
,denoisingImageDatastore
(图像处理工具箱),或pixelLabelImageDatastore
(计算机视觉工具箱).还可以使用启用后台分派的自定义小批处理数据存储。有关创建自定义小批处理数据存储的详细信息,请参见开发自定义小批量数据存储.
有关后台调度的数据存储需求的详细信息,请参见使用数据存储进行并行训练和后台调度
在云端与大数据合作
将数据存储在云中可以使您更容易地访问云应用程序,而不必在每次创建云资源时上传或下载大量数据。两个AWS®和Azure®分别提供数据存储服务,如AWS S3和Azure Blob storage。
为了避免与传输大量数据相关的时间和成本,建议您使用与在云中存储数据相同的云供应商和区域为深度学习应用程序设置云资源。
要从MATLAB访问存储在云中的数据,您必须用访问凭证配置您的计算机。您可以使用环境变量从MATLAB内部配置访问。有关如何设置环境变量以从客户端MATLAB访问云数据的更多信息,请参见使用远程数据.有关如何在远程集群中设置并行工作程序的环境变量的详细信息,请参见在worker上设置环境变量(并行计算工具箱).
有关如何将数据上传到云端的示例,请参见上传深度学习数据到云端.
有关云中的深度学习的更多信息,请参见云中的深度学习
预处理自定义训练循环的数据
当您使用自定义训练循环训练网络时,您可以使用minibatchqueue
以及启用后台调度。一个minibatchqueue
对象在a上迭代数据存储
为定制训练循环准备小批次。当小批量需要大量预处理时,启用后台调度。
要启用后台调度,您必须:
设置
DispatchInBackground
属性的数据存储真正的
.设置
DispatchInBackground
财产的minibatchqueue
来真正的
.
当您使用此选项时,MATLAB将打开一个本地并行池,用于对数据进行预处理。当只使用本地资源进行训练时,支持对自定义训练循环进行数据预处理。例如,当使用本地机器上的单个GPU进行训练时,可以使用此选项。
有关后台调度的数据存储需求的详细信息,请参见使用数据存储进行并行训练和后台调度
另请参阅
trainingOptions
|minibatchqueue
|trainNetwork