1. 前言

一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。

如有不对之处,欢迎评论区指出错误,你我共同进步学习!

2. 正文

2.1 yield

最开始发现于:rollout_storage.py文件下的mini_batch_generator函数:



感觉这个最外层的num_epochs也没用啊?直到我看到了yield,然后去外面的函数看了看它的调用,发现了一个好玩的事情:



才知道这里的roll out的打乱前的batch是按照一个迭代器产生的,我自己也试了一下,确实我之前都没注意到这一点。

相较于return,yield最大的特点是可以手动的推进迭代,举个:

def f1():
for i in range(5):
yield i
a = f1()
print(next(a))
print(next(a))
print(next(a))
print(next(a))

输出:



而return只是返回了一个值,程序运行到这里就断开了,所以不少函数用return作为中断,而yield可以循环返回值,而且函数也不会中断,相当于自己写了一个迭代器,根据自己的需要从迭代器里面“拿”数据,这样解释应该会通俗易懂。

但当然也可以这么写,一下就可以取出迭代器里的所有值了:

def f1():
for i in range(5):
yield i+1,i+2,i+3 generator = f1()
for a,b,c in generator:
print(a,b,c)

输出:

然后在代码中:



圈1表示随机化roll out storages的循环次数:(注意可以自己看代码,这个epochs的每次循环输出的数据其实是重复的),这里就用到了我前面提到的yield的用法,generator迭代器。

这个值调的大,那么在update的时候迭代的次数就越多,其所在位置如下所示:rsl_rl/ppo.py

下面的KL的注释可以不用管他,这个就是一个调整学习率的地方,在.config文件的schedule处可以自行设置,选择fixed就是不更新学习率,始终是一个值,adaptive就是可以更新。

然后回到上面,圈2表示的是batch的数量batch_num,也就是按照一个batch_size大小取样,一共取batch_num次,也就是上面图所表示的内层循环。

注意这个两个值不要开太大,要学会取舍,不然可能会不收敛而且learning_time会"炒鸡"慢

3. 后记

这篇博客暂时记录到这里,日后我会继续补充。

【Legged gym】关于Legged gym用到的roll_out_storages的batch的解析和一些PPO算法层面.config文件里参数的说明的更多相关文章

  1. Gym - 102861B 、Gym - 102861F、Gym 102861G、Gym 102861L、Gym 102861N、Gym 101968C、Gym 101968D

    训练赛链接:https://vjudge.net/contest/410049#problem/D Gym - 102861B 题意: 在一个二维平面上,给你一个船,问你在这个二维平面上有没有船重叠. ...

  2. OAuth 2.0 for MVC, Two Legged Implementation

    OAuth 2.0 for MVC, Two Legged Implementation tdupont  Fri, Mar 18 2011 9:30 AM  13 OAuth 1.0 was one ...

  3. Gym 100952H&&2015 HIAST Collegiate Programming Contest H. Special Palindrome【dp预处理+矩阵快速幂/打表解法】

    H. Special Palindrome time limit per test:1 second memory limit per test:64 megabytes input:standard ...

  4. 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...

  5. 强化学习 平台 openAI 的 gym 安装 (Ubuntu环境下如何安装Python的gym模块)

    openAI 公司给出了一个集成较多环境的强化学习平台  gym , 本篇博客主要是讲它怎么安装. openAI公司的主页: https://www.openai.com/systems/ 从主页上我 ...

  6. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  7. OpenAI gym的建模思想

    一.强化学习问题需要描述那些内容 强化学习中最主要的两类对象是“个体”和“环境”,其次还有一些像“即时奖励”.“收获”.“状态”.“行为”.“价值”.“策略”.“学习”.“控制”等概念.这些概念把个体 ...

  8. Open AI Gym简介

    介绍 OpenAI Gym是一款用于研发和比较强化学习算法的工具包,它支持训练智能体(agent)做任何事——从行走到玩Pong或围棋之类的游戏都在范围中. OpenAI Gym 是一个用于开发和比较 ...

  9. Codeforces Gym 100338B Spam Filter 字符串哈希+贝叶斯公式

    原题链接:http://codeforces.com/gym/100338/attachments/download/2136/20062007-winter-petrozavodsk-camp-an ...

  10. conda常用命令,如何在conda环境中安装gym库?

    查看已安装的环境: conda info -e 或 conda env list 创建新环境gymlab: conda create -n gymlab python=3.5 激活环境gymlab: ...

随机推荐

  1. 如何快速的开发一个完整的iOS直播app(点赞功能)

    客户端代码 点击小红心,发送socket给服务器,并且要传递房间Key给服务器,通知给哪个主播点赞,就能传入到对应的分组socket中 怎么传递房间key,房间Key在主播界面,一般一个客户端,只会产 ...

  2. Dibble pg walkthrough Intermediate

    nmap 21/tcp open ftp vsftpd 3.0.3 | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Can't get ...

  3. oracle的新发现for语句

    今天为了解决一个查询结果想两次遍历的方法,去ORACLE官网文档中心 https://docs.oracle.com/en/database/oracle/,意外发现这个有意思的for语句.还是官方资 ...

  4. nacos(二):原生java调用配置与服务实例

    本文主要介绍原生java连接nacos,操作nacos的共享配置与服务实例. 1.引入依赖 <dependencies> <dependency> <groupId> ...

  5. Visual Studio各个版本密钥

    1.VS2012 旗舰版:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 2.VS2013 旗舰版:BWG7X-J98B3-W34RT-33B3R-JVYW9 专业版:XDM3T-W3T3 ...

  6. 卸载CentOS7自带的jdk

    卸载CentOS7自带的jdk 问题描述 在安装完centOS 7虚拟机后,执行 java -version,发现系统自带jdk8.因为我想使用jdk11,安装并配置环境变量后,环境变量仍显示为jdk ...

  7. Layer子域名挖掘机

    Layer子域名挖掘机 Layer子域名挖掘机是一款功能强大的域名查询工具,主要用于提供网站子域名的查询服务. 域名与子域名 域名 域名,又称网域,是互联网上用于标识特定计算机或计算机组的一串由点分隔 ...

  8. VMware常用操作

    VMware常用操作 VMware作为一款功能强大的虚拟化软件,为用户提供了一个灵活.高效的虚拟环境.在日常使用中,掌握VMware的常用操作对于提高工作效率.优化资源配置至关重要.以下将详细介绍VM ...

  9. AI 如何重塑劳动力市场:基于 Claude 数据的深度分析

    前言 本文翻译自 Anthropic 今天发布的 The Anthropic Economic Index ,经济指数报告,这份报告基于 Claude 的数据对目前的 AI 使用情况做了汇总. 引言 ...

  10. Flink运行时架构

    一.运行时的组件和基本原理 1.作业管理器 (1)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行. (2)JobManager会先接收到要执行的应用 ...