Я ищу в сетке гиперпараметры, используя itertools.product () и перезаписываю переменную модели каждым циклом. Однако на 2-й итерации происходит сбой из-за нехватки памяти:
import itertools
import tensorflow as tf
from tensorflow import keras
from keras.losses import sparse_categorical_crossentropy
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import Adam
hyperparameters = {
'lr': [1e-3, 1e-4],
'model': [model1, model2]
}
hps, values = zip(*hyperparameters.items())
for v in itertools.product(*values):
cur_hps = dict(zip(hps, v))
model = cur_hps['model'](input_shape = (256, 256, 3))
optim = Adam(lr = cur_hps['lr'])
model.compile(optimizer = optim,
loss = categorical_categorical_crossentropy,
metrics = ['accuracy'])
train_gen = myDataGenerator() # returns Sequence
model.fit_generator(train_gen,
epochs = 5,
use_multiprocessing = True,
workers = 8)
Я пытался завершить цикл с помощью:
tf.reset_default_graph()
del model
keras.backend.clear_session()
Но безрезультатно, что усложняет проверку более 50 комбинаций. Модели имеют разные архитектуры.