最全Pytorch深度强化学习1-1:Gym安装与环境搭建教程(附基本指令表),java线程池原理面试

最后

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。

《Java高级面试》

《Java高级架构知识》

《算法知识》

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

AutoROM --accept-license

 需要注意,这里执行`AutoROM --accept-license`时可能较慢,是因为要进入外网下载游戏包,建议到[atarimania.com](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)直接下载`Roms.rar`并移动到路径`~\Anaconda\envs\pytorch\Lib\site-packages\AutoROM\roms`中,显示

 

AutoROM will download the Atari 2600 ROMs.
They will be installed to:
~\Anaconda\envs\pytorch\Lib\site-packages\AutoROM\roms

Existing ROMs will be overwritten.
Installed ~\Anaconda\envs\pytorch\lib\site-packages\AutoROM\roms\adventure.bin
Installed ~\Anaconda\envs\pytorch\lib\site-packages\AutoROM\roms\air_raid.bin
Installed ~\Anaconda\envs\pytorch\lib\site-packages\AutoROM\roms\alien.bin
Installed ~\Anaconda\envs\pytorch\lib\site-packages\AutoROM\roms\amidar.bin
Installed ~\Anaconda\envs\pytorch\lib\site-packages\AutoROM\roms\assault.bin

Done!

 说明安装完成
* 测试环境

 

import gym

env = gym.make(‘Tennis-v4’, render_mode=“human”)
print("Observation Space: ", env.observation_space)
print("Action Space ", env.action_space)

obs = env.reset()
for i in range(1000):
env.render()
action = env.action_space.sample()
obs, reward, done, info, _ = env.step(action)
env.close()

print(gym.envs.registry.keys())



## 3 基本指令


`gym`中最核心的接口就是`env`环境类,智能体与环境的交互如图所示,这就是强化学习的基本流程:在每个时间点上,智能体选择一个**动作(action)**,环境返回上一次action的**观测(Observation)**和**奖励(Reward)**


![在这里插入图片描述](https://img-blog.csdnimg.cn/27be5a1505034cbf987d18ab5d587901.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATXIuV2ludGVyYA==,size_15,color_000000,t_70,g_se,x_20#pic_center)  
 常用指令如下:


### 3.1 `make()`


**作用**:生成环境对象



‘’’
* @breif: 生成环境对象
* @param[in]: id -> 启用环境的名称
* @param[in]: render_mode -> 渲染模式
* @retval: 环境对象
‘’’
env = gym.make(id:str, render_mode:str)


通过make()创建完环境对象后,可以查看环境的属性和当前状态



env = gym.make(‘Tennis-v4’, render_mode=“human”)
print(‘观测空间:’, env.observation_space)
print(‘动作空间:’, env.action_space)
print(‘动作数:’, env.action_space.n)

观测空间: Box(0, 255, (210, 160, 3), uint8)
动作空间: Discrete(18)
动作数: 18


在`gym`的仿真环境中,有运动空间`action_space`和观测空间`observation_space`两个Space类型接口,用于描述有效的运动和观测的格式和范围


渲染模式支持:



> 
> * `human`:在显示器或终端上渲染
> * `rgb_array`:返回像素图像的RGB阵列作为返回值
> * `ansi`:将文本作为返回值返回
> 
> 
> 


### 3.2 `reset()`


**作用**:重置环境的状态,返回初始观测状态



‘’’
* @breif: 重置环境,回到初始状态
* @param[in]: seed -> 随机种子
* @retval: 环境初始观测状态
‘’’
state = env.reset(seed=None)


查看`reset()`的状态信息



state = env.reset()
print(“初始状态:”, state)
print(“当前状态:”, env.state)

初始状态: (array([ 0.03745903, -0.02521806, -0.01444992, -0.01588714], dtype=float32), {})
当前状态: [ 0.03745903 -0.02521806 -0.01444992 -0.01588714]


在仿真开始前必须调用`reset()`以初始化环境。 seed可以指定环境的随机数种子,如果想要训练的再现性,或者想要根据不同的环境使用不同的随机数种子,可以使用该参数


### 3.3 `step()`


**作用**:单步执行环境动力学过程



‘’’
* @breif: 单步执行环境动力学过程
* @param[in]: 动作
* @retval: 五元组(当前状态, 奖励, 是否结束, 额外限制, 日志)
‘’’
state, reward, done, truncated, info = env.step(action)


查看五元组



for i in range(5):
action = env.action_space.sample()
state, reward, done, truncated, info = env.step(action)
print(‘动作:’, action, ‘当前状态:’, state, ‘奖励:’, reward, ‘是否结束:’, done, ‘额外限制:’, truncated, ‘日志:’, info)

动作: 1 当前状态: [-0.01200642 0.18693487 0.02998236 -0.23828246] 奖励: 1.0 是否结束: False 额外限制: False 日志: {}
动作: 1 当前状态: [-0.00826773 0.38161597 0.02521671 -0.5213593 ] 奖励: 1.0 是否结束: False 额外限制: False 日志: {}
动作: 0 当前状态: [-0.00063541 0.18614829 0.01478953 -0.22083813] 奖励: 1.0 是否结束: False 额外限制: False 日志: {}
动作: 0 当前状态: [ 0.00308756 -0.00918191 0.01037276 0.07647308] 奖励: 1.0 是否结束: False 额外限制: False 日志: {}
动作: 0 当前状态: [ 0.00290392 -0.20445101 0.01190223 0.3724105 ] 奖励: 1.0 是否结束: False 额外限制: False 日志: {}


具体而言,五元组的含义如下:



> 
> * 状态`state`:执行当前动作后环境转移到的状态,例如从相机获取的像素点,机器人各个关节的角度或棋盘游戏当前的状态等;
> * 奖励`reward`: 执行当前动作后智能体获得的奖励,不同环境中奖励值变化范围也不相同,但强化学习的目标就是使得总奖励值最大;
> * 是否完成`done`:表示是否需要将环境重置`env.reset()`。大多数情况下,当 `done == true`时就表明当前幕结束,例如当机器人摔倒或者掉出台面,就应当及时终止;
> * 额外限制`truncated`:表示是否满足额外的截断条件,通常是一个时间限制,但也可用于指示代理物理上超出界限,可用于在达到终端状态之前提前结束该幕
> * 信息`info`: 针对仿真调试过程的诊断信息
> 
> 
> 


此外`env.sample_space.sample()`表示对动作空间进行随机采样,随机采样是`gym`内嵌的baseline策略,强化学习算法中的策略至少要比这个baseline效果好


### 3.4 `close()`


**作用**:关闭环境


## 4 常见问题


1. `ImportError: cannot import name 'NotRequired' from 'typing_extensions'`

 解决方案:终端运行

 

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

img-7Xjvk9Nb-1715579565080)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值