使用WandbCallback时遇Glob路径越界ValueError问题求助
解决方案:ValueError: Glob may not walk above the base path
问题原因
你手动调用wandb.save(logs_dir)时,logs_dir是基于wandb.run.dir的子目录。wandb.run.dir是wandb内部的运行数据存储目录,wandb.save的安全机制禁止直接保存该目录下的路径,否则会触发路径遍历检查错误。此外WandbCallback已经内置了训练指标追踪、模型 checkpoint 保存等功能,无需手动处理该目录。
修正步骤
- 移除错误的
wandb.save(logs_dir)调用:这是触发错误的直接原因。 - 调整日志目录路径(按需):如果需要保存自定义日志文件,使用本地独立目录(而非
wandb.run.dir子目录),再通过通配符指定要保存的文件。
修正后代码示例
import os from wandb.keras import WandbCallback import wandb wandb.init(project="my-project", name="my-run") # 使用本地独立日志目录,避免依赖wandb内部目录 logs_dir = "./logs" os.makedirs(logs_dir, exist_ok=True) # 若需上传该目录下的日志文件,用通配符指定文件(目录本身无需保存) # wandb.save(os.path.join(logs_dir, "*")) # 按需启用 # --- 你的模型定义、数据预处理等代码 --- model.fit( train_X, train_Y, validation_data=(test_X, test_Y), epochs=20, batch_size=32, callbacks=[WandbCallback()] )
补充说明
WandbCallback会自动将训练过程中的loss、accuracy等核心指标同步到wandb后台,无需额外手动配置。- 若要保存自定义文件,
wandb.save需要指定具体文件或通配符(如*.txt),而非目录路径,同时确保路径不在wandb.run.dir的范围内。
内容的提问来源于stack exchange,提问作者thib
相关产品推荐
相关产品推荐

