【发布时间】:2020-08-18 15:45:44
【问题描述】:
我需要在一个数据集上训练一个模型,该数据集需要比我的 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)中,我描述了一种解决问题的方法——还有其他更好的方法吗,或者它只是解决这个问题的一种方法?
【问题讨论】:
标签: python tensorflow deep-learning tensorflow2.0 tensorflow2.x