资源简介
Prioritized Experience Replay的SumTree代码注解,包你看懂,树的原理,父节点和子节点之间的关系,在代码中都有写,初学者易懂!
代码片段和文件信息
import numpy as np
class Tree(object):
write = 0
def __init__(self capacity):
self.capacity = capacity # capacity是叶子节点个数,也就是存放数据的个数,树的总结点个数为 n = (2 * 叶子节点数 - 1)
self.tree = np.zeros(2 * capacity) # 从1开始编号[1capacity]
self.data = np.zeros(capacity+1 dtype=object) # 存叶子节点对应的数据data[叶子节点编号id] = data
def add(self p data):
idx = self.write + self.capacity #定位到第一个叶子节点(idx)
self.data[self.write+1] = data
self._updatetree(idx p)
self.write += 1
if self.write > self.capacity: # 存满时,在从左到右从上到下,重新一个个替换
self.write = 0
def _updatetree(self idx p):
change = p - self.tree[idx] # 计算更新的p和叶子结点(idx)的差值,
self._propagate(idx change) # 在把这个差值change往上传播,把这个节点(idx)的父节点
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2580 2018-07-27 19:53 buildTree.py
- 上一篇:全国邮政编码数据库
- 下一篇:wireshark抓包查看各类协议
评论
共有 条评论