如何让Skorch的TensorBoard回调追踪EpochScoring定义的自定义分数?
Skorch中让TensorBoard识别EpochScoring自定义分数的简便方法
- 问题根源:Skorch的
TensorBoard回调默认仅追踪预定义的基础指标(如train_loss、valid_loss),不会自动识别EpochScoring生成的自定义分数键。 - 无需手动编写新回调的解决步骤:
- 确认自定义分数键名:从
net.history中获取你通过EpochScoring生成的分数键。比如你初始化EpochScoring(scoring='f1', name='valid_f1'),对应的键名就是valid_f1。 - 配置TensorBoard回调的
log_keys参数:在创建TensorBoard实例时,将自定义分数键添加到log_keys列表中,示例代码如下:from skorch.callbacks import TensorBoard, EpochScoring # 初始化自定义分数回调 custom_scorer = EpochScoring(scoring='f1', name='valid_f1', lower_is_better=False) # 配置TensorBoard回调,加入自定义分数键 tb_callback = TensorBoard( log_dir='./tensorboard_logs', log_keys=['train_loss', 'valid_loss', 'valid_f1'] # 添加上你的自定义分数键 ) # 训练时传入两个回调 net.fit(X_train, y_train, callbacks=[custom_scorer, tb_callback]) - 多自定义分数的处理:如果有多个自定义指标,直接把所有需要追踪的键名都加入
log_keys列表即可,比如['train_loss', 'valid_loss', 'valid_f1', 'valid_recall']。
- 确认自定义分数键名:从
- 快捷方式:若想追踪历史记录中所有指标,可直接设置
log_keys='all',但会包含所有历史日志,按需选择即可。
内容的提问来源于stack exchange,提问作者Eric Johnson
相关产品推荐
相关产品推荐

