• 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 是

  • 相关阅读:
    MySQL用户管理
    linux下杀死进程(kill)的N种方法
    Windows查看某个端口被谁占用
    SQL语句
    CentOS6.5 安装mysql-5.7.9
    Linux服务器安全之用户密钥认证登录
    Linux添加/删除用户和用户组
    linux命令killall 、kill 、pkill 命令详解
    linux下cat命令详解
    linux之sed用法
  • 原文地址:https://www.cnblogs.com/hwy89289709/p/7157513.html
Copyright © 2020-2023  润新知