强化学习时怎么进行数据管理?

本文探讨了强化学习中的on-policy和off-policy方法在数据存储方面的区别,介绍了使用list、deque、dataset和dict进行数据管理的方法。特别强调了on-policy的单次使用数据特性与off-policy的数据重用需求。
摘要由CSDN通过智能技术生成

## 强化学习分为on-policy和off-policy。从数据的角度来说,不同之处就在于数据是不是一次性的,对于on-policy就是一次性的,用完就扔,对于off-poilcy来说就是有一个大buffer来存放数据,用了一次还可以再用很多次。那么数据如何有效方便存储就是一个问题。

On-poilicy

使用list存储数据

        关键代码如下:

states, actions, rewards = [],[],[]

for _ in range(len_episode):
    # 
#就是选择动作,使用agent产生数据之类的操作
    #
    states.append(s)
    actions.append(a)
    rewards.apeend(r)

# 收集完数据之后可能要进行一些数据处理,比如说,计算discount reward,计算优势函数等
## 现在开始训练
# 对于有的算法,需要用batchsize,那么: 
if len(actions) < bastchsize:
    states = np.array(states)
    # 其他数组同

    #然后训练
if len(actions) > bactchsize:
    for _ in range(epoches):
        total = zip(states, actions, rewards)
        total_ = total
        for _ in range(int(len(actions))%batchsize):
            sample = random.sample(total_,batchsize)
            states[:],actions[:],rewards[:] = zip(*sample)
             #训练网络
            for i in sample:
                total_.remove(i)
            if len(total_) < batchsize:
                states = np.array(states)
                # ... 训练函数
        
            
    

使用deque,dataset,dict存储数据

(持续更新中。。。)

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值