Simple-DQN代码的理解笔记

# tenserboard --logdir=logs ,然后打开网页127.0.1.1:6006,可以查看定义网络的神经结构。
# 两个神经网络,结构相同,但是参数不一样。
# 走多少步再更新,可以自己定义

# target_net 是保存很久以前的的网络的值,冻结之前的神经网络.也叫q-real

# eval_net 是实时进行更新的。每走一步,更新一步。

# 他的第二个神经网络的输出,就应该等于action的数目,第二层输出的,就是一个q_eval的估计值。
# n_l1是神经元的数目
# c_names 是用于tf调用参数的
# target_net 分析出来的,通过place_holder来进行传入到eval_net

# build_net(self) 用于建造上面的两个network

# DeepQNetwork 的参数意义

# n_action 输出的行动的值

# n_features 输入的observation

# learning_rate 学习率

# reward_decay 有多少概率听妈妈的话

# e_greedy 有多少概率会贪心的选择

# e_greedy_increment 是用来不断缩小随机的范围

#  replace_target_iter 是用来隔多少步然后进行target_net的变换

# memory_size 是记忆库的容量

# batch_size 用于做梯度下降的时候进行

# store_transition(self, s, a, r, s_)

# memory 用pandas创建, pandas.DataFrame(np.zeros((self.memory_size, n_features*2 + 2))

# cost_his 是用来记录每一步的误差。

# store_transition(self, s, a, r, s_)

# 存储再内存,然后不断的循环替换。

# choose_action(self, observation)

# 如何选择呢? 在输入的时候,进行一些处理,因为原本是一维的输入,将它变成二维?

# _replace_target_params(self)

# 刚才在 target_net 和 eval_net 当中分别定义了两个 collection ,是所有的参数。

# get_collection()会返回名字的所有的集合。传出来的是一个列表。

# 然后用tf.assign来进行eval_net 赋值到 target_net 当中。

# learn(self) 的方式

# 第一步, 是否需要替代 target_net的参数。

# 第二步,调用记忆库,随机抽取记忆库。如果没有那么多记忆,就抽取已经 存储下来的记忆。

# 第三步, 运行q_next 和 q_eval 的值。他们的输入,包括两个self.s_,和self.s 。这里,主要是从存储里面取出所有的observation。这里需要更多的理解

# 第四步,计算cost。训练操作。

# 第五步,减少随机性

self.q_next 是

self.q_eval 是

时间: 2024-08-09 14:43:26

Simple-DQN代码的理解笔记的相关文章

Memcached理解笔记4---应对高并发攻击

近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意攻击,不停的刷新产品各个服务入口,制造垃圾数据,消耗资源.他们的最好成绩,1秒钟可以并发6次,赶在Database入库前,Cache进行Missing Loading前,强占这其中十几毫秒的时间,进行恶意攻击. 相关链接: Memcached笔记——(一)安装&常规错误&监控Memcached笔记——(二)XMemcached&Spring集成 Memcached笔记——(三)Memcached使用总结  Memcached

Memcached理解笔记3---Memcached使用总结

为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题: 使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不同的key,造成重复缓存.——通过重写iBatis部分原码,终止了唯一标识的生成,同一个SQL产生同一个Key,同时对生成key做hash,控制长度,使得数据统一在Memcached. 为了迎合iBatis的架构,通过CacheModel模式,对缓存数据分组管理.最初通过Map实现CacheMode

《梦断代码》读书笔记 第0篇

<梦断代码>读书笔记 第0篇 第0章:软件时间 第1章:死定了 第2章:Agenda之魂 从老师布置这个作业之后,我便按照自己的计划开始阅读识字以来的第一本关于软件工程的小说——<梦断代码>,周一至周五每天睡前读几页. 首先,第一遍从第0章至第1章看完,我愣是不知道书上到底在说些什么,感觉这小说跟教科书一样好催眠,说实话,每次还没看多少行就困得不行了.所以,我看了第二遍(而且还寻思着再看不懂也不看第三遍了),果然,我还是没有与作者产生共鸣.不过,在再次阅读的过程中我勾画了一些给自己

网站广告模版理解笔记

电子商务网站的,页面上往往或有很多活动的广告需要频繁的替换,还有关于网站的说明的文章,这些不是经常变动的,还有一些是专区的活动页面,上面放的都是活动的商品. 简单的设计思路: 1.建立一个模版表template,可以根据模版生成html 结构:id.模版名称.状态(有效和无效).模版内容.类型(html和vm) 2.建立一个模版实例表templateInstence,用来存放生成的html的信息 结构:id.templateId.html文件名称.html文件位置 3.建立一个模版实例商品表(非

阅读xtrabackup代码的一点笔记

xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(),这里做一些阅读代码时的笔记. xtrabackup backup的线程模型: 1. 一个log拷贝线程: 2. n个ibd文件拷贝线程: 3. 一个io监控线程: 4. 通过suspend_start/suspend_end文件来标注是否启动终止线程: typedef struct { datafi

简单使用Git和Github来管理自己的代码和读书笔记

以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git 和Github来托管自己的代码和读书笔记方便了不少,到哪里只要有网就可以把自己的东西拷贝下来继续使用. 我这里简单的记录一下我使用的过程,最简单的使用都是,高级的功能我一直没有使用到,虽然买一本<Git权威指南> 但是很多东西用不到就不能够真的会.下面开始简单介绍我使用的方法,我这个是在windows上使用的.我使用分两种情况, 因为我的代码都是在Linux下写的,所以在linux下主

清理代码的阅读笔记

深度解析:清理烂代码 2015-10-05 PHP开发者 (点击上方公众号,可快速关注) 英文:Niklas Frykholm 作者:伯乐在线 - 唐小娟 网址:http://blog.jobbole.com/28672/ 猜猜看怎么了!你正”继承“(接收)了一堆混乱的旧代码.恭喜你!现在都是你的了.混乱的代码可能来自任何地方.中间件,网络,可能来自你自己的公司. 你知道在一个角落里有一个家伙,没有人过去管他在做什么.猜猜看他一直在做什么?辛辛苦苦写出了代码,却是一堆烂代码. 你还记得这个模块是

代码大全学习笔记(什么是构建)

  构建有时也被认为是"coding"或者"programing".编码算不上是最贴切的词,因为它有一种"把已经存在的设计机械化的翻译成计算机语言"的意味,而构建并不是机械化的,需要可观的创造力和判断力,人们常常用编程代替构建.   构建的步骤: 1.验证前面的工作已经完成(如定义问题,需求分析). 2.确定如何去测试所写的代码. 3.设计并编写类或者子程序. 4.创建并命名变量和具名常量. 5.选择控制结构,组织语句块. 6.对你的代码进行单元

lombok 简化java代码注解 理解

lombok 注解: lombok 提供的注解不多,可以参考官方视频的讲解和官方文档.     Lombok 注解在线帮助文档:http://projectlombok.org/features/index.    下面介绍几个我常用的 lombok 注解:         @Data   :注解在类上:提供类所有属性的 getting 和 setting 方法,此外还提供了equals.canEqual.hashCode.toString 方法         @Setter:注解在属性上:为