Я относительно новичок в Tensorflow и собираю некоторые модели обучения на основе учебника, который я нашел на сайте ts. Мне удалось собрать что-то функциональное, что удовлетворяет моим предварительным требованиям.
Я читаю локально файлы CSV, которые предоставляют некоторые ссылки на изображения, связанные с метками, написанными в той же строке CSV. Мой код выглядит примерно так:
def map_func(*row):
img = process_img(img_filename)
output = read(row)
return img, output
dataset = tf.data.experimental.CsvDataset(CSV_FILE, default_format, header=True)
dataset = dataset.map(map_func)
dataset = dataset.shuffle(buffer_size=shuffle_buffer_size)
dataset = dataset.batch(NB_IMG)
dataset = dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
X, y = next(iter(dataset))
X_train, X_test = tf.split(X, split, axis=0)
y_train, y_test = tf.split(y, split, axis=0)
model = create_model()
model.compile(optimizer=OPTIMIZER, loss='mse')
model.fit(x=X_train, y=y_train, epochs=EPOCHS, validation_data=(X_test, y_test))
NB_IMG - это общее количество изображений, которые у меня есть. EPOCHS здесь произвольно фиксируется на заданном значении (обычно 20 или 40), и разделение - это соотношение, применяемое к NB_IMG.
Все мои изображения находятся локально на моем компьютере, и с этим кодом мой GPU в настоящее время может управлять до 50000 изображений примерно. Обучение терпит неудачу с большим количеством изображений (GPU исчерпан). Я могу понять, что это связано с тем, что я читаю данные одновременно, но я немного заблокирован, чтобы сделать следующий шаг, чтобы иметь возможность управлять большим набором данных.
Эта часть ниже - это один, который нуждается в улучшении, я думаю:
X, y = next(iter(dataset))
Может ли кто-нибудь здесь помочь мне продвинуться вперед и привести меня к некоторым примерам или фрагментам, где я могу обучить модель на большем наборе данных? Я немного потерян для следующего шага и не уверен, где сосредоточиться в документации по TS. Я действительно не нашел четкого примера в Интернете, который бы соответствовал моим потребностям. Как я должен l oop на разных партиях? Как закодирован итератор?
Спасибо!