pip install gymnasium
。但如果你要跑 Atari 游戏,记得加上 [atari]
扩展:pip install gymnasium[atari]
。这里有个小细节要注意,2025 年的 Gymnasium 已经不再强制要求手动下载 ROM 文件,只要你同意游戏协议,安装过程中会自动帮你搞定。ROM is missing
的报错,别慌。这时候需要手动安装 ale-py
库,然后执行 ale-import-roms
命令指定 ROM 目录。具体操作可以参考这个步骤:先下载官方提供的 ROM 压缩包,解压后运行 ale-import-roms /path/to/roms
,系统会自动识别并导入所有可用游戏。gym.make()
,现在得改成 gymnasium.make()
。比如经典的 CartPole 环境,现在初始化代码是这样的:import gymnasium as gym
env = gym.make("CartPole-v1", render_mode="human")
observation, info = env.reset(seed=)
render_mode
参数是新增的,支持 human
和 rgb_array
两种模式。human
模式会直接弹出窗口显示游戏画面,rgb_array
则返回每一帧的像素数据,方便后续处理。env = gym.make("ALE/Pong-v5", render_mode="human")
ALE/
前缀是必须的,表示使用 Arcade Learning Environment 来运行游戏。运行后,你会发现画面渲染速度比以前快了至少 30%,这得益于底层渲染引擎从 Pyglet 切换到了更高效的 PyGame。gymnasium
自带的 ReplayMemory
类来实现:from gymnasium.wrappers import ReplayMemory
memory = ReplayMemory(capacity=)
state = env.reset()
action = env.action_space.sample()
next_state, reward, terminated, truncated, info = env.step(action)
memory.push(state, action, next_state, reward, terminated)
terminated
和 truncated
是新增的状态标志,terminated
表示游戏自然结束,truncated
表示因步数限制提前终止。gymnasium
提供的 VectorEnv
来并行运行多个环境,大大加快训练速度。比如同时运行 8 个 Pong 环境:from gymnasium.vector import SyncVectorEnv
envs = SyncVectorEnv([lambda: gym.make("ALE/Pong-v5") for _ in range()])
muzero-py
库。安装后,只需几行代码就能启动训练:from muzero import MuZero
model = MuZero(env)
model.train(total_timesteps=)
total_timesteps
参数表示总训练步数。在 Pong 游戏中,训练 100 万步后,智能体的得分通常能稳定在 20 分以上,远超人类平均水平。gymnasium
自带的 Monitor
包装器来记录训练数据:env = gym.make("ALE/Pong-v5", render_mode="rgb_array")
env = gym.wrappers.Monitor(env, directory="pong_results", force=True)
tensorboard --logdir=pong_results
http://localhost:6006
,就能实时查看奖励曲线、动作分布等关键指标。from stable_baselines3 import PPO
model = PPO("CnnPolicy", "ALE/Pong-v5", verbose=)
model.learn(total_timesteps=)
CnnPolicy
是专为 Atari 游戏设计的卷积神经网络策略,能够自动处理原始像素输入。训练完成后,模型可以直接保存并加载:model.save("pong_model")
del model
model = PPO.load("pong_model")
class DataAugmentationWrapper(gym.Wrapper):
def __init__(self, env):
super().__init__(env)
def step(self, action):
observation, reward, terminated, truncated, info = self.env.step(action)
# 随机旋转画面
if np.random.rand() < 0.5:
observation = np.rot90(observation, k=, axes=(, ))
# 调整亮度
observation = observation * np.random.uniform(0.8, 1.2)
return observation, reward, terminated, truncated, info
env = gym.make("ALE/Pong-v5")
env = DataAugmentationWrapper(env)
gymnasium
提供的 AsyncVectorEnv
来并行运行多个自对弈实例:from gymnasium.vector import AsyncVectorEnv
def make_env():
def _init():
env = gym.make("ALE/Pong-v5")
return env
return _init
envs = AsyncVectorEnv([make_env() for _ in range()])
gymnasium-recipes
项目(https://github.com/Farama-Foundation/gymnasium-recipes)提供了大量实战案例,包括从环境搭建到算法优化的完整代码。比如其中的 atari-dqn
目录,详细展示了如何用 DQN 训练 Atari 游戏,适合新手学习。💡 秘塔写作猫和艺爪 AI 都是当下热门的中文润色工具,但它们的定位和功能差异明显。秘塔写作猫更适合学术写作和专业内容,而艺爪 AI 则在自媒体创作和职场写作方面更具优势。以下是具体分析: 🌟 核
🔍 核心功能大揭秘:降 AI 值工具的硬核能力 在 2025 年的中文降 AI 值工具市场,主流产品都亮出了各自的 “必杀技”。千笔 AI 论文堪称 “全能选手”,其核心技术基于 NLP 自然语言处
现在做反 AI 文本想赚钱,真不是随便写写就行。得有实打实的技巧,还得懂怎么应付检测,不然内容发出去要么没流量,要么被判定成 AI 生成的,白忙活一场。今天就把压箱底的干货掏出来,全是能落地的实操方法
📊 粉丝画像匹配度:对标账号的第一准则判断一个账号适不适合做对标,先看粉丝画像。这不是随便看看,得掰开了揉碎了比。粉丝画像里藏着账号的 “基因密码”,基因不对,后面再努力都可能白费。 先看基础属性重
最近帮几个学弟学妹处理论文降重,发现大家都卡在同一个问题上:到底是自己手动改靠谱,还是直接用机器降重省事?问了一圈身边做文字工作的朋友,发现这事儿根本没有标准答案。有人靠机器降重把重复率从 80% 降
📌 别被 “同义词替换” 带偏了 —— 多数人对 AI 改写的认知误区不少人一提 AI 文本改写降重,第一反应就是让机器把文章里的词换成近义词。打开各种改写工具,也总看到 “智能替换同义词” 作为
? 创意卡壳时咋整?这时候你可能急需一个快速做决定的小帮手。最近发现个特实用的网站YesNoButton.net,专门靠随机生成是或否的答案来帮人打破思维僵局。不管你是写文案卡壳了,还是设计时纠结风格
在信息爆炸的时代,高效记录和整理信息成了很多人的刚需。今天给大家带来一款超实用的智能笔记工具 ——iMemo,它能轻松搞定 100 多种语言的翻译,还能生成智能摘要,简直是办公学习的好帮手! ? 快速