Я пытаюсь обучить модели машинного обучения группам изображений и их соответствующим ярлыкам. Этикетки должны быть закодированы горячим способом перед подачей их в сеть.
Вот как выглядит тренировочный цикл:
# epochs = 500
# iterations = 50
# nclasses = 15,000
# batch_size = 64
for e in range(epochs):
print("EPOCH %d" % e)
for i in range(iterations):
# batch() produces an array of labels of size (64,)
imgs, lbls = batch()
# Batch-wise 1-Hot Encoding
lbls = np.eye(nclasses)[lbls] # <-- Memory Error here!
# More processing
Всякий раз, когда я пытаюсь запустить это, я получаю ошибку памяти в lbls = np.eye(nclasses)[lbls]
, не сразу, а в середине 60-й эпохи или около того. Число классов довольно большое (15 КБ), и я поиграл с разными размерами пакетов, но все, что он делает, это откладывает, когда происходит ошибка памяти.
batch()
выполняет следующие действия:
def batch():
# Provides a random array of images and labels of size batch_size
# labels_train is an array of shape (1217958,)
p = np.random.choice(np.array(range(train_total)), batch_size, replace=False)
imgs = create_images(list(inputs_train[p]))
return imgs, labels_train[p]
Буду очень признателен, если кто-нибудь скажет мне, почему это происходит где-то посередине, а не сразу, и если бы вы могли предложить обходной путь! Большое спасибо!