You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras配置TensorBoard回调报NotFoundError路径不存在错误

错误产生原因
  • TensorFlow 内置的文件写入逻辑不会自动递归创建多层不存在的父目录:代码中拼接得到的带时间戳的日志子目录、上层logs目录、模型权重保存目录如果没有提前创建,写入事件文件/权重文件时会直接抛出路径不存在的错误,这是触发本次报错的核心原因。
  • Windows 路径斜杠混用:代码中log_dir_path末尾手动添加了正斜杠/,和Windows原生路径的反斜杠\混用时,在部分旧版本TensorFlow环境下会出现路径解析偏差,最终拼接得到的路径和真实目录结构不匹配。
  • 路径存在无效层级:代码中写的根路径包含重复的Desktop层级(C:\Users\Administrator\Desktop\Desktop\...),如果该路径在本地真实不存在,哪怕其余配置正确也会触发路径查找失败。
  • 存在隐藏兼容问题:当前ModelCheckpoint的filepath直接指向文件夹路径,开启save_weights_only=True时,部分Keras版本要求filepath必须指向具体的权重文件名模板,传入纯文件夹路径也可能触发写入异常。
修复方案

按以下步骤调整代码即可解决问题:

  1. 所有用于写入文件的目录,在初始化回调前调用os.makedirs(..., exist_ok=True)递归创建,exist_ok=True参数可以避免目录已存在时抛出重复创建的错误。
  2. 统一Windows路径的斜杠格式,不要手动在路径字符串末尾添加斜杠,所有路径拼接操作全部交给os.path.join处理,避免斜杠混用导致的解析错误。
  3. 修正路径中重复的Desktop无效层级,确保根路径指向本地真实存在的项目目录。
  4. 给ModelCheckpoint的保存路径增加权重文件名模板,支持通过占位符记录epoch、验证集损失等信息,同时兼容不同Keras版本的写入要求。

修正后的完整可运行代码如下:

import os
import datetime
import tensorflow as tf
from tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping, ModelCheckpoint, TensorBoard

# 配置项目根路径,移除重复的Desktop层级,不要手动在路径末尾添加斜杠
project_root = r'C:\Users\Administrator\Desktop\Work\Data Science\Practice\Machine Learning\Deep Learning\Custom Deep Learning\Deep Learning with Computer vision\Basics\Covid 19 Project'

# 配置模型权重保存目录,提前递归创建目录
checkpoint_dir = os.path.join(project_root, 'Model', 'Model best checkpoint')
os.makedirs(checkpoint_dir, exist_ok=True)
# 权重保存路径增加文件名模板
checkpoint_best_path = os.path.join(checkpoint_dir, 'best_weights_epoch{epoch:02d}_valLoss{val_loss:.3f}.h5')

# 配置TensorBoard日志目录,提前递归创建目录
log_root = os.path.join(project_root, 'Data', 'logs')
log_dir = os.path.join(log_root, datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
os.makedirs(log_dir, exist_ok=True)

# 初始化回调函数
early_stopping = EarlyStopping(patience=5, monitor='val_loss', mode='min')
learning_rate_reduction = ReduceLROnPlateau(patience=4, monitor='val_loss', factor=0.1)
check_bestpoint = ModelCheckpoint(
    filepath=checkpoint_best_path,
    save_weights_only=True,
    save_freq='epoch',
    monitor='val_loss',
    save_best_only=True,
    verbose=1
)
tensorboard_callback = TensorBoard(log_dir=log_dir, histogram_freq=1)

callbacks = [early_stopping, learning_rate_reduction, check_bestpoint, tensorboard_callback]

校验提示:启动训练前可以先打印checkpoint_dir和log_dir两个路径,在资源管理器中手动打开确认路径可正常访问,可进一步避免路径配置错误。

内容的提问来源于stack exchange,提问作者Nana qweku Yeboah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:48:16