当前位置: 首页 > news >正文

【蘑菇书EasyRL】强化学习,笔记整理

【蘑菇书EasyRL】强化学习,笔记整理

  • 1.笔记整理
    • 1.1 学习和决策代码框架
  • 2. 遇到的bug
    • gym 环境,新版本python无法使用
    • env_specs = envs.registry.all() 报错
  • 3 使用的代码函数记录
    • 3.1 numpy 函数使用
      • argmax()函数
      • argwhere

蘑菇书的教程地址:
https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1?id=_171-gym
代码地址
https://github.com/datawhalechina/easy-rl/tree/master

强化学习像是一朵昙花,在20年到22年曾经出现过,被认为可能是未来的主流,随着大模型的出现,大部分人的精力都随之而去。
很多代码库都随着python以及软件版本的更新,有了很多的修改,本人近期学习蘑菇书,在这记录学习中遇到的问题等

1.笔记整理

1.1 学习和决策代码框架

SimpleAgent 类的 decide()方法用于决策,learn() 方法用于学习,该智能体不是强化学习智能体,不能学习,只能根据给定的数学表达式进行决策。

class SimpleAgent:def __init__(self, env):passdef decide(self, observation): # 决策position, velocity = observationlb = min(-0.09 * (position + 0.25) ** 2 + 0.03,0.3 * (position + 0.9) ** 4 - 0.008)ub = -0.07 * (position + 0.38) ** 2 + 0.07if lb < velocity < ub:action = 2else:action = 0return action # 返回动作def learn(self, *args): # 学习passagent = SimpleAgent(env)

2. 遇到的bug

gym 环境,新版本python无法使用

gym 环境一开始是openAI开发了制作强化学习的环境,还有之前非常有名的马里奥,但是这个已经被抛弃,使用了一个全新的名字gymnasium。所以如果你需要使用新版本的python的话,可以尝试这个包。

PS:有机会自己搭建一个fc游戏的环境,现有的环境大部分都已经年久失修,很多代码无法使用。

env_specs = envs.registry.all() 报错

是因为all是比较老的方式,会出现:的报错。所以需要修改成values

from gymnasium import envs
env_specs = envs.registry.values()
envs_ids = [env_spec.id for env_spec in env_specs]
print(envs_ids)

3 使用的代码函数记录

3.1 numpy 函数使用

argmax()函数

arg是argument的缩写,argument是作为函数输入的值,也就是自变量,argmax就是求自变量最大值。

当有一个函数f(x),

max( f ( x )) 是求f(x)的最大值

argmax( f( x ) )是求x的最大值

argwhere

np.argwhere(policy[i]==1)

寻找满足policy[i]==1 ,这个表达式的位置

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构(5.5_1)——哈夫曼树
  • 深入解析 Vue.js 的 nextTick
  • 【从零开始一步步学习VSOA开发】创建VSOA的server端
  • python 定时清理日志(schedule)
  • 2024实验班选拔考试(热身赛)
  • Windows10上安装SQL Server 2022 Express
  • MySQL的安装数据库的简单操作
  • 力扣——11.盛最多水的容器
  • 基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
  • Milvus Cloud架构详解:构建高效、可扩展的向量数据库系统
  • 分布式时序数据库TimeLyre 9.2发布:原生多模态、高性能计算、极速时序回放分析
  • C++的STL简介(四)
  • React 常用 Hooks 和使用的易错点
  • gradio在windows上公网发布踩坑指南
  • PHP高校教材管理系统-计算机毕业设计源码29810
  • [nginx文档翻译系列] 控制nginx
  • 11111111
  • android图片蒙层
  • AWS实战 - 利用IAM对S3做访问控制
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Gradle 5.0 正式版发布
  • Java 23种设计模式 之单例模式 7种实现方式
  • javascript面向对象之创建对象
  • Linux下的乱码问题
  • React-flux杂记
  • Sass Day-01
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Unix命令
  • 初识MongoDB分片
  • 初探 Vue 生命周期和钩子函数
  • 面试遇到的一些题
  • 前端js -- this指向总结。
  • 前端技术周刊 2019-02-11 Serverless
  • 使用SAX解析XML
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #define、const、typedef的差别
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (1)svelte 教程:hello world
  • (11)MSP430F5529 定时器B
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (LeetCode C++)盛最多水的容器
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (力扣)循环队列的实现与详解(C语言)
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (区间dp) (经典例题) 石子合并
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (转) ns2/nam与nam实现相关的文件
  • (转)memcache、redis缓存
  • ****Linux下Mysql的安装和配置
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net8.0与halcon编程环境构建