Я не могу загрузить веса модели после их сохранения в TensorFlow 2.2. Кажется, что веса сохраняются правильно (я думаю), однако я не могу загрузить предварительно обученную модель.
Мой текущий код:
segmentor = sequential_model_1()
discriminator = sequential_model_2()
def save_model(ckp_dir):
# create directory, if it does not exist:
utils.safe_mkdir(ckp_dir)
# save weights
segmentor.save_weights(os.path.join(ckp_dir, 'checkpoint-segmentor'))
discriminator.save_weights(os.path.join(ckp_dir, 'checkpoint-discriminator'))
def load_pretrained_model(ckp_dir):
try:
segmentor.load_weights(os.path.join(ckp_dir, 'checkpoint-segmentor'), skip_mismatch=True)
discriminator.load_weights(os.path.join(ckp_dir, 'checkpoint-discriminator'), skip_mismatch=True)
print('Loading pre-trained model from: {0}'.format(ckp_dir))
except ValueError:
print('No pre-trained model available.')
Затем у меня есть тренировка l oop:
# training loop:
for epoch in range(num_epochs):
for image, label in dataset:
train_step()
# save best model I find during training:
if this_is_the_best_model_on_validation_set():
save_model(ckp_dir='logs_dir')
А потом, по окончании обучения «для l oop», я хочу загрузить лучшую модель и провести с ней тест. Следовательно, я запускаю:
# load saved model and do a test:
load_pretrained_model(ckp_dir='logs_dir')
test()
Однако это приводит к ValueError
. Я проверил каталог, в котором должны быть сохранены веса, и вот они!
Есть идеи, что не так с моим кодом? Я неправильно загружаю веса?
Спасибо!