我需要在需要比我的 GPU 更多内存的数据集上训练模型。将数据集提供给模型的最佳做法是什么?
这是我的步骤:
- 首先,我使用 batch_size 加载数据集
BATCH_SIZE=32
builder = tfds.builder('mnist')
builder.download_and_prepare()
datasets = builder.as_dataset(batch_size=BATCH_SIZE)
- 第二步我准备数据
for record in raw_train_ds.take(1):
train_images, train_labels = record['image'], record['label']
print(train_images.shape)
train_images = train_images.numpy().astype(np.float32) / 255.0
train_labels = tf.keras.utils.to_categorical(train_labels)
- 然后我将数据提供给模型
history = model.fit(train_images,train_labels, epochs=NUM_EPOCHS, validation_split=0.2)
但是在第 2 步,我为第一批准备了数据而错过了其余批次,因为 model.fit 超出了循环范围(据我所知,它仅适用于第一批)。
另一方面,我无法删除 take(1) 并在循环下移动 model.fit 方法。因为是的,在这种情况下,我将处理所有批次,但同时 model.fill 将在每次迭代结束时调用,在这种情况下,它也无法正常工作
那么,我应该如何更改我的代码才能使用 model.fit 与大数据集正常工作?你能指出文章,任何文件,或者只是建议如何处理它?谢谢
更新 在我下面的帖子(方法 1)中,我描述了一种解决问题的方法——还有其他更好的方法,还是只有一种方法可以解决这个问题?