[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Bjarten--early-stopping-pytorch":3,"tool-Bjarten--early-stopping-pytorch":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",153609,2,"2026-04-13T11:34:59",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":76,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":97,"env_os":98,"env_gpu":99,"env_ram":99,"env_deps":100,"category_tags":104,"github_topics":105,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":153},7187,"Bjarten\u002Fearly-stopping-pytorch","early-stopping-pytorch","Early stopping for PyTorch ","early-stopping-pytorch 是一款专为 PyTorch 框架设计的轻量级工具，旨在通过“早停”机制优化模型训练过程。在深度学习训练中，模型容易因过度学习训练数据而产生“过拟合”，导致在新数据上表现不佳。该工具通过实时监控验证集损失（Validation Loss），当发现指标在连续多个周期（Epoch）内不再下降时，自动终止训练，从而有效防止过拟合并节省计算资源。\n\n此外，early-stopping-pytorch 具备智能检查点保存功能。它会在验证损失每次降低时自动保存当前最优模型状态，确保用户最终获得的是泛化能力最强的版本，而非训练结束时的模型。用户只需简单初始化对象并将其嵌入训练循环，即可通过设置“耐心值”（patience）灵活控制等待优化的周期数。\n\n这款工具特别适合使用 PyTorch 进行模型开发的算法工程师、科研人员及学生。无论是复现经典论文还是探索新架构，它都能以极低的代码侵入性提升实验效率。其设计灵感源自 PyTorch Ignite 库，但提供了更独立、便捷的调用方式，是构建稳健深度学习工作流的实用助手。","# Early Stopping for PyTorch\nEarly stopping is a form of regularization used to avoid overfitting on the training dataset. Early stopping keeps track of the validation loss, if the loss stops decreasing for several epochs in a row the training stops. The ```EarlyStopping``` class in ```early_stopping_pytorch\u002Fearly_stopping.py``` is used to create an object to keep track of the validation loss while training a [PyTorch](https:\u002F\u002Fpytorch.org\u002F) model. It will save a checkpoint of the model each time the validation loss decrease.  We set the ```patience``` argument in the ```EarlyStopping``` class to how many epochs we want to wait after the last time the validation loss improved before breaking the training loop. There is a simple example of how to use the ```EarlyStopping``` class in the [MNIST_Early_Stopping_example](MNIST_Early_Stopping_example.ipynb) notebook.\n\nUnderneath is a plot from the example notebook, which shows the last checkpoint made by the EarlyStopping object, right before the model started to overfit. It had patience set to 20.\n\n![Loss Plot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBjarten_early-stopping-pytorch_readme_2563f52e4c8c.png)\n\n## Installation\n\n### Option 1: Install from PyPI (Recommended)\n```bash\npip install early-stopping-pytorch\n```\n\n### Option 2: Install from Source\nFor development or if you want the latest unreleased changes:\n\n### 1. Clone the Repository\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyour_username\u002Fearly-stopping-pytorch.git\ncd early-stopping-pytorch\n```\n\n### 2. Set Up the Virtual Environment\nRun the setup script to create a virtual environment and install all necessary dependencies.\n```bash\n.\u002Fsetup_dev_env.sh\n```\n\n### 3. Activate the Virtual Environment\nActivate the virtual environment:\n```bash\nsource dev-venv\u002Fbin\u002Factivate\n```\n\n### 4. Install the Package in Editable Mode\nInstall the package locally in editable mode so you can use it immediately:\n```bash\npip install -e .\n```\n\n## Usage\n\n```python\nfrom early_stopping_pytorch import EarlyStopping\n\n# Initialize early stopping object\nearly_stopping = EarlyStopping(patience=7, verbose=True)\n\n# In your training loop:\nfor epoch in range(num_epochs):\n    # ... training code ...\n    val_loss = ... # calculate validation loss\n\n    # Early stopping call\n    early_stopping(val_loss, model)\n    if early_stopping.early_stop:\n        print(\"Early stopping triggered\")\n        break\n```\n\nFor a complete example, see the [MNIST Early Stopping Example Notebook](MNIST_Early_Stopping_example.ipynb).\n\n## Citation\n\nIf you find this package useful in your research, please consider citing it as:\n\n```bibtex\n@misc{early_stopping_pytorch,\n  author = {Bjarte Mehus Sunde},\n  title = {early-stopping-pytorch: A PyTorch utility package for Early Stopping},\n  year = {2024},\n  url = {https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch},\n}\n```\n\n## References\nThe ```EarlyStopping``` class in ```early_stopping_pytorch\u002Fearly_stopping.py``` is inspired by the [ignite EarlyStopping class](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fignite\u002Fblob\u002Fmaster\u002Fignite\u002Fhandlers\u002Fearly_stopping.py).\n","# PyTorch 的早停法\n早停法是一种正则化技术，用于防止模型在训练数据集上过拟合。它会持续监控验证损失；如果验证损失连续多个 epoch 没有下降，训练就会提前终止。位于 `early_stopping_pytorch\u002Fearly_stopping.py` 中的 `EarlyStopping` 类用于创建一个对象，以便在训练 [PyTorch](https:\u002F\u002Fpytorch.org\u002F) 模型时跟踪验证损失。每当验证损失降低时，该类都会保存一次模型检查点。我们可以通过设置 `EarlyStopping` 类中的 `patience` 参数来指定，在验证损失最后一次改善之后，希望等待多少个 epoch 才中断训练循环。[MNIST_Early_Stopping_example](MNIST_Early_Stopping_example.ipynb) 笔记本中提供了一个简单的使用示例。\n\n下方是来自示例笔记本的图表，展示了 `EarlyStopping` 对象在模型开始过拟合之前所保存的最后一个检查点。该示例中将耐心期设置为 20。\n\n![损失曲线图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBjarten_early-stopping-pytorch_readme_2563f52e4c8c.png)\n\n## 安装\n\n### 方法 1：从 PyPI 安装（推荐）\n```bash\npip install early-stopping-pytorch\n```\n\n### 方法 2：从源代码安装\n适用于开发场景或希望获取最新未发布的更改时：\n\n### 1. 克隆仓库\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyour_username\u002Fearly-stopping-pytorch.git\ncd early-stopping-pytorch\n```\n\n### 2. 设置虚拟环境\n运行设置脚本以创建虚拟环境并安装所有必要的依赖项。\n```bash\n.\u002Fsetup_dev_env.sh\n```\n\n### 3. 激活虚拟环境\n激活虚拟环境：\n```bash\nsource dev-venv\u002Fbin\u002Factivate\n```\n\n### 4. 以可编辑模式安装包\n以可编辑模式在本地安装该包，以便立即使用：\n```bash\npip install -e .\n```\n\n## 使用方法\n\n```python\nfrom early_stopping_pytorch import EarlyStopping\n\n# 初始化早停对象\nearly_stopping = EarlyStopping(patience=7, verbose=True)\n\n# 在训练循环中：\nfor epoch in range(num_epochs):\n    # ... 训练代码 ...\n    val_loss = ... # 计算验证损失\n\n    # 调用早停机制\n    early_stopping(val_loss, model)\n    if early_stopping.early_stop:\n        print(\"触发早停\")\n        break\n```\n\n完整的示例请参阅 [MNIST 早停示例笔记本](MNIST_Early_Stopping_example.ipynb)。\n\n## 引用\n如果您在研究中使用了本包，请考虑按以下格式引用：\n\n```bibtex\n@misc{early_stopping_pytorch,\n  author = {Bjarte Mehus Sunde},\n  title = {early-stopping-pytorch: 用于 PyTorch 的早停实用工具包},\n  year = {2024},\n  url = {https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch},\n}\n```\n\n## 参考文献\n`early_stopping_pytorch\u002Fearly_stopping.py` 中的 `EarlyStopping` 类灵感来源于 [ignite 的 EarlyStopping 类](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fignite\u002Fblob\u002Fmaster\u002Fignite\u002Fhandlers\u002Fearly_stopping.py)。","# early-stopping-pytorch 快速上手指南\n\n`early-stopping-pytorch` 是一个用于 PyTorch 的轻量级工具包，旨在通过监控验证集损失（validation loss）来实现早停（Early Stopping），从而有效防止模型过拟合。当验证损失在连续多个 epoch 内不再下降时，它将自动停止训练并保存最佳模型检查点。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：Python 3.6 及以上\n*   **核心依赖**：\n    *   [PyTorch](https:\u002F\u002Fpytorch.org\u002F) (已安装)\n    *   `pip` 包管理工具\n\n> **提示**：国内开发者建议使用清华或阿里镜像源加速 PyTorch 及相关依赖的安装。\n\n## 安装步骤\n\n您可以选择以下任一方式进行安装。\n\n### 方式一：通过 PyPI 安装（推荐）\n\n这是最快捷的安装方式。国内用户可添加 `-i` 参数使用镜像源：\n\n```bash\npip install early-stopping-pytorch -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：从源码安装（适用于开发）\n\n如果您需要最新的功能或参与贡献，可以从 GitHub 克隆源码进行安装：\n\n```bash\n# 1. 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch.git\ncd early-stopping-pytorch\n\n# 2. 设置虚拟环境并激活\n.\u002Fsetup_dev_env.sh\nsource dev-venv\u002Fbin\u002Factivate\n\n# 3. 以可编辑模式安装\npip install -e .\n```\n\n## 基本使用\n\n只需几行代码即可将早停机制集成到您的训练循环中。\n\n### 1. 初始化对象\n导入类并设置 `patience` 参数（即允许验证损失不改善的最大 epoch 数）。\n\n### 2. 集成到训练循环\n在每个 epoch 结束时，传入当前的验证损失和模型对象。如果触发早停，循环将中断。\n\n```python\nfrom early_stopping_pytorch import EarlyStopping\n\n# 初始化早停对象\n# patience: 等待多少个 epoch 后若损失未改善则停止\n# verbose: 是否打印详细信息\nearly_stopping = EarlyStopping(patience=7, verbose=True)\n\n# 训练循环\nfor epoch in range(num_epochs):\n    # ... 此处为您的训练代码 ...\n    \n    # 计算验证集损失\n    val_loss = ... \n\n    # 调用早停逻辑\n    # 该函数会自动保存验证损失最低时的模型检查点\n    early_stopping(val_loss, model)\n    \n    if early_stopping.early_stop:\n        print(\"Early stopping triggered\")\n        break\n```\n\n> **注意**：该工具会在验证损失每次下降时自动保存模型检查点。训练结束后，您可以加载最后保存的检查点以获得最佳模型性能。完整示例请参考项目中的 `MNIST_Early_Stopping_example.ipynb`。","某计算机视觉团队正在训练一个基于 PyTorch 的医学影像分类模型，需要在有限的 GPU 资源下快速迭代并防止过拟合。\n\n### 没有 early-stopping-pytorch 时\n- 开发人员必须手动编写冗长的逻辑来监控验证集损失，代码耦合度高且容易出错。\n- 难以精准判断停止时机，往往因训练轮数设置过多，导致模型在验证集性能下降后仍继续空转，浪费数小时的算力。\n- 缺乏自动化的最佳模型保存机制，经常错过验证损失最低的时刻，最终只能使用过拟合的权重文件。\n- 每次调整“耐心值”（patience）都需要修改多处循环中断条件，实验复现和参数调优效率极低。\n\n### 使用 early-stopping-pytorch 后\n- 只需实例化 `EarlyStopping` 对象并在训练循环中调用一行代码，即可自动接管验证损失的监控逻辑。\n- 当验证损失连续多个 epoch 未改善时，工具自动触发中断，立即释放 GPU 资源，将无效训练时间降至零。\n- 内置检查点机制会在每次验证损失下降时自动保存最优模型权重，确保始终获取泛化能力最强的版本。\n- 通过简单配置 `patience` 参数即可灵活控制容忍度，无需改动主训练流程，大幅提升了实验迭代速度。\n\nearly-stopping-pytorch 通过将复杂的正则化策略封装为简洁接口，帮助开发者在避免过拟合的同时，显著节省了计算成本并保证了模型交付质量。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBjarten_early-stopping-pytorch_2563f52e.png","Bjarten","Bjarte Mehus Sunde","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FBjarten_ad9e823e.jpg","x⇛░⇶▒⇶▓⇶▒⇶▓⇶░⇶▒⇶░⇶░⇶▒⇶▒⇛ŷ",null,"Bergen, Norway","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fbjarte-sunde\u002F","https:\u002F\u002Fgithub.com\u002FBjarten",[81,85,89],{"name":82,"color":83,"percentage":84},"Jupyter Notebook","#DA5B0B",85.6,{"name":86,"color":87,"percentage":88},"Python","#3572A5",13.9,{"name":90,"color":91,"percentage":92},"Shell","#89e051",0.5,1268,290,"2026-04-10T05:47:55","MIT",1,"","未说明",{"notes":101,"python":99,"dependencies":102},"该工具是一个用于 PyTorch 的早停（Early Stopping）实用程序，旨在防止训练过拟合。它通过监控验证损失并在损失连续多个 epoch 未下降时停止训练来工作。安装时可选择从 PyPI 直接安装，或克隆源码后通过提供的 shell 脚本（setup_dev_env.sh）设置虚拟环境（主要适用于 Linux\u002FmacOS）。使用时需实例化 EarlyStopping 类并在训练循环中调用。具体运行环境依赖（如 Python 版本、操作系统、GPU 要求）在 README 中未明确列出，通常取决于用户所使用的 PyTorch 版本及其对应的环境配置。",[103],"torch",[14],[106,107,108,109,110,111,112,113,114],"pytorch","early-stopping","early","stopping","pytorch-tutorial","python","mnist","regularization","tutorial","2026-03-27T02:49:30.150509","2026-04-14T00:12:35.150339",[118,123,128,133,138,143,148],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},32246,"为什么运行 `from pytorchtools import EarlyStopping` 时会报错 `ImportError: cannot import name 'EarlyStopping'`？","这是因为该仓库最初没有发布官方的 pip 包，或者 PyPI 上的同名包是空的\u002F不同的版本。解决方法是不要使用 `pip install pytorchtools`，而是直接从 GitHub 下载 `pytorchtools.py` 文件并放入你的项目目录中。如果你需要使用 pip 安装，可以使用社区维护的打包版本：`pip install early-stopping-pytorch`（注意包名可能不同），或者直接从 GitHub 安装：`pip install git+https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch.git`（如果已配置 pyproject.toml）。最稳妥的方式是直接复制源码文件。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F15",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},32247,"如何正确安装此库以便使用 `pip` 命令？","原作者已发布了一个 pip 包，你可以运行 `pip install early-stopping-pytorch` 进行安装。此外，你也可以直接从 GitHub 安装最新代码：`pip install git+ssh:\u002F\u002Fgit@github.com\u002FBjarten\u002Fearly-stopping-pytorch.git`。如果遇到问题，也可以使用社区 Fork 的版本：`pip install git+https:\u002F\u002Fgithub.com\u002FV0XNIHILI\u002Fearly-stopping.git`。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F20",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},32248,"当验证集损失（Validation Loss）小于训练集损失（Training Loss）时，这正常吗？","这是完全正常的现象，通常由以下原因导致：1. **正则化**（如 Dropout）仅在训练时启用，验证时关闭，导致模型在验证集上表现更好；2. **批归一化（Batch Normalization）**在训练时使用批次统计量，而在验证时使用运行平均值，可能导致验证损失更低；3. **数据增强**增加了训练数据的难度，而验证数据未增强。因此，验证损失低于训练损失并不表示代码有误。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F18",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},32249,"EarlyStopping 类应该保存“上一个”模型还是“当前”模型？","当前的实现是正确的，即保存**当前**表现最好的模型。当验证损失下降时，代码会立即更新 `self.best_score` 并调用 `save_checkpoint` 保存当前的模型状态。这是标准做法，确保保留的是达到最佳验证损失那一刻的模型权重。如果保存“上一个”模型，则会丢失这次改进后的最优权重。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F17",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},32250,"EarlyStopping 的判断条件中，`delta` 的比较逻辑是否应该包含等于号（\u003C=）？","是的，这是一个已修复的问题。原本的逻辑是 `score \u003C self.best_score + self.delta`，当 `delta` 为 0 且分数保持不变时，早停计数器不会增加。正确的逻辑应该是 `score \u003C= self.best_score + self.delta`（或者在代码更新中调整为 `score \u003C self.best_score + self.delta` 但配合正确的 delta 逻辑处理，具体见 PR #27）。这确保了当分数不再提升（即使持平）时，耐心计数（patience counter）也能正常累加并最终触发早停。该问题已在 PR #27 中修复。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F19",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},32251,"导入时遇到 `ImportError: cannot import name 'BalancedDataParallel'` 怎么办？","`BalancedDataParallel` 并不是这个 `early-stopping-pytorch` 仓库的核心功能，它可能存在于某些特定的 Fork 或旧版本的尝试中。如果你需要该功能，请检查是否安装了错误的包。建议直接使用官方仓库的代码，仅导入 `EarlyStopping`。如果需要多 GPU 平衡数据并行，请参考 PyTorch 官方文档或其他专用库，不要依赖此工具包中的该类，因为它可能未被正式支持或已移除。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F23",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},32252,"在 Google Colab 中安装 `pytorchtools` 后仍然无法导入 `EarlyStopping` 怎么办？","PyPI 上的 `pytorchtools` 包可能是空的或与本项目无关。在 Colab 中，请不要仅依赖 `!pip install pytorchtools`。正确的做法是直接从 GitHub 克隆代码或下载 `pytorchtools.py` 文件到当前工作目录。你可以使用以下命令从 GitHub 直接获取文件：`!wget https:\u002F\u002Fraw.githubusercontent.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fmaster\u002Fpytorchtools.py`，然后即可直接 `from pytorchtools import EarlyStopping`。","https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fissues\u002F10",[154,159,164,169,174,179,184,189,194,199,204],{"id":155,"version":156,"summary_zh":157,"released_at":158},247048,"v1.0.10","## v1.0.10（2024-11-11）\n\n### 错误修复\n\n* 修复：将引用作者更新为全名（#43）（[`4b0e88d`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F4b0e88d5a47beb2a9f2ba8a536b996f82b4fd14d)）","2024-11-11T10:34:07",{"id":160,"version":161,"summary_zh":162,"released_at":163},247049,"v1.0.9","## v1.0.9（2024-11-11）\n\n### 错误修复\n\n* 修复：简化构建配置并更新引用格式 (#42) ([`0839e21`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F0839e2139ab4fe23160619b59cbf87db369c8044))","2024-11-11T10:24:43",{"id":165,"version":166,"summary_zh":167,"released_at":168},247050,"v1.0.8","## v1.0.8 (2024-11-11)\n\n### 错误修复\n\n* 修复：触发版本号更新 (#41) ([`2c72682`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F2c726827b507410e08ea1c08c3342915d92f7899))\n\n### 杂项\n\n* 杂项：更新项目元数据和 README，以支持引用和版本管理 (#40) ([`6834653`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F68346536b22171c6820b95886a8b6d527a426805))","2024-11-11T10:11:53",{"id":170,"version":171,"summary_zh":172,"released_at":173},247051,"v1.0.7","## v1.0.7 (2024-11-11)\n\n### Bug修复\n\n* 修复：修正 `__init__.py` 中 `__version__` 的版本号 (#39) ([`bdb4545`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fbdb4545c13e46c601d185510d52d0c724fc77b24))\n\n### 未知\n\n* 撤销 “1.0.6”\n\n此操作撤销了提交 9244ca36814ae4a331b6477cb08edc0a91fc2609。([`c96c7df`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fc96c7df3fa834103ebd71726533d657700fb14f0))","2024-11-11T09:26:05",{"id":175,"version":176,"summary_zh":177,"released_at":178},247052,"v1.0.5","## v1.0.5（2024-11-11）\n\n### 错误修复\n\n* 修复：更新 semantic-release 配置，以确保一致性并正确进行版本管理 (#38) ([`0faabd0`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F0faabd091ba9661c2fd8419e8332d9cb8dcdef60))","2024-11-11T08:01:50",{"id":180,"version":181,"summary_zh":182,"released_at":183},247053,"v1.0.4","## v1.0.4（2024-11-11）\n\n### 错误修复\n\n* 修复：修正语义化版本发布配置中的版本正则表达式，以正确进行版本更新 (#37) ([`a3a82b2`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fa3a82b2f11a82caa13c50c5e07086cd2e74699b1))","2024-11-11T07:43:03",{"id":185,"version":186,"summary_zh":187,"released_at":188},247054,"v1.0.3","## v1.0.3（2024-11-11）\n\n### 错误修复\n\n* 修复：语义化发布版本更新模式 (#36) ([`ccda0f5`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fccda0f52ce6fa2298be7d46f49e0315933ff4800))","2024-11-11T07:18:28",{"id":190,"version":191,"summary_zh":192,"released_at":193},247055,"v1.0.2","## v1.0.2 (2024-11-11)\n\n### 错误修复\n\n* 修复：手动发布和发布工作流在版本更新时的问题 (#35)\n\n## 变更内容\n* 修复：由 @Bjarten 在 https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F35 中修复的手动发布和发布工作流在版本更新时的问题\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcompare\u002Fv1.0.1...v1.0.2","2024-11-11T06:48:55",{"id":195,"version":196,"summary_zh":197,"released_at":198},247056,"v1.0.1","## v1.0.1（2024-11-10）\n\n### 错误修复\n\n* 修复：改进发布流程和文档 (#34)\n\n## 描述\n此 PR 通过以下方式改进了发布流程和文档：\n1. 在发布工作流中明确执行标签推送操作\n2. 修复 semantic-release 中的版本管理问题\n3. 更新 README，添加 PyPI 安装说明\n\n## 变更\n- 向 semantic-release 工作流中添加了显式的标签推送参数\n- 更新了 `pyproject.toml` 中的版本管理：\n  - 添加了 `version_toml` 配置\n  - 从动态版本号改为静态版本号\n  - 将版本号设置为当前发布的版本（1.0.1）\n- 更新了 `README.md`：\n  - 添加了 PyPI 安装说明\n  - 修正了 PyPI 兼容的图片 URL\n  - 重新组织了安装和使用部分（[`f42d5d1`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Ff42d5d1dfa092dac5d33835e7b6d3092783baf53)）\n\n* 修复：使用 PyPI 受信发布者身份验证 (#33)\n\n更新 GitHub Actions 发布工作流，改用 PyPI 的受信发布者身份验证，而非基于令牌的身份验证。这一更改提升了安全性，具体体现在：\n- 无需在 GitHub Secrets 中存储 PyPI 令牌\n- 使用 OpenID Connect (OIDC) 进行安全的身份验证\n- 利用 PyPI 推荐的适用于 GitHub Actions 的身份验证方法\n\n## 变更\n- 移除了基于令牌的身份验证（`TWINE_USERNAME` 和 `TWINE_PASSWORD`）\n- 添加了 OIDC 所需的 `id-token: write` 权限\n- 从手动使用 twine 上传切换到使用 `pypa\u002Fgh-action-pypi-publish` 操作（[`3a0d9b8`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002F3a0d9b8ed0ac95f8ee4010368319be2f8c38da61)）","2024-11-10T11:07:05",{"id":200,"version":201,"summary_zh":202,"released_at":203},247057,"v1.0.0","## v1.0.0 (2024-10-18)\n\n### 重大变更\n\n* chore!: 重命名包、重构文件结构，并添加 pip 集成 (#29)\n\n本次更新对项目进行了重大调整，包括重命名包、重构目录结构，以及通过 API 令牌设置自动发布到 PyPI 的功能。\n\n### **主要变更：**\n\n1. **包名更改：**\n   - 包名已从 `pytorchtools` 更改为 `early_stopping_pytorch`，以使名称更加清晰，更好地反映其功能。\n\n2. **目录重构：**\n   - 项目文件已被重新组织，以提高清晰度，源代码现位于项目根目录下的 `early_stopping_pytorch\u002F` 目录中。\n\n3. **PyPI 集成：**\n   - 添加了使用 GitHub Actions 自动发布到 PyPI 的支持。\n   - 使用 **API 令牌** 进行安全发布，该令牌作为 GitHub Secrets 存储（`PYPI_TOKEN`）。\n\n### **影响：**\n\n- **破坏性变更**：用户需要将导入路径从：\n  ```python\n  from pytorchtools import EarlyStopping\n  ```\n  更新为：\n  ```python\n  from early_stopping_pytorch import EarlyStopping\n  ```\n\n- 新版本将在推送新标签时自动发布到 PyPI，使用 API 令牌进行身份验证。([`f9522dd`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Ff9522dd2da7d14e3dce18eebcbb867260ffdcde4))\n\n### 错误修复\n\n* fix: 发布工作流 2 (#32)\n\n此 PR 修改了我们的 Semantic Release 工作流，确保其仅能手动触发：\n\n1. 移除了在 main 分支推送时的自动触发机制。\n2. 仅保留 `workflow_dispatch` 触发器。\n3. 简化了作业结构，同时保留所有必要的步骤和权限。\n\n这些更改提供了对何时创建发布版本的更多控制，使我们能够：\n- 防止意外的自动发布；\n- 在需要时手动启动发布流程；\n- 维持 Semantic Release 流程的完整功能 ([`ddc6493`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fddc6493075be8b2184956eb73ba621666df715b4))。\n\n* fix: 发布工作流 (#31)\n\n此 PR 更新了我们的 Semantic Release 工作流，使其符合最佳实践和官方文档。关键变更包括：\n\n1. 简化工作流，使用官方的 Python Semantic Release GitHub Action。\n2. 调整权限，以确保创建发布和标签所需的适当访问权限。\n3. 更新 `pyproject.toml` 文件，防止重复发布到 PyPI。\n\n这些更改旨在：\n- 简化发布流程；\n- 提高版本管理的可靠性和一致性 ([`b291782`](https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommit\u002Fb291782635bbb605fcd784778fa7bb8b16b02488))。\n\n* fix: 在 EarlyStopping 中添加对 NaN 验证损失的检查 (#28)\n\n此 PR 解决了一个问题，即 `EarlyStopping` 会错误地将 `nan` 验证损失视为改进，这通常是由于梯度爆炸引起的。\n\n关键变更：\n- 添加了 `np.isnan(val_loss)` 检查，以确保忽略 `nan` 验证损失。\n- 更新了逻辑，以确保耐心计数器和模型检查点保存","2024-10-18T08:20:36",{"id":205,"version":206,"summary_zh":207,"released_at":208},247058,"v0.1.0","## What's Changed\r\n* Checkpoint model after first score improvement by @anshulrai in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F1\r\n* Add delta argument by @AdilZouitine in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F2\r\n* Update pytorchtools.py by @wolframalpha in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F4\r\n* Add path argument to EarlyStopping init by @SimonMossmyr in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F7\r\n* add a custom trace print function to earlEarlyStopping class by @eddinho in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F9\r\n* ci: add PR title linting workflow by @Bjarten in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F25\r\n* ci: add semantic versioning workflow by @Bjarten in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F26\r\n\r\n## New Contributors\r\n* @anshulrai made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F1\r\n* @AdilZouitine made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F2\r\n* @wolframalpha made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F4\r\n* @SimonMossmyr made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F7\r\n* @eddinho made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F9\r\n* @Bjarten made their first contribution in https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fpull\u002F25\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FBjarten\u002Fearly-stopping-pytorch\u002Fcommits\u002Fv0.1.0","2024-10-14T04:31:11"]