# loss_tool **Repository Path**: wang-ronglin12/loss_tool ## Basic Information - **Project Name**: loss_tool - **Description**: 一个用于从日志文件提取并绘制损失曲线的工具。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-22 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Loss曲线绘制工具 这是一个使用 PyQt5 和 Matplotlib 开发的日志曲线绘制工具。该工具可以从日志文件中提取损失值(Loss),并以曲线形式可视化展示,提供了友好的图形用户界面,支持调整曲线的颜色、线宽和平滑度等参数。 ## 功能特点 - **日志解析**:从日志文件中提取损失值,支持多种日志格式,无需手动指定格式。 - **可视化绘制**:使用 Matplotlib 绘制损失曲线,实时展示训练过程中的损失变化。 - **参数调整**:提供滑块调节曲线的颜色、线宽和平滑度,满足个性化需求。 - **结果保存**:支持将绘制的损失曲线保存为 PNG 或 JPEG 图像文件。 - **友好界面**:简洁直观的图形用户界面,方便用户操作。 ## 目录 - [功能特点](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#功能特点) - [运行环境](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#运行环境) - [安装步骤](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#安装步骤) - 使用方法 - [启动程序](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#启动程序) - [加载日志文件](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#加载日志文件) - [绘制损失曲线](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#绘制损失曲线) - [调整曲线参数](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#调整曲线参数) - [保存损失曲线](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#保存损失曲线) - [界面说明](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#界面说明) - [日志格式要求](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#日志格式要求) - [可能的问题及解决方案](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#可能的问题及解决方案) - [许可证](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#许可证) - [致谢](https://chatgpt.com/c/673fe3e4-c984-8008-961c-0b0ed1422772#致谢) ## 运行环境 - **操作系统**:Windows、Linux、macOS - **Python 版本**:Python 3.9 及以上 - 依赖库 : - PyQt5 - Matplotlib - Pandas - NumPy ## 安装步骤 1. **克隆或下载代码** ```bash git clone https://gitee.com/zhaochongz/loss_tool.git ``` 2. **安装 Python 及依赖库** 确保已安装 Python 3.6 及以上版本。建议使用虚拟环境(如 `venv` 或 `conda`)进行管理。 ```bash # 创建并激活虚拟环境(可选) python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows # 安装依赖库 pip install PyQt5 matplotlib pandas numpy ``` 如果遇到网络问题,可以使用国内源: ```bash pip install PyQt5 matplotlib pandas numpy -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ## 使用方法 ### 启动程序 在命令行中运行以下命令启动程序: ```bash python log_tool.py ``` 注意:请将 `log_tool.py` 替换为实际的代码文件名。 ### 加载日志文件 1. 点击主界面上的 **“加载日志文件”** 按钮,或在菜单栏中选择 **“文件” -> “加载日志文件”**,或使用快捷键 `Ctrl+O`。 2. 在弹出的文件对话框中,选择要解析的日志文件,支持 `.log` 和 `.txt` 文件。 ### 绘制损失曲线 1. 日志文件加载成功后,状态栏会显示提示信息 **“日志文件加载成功!请点击‘绘制 Loss 曲线’按钮。”** 2. 点击 **“绘制 Loss 曲线”** 按钮,程序会解析日志文件中的损失值,并绘制损失曲线。 ### 调整曲线参数 在绘制完成后,可以使用界面下方的滑块调整曲线的显示效果: - **颜色**:调整滑块可改变曲线的颜色,采用 HSV 色彩模型的色调(Hue)部分。 - **线宽**:调整滑块可改变曲线的线条宽度。 - **平滑度**:调整滑块可对曲线进行平滑处理,滑块值越大,曲线越平滑。 调整滑块后,曲线会实时更新,方便观察不同参数下的曲线形态。 ### 保存损失曲线 1. 调整好曲线显示效果后,可以将其保存为图像文件。 2. 点击 **“保存 Loss 曲线”** 按钮,或在菜单栏中选择 **“文件” -> “保存 Loss 曲线”**,或使用快捷键 `Ctrl+S`。 3. 在弹出的文件保存对话框中,选择保存路径和文件名,支持 `.png` 和 `.jpg` 格式。 ## 界面说明 - **菜单栏** - 文件 - **加载日志文件**:加载需要解析的日志文件。 - **保存 Loss 曲线**:将当前绘制的损失曲线保存为图像文件。 - **退出**:退出程序。 - 帮助 - **关于**:查看程序的版本信息和作者信息。 - **主界面按钮** - **加载日志文件**:功能同菜单栏中的“加载日志文件”。 - **绘制 Loss 曲线**:解析并绘制损失曲线。 - **保存 Loss 曲线**:功能同菜单栏中的“保存 Loss 曲线”。 - **滑块区域** - **颜色**:调整曲线的颜色。 - **线宽**:调整曲线的线条宽度。 - **平滑度**:调整曲线的平滑程度。 - **绘图区域** - 显示损失曲线,横轴为迭代次数(Iteration),纵轴为损失值(Loss)。 - **状态栏** - 显示程序的提示信息,如日志文件加载成功、错误信息等。 ## 日志格式要求 程序使用统一的正则表达式从日志文件中提取损失值,因此日志文件需要满足以下格式之一: - 日志行中包含 `loss` 或 `Loss` 关键词,后跟 `:`、空格或 `=`,然后是损失值数字。 示例日志行: ```plaintext Epoch:[1/10], step:[5/100], loss: 0.123 loss: 1.23E-4 Loss = -0.456 Loss 0.00123 ``` **支持的数字格式**: - 正数或负数 - 整数或小数 - 科学计数法(如 `1.23e-4`、`-0.456E+2`) **注意事项**: - 损失值必须直接跟在 `loss` 或 `Loss` 关键词之后,允许有 `:`、空格或 `=` 符号分隔。 - 如果日志文件中损失值的格式不符合上述要求,程序可能无法正确解析。 ## 可能的问题及解决方案 ### 1. 无法加载日志文件 **原因**:可能是文件路径错误或权限不足。 **解决方案**: - 确认日志文件存在且可读。 - 确认您有权限访问该文件。 ### 2. 未能解析到有效数据 **原因**:日志文件的格式不符合程序的解析要求。 **解决方案**: - 检查日志文件,确保损失值的行包含 `loss` 或 `Loss`,并按照指定的格式编写。 - 如果日志格式特殊,可以尝试修改程序中的正则表达式以适配。 ### 3. 绘制的曲线不正确 **原因**:可能是损失值数据异常或曲线参数设置不当。 **解决方案**: - 检查日志文件中的损失值是否合理,是否存在异常值或错误数据。 - 调整平滑度参数,查看曲线变化。 ### 4. 程序报错或崩溃 **原因**:可能是依赖库版本不兼容或代码错误。 **解决方案**: - 确认已按照要求安装了所有依赖库,且版本符合要求。 - 查看命令行中的错误信息,定位问题。 - 如果遇到 `DeprecationWarning`,可忽略或尝试更新相关库。 ### 5. 界面显示不正常 **原因**:可能是操作系统或图形界面库的问题。 **解决方案**: - 在不同的操作系统上测试程序,确认是否为系统问题。 - 确认已安装正确版本的 PyQt5。 ## 许可证 本项目采用 MIT 许可证,详细信息请查看 `LICENSE` 文件。 ## 致谢 感谢以下开源项目和资源的支持: - [PyQt5](https://www.riverbankcomputing.com/software/pyqt/intro) - [Matplotlib](https://matplotlib.org/) - [Pandas](https://pandas.pydata.org/) - [NumPy](https://numpy.org/) ------ **作者**:GerlatZ **版本**:1.0 如果您在使用过程中有任何问题或建议,欢迎提交 Issue 或联系作者。