[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-stared--livelossplot":3,"tool-stared--livelossplot":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 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[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":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":96,"env_os":97,"env_gpu":98,"env_ram":98,"env_deps":99,"category_tags":109,"github_topics":110,"view_count":32,"oss_zip_url":114,"oss_zip_packed_at":114,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":148},8932,"stared\u002Flivelossplot","livelossplot","Live training loss plot in Jupyter Notebook for Keras, PyTorch and others","livelossplot 是一款专为 Jupyter Notebook 设计的开源 Python 库，旨在让开发者在训练深度学习模型时，能够实时可视化损失值和准确率的变化曲线。它完美支持 Keras、PyTorch 等多种主流框架，只需简单几行代码即可集成。\n\n在传统训练过程中，用户往往需要等待整个训练周期结束才能查看结果，或者依赖配置复杂的 TensorBoard。livelossplot 解决了这一痛点，让用户无需“盲训”，能在每个 epoch 结束后立即在 Notebook 单元格中看到动态更新的图表。这种即时反馈机制不仅便于快速调试模型参数，也极大地提升了教学演示和实验探索的效率。\n\n这款工具特别适合 AI 研究人员、数据科学家以及深度学习初学者使用。其最大的技术亮点在于极致的简洁性与对 Jupyter 环境的原生兼容：不同于需要额外启动服务的监控工具，livelossplot 直接作为回调函数或通用 API 嵌入代码，开箱即用。无论是进行快速的模型原型验证，还是在课堂上展示神经网络的学习过程，livelossplot 都能提供直观、流畅的交互体验，帮助用户更自信地掌控模型训练","livelossplot 是一款专为 Jupyter Notebook 设计的开源 Python 库，旨在让开发者在训练深度学习模型时，能够实时可视化损失值和准确率的变化曲线。它完美支持 Keras、PyTorch 等多种主流框架，只需简单几行代码即可集成。\n\n在传统训练过程中，用户往往需要等待整个训练周期结束才能查看结果，或者依赖配置复杂的 TensorBoard。livelossplot 解决了这一痛点，让用户无需“盲训”，能在每个 epoch 结束后立即在 Notebook 单元格中看到动态更新的图表。这种即时反馈机制不仅便于快速调试模型参数，也极大地提升了教学演示和实验探索的效率。\n\n这款工具特别适合 AI 研究人员、数据科学家以及深度学习初学者使用。其最大的技术亮点在于极致的简洁性与对 Jupyter 环境的原生兼容：不同于需要额外启动服务的监控工具，livelossplot 直接作为回调函数或通用 API 嵌入代码，开箱即用。无论是进行快速的模型原型验证，还是在课堂上展示神经网络的学习过程，livelossplot 都能提供直观、流畅的交互体验，帮助用户更自信地掌控模型训练节奏。","# livelossplot\n\n[![livelossplot version - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Flivelossplot)](https:\u002F\u002Fpypi.org\u002Fproject\u002Flivelossplot\u002F)\n![PyPI status](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Flivelossplot.svg)\n![MIT license - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Flivelossplot.svg)\n![Python version - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Flivelossplot.svg)\n[![GitHub Actions](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fpythonpackage.yml?branch=main)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![GitHub Actions: Integrations](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fexternal_packages.yml?branch=main&label=integrations)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![GitHub Actions: Linting](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fflake8_yapf.yml?branch=main&label=linting)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fstared_livelossplot_readme_34c50e933400.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Flivelossplot)\n[![Twitter @pmigdal](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fpmigdal)](https:\u002F\u002Ftwitter.com\u002Fpmigdal)\n\nDon't train deep learning models blindfolded! Be impatient and look at each epoch of your training!\n\n([RECENT CHANGES](CHANGELOG.md), [EXAMPLES IN COLAB](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot), [API LOOKUP](http:\u002F\u002Fp.migdal.pl\u002Flivelossplot\u002F), [CODE](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot))\n\nA live training loss plot in [Jupyter Notebook](http:\u002F\u002Fjupyter.org\u002F) for [Keras](https:\u002F\u002Fkeras.io\u002F), [PyTorch](http:\u002F\u002Fpytorch.org\u002F) and other frameworks. An open-source Python package by [Piotr Migdał](https:\u002F\u002Fp.migdal.pl\u002F), [Bartłomiej Olechno](https:\u002F\u002Fgithub.com\u002FBartolo1024\u002F) and [others](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fgraphs\u002Fcontributors). **Open for collaboration!** (Some tasks are as simple as writing code docstrings, so - no excuses! :))\n\n```python\nfrom livelossplot import PlotLossesKeras\n\nmodel.fit(X_train, Y_train,\n          epochs=10,\n          validation_data=(X_test, Y_test),\n          callbacks=[PlotLossesKeras()],\n          verbose=0)\n```\n\n![Animated fig for livelossplot tracking log-loss and accuracy](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fstared_livelossplot_readme_e5140c541e2e.gif)\n\n- (The most FA)Q: Why not TensorBoard?\n- A: Jupyter Notebook compatibility (for exploration and teaching). The simplicity of use.\n\n## Installation\n\nTo install [this version from PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Flivelossplot\u002F), type:\n\n```bash\npip install livelossplot\n```\n\nTo get the newest one from this repo (note that we are in the alpha stage, so there may be frequent updates), type:\n\n```bash\npip install git+git:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot.git\n```\n\n## Examples\n\nLook at notebook files with full working [examples](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002F):\n\n- [keras.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fkeras.ipynb) - a Keras callback\n- [minimal.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fminimal.ipynb) - a bare API, to use anywhere\n- [script.py](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fscript.py) - to be run as a script, `python script.py`\n- [bokeh.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fbokeh.ipynb) - a bare API, plots with Bokeh ([open it in Colab to see the plots](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fbokeh.ipynb))\n- [pytorch.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fpytorch.ipynb) - a bare API, as applied to PyTorch\n- [2d_prediction_maps.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002F2d_prediction_maps.ipynb) - example of custom plots - 2d prediction maps (0.4.1+)\n- [poutyne.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fpoutyne.ipynb) - a Poutyne callback ([Poutyne](https:\u002F\u002Fpoutyne.org\u002F) is a Keras-like framework for PyTorch)\n- [torchbearer.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Ftorchbearer.ipynb) - an example using the built in functionality from torchbearer ([torchbearer](https:\u002F\u002Fgithub.com\u002Fecs-vlc\u002Ftorchbearer) is a model fitting library for PyTorch)\n- [neptune.py](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fneptune.py) and [neptune.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fneptune.ipynb) - a [Neptune.AI](https:\u002F\u002Fneptune.ai\u002F)\n- [matplotlib.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fmatplotlib.ipynb) - a Matplotlib output example\n- [various_options.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fvarious_options.ipynb) - an extended API for metrics grouping and custom outputs\n\nYou [run examples in Colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot).\n\n## Overview\n\nText logs are easy, but it's easy to miss the most crucial information: is it learning, doing nothing or overfitting?\nVisual feedback allows us to keep track of the training process. Now there is one for Jupyter.\n\nIf you want to get serious - use [TensorBoard](https:\u002F\u002Fwww.tensorflow.org\u002Fprogrammers_guide\u002Fsummaries_and_tensorboard), .\nBut what if you just want to train a small model in Jupyter Notebook? Here is a way to do so, using `livelossplot` as a plug&play component\n\n### from livelossplot import ...\n\n`PlotLosses` for a generic API.\n\n```{python}\nplotlosses = PlotLosses()\nplotlosses.update({'acc': 0.7, 'val_acc': 0.4, 'loss': 0.9, 'val_loss': 1.1})\nplotlosses.send()  # draw, update logs, etc\n```\n\nThere are callbacks for common libraries and frameworks: `PlotLossesKeras`, `PlotLossesKerasTF`, `PlotLossesPoutyne`, `PlotLossesIgnite`.\n\nFeel invited to write, and contribute, your adapter.\nIf you want to use a bare logger, there is `MainLogger`.\n\n### from livelossplot.outputs import ...\n\nPlots: `MatplotlibPlot`, `BokehPlot`.\n\nLoggers: `ExtremaPrinter` (to standard output), `TensorboardLogger`, `TensorboardTFLogger`, `NeptuneLogger`.\n\nTo use them, initialize PlotLosses with some outputs:\n\n```{python}\nplotlosses = PlotLosses(outputs=[MatplotlibPlot(), TensorboardLogger()])\n```\n\nThere are custom `matplotlib` plots in `livelossplot.outputs.matplotlib_subplots` you can pass in `MatplotlibPlot` arguments.\n\nIf you like to plot with [Bokeh](https:\u002F\u002Fdocs.bokeh.org\u002Fen\u002Flatest\u002F) instead of [matplotlib](https:\u002F\u002Fmatplotlib.org\u002F), use\n\n```{python}\nplotlosses = PlotLosses(outputs=[BokehPlot()])\n```\n\n## Sponsors\n\nThis project supported by [Jacek Migdał](http:\u002F\u002Fjacek.migdal.pl\u002F), [Marek Cichy](https:\u002F\u002Fmedium.com\u002F@marekkcichy\u002F), [Casper da Costa-Luis](https:\u002F\u002Fcdcl.ml\u002F), and [Piotr Zientara](https:\u002F\u002Ftwitter.com\u002Fpiotr_zientara). [Join the sponsors - show your ❤️ and support, and appear on the list](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fstared)! It will give me time and energy to work on this project.\n\nThis project is also supported by a European program _Program Operacyjny Inteligentny Rozwój_ for [GearShift - building the engine of behavior of wheeled motor vehicles and map’s generation based on artificial intelligence algorithms implemented on the Unreal Engine platform](https:\u002F\u002Fmapadotacji.gov.pl\u002Fprojekty\u002F874596\u002F?lang=en) lead by ECC Games (NCBR grant GameINN).\n\n## Trivia\n\nIt started as [this gist](https:\u002F\u002Fgist.github.com\u002Fstared\u002Fdfb4dfaf6d9a8501cd1cc8b8cb806d2e). Since it went popular, I decided to rewrite it as a package.\n\nOh, and I am in general interested in data vis, see [Simple diagrams of convoluted neural networks](https:\u002F\u002Fmedium.com\u002Finbrowserai\u002Fsimple-diagrams-of-convoluted-neural-networks-39c097d2925b) (and overview of deep learning architecture diagrams):\n\n> A good diagram is worth a thousand equations — let’s create more of these!\n\n...or [my other data vis projects](https:\u002F\u002Fp.migdal.pl\u002Fprojects\u002F).\n\n## Todo\n\nIf you want more functionality - open an [Issue](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues) or even better - prepare a [Pull Request](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fpulls).\n","# livelossplot\n\n[![livelossplot 版本 - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Flivelossplot)](https:\u002F\u002Fpypi.org\u002Fproject\u002Flivelossplot\u002F)\n![PyPI 状态](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Flivelossplot.svg)\n![MIT 许可证 - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Flivelossplot.svg)\n![Python 版本 - PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Flivelossplot.svg)\n[![GitHub Actions](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fpythonpackage.yml?branch=main)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![GitHub Actions: 集成](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fexternal_packages.yml?branch=main&label=integrations)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![GitHub Actions: 代码检查](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fstared\u002Flivelossplot\u002Fflake8_yapf.yml?branch=main&label=linting)](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Factions)\n[![下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fstared_livelossplot_readme_34c50e933400.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Flivelossplot)\n[![Twitter @pmigdal](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fpmigdal)](https:\u002F\u002Ftwitter.com\u002Fpmigdal)\n\n别再蒙着眼睛训练深度学习模型了！急不可耐地看看你每一轮的训练吧！\n\n([最近更新](CHANGELOG.md), [Colab 示例](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot), [API 查阅](http:\u002F\u002Fp.migdal.pl\u002Flivelossplot\u002F), [源码](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot))\n\n一个用于 [Jupyter Notebook](http:\u002F\u002Fjupyter.org\u002F) 的实时训练损失图，适用于 [Keras](https:\u002F\u002Fkeras.io\u002F)、[PyTorch](http:\u002F\u002Fpytorch.org\u002F) 等框架。由 [Piotr Migdał](https:\u002F\u002Fp.migdal.pl\u002F)、[Bartłomiej Olechno](https:\u002F\u002Fgithub.com\u002FBartolo1024\u002F) 及其他贡献者开发的开源 Python 包。**欢迎合作！**（有些任务简单到只需编写代码文档字符串，所以——没有借口啦！:)）\n\n```python\nfrom livelossplot import PlotLossesKeras\n\nmodel.fit(X_train, Y_train,\n          epochs=10,\n          validation_data=(X_test, Y_test),\n          callbacks=[PlotLossesKeras()],\n          verbose=0)\n```\n\n![livelossplot 跟踪 log-loss 和准确率的动图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fstared_livelossplot_readme_e5140c541e2e.gif)\n\n- （最常问的）问题：为什么不用 TensorBoard？\n- 答：因为 Jupyter Notebook 兼容性更好（适合探索和教学），而且使用起来非常简单。\n\n## 安装\n\n要从 PyPI 安装当前版本，请输入：\n\n```bash\npip install livelossplot\n```\n\n若想获取本仓库中的最新版本（请注意我们目前处于 Alpha 阶段，可能会频繁更新），请输入：\n\n```bash\npip install git+git:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot.git\n```\n\n## 示例\n\n查看包含完整可用示例的笔记本文件：\n\n- [keras.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fkeras.ipynb) — Keras 回调函数\n- [minimal.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fminimal.ipynb) — 纯 API，可在任何地方使用\n- [script.py](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fscript.py) — 可作为脚本运行，执行 `python script.py`\n- [bokeh.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fbokeh.ipynb) — 纯 API，使用 Bokeh 绘图（[在 Colab 中打开以查看图表](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fbokeh.ipynb)）\n- [pytorch.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fpytorch.ipynb) — 应用于 PyTorch 的纯 API\n- [2d_prediction_maps.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002F2d_prediction_maps.ipynb) — 自定义绘图示例：二维预测图（0.4.1 及以上版本）\n- [poutyne.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fpoutyne.ipynb) — Poutyne 回调函数（[Poutyne](https:\u002F\u002Fpoutyne.org\u002F) 是一个类似 Keras 的 PyTorch 框架）\n- [torchbearer.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Ftorchbearer.ipynb) — 使用 torchbearer 内置功能的示例（[torchbearer](https:\u002F\u002Fgithub.com\u002Fecs-vlc\u002Ftorchbearer) 是一个用于 PyTorch 的模型拟合库）\n- [neptune.py](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fneptune.py) 和 [neptune.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fneptune.ipynb) — 与 [Neptune.AI](https:\u002F\u002Fneptune.ai\u002F) 集成\n- [matplotlib.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fmatplotlib.ipynb) — Matplotlib 输出示例\n- [various_options.ipynb](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fblob\u002Fmain\u002Fexamples\u002Fvarious_options.ipynb) — 扩展 API，支持指标分组和自定义输出\n\n你可以在 [Colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fstared\u002Flivelossplot) 中运行这些示例。\n\n## 概述\n\n文本日志虽然方便，但很容易错过最关键的信息：模型是在学习、原地踏步，还是过拟合了？视觉反馈能帮助我们更好地跟踪训练过程。现在，Jupyter 用户也有这样的工具了。\n\n如果你想更专业一些，可以使用 [TensorBoard](https:\u002F\u002Fwww.tensorflow.org\u002Fprogrammers_guide\u002Fsummaries_and_tensorboard)。但如果你只是想在 Jupyter Notebook 中训练一个小模型呢？那就用 `livelossplot` 作为即插即用的组件吧。\n\n### from livelossplot import ...\n\n`PlotLosses` 提供通用 API。\n\n```python\nplotlosses = PlotLosses()\nplotlosses.update({'acc': 0.7, 'val_acc': 0.4, 'loss': 0.9, 'val_loss': 1.1})\nplotlosses.send()  # 绘制图表、更新日志等\n```\n\n针对常见库和框架，还提供了回调函数：`PlotLossesKeras`、`PlotLossesKerasTF`、`PlotLossesPoutyne`、`PlotLossesIgnite`。\n\n欢迎你编写并贡献自己的适配器。如果需要使用纯日志记录器，可以使用 `MainLogger`。\n\n### from livelossplot.outputs import ...\n\n绘图工具：`MatplotlibPlot`、`BokehPlot`。\n\n日志记录器：`ExtremaPrinter`（输出到标准输出）、`TensorboardLogger`、`TensorboardTFLogger`、`NeptuneLogger`。\n\n要使用它们，只需在初始化 `PlotLosses` 时指定输出即可：\n\n```python\nplotlosses = PlotLosses(outputs=[MatplotlibPlot(), TensorboardLogger()])\n```\n\n`livelossplot.outputs.matplotlib_subplots` 中包含自定义的 Matplotlib 图表，可以直接传递给 `MatplotlibPlot`。\n\n如果你更喜欢用 [Bokeh](https:\u002F\u002Fdocs.bokeh.org\u002Fen\u002Flatest\u002F) 而不是 [Matplotlib](https:\u002F\u002Fmatplotlib.org\u002F) 来绘图，可以这样设置：\n\n```python\nplotlosses = PlotLosses(outputs=[BokehPlot()])\n```\n\n## 赞助者\n\n本项目得到了 [Jacek Migdał](http:\u002F\u002Fjacek.migdal.pl\u002F)、[Marek Cichy](https:\u002F\u002Fmedium.com\u002F@marekkcichy\u002F)、[Casper da Costa-Luis](https:\u002F\u002Fcdcl.ml\u002F) 和 [Piotr Zientara](https:\u002F\u002Ftwitter.com\u002Fpiotr_zientara) 的支持。[加入赞助者行列——用你的爱心和支持点亮自己，并出现在名单上](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fstared)！这将为我投入时间和精力继续推进该项目提供保障。\n\n此外，本项目还获得了欧洲 _智能发展行动计划_ 的资助，用于 ECC Games 牵头的 [GearShift 项目——基于虚幻引擎平台的人工智能算法构建轮式机动车行为引擎及地图生成](https:\u002F\u002Fmapadotacji.gov.pl\u002Fprojekty\u002F874596\u002F?lang=en)，该项目属于 NCBR 的 GameINN 资助计划。\n\n## 小知识\n\n最初，它只是一个 [Gist](https:\u002F\u002Fgist.github.com\u002Fstared\u002Fdfb4dfaf6d9a8501cd1cc8b8cb806d2e)。由于这个 Gist 受到欢迎，我便决定将其重写为一个独立的软件包。\n\n顺便一提，我对数据可视化一直很感兴趣，可以看看 [复杂神经网络的简易图示](https:\u002F\u002Fmedium.com\u002Finbrowserai\u002Fsimple-diagrams-of-convoluted-neural-networks-39c097d2925b)（以及深度学习架构图的综述）：\n\n> 一张好的图表胜过千言万语——让我们创造更多这样的图表吧！\n\n或者访问我的其他数据可视化项目：[p.migdal.pl\u002Fprojects\u002F](https:\u002F\u002Fp.migdal.pl\u002Fprojects\u002F)。\n\n## 待办事项\n\n如果你希望增加更多功能，请提交一个 [Issue](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues)，更好的方式是直接准备并提交一个 [Pull Request](https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fpulls)。","# livelossplot 快速上手指南\n\n`livelossplot` 是一个专为 Jupyter Notebook 设计的 Python 库，用于在深度学习训练过程中实时绘制损失（Loss）和准确率（Accuracy）曲线。它支持 Keras、PyTorch 等主流框架，让你无需等待训练结束即可直观监控模型状态，避免“盲训”。\n\n## 环境准备\n\n- **操作系统**：Windows \u002F macOS \u002F Linux\n- **Python 版本**：兼容 Python 3.x\n- **前置依赖**：\n  - `Jupyter Notebook` 或 `JupyterLab`（推荐用于最佳可视化体验）\n  - 深度学习框架（如 `tensorflow\u002Fkeras` 或 `pytorch`，根据实际需求安装）\n  - 绘图后端：默认依赖 `matplotlib`，也可选装 `bokeh`\n\n## 安装步骤\n\n推荐使用 pip 进行安装。国内用户可使用清华或阿里云镜像源加速下载。\n\n**标准安装（PyPI）：**\n```bash\npip install livelossplot\n```\n\n**国内加速安装（推荐）：**\n```bash\npip install livelossplot -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n**安装最新开发版（可选）：**\n如果需要体验最新功能（可能包含不稳定更新），可从 GitHub 安装：\n```bash\npip install git+git:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot.git\n```\n\n## 基本使用\n\n### 场景一：Keras \u002F TensorFlow 用户（最简单用法）\n\n只需将 `PlotLossesKeras` 作为回调函数传入 `model.fit` 即可。\n\n```python\nfrom livelossplot import PlotLossesKeras\n\nmodel.fit(X_train, Y_train,\n          epochs=10,\n          validation_data=(X_test, Y_test),\n          callbacks=[PlotLossesKeras()],\n          verbose=0)\n```\n*注：设置 `verbose=0` 可隐藏默认的文本日志，使 Notebook 界面更清爽。*\n\n### 场景二：通用 API（适用于 PyTorch 或其他框架）\n\n对于非 Keras 框架，可以使用通用的 `PlotLosses` 接口，在训练循环中手动更新数据。\n\n```python\nfrom livelossplot import PlotLosses\n\n# 初始化绘图对象\nplotlosses = PlotLosses()\n\n# 模拟训练循环\nfor epoch in range(10):\n    # ... 此处执行你的训练代码 ...\n    \n    # 假设获取到了当前的指标\n    logs = {\n        'acc': 0.7 + epoch * 0.02, \n        'val_acc': 0.4 + epoch * 0.03, \n        'loss': 0.9 - epoch * 0.05, \n        'val_loss': 1.1 - epoch * 0.04\n    }\n    \n    # 更新数据并绘制\n    plotlosses.update(logs)\n    plotlosses.send()\n```\n\n在 Jupyter Notebook 中运行上述代码后，每个 epoch 结束时都会自动刷新显示最新的训练曲线图。","一位数据科学家正在 Jupyter Notebook 中调试一个复杂的图像分类模型，需要实时观察训练过程中的损失变化以调整超参数。\n\n### 没有 livelossplot 时\n- **盲目等待**：必须等到整个 epoch 训练结束后才能看到静态图表，无法在训练中途发现模型是否已经发散或陷入局部最优。\n- **打断流程**：为了查看中间状态，不得不手动停止训练、打印日志或切换窗口查看外部监控工具，严重破坏实验的连贯性。\n- **教学演示困难**：在向团队或学生展示深度学习训练过程时，只能展示枯燥的文字日志或训练后的结果截图，缺乏直观的动态反馈。\n- **资源浪费**：往往在训练了数小时后才发现早期设置的学习率过大导致失败，白白浪费了宝贵的 GPU 算力和时间。\n\n### 使用 livelossplot 后\n- **实时监控**：在 Notebook 单元格下方直接生成动态刷新的损失曲线图，每个 batch 或 epoch 的更新都肉眼可见，真正实现“边训边看”。\n- **无缝集成**：只需添加一行回调代码（如 `PlotLossesKeras()`），无需修改原有模型结构或中断训练流程，体验极其流畅。\n- **互动性强**：非常适合技术分享和教学场景，观众能直观看到模型如何一步步收敛，让抽象的训练过程变得生动具体。\n- **及时止损**：一旦观察到损失值异常飙升或不再下降，可立即手动干预或终止训练，快速迭代参数，大幅节省计算资源。\n\nlivelossplot 将原本黑盒般的模型训练过程变成了透明、实时的可视化交互体验，让开发者不再“盲训”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fstared_livelossplot_e5140c54.gif","stared","Piotr Migdał","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fstared_e4818f35.jpg","Looking for ambitious projects as a tech lead.\r\n\r\nData science: deep learning, data viz, quantum computing.","ex: Quantum Flytrap CTO & cofounder","Warsaw, Poland","pmigdal@gmail.com","pmigdal","https:\u002F\u002Fp.migdal.pl","https:\u002F\u002Fgithub.com\u002Fstared",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",99.8,{"name":89,"color":90,"percentage":91},"Shell","#89e051",0.2,1323,142,"2026-04-10T04:55:32","MIT",1,"","未说明",{"notes":100,"python":98,"dependencies":101},"该工具是一个用于在 Jupyter Notebook 中实时绘制训练损失曲线的轻量级库，主要作为回调函数或通用 API 使用。它本身没有特定的操作系统、GPU 或内存硬性要求，其运行环境取决于所配合使用的深度学习框架（如 Keras 或 PyTorch）及宿主环境（如 Jupyter）。支持多种输出后端（Matplotlib, Bokeh, TensorBoard, Neptune 等）。",[102,103,104,105,106,107,108],"keras","pytorch","matplotlib","bokeh","poutyne","torchbearer","neptune-client",[14],[111,102,112,113,103],"jupyter-notebook","keras-visualization","deep-learning",null,"2026-03-27T02:49:30.150509","2026-04-18T14:13:36.417806",[118,123,128,133,138,143],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},40068,"导入 PlotLossesCallback 时出现 'ModuleNotFoundError: No module named neptune' 错误怎么办？","这是因为旧版本中存在对 neptune 模块的强制依赖问题。解决方案是重新安装最新版本的 livelossplot。维护者已发布 0.3.3 及以上版本修复了此问题。建议先卸载旧版本再安装：\n1. pip uninstall livelossplot\n2. pip install livelossplot==0.3.3 (或更高版本)\n或者直接从 GitHub 安装特定提交版本。","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F51",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},40069,"如何将训练过程中的损失图表保存为图片文件？","可以通过设置 fig_path 参数来保存图表。具体用法取决于你使用的类：\n1. 对于通用类：PlotLosses(fig_path=\".\u002Fplot.png\") 或 PlotLossesKeras(fig_path=\".\u002Fplot.png\")\n2. 对于 TensorFlow Keras 用户，如果需要更精细控制，可以使用：\n   from livelossplot import PlotLossesKerasTF\n   from livelossplot.outputs import MatplotlibPlot\n   live_loss = PlotLossesKerasTF(outputs=[MatplotlibPlot(figpath=\"graph.png\")])\n注意参数名是 fig_path 而不是 file_name，且需要 0.2.3 及以上版本支持。","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F14",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},40070,"同时使用 ReduceLROnPlateau 和 PlotLossesKeras 时出现 'KeyError: lr' 错误如何解决？","这是早期版本中指标分组处理不完善导致的兼容性问题。维护者已在 0.5.0 版本中重写了指标分组逻辑，使其更具可配置性并解决了该问题。请将 livelossplot 升级到 0.5.0 或更高版本：\npip install --upgrade livelossplot\n升级后，ReduceLROnPlateau 回调与绘图回调可以正常协同工作。","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F56",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},40071,"在 TensorFlow 2.2+ 环境下出现 'KeyError: metrics' 错误怎么办？","这通常是因为导入了错误的模块路径。如果你使用的是独立的 keras 包（standalone keras），应该从 livelossplot.keras 导入，而不是 livelossplot.tf_keras。\n请检查你的导入语句：\n- 如果使用独立 Keras: from livelossplot.keras import PlotLossesCallback\n- 如果使用 TensorFlow 内置 Keras: from livelossplot.tf_keras import PlotLossesCallback\n确保导入路径与你实际安装的 Keras\u002FTensorFlow 环境相匹配。","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F104",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},40072,"使用 Keras 2.1.3 时出现 'TypeError: unsupported operand type(s) for +: function and str' 错误如何解决？","这是因为在某些情况下 model.loss 是一个函数对象而非字符串，导致字符串拼接失败。解决方案是在编译模型时显式指定损失函数名称为字符串。\n例如，将代码修改为：\nmodel.compile(optimizer=opt, loss='mae', metrics=['mae'])\n确保 loss 参数传递的是字符串（如 'mse', 'mae', 'categorical_crossentropy' 等），而不是函数对象。对于典型网络，通常只有一个损失函数，这样设置即可正常工作。","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F3",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},40073,"如何跳过前几个 epoch 不绘制图表（类似旧版本的 skip_first 功能）？","skip_first 功能曾在 0.4.0+ 版本中通过 commit 6c88783 添加，允许用户设置如 PlotLossesCallback(skip_first=2) 来跳过前两个 epoch。但请注意，有用户反馈在 0.5 版本发布后该功能似乎被移除或参数名发生变化。\n如果你在使用较新版本时遇到 '__init__() got an unexpected keyword argument skip_first' 错误，建议：\n1. 检查当前版本文档确认参数是否变更\n2. 尝试回退到 0.4.x 版本使用该功能\n3. 或者在回调外部通过逻辑控制何时开始记录数据","https:\u002F\u002Fgithub.com\u002Fstared\u002Flivelossplot\u002Fissues\u002F18",[]]