通常,训练深度神经网络需要大量的数据,而这些数据往往不适合记忆。您不需要多台计算机来解决使用过大而无法装入内存的数据集的问题。相反,您可以将训练数据分成包含部分数据集的小批。通过对小批量的迭代,网络可以从大型数据集中学习,而不需要一次将所有数据加载到内存中。
如果您的数据太大而无法装入内存,那么使用数据存储来处理小批量的数据以进行训练和推断。MATLAB®为不同的应用程序提供许多不同类型的数据存储。有关不同应用程序的数据存储的更多信息,请参见用于深度学习的数据存储.
augmentedImageDatastore
是专门为机器学习和计算机视觉应用程序预处理和增强成批图像数据。以示例说明如何使用augmentedImageDatastore
要在训练期间管理图像数据,请参见带有增强图像的列车网络
如果想要使用大量数据来训练网络,并行训练可能会很有帮助。这样做可以减少训练网络所需的时间,因为您可以同时使用多个小批量进行训练。
建议使用一个GPU或多个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访问云数据的更多信息,请参见使用远程数据.有关如何在远程集群中的并行工作人员上设置环境变量的详细信息,请参见在Workers上设置环境变量(并行计算工具箱).
有关如何将数据上载到云的示例,请参见上传深度学习数据到云.
有关云中的深度学习的更多信息,请参见云中的深度学习
当您使用自定义训练循环训练网络时,您可以通过使用minibatchqueue
以及启用后台调度。一个minibatchqueue
对象迭代数据存储
为定制训练循环准备小批量。当您的小批量需要大量预处理时,启用后台调度。
要启用后台调度,您必须:
设置DispatchInBackground
属性真正的
.
设置DispatchInBackground
财产的minibatchqueue
来真正的
.
当您使用此选项时,MATLAB将打开一个本地并行池,用于对数据进行预处理。仅使用本地资源进行训练时,支持对自定义训练循环进行数据预处理。万博1manbetx例如,当在本地机器中使用单个GPU进行培训时,请使用此选项。
有关后台调度的数据存储需求的详细信息,请参见使用数据存储进行并行培训和后台调度
trainingOptions
|minibatchqueue
|trainNetwork