# tensorboard_analsis_matlab_tools **Repository Path**: sheetung/tensorboard_analsis_matlab_tools ## Basic Information - **Project Name**: tensorboard_analsis_matlab_tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-26 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TensorBoard CSV MATLAB 分析说明 这个项目用于分析 TensorBoard 导出的训练 CSV 数据,并使用 MATLAB 自动生成: - 每个指标一张对比图 - 每个指标一份汇总统计表 - 支持批量导出 - 支持运行后直接弹出图窗查看 当前脚本适配的 CSV 格式为两列: ```csv step,value 0,... 1,... ``` 也就是 TensorBoard 标量导出后最常见的格式。 ## 目录说明 - [csv](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/csv) - 存放 TensorBoard 导出的原始 CSV - [matlab](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/matlab) - MATLAB 分析脚本 - [matlab/metrics](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/matlab/metrics) - 每个指标的单独绘图脚本 - [figures](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/figures) - 导出的图片 - [figures/summaries](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/figures/summaries) - 每个指标的汇总 CSV ## 已支持的指标 当前支持以下 17 类 TensorBoard 标量: 1. `Train_mean_reward_time` 2. `Train_mean_reward` 3. `Train_mean_episode_length_time` 4. `Train_mean_episode_length` 5. `Policy_mean_noise_std` 6. `Perf_total_fps` 7. `Perf_learning_time` 8. `Perf_collection_time` 9. `Loss_value_function` 10. `Loss_surrogate` 11. `Loss_learning_rate` 12. `Episode_rew_yaw` 13. `Episode_rew_target` 14. `Episode_rew_smooth` 15. `Episode_rew_crash` 16. `Episode_rew_cable_angle_safety` 17. `Episode_rew_angular` ## 使用方法 ### 1. 批量生成全部图,并直接显示 运行: ```matlab run('C:\Users\sheetung\Documents\MATLAB\tensorboardAnal\matlab\run_all_tensorboard_analysis.m') ``` 作用: - 读取 [csv](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/csv) 中所有已识别指标 - 导出全部图片到 [figures](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/figures) - 导出全部汇总表到 [figures/summaries](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/figures/summaries) - 同时弹出图窗,方便直接观察 注意: - 会连续打开多张图 - 如果实验组很多,图例会比较长 ### 2. 批量生成全部图,但不弹窗 运行: ```matlab run('C:\Users\sheetung\Documents\MATLAB\tensorboardAnal\matlab\run_all_tensorboard_analysis_export_only.m') ``` 适合: - 只需要导出图片 - 不想一次打开很多图窗 - 批处理归档 ### 3. 单独查看某个指标 例如只查看 `Train_mean_reward`: ```matlab run('C:\Users\sheetung\Documents\MATLAB\tensorboardAnal\matlab\metrics\plot_train_mean_reward.m') ``` 其他指标同理,直接运行 [matlab/metrics](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/matlab/metrics) 里的对应脚本即可。 ## 每张图怎么看 每个指标图都由两部分组成: ### 上半部分:训练曲线 - 横轴:`step` - 纵轴:该指标的 `value` - 浅色细线:原始数据 - 深色粗线:移动平均平滑后的趋势线 重点看: - 趋势是上升、下降还是震荡 - 后期是否稳定 - 不同实验之间谁更早收敛 - 最终值谁更好 ### 下半部分:最终值 vs 平均值 - `Final`:最后一个 step 的值 - `Mean`:整段训练过程的平均值 作用: - `Final` 高,说明训练结束时结果更好 - `Mean` 高,说明整个训练过程整体表现更稳 - 如果 `Final` 高但 `Mean` 低,通常表示后期才变好,前期训练效率一般 - 如果 `Mean` 高但 `Final` 回落,说明模型后期可能退化或不稳定 ## 每个指标分别代表什么 下面按“含义 + 一般判断方向 + 使用注意”来说明。 ### 1. `Train_mean_reward` 含义: - 最核心的训练指标 - 表示每个阶段的平均回报 一般判断: - 通常越高越好 怎么看: - 优先看谁的趋势更持续上升 - 看后期是否稳定在更高平台 - 看最终值和均值是否都领先 ### 2. `Train_mean_reward_time` 含义: - 回报随时间的变化表现 - 通常用于观察“按时间而不是按 step”的训练效率 一般判断: - 通常越高越好 怎么看: - 如果两个实验 `Train_mean_reward` 差不多,谁的 `reward_time` 更快抬升,谁更省时间 ### 3. `Train_mean_episode_length` 含义: - 每回合平均长度 一般判断: - 这个指标不能单独判断好坏 怎么看: - 如果任务是“尽快完成目标”,在 `reward` 高的前提下,较短可能更好 - 如果任务里大量早期坠毁/失败会提前结束,那么“过短”反而可能是坏事 - 必须结合 `Train_mean_reward` 和 `Episode_rew_crash` 一起看 ### 4. `Train_mean_episode_length_time` 含义: - 按时间观察平均回合长度变化 怎么看: - 用法和 `Train_mean_episode_length` 一样 - 更偏向看训练效率变化 ### 5. `Policy_mean_noise_std` 含义: - 策略噪声强度 - 反映探索程度 一般判断: - 不追求单纯越高或越低 怎么看: - 训练前期有适度探索正常 - 后期如果噪声仍然很大,可能说明策略还没稳定 - 后期逐步下降并趋稳,通常更健康 ### 6. `Perf_total_fps` 含义: - 整体训练吞吐率 一般判断: - 越高越好,但它不是训练质量指标 怎么看: - 只用于比较训练速度 - 不能用来代替 reward 判断模型好坏 ### 7. `Perf_learning_time` 含义: - 每轮学习更新消耗时间 一般判断: - 通常越低越好 怎么看: - 如果某实验效果接近,但学习耗时更低,工程上更划算 ### 8. `Perf_collection_time` 含义: - 每轮数据采集耗时 一般判断: - 通常越低越好 怎么看: - 用于分析环境采样是否更慢 - 主要是工程性能指标,不是策略优劣的直接证据 ### 9. `Loss_value_function` 含义: - 值函数损失 一般判断: - 一般希望下降并趋于稳定 - 不是单纯越低越好 怎么看: - 持续大幅震荡,通常说明训练不稳定 - 如果 loss 很低但 reward 也很差,说明只是“拟合了一个差策略” ### 10. `Loss_surrogate` 含义: - PPO/策略优化中的代理目标相关损失 一般判断: - 更看重稳定性,不建议只看绝对大小 怎么看: - 如果震荡特别大,可能学习率过高或更新过猛 - 要结合 `Train_mean_reward` 一起看 ### 11. `Loss_learning_rate` 含义: - 训练过程中使用的学习率 一般判断: - 不是“好坏指标” 怎么看: - 主要用于确认学习率调度是否按预期变化 - 如果不同实验 reward 差异明显,可以回头看学习率曲线是否导致收敛差异 ### 12. `Episode_rew_target` 含义: - 与接近目标/通过 waypoint 有关的奖励项 一般判断: - 通常越高越好 怎么看: - 这是任务达成能力的重要分项 - 如果总 reward 高,但 target reward 不高,可能是靠别的项“凑出来”的 ### 13. `Episode_rew_smooth` 含义: - 与控制平滑性相关的奖励项 一般判断: - 通常越高越好 怎么看: - 更高说明动作更平滑、抖动更少 - 如果 target 很高但 smooth 很差,说明虽然能完成任务,但控制品质一般 ### 14. `Episode_rew_yaw` 含义: - 与航向/姿态 yaw 表现相关的奖励项 一般判断: - 通常越高越好 怎么看: - 用于看姿态控制是否协调 - 对通过 waypoint 时的朝向控制有参考意义 ### 15. `Episode_rew_crash` 含义: - 与碰撞/坠毁惩罚相关的奖励项 一般判断: - 如果这是惩罚项,数值通常越接近 0 越好 - 如果越来越负,通常表示 crash 更严重或更频繁 怎么看: - 这是安全性最重要的指标之一 - 总 reward 高但 crash 惩罚很差,通常不能算真正最优 ### 16. `Episode_rew_cable_angle_safety` 含义: - 与缆绳角度安全约束相关的奖励项 一般判断: - 通常越高越好 怎么看: - 反映是否满足安全约束 - 如果总 reward 高,但这个项明显差,说明策略可能存在工程风险 ### 17. `Episode_rew_angular` 含义: - 与角速度/姿态变化相关的奖励项 一般判断: - 通常越高越好 怎么看: - 用于判断机动是否更平稳、更合理 - 常与 `smooth`、`yaw` 联合分析 ## 怎么比对不同实验 当前一个实验通常对应一个前缀,例如: - `s1_waypoint_passing` - `s1_waypoint_passing_long_2026-04-25_20_25_13` - `s1_waypoint_passing_heavy_2026-04-25_23_46_59` - `s1_waypoint_passing_3m_2026-04-25_17_04_55` 脚本会把这些前缀当成不同 run,画在同一张图里对比。 推荐按下面顺序比: ### 第一步:先看任务是否真的学会 主看: - `Train_mean_reward` - `Episode_rew_target` - `Episode_rew_crash` 判断逻辑: - `Train_mean_reward` 更高,说明总体更好 - `Episode_rew_target` 更高,说明更会完成任务 - `Episode_rew_crash` 更接近 0,说明更安全 如果一个实验 reward 高,但 crash 更差,要谨慎,可能是“高收益但高风险”。 ### 第二步:看控制质量 主看: - `Episode_rew_smooth` - `Episode_rew_yaw` - `Episode_rew_angular` - `Episode_rew_cable_angle_safety` 判断逻辑: - 这些项更好,说明动作更平滑、姿态更稳定、约束满足更好 - 如果 reward 差不多,优先选这些分项更稳定、更安全的实验 ### 第三步:看训练稳定性 主看: - `Loss_value_function` - `Loss_surrogate` - `Policy_mean_noise_std` 判断逻辑: - loss 曲线后期更稳定,说明训练更可靠 - 噪声后期能下降并趋稳,通常说明策略已收敛 ### 第四步:看训练效率 主看: - `Train_mean_reward_time` - `Perf_total_fps` - `Perf_learning_time` - `Perf_collection_time` 判断逻辑: - 如果两个实验最终效果差不多,谁更快达到高 reward,谁更优 - 如果效果差异明显,优先保效果,再看效率 ## 怎么判断“最优” 不建议只看一张图选最优,建议按下面原则综合判断。 ### 最优实验的一般特征 1. `Train_mean_reward` 后期更高且更稳定 2. `Episode_rew_target` 明显更好 3. `Episode_rew_crash` 更接近 0,安全性更高 4. `Episode_rew_smooth / angular / yaw / cable_angle_safety` 不差,最好也同步提升 5. `Loss_value_function` 和 `Loss_surrogate` 后期没有剧烈震荡 6. 在效果接近的前提下,`Train_mean_reward_time` 更快抬升,说明训练效率更好 ### 一个实用判断顺序 如果你是要选“最值得保留的模型/配置”,建议优先级这样排: 1. 先看 `Train_mean_reward` 2. 再看 `Episode_rew_crash` 3. 再看 `Episode_rew_target` 4. 再看 `Episode_rew_cable_angle_safety` 5. 再看 `Episode_rew_smooth` 和 `Episode_rew_angular` 6. 最后再看 loss 和性能指标 原因: - 总 reward 决定整体效果 - crash 和 safety 决定是否可用 - target 决定是否真的完成核心任务 - smooth / angular 决定控制品质 - loss 和性能主要用于辅助解释,不应喧宾夺主 ## 一些常见误判 ### 1. 只看最终点,不看整条曲线 问题: - 最后一个点高,不代表整个训练过程稳定 正确做法: - 同时看 `Final` 和 `Mean` - 同时观察后期是否震荡 ### 2. 只看 reward,不看 crash 问题: - 有些策略可能通过冒险动作换高 reward 正确做法: - reward 和 `Episode_rew_crash` 必须一起看 ### 3. 只看 episode length 问题: - 回合变短可能是更快成功,也可能是更快失败 正确做法: - 必须结合 reward 和 crash 判断 ### 4. 只看 loss 判断模型优劣 问题: - loss 漂亮不等于任务表现好 正确做法: - 先看任务指标,再用 loss 解释训练稳定性 ## 汇总表怎么看 每个指标都会生成一个 summary CSV,例如: - [Train_mean_reward_summary.csv](C:/Users/sheetung/Documents/MATLAB/tensorboardAnal/figures/summaries/Train_mean_reward_summary.csv) 表中主要字段含义: - `RunName` - 实验名称 - `NumPoints` - 数据点数量 - `StepStart` / `StepEnd` - 起始和结束 step - `ValueStart` - 起始值 - `ValueFinal` - 最终值 - `ValueMin` / `ValueMax` - 最小值和最大值 - `ValueMean` - 全训练平均值 - `ValueStd` - 波动程度,越大通常表示越不稳定 推荐使用方式: - 用图看趋势 - 用 summary CSV 快速做排序 例如: - 选 `Train_mean_reward_summary.csv` 按 `ValueFinal` 降序排,找最终表现最好 - 再按 `ValueMean` 和 `ValueStd` 看是否稳定 - 然后去对照 `Episode_rew_crash_summary.csv` 和 `Episode_rew_target_summary.csv` ## 建议的实际分析流程 如果你要从多组实验里挑出最好的一组,建议这样做: 1. 先打开 `Train_mean_reward.png`,选出 reward 最高的 2 到 3 组 2. 再看 `Episode_rew_crash.png`,剔除 crash 惩罚明显更差的组 3. 再看 `Episode_rew_target.png`,保留目标完成能力更强的组 4. 再看 `Episode_rew_cable_angle_safety.png` 和 `Episode_rew_smooth.png` 5. 最后用 `Loss_value_function.png`、`Loss_surrogate.png` 检查训练是否稳定 6. 如果还难分,再看 `Train_mean_reward_time.png` 比谁更快达到相近水平 ## 当前脚本的默认行为 - 运行单指标脚本:会显示图并导出 - 运行 `run_all_tensorboard_analysis.m`:会显示全部图并导出 - 运行 `run_all_tensorboard_analysis_export_only.m`:只导出,不显示图 ## 后续可扩展方向 如果你后面还想继续增强,我建议可以加这几类功能: 1. 自动给所有 run 做综合评分并输出排名表 2. 自动筛选 top-N 最优实验 3. 把 17 张图做成一个总面板或分页 dashboard 4. 导出 `.fig` 文件,方便 MATLAB 里二次编辑 5. 在图上标出最佳最终值和最佳平均值 ## 说明 这里对“越高越好 / 越低越好”的解释,是基于当前强化学习训练日志的常见语义,以及这些指标命名本身的通常含义。 其中最需要谨慎解释的是: - `Train_mean_episode_length` - `Train_mean_episode_length_time` - `Episode_rew_crash` 因为它们的最终意义还会受到你的环境终止条件和奖励设计影响。 如果你愿意,我下一步可以继续帮你补一个“自动综合评分脚本”,直接从 17 个 summary CSV 里给出每个实验的总排名。