[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-tambetm--simple_dqn":3,"tool-tambetm--simple_dqn":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 真正成长为懂上",160411,2,"2026-04-18T23:33:24",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[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":75,"owner_location":75,"owner_email":75,"owner_twitter":75,"owner_website":75,"owner_url":76,"languages":77,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":94,"env_os":95,"env_gpu":96,"env_ram":97,"env_deps":98,"category_tags":109,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":111,"updated_at":112,"faqs":113,"releases":143},9502,"tambetm\u002Fsimple_dqn","simple_dqn","Simple deep Q-learning agent.","simple_dqn 是一个旨在复现 DeepMind 经典论文成果的简易深度 Q 学习（DQN）智能体项目。它主要解决了初学者和研究者在尝试理解强化学习核心算法时，面对庞大复杂代码库难以入手的问题，提供了一个轻量级、快速且易于扩展的代码范例。\n\n该项目非常适合希望深入掌握 DQN 原理的 AI 开发者、学生及研究人员使用。需要注意的是，作者已在文档中明确提示该仓库内容较为陈旧，对于需要生产级应用或最新特性的用户，建议参考更现代的替代方案；但对于学习基础架构而言，它依然具有很高的参考价值。\n\n在技术实现上，simple_dqn 展现了多项优化亮点：它基于 Python 开发，支持 OpenAI Gym 和 ALE 环境；采用了当时高效的卷积运算库 Neon 以提升训练速度；特别设计了只存储单帧屏幕的重放内存机制，并利用 Numpy 数组切片技术加速小批量采样，同时最大限度地减少了数据类型转换开销，从而实现了高效的训练流程。通过该项目，用户可以轻松复现《打砖块》、《乒乓》等经典雅达利游戏的智能控制效果。","# Simple DQN\n\n**Unfortunately this repo is outdated and there are much better codebases out there. I would suggest to take a look at [this](https:\u002F\u002Fgithub.com\u002Fkeon\u002Fdeep-q-learning) to learn the basics or [this](https:\u002F\u002Fgithub.com\u002Fhill-a\u002Fstable-baselines) for full-blown DQN implementation for Atari.**\n\nDeep Q-learning agent for replicating DeepMind's results in paper [\"Human-level control through deep reinforcement learning\"](http:\u002F\u002Fwww.nature.com\u002Fnature\u002Fjournal\u002Fv518\u002Fn7540\u002Ffull\u002Fnature14236.html). It is designed to be simple, fast and easy to extend. In particular:\n * It's Python :).\n * Uses ALE [native Python interface](https:\u002F\u002Fgithub.com\u002Fbbitmaster\u002Fale_python_interface\u002Fwiki\u002FCode-Tutorial).\n * Updated to support training and testing with [OpenAI Gym](https:\u002F\u002Fgym.openai.com\u002F).\n * [Fastest convolutions](https:\u002F\u002Fgithub.com\u002Fsoumith\u002Fconvnet-benchmarks) from [Neon deep learning library](http:\u002F\u002Fneon.nervanasys.com\u002Fdocs\u002Flatest\u002Findex.html).\n * Every screen is kept only once in replay memory, fast minibatch sampling with Numpy array slicing.\n * The number of array and datatype conversions is minimized.\n\nSee the example gameplay videos for Breakout, Pong, Seaquest and Space Invaders:\n\n[![Breakout](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_40fb813ef841.jpg)](https:\u002F\u002Fyoutu.be\u002FKkIf0Ok5GCE)\n[![Pong](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_5caae368cd95.jpg)](https:\u002F\u002Fyoutu.be\u002F0ZlgrQS3krg)\n[![Seaquest](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_f69d22dba594.jpg)](https:\u002F\u002Fyoutu.be\u002Fb6g6A_n8mUk)\n[![Space Invaders](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_35d4d03eaad1.jpg)](https:\u002F\u002Fyoutu.be\u002FQvco7ufsX_0)\n\n## Installation\n\nCurrently only instructions for Ubuntu are provided. For OS X refer to [ALE](https:\u002F\u002Fgithub.com\u002Fmgbellemare\u002FArcade-Learning-Environment\u002Fblob\u002Fmaster\u002Fdoc\u002Fmanual\u002Fmanual.pdf) and [Neon](http:\u002F\u002Fneon.nervanasys.com\u002Fdocs\u002Flatest\u002Finstallation.html) documentation.\n\n### Neon\n\nInstall prerequisites:\n```\nsudo apt-get install libhdf5-dev libyaml-dev libopencv-dev pkg-config\nsudo apt-get install python python-dev python-pip python-virtualenv\nsudo apt-get install libcurl4-openssl-dev\nsudo apt-get install libsox-fmt-all libsox-dev sox\n```\nCheck out and compile the code:\n```\ngit clone https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fneon.git\ncd neon\nmake\n```\n\nIf you want to try out the filter visualization, use latest Neon and run `make -e VIS=true` instead. If you’ve already installed Neon without enabling visualization dependencies you’ll need to `touch vis_requirements.txt` prior to the `make -e VIS=true` call to ensure virtualenv Python dependencies get triggered.\n\nNeon installs itself into virtual environment in `.venv`. You need to activate that to import Neon in Python:\n```\nsource .venv\u002Fbin\u002Factivate\n```\n\n### Arcade Learning Environment\n\nYou can skip this, if you only plan to use OpenAI Gym.\n\nInstall prerequisites:\n```\nsudo apt-get install cmake libsdl1.2-dev\n```\nCheck out and compile the code:\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fmgbellemare\u002FArcade-Learning-Environment.git\ncd Arcade-Learning-Environment\ncmake -DUSE_SDL=ON -DUSE_RLGLUE=OFF -DBUILD_EXAMPLES=ON .\nmake -j 4\n```\nInstall Python library (assuming you have activated Neon virtual environment):\n```\npip install .\n```\n\n### OpenAI Gym\n\nYou can skip this, if you only plan to use Arcade Learning Environment directly.\n\nTo install OpenAI Gym:\n```\npip install gym\npip install gym[atari]\n```\n\n### Simple DQN\n\nPrerequisities:\n```\npip install numpy argparse logging\n```\nNeon virtual environment already contains those libraries, but they are listed here, just in case.\n\nAlso you need OpenCV, which is pain to install to virtual environment. I ended up with this hack:\n```\nsudo apt-get install python-opencv\nln -s \u002Fusr\u002Flib\u002Fpython2.7\u002Fdist-packages\u002Fcv2.so NEON_HOME\u002F.venv\u002Flib\u002Fpython2.7\u002Fsite-packages\u002F\n```\n`NEON_HOME` here means the folder where you installed (cloned) Neon.\n\nThen just check out the code:\n```\ngit clone https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\ncd simple_dqn\n```\n\n### Optional\n\nFor plotting install `matplotlib`:\n```\npip install matplotlib\n```\n\nFor producing game videos install `avconv`:\n```\nsudo apt-get install libav-tools\n```\n\n## Running the code\n\n### Training\n\nTo run training for Breakout:\n```\n.\u002Ftrain.sh roms\u002Fbreakout.bin\n```\n\nIf using OpenAI Gym:\n```\n.\u002Ftrain.sh Breakout-v0 --environment gym\n```\n\nThere are plethora of options, just run `.\u002Ftrain.sh --help` to see them. While training, the network weights are saved to `snapshots` folder after each epoch. Name of the file is `\u003Cgame>_\u003Cepoch_nr>.pkl`. Training statistics are saved to `results\u002F\u003Cgame>.csv`, see below how to produce plots from it.\n\n### Resuming training\n\nYou can resume training by running \n```\n.\u002Fresume.sh snapshots\u002Fbreakout_10.pkl\n```\nPay attention that the replay memory is empty.\n\n### Only testing\n\nTo run only testing on a pre-trained model:\n```\n.\u002Ftest.sh snapshots\u002Fbreakout_77.pkl\n```\n\nTo test using OpenAI Gym:\n```\n.\u002Ftest_gym.sh snapshots\u002FBreakout-v0_77.pkl\n```\n\nThis saves testing results in folder `results\u002FBreakout-v0`. Now you can then upload your results to OpenAI Gym:\n```\n.\u002Fupload_gym.sh results\u002FBreakout-v0 --api_key \u003Cyour_key>\n```\nNote that the OpenAI Gym environment differs from the default environment so testing using OpenAI Gym should use a model trained using OpenAI Gym.\n\n### Play one game with visualization\n\nTo play one game and show game screen while playing:\n```\n.\u002Fplay.sh snapshots\u002Fbreakout_77.pkl\n```\nYou can do this even without GPU, by adding `--backend cpu` to command line. During gameplay you can use following keys:\n* `a` - slow down,\n* `s` - speed up,\n* `m` - manual control mode,\n* `[` - volume down,\n* `]` - volume up.\n\nVisualization works even in text terminal!\n\n### Record game video\n\nTo play one game and record a video:\n```\n.\u002Frecord.sh snapshots\u002Fbreakout_77.pkl\n```\nFirst game frames are extracted to `videos\u002F\u003Cgame>` folder as PNG files. Then `avconv` is used to convert these into video, which is saved to `videos\u002F\u003Cgame>_\u003Cepoch_nr>.mov`.\n\n### Plotting results\n\nTo plot results:\n```\n.\u002Fplot.sh results\u002Fbreakout.csv\n```\nThis produces `results\u002Fbreakout.png`, which includes four main figures: average reward per game, number of games per phase (training, test or random), average Q-value of validation set and average network loss. You can customize the plotting result with `--fields` option - list comma separated CSV field names (the first row). For example default results are achieved with `--fields average_reward,meanq,nr_games,meancost`. Order of figures is left to right, top to bottom.\n\n### Visualizing filters\n\nTo produce filter visualizations with guided backpropagation:\n\n```\n.\u002Fnvis.sh snapshots\u002Fbreakout_77.pkl\n```\n\nWhat the filter visualization does:\n\n1. first it plays one game to produce a set of states (one state is 4 frames), \n2. then it finds the states which activate each filter the most,\n3. finally it carries out guided backpropagation to show which parts of the screen affect the \"activeness\" of each filter the most. \n\nThe result is written to file `results\u002F\u003Cgame>.html`. By default only 4 filters from each convolutional layer are visualized. To see more filters add `--visualization_filters \u003Cnr_filters>` to the command line.\n\nNB! Because it is not very clear how to visualize the state consisting of  4 frames, I made a simplification - I'm using only the last 3 frames and putting them to different color channels. So everything that is gray hasn't changed, blue is the most recent change, then green and then red. It is easier to understand if you look at the trace of a ball - it is marked by red-green-blue.\n\n### Nervana Cloud\n\nTo train a model with Nervana Cloud, first install and configure [Nervana Cloud](http:\u002F\u002Fdoc.cloud.nervanasys.com\u002Fdocs\u002Flatest\u002Fncloud.html).\n\nAssuming the necessary dependencies are installed, run\n```\nncloud train src\u002Fmain.py --args \"roms\u002Fbreakout.bin --save_weights_prefix snapshopts\u002Fbreakout --csv_file results\u002Fbreakout.csv\" --custom_code_url https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fsimple_dqn\n```\nThis will download the repo and run the training script.\n\nTo test a model using Nervana Cloud run:\n```\nncloud train src\u002Fmain.py --args \"roms\u002Fbreakout.bin --random_steps 0 --train_steps 0 --epochs 1 --load_weights snapshops\u002Fbreakout_77.pkl\" --custom_code_url https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fsimple_dqn\n```\n\n### Profiling\n\nThere are three additional scripts for profiling:\n * `profile_train.sh` - runs Pong game 1000 steps in training mode. This is for figuring out bottlenecks in minibatch sampling and network training code. Prediction is disabled by setting exploration rate to 1.\n * `profile_test.sh` - runs Pong game 1000 steps in testing mode. This is for figuring out bottlenecks in prediction code. Exploration is disabled by setting exploration rate to 0.\n * `profile_random.sh` - runs Pong game 1000 steps with random actions. This is for measuring performance of ALE interface, network is not used at all.\n\n### Known differences\n\n * Simple DQN uses Neon's default RMSProp implementation, DeepMind uses different formulation from [Alex Graves' paper](http:\u002F\u002Farxiv.org\u002Fpdf\u002F1308.0850v5.pdf) (see page 23, eq 40).\n * Simple DQN uses averaged frame among skipped frame (which is ALE's built-in functionality), instead of max values from successive two frames as in the DeepMind paper.\n * Simple DQN uses Neon's Xavier initializer, DeepMind uses a fan_in parameter initializer.\n\n## Credits\n\nThis wouldn't have happened without inspiration and preceding work from my fellow PhD students [Kristjan Korjus](https:\u002F\u002Fgithub.com\u002Fkristjankorjus), [Ardi Tampuu](https:\u002F\u002Fgithub.com\u002FRDTm), [Ilya Kuzovkin](https:\u002F\u002Fgithub.com\u002Fkuz) and [Taivo Pungas](https:\u002F\u002Fgithub.com\u002Ftaivop) from [Computational Neuroscience lab](http:\u002F\u002Fneuro.cs.ut.ee\u002F) run by Raul Vicente in [University of Tartu](http:\u002F\u002Fwww.ut.ee\u002Fen), [Estonia](https:\u002F\u002Fe-estonia.com\u002F). Also I would like to thank [Nathan Sprague](https:\u002F\u002Fgithub.com\u002Fspragunr) and other nice folks at [Deep Q-Learning list](https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fdeep-q-learning).\n","# 简单的DQN\n\n**很遗憾，这个仓库已经过时，现在有更好的代码库。我建议你可以看看[这个](https:\u002F\u002Fgithub.com\u002Fkeon\u002Fdeep-q-learning)来学习基础知识，或者参考[这个](https:\u002F\u002Fgithub.com\u002Fhill-a\u002Fstable-baselines)来获取针对Atari游戏的完整DQN实现。**\n\n这是一个深度Q学习智能体，旨在复现DeepMind在论文《通过深度强化学习实现人类水平控制》（http:\u002F\u002Fwww.nature.com\u002Fnature\u002Fjournal\u002Fv518\u002Fn7540\u002Ffull\u002Fnature14236.html）中的成果。它设计得简单、快速且易于扩展。具体来说：\n * 使用Python编写。\n * 采用ALE的[原生Python接口](https:\u002F\u002Fgithub.com\u002Fbbitmaster\u002Fale_python_interface\u002Fwiki\u002FCode-Tutorial)。\n * 更新以支持使用[OpenAI Gym](https:\u002F\u002Fgym.openai.com\u002F)进行训练和测试。\n * 使用来自[Neon深度学习库](http:\u002F\u002Fneon.nervanasys.com\u002Fdocs\u002Flatest\u002Findex.html)的[最快的卷积操作](https:\u002F\u002Fgithub.com\u002Fsoumith\u002Fconvnet-benchmarks)。\n * 每个屏幕状态在回放缓冲区中仅保留一次，利用NumPy数组切片实现快速的小批量采样。\n * 尽量减少了数组和数据类型之间的转换次数。\n\n请观看Breakout、Pong、Seaquest和Space Invaders的游戏示例视频：\n\n[![Breakout](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_40fb813ef841.jpg)](https:\u002F\u002Fyoutu.be\u002FKkIf0Ok5GCE)\n[![Pong](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_5caae368cd95.jpg)](https:\u002F\u002Fyoutu.be\u002F0ZlgrQS3krg)\n[![Seaquest](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_f69d22dba594.jpg)](https:\u002F\u002Fyoutu.be\u002Fb6g6A_n8mUk)\n[![Space Invaders](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_readme_35d4d03eaad1.jpg)](https:\u002F\u002Fyoutu.be\u002FQvco7ufsX_0)\n\n## 安装\n\n目前仅提供Ubuntu系统的安装说明。对于macOS，请参考[ALE](https:\u002F\u002Fgithub.com\u002Fmgbellemare\u002FArcade-Learning-Environment\u002Fblob\u002Fmaster\u002Fdoc\u002Fmanual\u002Fmanual.pdf)和[Neon](http:\u002F\u002Fneon.nervanasys.com\u002Fdocs\u002Flatest\u002Finstallation.html)的文档。\n\n### Neon\n\n安装先决条件：\n```\nsudo apt-get install libhdf5-dev libyaml-dev libopencv-dev pkg-config\nsudo apt-get install python python-dev python-pip python-virtualenv\nsudo apt-get install libcurl4-openssl-dev\nsudo apt-get install libsox-fmt-all libsox-dev sox\n```\n克隆并编译代码：\n```\ngit clone https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fneon.git\ncd neon\nmake\n```\n\n如果你想尝试滤波器可视化功能，请使用最新版本的Neon，并运行`make -e VIS=true`命令。如果你之前已经安装了Neon但未启用可视化依赖项，则需要在执行`make -e VIS=true`之前先创建一个名为`vis_requirements.txt`的空文件，以确保虚拟环境中的Python依赖项能够正确安装。\n\nNeon会将自身安装到`.venv`虚拟环境中。你需要激活该环境才能在Python中导入Neon：\n```\nsource .venv\u002Fbin\u002Factivate\n```\n\n### Arcade Learning Environment\n\n如果你只打算使用OpenAI Gym，可以跳过此步骤。\n\n安装先决条件：\n```\nsudo apt-get install cmake libsdl1.2-dev\n```\n克隆并编译代码：\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fmgbellemare\u002FArcade-Learning-Environment.git\ncd Arcade-Learning-Environment\ncmake -DUSE_SDL=ON -DUSE_RLGLUE=OFF -DBUILD_EXAMPLES=ON .\nmake -j 4\n```\n安装Python库（假设你已激活Neon虚拟环境）：\n```\npip install .\n```\n\n### OpenAI Gym\n\n如果你只打算直接使用Arcade Learning Environment，可以跳过此步骤。\n\n安装OpenAI Gym：\n```\npip install gym\npip install gym[atari]\n```\n\n### 简单DQN\n\n先决条件：\n```\npip install numpy argparse logging\n```\nNeon虚拟环境已经包含了这些库，但这里仍列出以防万一。\n\n此外，还需要OpenCV，而将其安装到虚拟环境中比较麻烦。我最终采用了以下方法：\n```\nsudo apt-get install python-opencv\nln -s \u002Fusr\u002Flib\u002Fpython2.7\u002Fdist-packages\u002Fcv2.so NEON_HOME\u002F.venv\u002Flib\u002Fpython2.7\u002Fsite-packages\u002F\n```\n其中`NEON_HOME`是指你安装（克隆）Neon的目录。\n\n然后只需克隆代码：\n```\ngit clone https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\ncd simple_dqn\n```\n\n### 可选\n\n若需绘图，可安装`matplotlib`：\n```\npip install matplotlib\n```\n\n若要生成游戏视频，可安装`avconv`：\n```\nsudo apt-get install libav-tools\n```\n\n## 运行代码\n\n### 训练\n\n要训练Breakout游戏：\n```\n.\u002Ftrain.sh roms\u002Fbreakout.bin\n```\n\n如果使用OpenAI Gym：\n```\n.\u002Ftrain.sh Breakout-v0 --environment gym\n```\n\n有许多可用选项，只需运行`.\u002Ftrain.sh --help`即可查看。训练过程中，每完成一个epoch，网络权重都会保存到`snapshots`文件夹中，文件名为`\u003Cgame>_\u003Cepoch_nr>.pkl`。训练统计数据则保存到`results\u002F\u003Cgame>.csv`文件中，稍后可以从中生成图表。\n\n### 继续训练\n\n可以通过运行以下命令继续训练：\n```\n.\u002Fresume.sh snapshots\u002Fbreakout_10.pkl\n```\n请注意，此时回放缓冲区是空的。\n\n### 仅测试\n\n要对预训练模型进行测试：\n```\n.\u002Ftest.sh snapshots\u002Fbreakout_77.pkl\n```\n\n如果使用OpenAI Gym进行测试：\n```\n.\u002Ftest_gym.sh snapshots\u002FBreakout-v0_77.pkl\n```\n\n测试结果会保存到`results\u002FBreakout-v0`文件夹中。随后你可以将结果上传到OpenAI Gym：\n```\n.\u002Fupload_gym.sh results\u002FBreakout-v0 --api_key \u003Cyour_key>\n```\n\n需要注意的是，OpenAI Gym环境与默认环境有所不同，因此使用OpenAI Gym进行测试时应使用在OpenAI Gym环境下训练的模型。\n\n### 带可视化地玩一局游戏\n\n要玩一局游戏并在游戏过程中显示画面：\n```\n.\u002Fplay.sh snapshots\u002Fbreakout_77.pkl\n```\n即使没有GPU，也可以通过在命令行中添加`--backend cpu`来运行。游戏过程中可以使用以下按键：\n* `a` - 慢速播放，\n* `s` - 快速播放，\n* `m` - 手动控制模式，\n* `[` - 降低音量，\n* `]` - 提高音量。\n\n可视化功能甚至可以在文本终端中正常工作！\n\n### 录制游戏视频\n\n要玩一局游戏并录制视频：\n```\n.\u002Frecord.sh snapshots\u002Fbreakout_77.pkl\n```\n首先会将游戏帧提取为PNG文件，保存到`videos\u002F\u003Cgame>`文件夹中。然后使用`avconv`将这些PNG文件转换成视频，并保存为`videos\u002F\u003Cgame>_\u003Cepoch_nr>.mov`。\n\n### 结果绘图\n\n要绘制结果图表：\n```\n.\u002Fplot.sh results\u002Fbreakout.csv\n```\n这将生成`results\u002Fbreakout.png`，其中包括四个主要图表：每局平均奖励、各阶段的游戏数量（训练、测试或随机）、验证集的平均Q值以及平均网络损失。你可以通过`--fields`选项自定义绘图内容——只需列出逗号分隔的CSV字段名（第一行）。例如，默认情况下使用`--fields average_reward,meanq,nr_games,meancost`即可获得标准结果。图表的排列顺序是从左到右、从上到下。\n\n### 可视化滤波器\n\n要使用引导反向传播生成滤波器可视化效果，请运行以下命令：\n\n```\n.\u002Fnvis.sh snapshots\u002Fbreakout_77.pkl\n```\n\n滤波器可视化的工作流程如下：\n\n1. 首先，它会进行一局游戏以生成一组状态（每个状态由4帧组成）；\n2. 然后，它会找到最能激活每个滤波器的状态；\n3. 最后，通过引导反向传播技术，展示屏幕上的哪些区域对每个滤波器的“活跃度”影响最大。\n\n结果将被写入文件 `results\u002F\u003Cgame>.html`。默认情况下，每个卷积层仅可视化4个滤波器。如果想查看更多的滤波器，可以在命令行中添加 `--visualization_filters \u003Cnr_filters>` 参数。\n\n注意！由于如何可视化由4帧组成的状态并不十分明确，我做了一个简化——只使用最后3帧，并将它们分别放置在不同的颜色通道中。因此，灰色部分表示没有变化，蓝色代表最近的变化，其次是绿色和红色。如果你观察球的轨迹，就会发现它用红、绿、蓝三种颜色标记出来，这样更容易理解。\n\n### Nervana Cloud\n\n要在 Nervana Cloud 上训练模型，首先需要安装并配置 [Nervana Cloud](http:\u002F\u002Fdoc.cloud.nervanasys.com\u002Fdocs\u002Flatest\u002Fncloud.html)。\n\n假设已安装必要的依赖项，可以运行以下命令：\n\n```\nncloud train src\u002Fmain.py --args \"roms\u002Fbreakout.bin --save_weights_prefix snapshopts\u002Fbreakout --csv_file results\u002Fbreakout.csv\" --custom_code_url https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fsimple_dqn\n```\n\n这将会下载代码库并运行训练脚本。\n\n要使用 Nervana Cloud 测试模型，可以运行：\n\n```\nncloud train src\u002Fmain.py --args \"roms\u002Fbreakout.bin --random_steps 0 --train_steps 0 --epochs 1 --load_weights snapshops\u002Fbreakout_77.pkl\" --custom_code_url https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fsimple_dqn\n```\n\n### 性能分析\n\n有三个额外的脚本用于性能分析：\n\n* `profile_train.sh` — 在训练模式下运行 Pong 游戏1000步。此脚本用于找出小批量采样和网络训练代码中的瓶颈。通过将探索率设置为1来禁用预测功能。\n* `profile_test.sh` — 在测试模式下运行 Pong 游戏1000步。此脚本用于找出预测代码中的瓶颈。通过将探索率设置为0来禁用探索功能。\n* `profile_random.sh` — 使用随机动作运行 Pong 游戏1000步。此脚本用于测量 ALE 接口的性能，完全不使用神经网络。\n\n### 已知差异\n\n* Simple DQN 使用 Neon 的默认 RMSProp 实现，而 DeepMind 则采用了来自 [Alex Graves 论文](http:\u002F\u002Farxiv.org\u002Fpdf\u002F1308.0850v5.pdf) 中的不同公式（参见第23页，公式40）。\n* Simple DQN 在跳过帧时采用平均帧值（这是 ALE 内置的功能），而不是像 DeepMind 论文中那样取连续两帧的最大值。\n* Simple DQN 使用 Neon 的 Xavier 初始化方法，而 DeepMind 则使用基于输入节点数的初始化方法。\n\n## 致谢\n\n如果没有来自我的博士同学 [Kristjan Korjus](https:\u002F\u002Fgithub.com\u002Fkristjankorjus)、[Ardi Tampuu](https:\u002F\u002Fgithub.com\u002FRDTm)、[Ilya Kuzovkin](https:\u002F\u002Fgithub.com\u002Fkuz) 和 [Taivo Pungas](https:\u002F\u002Fgithub.com\u002Ftaivop) 的启发与前期工作，这一切都不可能实现。他们均来自由 Raul Vicente 主持的位于 [塔尔图大学](http:\u002F\u002Fwww.ut.ee\u002Fen)，爱沙尼亚 [Computational Neuroscience lab](http:\u002F\u002Fneuro.cs.ut.ee\u002F)。此外，我也要感谢 [Nathan Sprague](https:\u002F\u002Fgithub.com\u002Fspragunr) 以及其他在 [Deep Q-Learning 讨论组](https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fdeep-q-learning) 中的优秀同仁们。","# Simple DQN 快速上手指南\n\n> **⚠️ 重要提示**：本仓库代码已过期，仅适合学习基础原理。生产环境或深入研究建议参考 [keon\u002Fdeep-q-learning](https:\u002F\u002Fgithub.com\u002Fkeon\u002Fdeep-q-learning) 或 [stable-baselines](https:\u002F\u002Fgithub.com\u002Fhill-a\u002Fstable-baselines)。\n\nSimple DQN 是一个用于复现 DeepMind“人类水平控制”论文的简化版深度 Q 学习代理。它基于 Python 和 Neon 深度学习库，支持 ALE 和 OpenAI Gym 环境，旨在简单、快速且易于扩展。\n\n## 1. 环境准备\n\n本指南主要基于 **Ubuntu** 系统。macOS 用户需参考 ALE 和 Neon 的官方文档自行调整。\n\n### 系统要求\n- 操作系统：Ubuntu (推荐)\n- Python 版本：Python 2.7 (基于原文依赖)\n- 硬件：支持 GPU 加速（可选 CPU 模式）\n\n### 前置依赖安装\n请依次执行以下命令安装系统级依赖：\n\n```bash\nsudo apt-get update\nsudo apt-get install libhdf5-dev libyaml-dev libopencv-dev pkg-config\nsudo apt-get install python python-dev python-pip python-virtualenv\nsudo apt-get install libcurl4-openssl-dev\nsudo apt-get install libsox-fmt-all libsox-dev sox\nsudo apt-get install cmake libsdl1.2-dev\nsudo apt-get install python-opencv\nsudo apt-get install libav-tools\n```\n\n## 2. 安装步骤\n\n### 第一步：安装 Neon 深度学习库\nNeon 是本项目的基础框架，需编译安装并激活虚拟环境。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNervanaSystems\u002Fneon.git\ncd neon\nmake\n# 激活虚拟环境\nsource .venv\u002Fbin\u002Factivate\n```\n\n### 第二步：安装 Arcade Learning Environment (ALE)\n*如果您只打算使用 OpenAI Gym，可跳过此步。*\n\n```bash\ncd .. # 返回上一级目录\ngit clone https:\u002F\u002Fgithub.com\u002Fmgbellemare\u002FArcade-Learning-Environment.git\ncd Arcade-Learning-Environment\ncmake -DUSE_SDL=ON -DUSE_RLGLUE=OFF -DBUILD_EXAMPLES=ON .\nmake -j 4\n# 在已激活的 Neon 虚拟环境中安装 Python 接口\npip install .\n```\n\n### 第三步：安装 OpenAI Gym (可选但推荐)\n```bash\npip install gym\npip install gym[atari]\n```\n\n### 第四步：配置 Simple DQN\n克隆项目代码，并解决 OpenCV 在虚拟环境中的链接问题。\n\n```bash\ncd ..\ngit clone https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\ncd simple_dqn\n\n# 修复 OpenCV 路径 (将 NEON_HOME 替换为您实际安装 neon 的路径)\n# 示例：假设 neon 安装在 ~\u002Fneon\nln -s \u002Fusr\u002Flib\u002Fpython2.7\u002Fdist-packages\u002Fcv2.so ~\u002Fneon\u002F.venv\u002Flib\u002Fpython2.7\u002Fsite-packages\u002F\n\n# 安装其他 Python 依赖\npip install numpy argparse logging matplotlib\n```\n\n## 3. 基本使用\n\n确保当前终端已激活 Neon 虚拟环境 (`source .venv\u002Fbin\u002Factivate`)。\n\n### 训练模型\n以经典的 **Breakout** 游戏为例：\n\n**方式 A：使用原生 ALE 接口**\n```bash\n.\u002Ftrain.sh roms\u002Fbreakout.bin\n```\n\n**方式 B：使用 OpenAI Gym (推荐)**\n```bash\n.\u002Ftrain.sh Breakout-v0 --environment gym\n```\n*训练过程中，模型权重会自动保存至 `snapshots` 文件夹，统计数据保存至 `results` 文件夹。*\n\n### 测试模型\n使用已训练好的模型进行测试（例如第 77 轮的模型）：\n\n**使用原生接口测试：**\n```bash\n.\u002Ftest.sh snapshots\u002Fbreakout_77.pkl\n```\n\n**使用 Gym 接口测试：**\n```bash\n.\u002Ftest_gym.sh snapshots\u002FBreakout-v0_77.pkl\n```\n\n### 可视化游玩\n带界面显示地玩一局游戏（支持键盘控制速度、手动模式等）：\n\n```bash\n.\u002Fplay.sh snapshots\u002Fbreakout_77.pkl\n```\n*若无 GPU，可添加 `--backend cpu` 参数运行。*\n\n### 查看训练结果图表\n生成包含平均奖励、Q 值等指标的图表：\n\n```bash\n.\u002Fplot.sh results\u002Fbreakout.csv\n```\n生成的图片位于 `results\u002Fbreakout.png`。","某高校强化学习研究团队正试图复现 DeepMind 在 Atari 游戏上的经典成果，以验证新的奖励函数假设。\n\n### 没有 simple_dqn 时\n- **复现门槛极高**：研究人员需从零搭建深度 Q 网络架构，处理复杂的卷积层配置与超参数调整，耗费数周时间仍难以收敛。\n- **数据效率低下**：自行编写的经验回放机制（Replay Memory）存在大量数组类型转换与冗余存储，导致训练速度缓慢，显存占用过高。\n- **环境适配困难**：缺乏对 OpenAI Gym 和 ALE（Arcade Learning Environment）的原生支持，每次切换游戏环境（如从 Breakout 换到 Seaquest）都需重写大量接口代码。\n- **调试周期漫长**：由于代码耦合度高且缺乏模块化设计，定位梯度消失或策略不更新等问题的根源极其困难。\n\n### 使用 simple_dqn 后\n- **快速启动实验**：simple_dqn 提供了开箱即用的标准 DQN 实现，团队仅需修改少量配置即可在几小时内跑通 Breakout 和 Pong 等基准测试。\n- **极致运行效率**：利用 Numpy 数组切片技术优化了小批量采样，并最小化了数据类型转换，使每一帧屏幕数据仅存储一次，显著提升了训练吞吐量。\n- **灵活环境切换**：工具原生支持 Gym 和 ALE 双接口，研究人员可无缝在不同 Atari 游戏间切换，专注于算法逻辑而非底层适配。\n- **清晰易于扩展**：代码结构简洁明了，便于团队在此基础上快速植入自定义的奖励机制或网络变体，大幅缩短了迭代验证周期。\n\nsimple_dqn 通过极简高效的架构设计，将研究人员从繁琐的工程实现中解放出来，使其能专注于强化学习核心算法的创新与验证。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftambetm_simple_dqn_ad7cd279.png","tambetm","Tambet Matiisen","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftambetm_3326d360.jpg",null,"https:\u002F\u002Fgithub.com\u002Ftambetm",[78,82,86],{"name":79,"color":80,"percentage":81},"HTML","#e34c26",99.3,{"name":83,"color":84,"percentage":85},"Python","#3572A5",0.7,{"name":87,"color":88,"percentage":89},"Shell","#89e051",0,702,186,"2026-02-25T05:36:58","MIT",5,"Linux (Ubuntu), macOS (需参考外部文档自行配置)","未明确说明具体型号，但依赖 Neon 深度学习库（支持 GPU 加速），可选 CPU 后端运行测试\u002F游戏","未说明",{"notes":99,"python":100,"dependencies":101},"该项目已过时，作者建议使用其他更新的代码库。主要依赖已停止维护的 Neon 深度学习框架和 Python 2.7。在 Ubuntu 上安装较为复杂，需手动编译 Neon 和 ALE，且 OpenCV 需要通过创建软链接的方式 hack 进虚拟环境中。支持通过 '--backend cpu' 参数在无 GPU 环境下进行游戏演示。","2.7",[102,103,104,105,106,107,108],"neon (Nervana Systems)","ALE (Arcade Learning Environment)","gym (OpenAI Gym)","numpy","opencv (python-opencv)","matplotlib (可选)","libav-tools (可选)",[14,110],"其他","2026-03-27T02:49:30.150509","2026-04-19T15:38:03.821447",[114,119,124,129,134,139],{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},42625,"为什么在 Pong 或 Breakout 上训练模型时，经过多个 epoch 后奖励仍然随机且没有进展？","这通常是由于使用的 Neon 框架版本存在已知问题。请尝试回退到特定的旧版本提交（commit），例如 commit 7a56fa，或者应用相关的修复补丁。有用户确认在使用特定旧版本（如 commit 7a56fa964097d256e176cd76559dfa4e0bc54ab6dc 之前的版本）时训练能正常进行，而较新的版本可能导致目标网络失效或权重保存加载问题。","https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\u002Fissues\u002F4",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},42626,"在 Raspberry Pi 3 上运行测试或播放脚本时出现 'ValueError: array is too big' 错误怎么办？","这是因为 Raspberry Pi 的内存不足以分配默认的 Replay Memory 大小。解决方法是在运行命令时通过 `--replay_size` 参数减小回放缓冲区的大小。例如：`.\u002Ftest_gym.sh snapshots\u002FBreakout-v0_77.pkl --replay_size 100000 --backend cpu`。注意，如果模型是在不同动作空间下训练的，可能仍需从头重新训练。","https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\u002Fissues\u002F42",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},42627,"运行 play.sh 或 train.sh 时提示 'ValueError: backend must be one of (cpu)'，无法使用 GPU 怎么办？","这通常意味着 CUDA 环境未正确配置或 Neon 无法检测到 GPU。建议按以下顺序在干净的 Ubuntu 系统上重新安装：1. 检查硬件和系统兼容性；2. 下载并安装 CUDA Toolkit（确保版本匹配，如 Ubuntu 14.04 对应的 cuda-repo deb 包）；3. 执行 `sudo dpkg -i` 安装 deb 包，然后 `sudo apt-get update` 和 `sudo apt-get install cuda`；4. 更新环境变量 `export PATH=\"\u002Fusr\u002Flocal\u002Fcuda\u002Fbin:$PATH\"`；5. 最后依次安装 Neon、ALE 和 Simple DQN。确保在安装 Simple DQN 之前 CUDA 已正常工作。","https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\u002Fissues\u002F40",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},42628,"导入模块时出现 'ImportError: No module named cv2' 错误如何解决？","该错误表明系统中未安装 OpenCV 库。您需要安装 Python 版的 OpenCV。在 Ubuntu 上通常可以通过 `pip install opencv-python` 或使用系统包管理器 `sudo apt-get install python-opencv` (针对 Python 2) \u002F `sudo apt-get install python3-opencv` (针对 Python 3) 来解决。确保安装环境与运行脚本的虚拟环境一致。","https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\u002Fissues\u002F16",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},42629,"代码中引入 StateBuffer 类的原因是什么？它是否导致了数据冗余？","StateBuffer 的主要目的是简化 `getCurrentState()` 的实现逻辑，尽管它在 replay_memory 中存储了屏幕数据的副本。维护者已在代码中添加了相关注释说明其用途。关于由此引发的其他架构疑问或潜在的数据冗余担忧，建议参考 Neon 框架的相关文档或 Issue 进行讨论，因为部分底层实现依赖于 Neon。","https:\u002F\u002Fgithub.com\u002Ftambetm\u002Fsimple_dqn\u002Fissues\u002F22",{"id":140,"question_zh":141,"answer_zh":142,"source_url":123},42630,"加载预训练模型快照（.pkl 文件）时在 Gym 环境下报错或行为异常怎么办？","这可能是因为预训练模型使用的动作空间（action space）与当前 Gym 环境的动作空间不一致。虽然可以尝试重命名快照文件（例如将 `breakout_77.pkl` 重命名为 `Breakout-v0_77.pkl`），但如果底层的动作集大小不同（例如 ALE 默认最小动作集与 Gym 的动作集差异），直接加载往往无法工作。这种情况下，唯一的解决办法是使用当前的环境配置从头开始重新训练模型。",[]]