Python 在大数据集上训练模型的最佳实践是什么
我需要在需要比GPU更多内存的数据集上训练模型。将数据集提供给模型的最佳实践是什么 以下是我的步骤:Python 在大数据集上训练模型的最佳实践是什么,python,tensorflow,deep-learning,tensorflow2.0,tensorflow2.x,Python,Tensorflow,Deep Learning,Tensorflow2.0,Tensorflow2.x,我需要在需要比GPU更多内存的数据集上训练模型。将数据集提供给模型的最佳实践是什么 以下是我的步骤: 首先,我使用批处理大小加载数据集 BATCH\u SIZE=32 builder=tfds.builder('mnist') builder.download_和_prepare() 数据集=builder.as\u数据集(批量大小=批量大小) 第二步我准备数据 原始序列记录的(1): 列车图像,列车标签=记录['image'],记录['label'] 打印(序列图像.形状) train\u
BATCH\u SIZE=32
builder=tfds.builder('mnist')
builder.download_和_prepare()
数据集=builder.as\u数据集(批量大小=批量大小)
(1):
列车图像,列车标签=记录['image'],记录['label']
打印(序列图像.形状)
train\u images=train\u images.numpy().astype(np.float32)/255.0
列车标签=tf.keras.utils.to\u分类(列车标签)
history=model.fit(序列图像、序列标签、历元数=NUM\u历元、验证分割=0.2)
但在步骤2中,我为第一批准备了数据,却错过了其余批,因为model.fit超出了循环范围(据我所知,它只适用于第一批中的一个)。另一方面,我不能删除take(1)并在循环下移动model.fit方法。因为是的,在这种情况下,我将处理所有批次,但同时在每次迭代结束时调用model.fill,在这种情况下,它也无法正常工作 那么,我应该如何更改代码,以便能够使用model.fit适当地处理大型数据集呢?你能指出这篇文章,任何文件,或只是建议如何处理它吗?谢谢 更新
在我下面的帖子(方法1)中,我描述了一种解决问题的方法——有没有其他更好的方法,或者这只是解决问题的一种方法 您可以将整个数据集传递给
fit
进行培训。如中所示,第一个参数的可能值之一是:
- 数据集。应返回
或(输入,目标)
的元组(输入,目标,样本权重)
fit
:
BATCH\u SIZE=32
builder=tfds.builder('mnist')
builder.download_和_prepare()
数据集=builder.as\u数据集(批量大小=批量大小)
原始列车ds=数据集['train']
列车数据集拟合=原始列车ds.map(
lambda x:(tf.cast.dtypes(x['image'],tf.float32)/255.0,x['label']))
历史=model.fit(训练数据集拟合,历代=NUM历代)
这样做的一个问题是,它不支持验证\u split
参数,但如中所示,它已经为您提供了进行数据拆分的功能。因此,您只需获取测试分割数据集,如上所述对其进行转换,并将其作为validation\u data
传递给fit
方法1
谢谢@jdehesa我更改了代码:
raw\u-train\ds,raw\u-validation\u-ds=builder.as\u数据集(拆分=[“train[:90%],“train[10%:]”,批次大小=批次大小)
def准备_数据(x):
列车图像,列车标签=x['image'],x['label']
#TODO:调整图像大小
train_images=tf.cast(train_images,tf.float32)/255.0
#train\u labels=tf.keras.utils.to\u category(train\u labels,num\u classes=num\u classes)
列车标签=tf.one\u热(列车标签,数量类)
返回(列车图像、列车标签)
train\u dataset\u fit=raw\u train\u ds.map(准备数据)
train\u dataset\u fit=raw\u train\u ds.map(准备数据)
历史=model.fit(训练数据集拟合,历代=NUM历代)
我不能使用lambda,因为我需要使用train\u labels=tf.keras.utils.to\u category(train\u labels)
并调整图像大小和其他转换。。。。(((