Мне нужно обучить модель на наборе данных, который требует больше памяти, чем мой 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 выходит из l oop scope (который, как я понимаю, работает только для одной первой партии).
С другой стороны, я не могу удалить take (1) и переместить метод model.fit под цикл. Потому что да, в этом случае я буду обрабатывать все пакеты, но в то же время model.fill будет вызываться в конце каждой итерации, и в этом случае он также не будет работать должным образом
, поэтому как Я должен изменить свой код, чтобы иметь возможность правильно работать с большим набором данных, используя model.fit? не могли бы вы указать статью, какие-либо документы или просто посоветовать, как с этим бороться? спасибо
Обновление В моем посте ниже (подход 1) я описываю один подход о том, как решить проблему - есть ли другие лучшие подходы или это единственный способ, как решить эту проблему?