鱼C论坛

 找回密码
 立即注册
查看: 1436|回复: 8

[已解决]一个python强化学习的小案例

[复制链接]
发表于 2020-7-9 15:37:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个python强化学习的小案例,有些地方看不懂,大佬们帮帮忙
[img]C:\Users\76949\Desktop\IMG_20200709_153343.jpgC:\Users\76949\Desktop\IMG_20200709_153312.jpg[/img]
C:\Users\76949\Desktop\IMG_20200709_153237.jpg
最佳答案
2020-7-9 16:18:45



第一个图:

np.ones() 创建一个以1为值的 nS 数量的一维数组,然后这里在将一维数组中的所有值除以 nS

self.P =P 就是将变量 P 赋值为实例属性

super(GridworldEnv,self).__init__ 是调用 GridworldEnv 的父类__init__ 方法


第二个图:

isinstance(obj,classinfo):如果对象obj是类classinfo的实例则返回True,否则返回False

构造了 __init__ 方法,在 __init__ 内通过判断你传入参数的类型是否属于 列表(list)、元组(tuple) 以及参数中的元素是否等于 2 个

如果这两个条件有一个不满足,就会执行 if 里面的代码块,通过 raise 创造一个报错 ValueError

反正条件成立,将传入的 shape 参数转化为实例属性 self.shape 供类中其他方法的使用


第三个图:

it 是你生成的一个 ndarray 迭代器,而 it.finished 是判断迭代器内的元素是否全部迭代完,若还有元素则返回 False 若迭代完成返回 True

s = it.iternext() 表示进入下一次迭代,否则会一直迭代最开始的数值

it.multi_index 获取你设置的元素的索引,然后分别将两个索引赋值给 y 和 x

{a:[] for a in range(nA)} 生成 0~nA-1 个键 key,而且值 value 都是 [] 空列表的字典




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-9 15:45:47 | 显示全部楼层
图片在下方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 15:39:52 | 显示全部楼层

发网络图片,是图片的 url 地址,而不是图片路径

上传图床然后重新发图片吧:https://imgchr.com/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 15:40:39 | 显示全部楼层
Twilight6 发表于 2020-7-9 15:39
发网络图片,是图片的 url 地址,而不是图片路径

上传图床然后重新发图片吧:https://imgchr.com/

好,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 15:45:11 | 显示全部楼层

                               
登录/注册后可看大图


                               
登录/注册后可看大图


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 16:18:45 | 显示全部楼层    本楼为最佳答案   



第一个图:

np.ones() 创建一个以1为值的 nS 数量的一维数组,然后这里在将一维数组中的所有值除以 nS

self.P =P 就是将变量 P 赋值为实例属性

super(GridworldEnv,self).__init__ 是调用 GridworldEnv 的父类__init__ 方法


第二个图:

isinstance(obj,classinfo):如果对象obj是类classinfo的实例则返回True,否则返回False

构造了 __init__ 方法,在 __init__ 内通过判断你传入参数的类型是否属于 列表(list)、元组(tuple) 以及参数中的元素是否等于 2 个

如果这两个条件有一个不满足,就会执行 if 里面的代码块,通过 raise 创造一个报错 ValueError

反正条件成立,将传入的 shape 参数转化为实例属性 self.shape 供类中其他方法的使用


第三个图:

it 是你生成的一个 ndarray 迭代器,而 it.finished 是判断迭代器内的元素是否全部迭代完,若还有元素则返回 False 若迭代完成返回 True

s = it.iternext() 表示进入下一次迭代,否则会一直迭代最开始的数值

it.multi_index 获取你设置的元素的索引,然后分别将两个索引赋值给 y 和 x

{a:[] for a in range(nA)} 生成 0~nA-1 个键 key,而且值 value 都是 [] 空列表的字典




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 16:35:34 | 显示全部楼层
Twilight6 发表于 2020-7-9 16:18
第一个图:

np.ones() 创建一个以1为值的 nS 数量的一维数组,然后这里在将一维数组中的所有值除 ...

这边最后一句改下 是生成 nA 个 key ,而键名是从 0~ nA - 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 20:11:00 | 显示全部楼层
第三个图上是s = it.iterindex(),不是 it.iternext()还是表示进入下一次迭代吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:08:11 | 显示全部楼层
请问一下楼主您是看的什么资料呀,我也想学习这方面的知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表