Python 3.x 如何优化Tensorflow2数据管道?

Python 3.x 如何优化Tensorflow2数据管道?,python-3.x,tensorflow,deep-learning,tensorflow2.0,tensorflow-datasets,Python 3.x,Tensorflow,Deep Learning,Tensorflow2.0,Tensorflow Datasets,我使用一个大型图像数据集,第一步将其转换为tfrecords,第二步将其加载到tf.data.dataset 但是数据集太大了,我无法获得比10更大的批处理大小,尽管有12GB的GPU。现在问题来了,我如何优化图像的加载,以便达到更大的批量 有没有一种方法可以使用maybe.fit_generator()来优化此过程 以下是我当前加载培训数据的过程(验证数据以相同的方式转换,因此此处也不显示): train\u dataset=dataset.load\u tfrecord\u数据集(数据集路径

我使用一个大型图像数据集,第一步将其转换为tfrecords,第二步将其加载到tf.data.dataset

但是数据集太大了,我无法获得比10更大的批处理大小,尽管有12GB的GPU。现在问题来了,我如何优化图像的加载,以便达到更大的批量

有没有一种方法可以使用maybe.fit_generator()来优化此过程

以下是我当前加载培训数据的过程(验证数据以相同的方式转换,因此此处也不显示):

train\u dataset=dataset.load\u tfrecord\u数据集(数据集路径、类名称路径、图像大小)
train\u数据集=train\u数据集.shuffle(缓冲区大小=shuffle\u缓冲区)
序列数据集=序列数据集。批次(批次大小)
列车数据集=列车数据集.map(λx,y:(
dataset.transform_图像(x,图像大小),
dataset.transform_目标(y、锚定、锚定遮罩、图像大小))
序列数据集=序列数据集。预取(批量大小)
开始我的培训阶段:

history=model.fit(列车数据集,
时代,
回调=回调,
验证(数据=val(数据集)

不幸的是,有些约束取决于硬件架构,无论我们从软件角度优化了多少

在您的情况下,增加批量大小的唯一方法是降低图像的尺寸;否则,您将无法增加批量大小

tf.data.Dataset() 
是处理数据的优秀库,使用正确/必要的预处理步骤(如
prefetch
)确实可以加快处理速度


然而,由于硬件限制,您无法增加批量大小。或者减小图像大小以增加批量大小,或者您需要选择更大的GPU>=16 GB VRAM。

因此,目前没有其他解决方案只加载大型垃圾(可能为8 GB)并使用这些数据训练模型,然后重新加载其他垃圾数据?换句话说:目前没有其他软件解决方案?是的,没有其他软件解决方案。最后,不管CPU/GPU通信优化如何,将某个图像加载到内存中需要一定的空间。这就是为什么我们最终使用批处理…因为我们无法加载整个数据集(全梯度下降)来训练网络;当然,这取决于硬件体系结构和数据集等。这个超参数可能会有所不同,并达到您自己注意到的上限阈值。