我在同一个 Colab 笔记本中训练多个模型来比较一些结果。我编写了一个函数来避免重复代码,并在 model_name.fit() 的回调列表中添加了 WandbCallback()。
def generic_FE_trainer(model_name, checkpoint_filename, min_lr=1e-7):
earlystop = callbacks.EarlyStopping(monitor="val_loss",
patience=11,
verbose=1)
lr_reduction = callbacks.ReduceLROnPlateau(monitor='val_accuracy',
patience=5,
verbose=1,
factor=0.8,
min_lr=min_lr)
checkpoint_dir = os.path.join(save_dir, checkpoint_filename)
if not os.path.exists(checkpoint_dir):
os.makedirs(checkpoint_dir)
checkpoint = callbacks.ModelCheckpoint(filepath=os.path.join(checkpoint_dir, checkpoint_filename+'.h5'),
monitor="val_loss",
verbose=1,
save_best_only=True,
save_weights_only=False)
return model_name.fit(train_gen,
epochs=40,
batch_size=4,
verbose=1,
callbacks=[earlystop, checkpoint, lr_reduction, WandbCallback()],
validation_data=val_gen)
我用类似下面的代码来调用它们,但是我的项目仪表板将两者的数据放在同一个图表上,我在其中附加了一个时期的图表(尽管它不是特别有用)作为示例显示。
history1 = generic_FE_trainer(model1, 'model1')
history2 = generic_FE_trainer(model2, 'model2')
这对我的所有指标都是一样的,那么我怎样才能让 wandb 分别绘制这些图表呢?如果可能的话,我希望它们处于不同的运行状态。