如何用Python SDK在Weights & Biases中程序化创建Scalar Chart?
解决方法
1. 多次记录指标自动生成折线图
你之前只调用了一次wandb.log({"loss": 0.5}),所以只有单个数据点,自然是单点图表。要得到连续的标量折线图,只要在循环里多次调用wandb.log,每次传入对应指标值和递增的step参数就行:
import wandb wandb.init(project="你的项目名") # 模拟训练循环 for step in range(10): loss = 0.5 - step * 0.05 # 模拟loss逐步下降 wandb.log({"loss": loss}, step=step)
这样W&B会自动把所有loss数据按step串联成折线图,不用手动创建面板。
2. 程序化创建自定义Scalar Chart面板
如果想在脚本运行时就自动生成UI里的Scalar Chart面板(不用手动点「添加面板」),可以用W&B的面板配置API实现:
import wandb wandb.init(project="你的项目名") # 定义Scalar Chart的配置 scalar_panel = { "panel_type": "line", "title": "训练Loss趋势", "x_axis": "step", "y_axis": "loss", # 查询当前run的step和loss数据 "query": "select step, loss from runs where run_id = '${run_id}'", "settings": { "show_legend": True, "interactive": True } } # 把面板配置写入wandb系统字段 wandb.log({"_wandb": {"dashboard": {"panels": [scalar_panel]}}}) # 正常记录数据 wandb.log({"loss": 0.5}, step=0) wandb.log({"loss": 0.4}, step=1)
运行后,你的W&B run页面会自动出现这个预设好的Scalar Chart面板,直接展示loss随step变化的折线图。
3. 用wandb.plot生成独立标量图表
如果需要生成独立的可视化图表,可以用wandb.plot.line基于表格数据创建:
import wandb wandb.init(project="你的项目名") # 准备训练数据(step和对应的loss) data = [ [0, 0.5], [1, 0.4], [2, 0.3], [3, 0.2] ] table = wandb.Table(data=data, columns=["step", "loss"]) # 生成折线图 loss_chart = wandb.plot.line(table, x="step", y="loss", title="训练Loss变化") # 把图表log到wandb wandb.log({"loss_trend": loss_chart})
生成的图表会作为独立项出现在W&B UI的「Media」或「Charts」板块里。
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

