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 是

posted @ 2017-07-12 20:20  WenYao.Huang  阅读(1955)  评论(0编辑  收藏  举报