强化学习分布式经验回放框架(experience replay)reverb的安装
框架reverb的相关介绍:
https://www.cnblogs.com/devilmaycry812839668/p/16260799.html
==================================================
reverb框架为python语言环境下的,由于该框架需要和python和TensorFlow进行混合编译,因此需要用到python的libpython.so共享库,因此使用conda创建python环境就不是很好用了,这里的python环境采用从源码编译,具体参看:
https://www.cnblogs.com/devilmaycry812839668/p/16281134.html
这里采用python3.9的环境,并在 .bashrc 文件下配置python环境的变量:
export PATH=/home/devil/python3.9/bin:$PATH
export LD_LIBRARY_PATH=/home/devil/python3.9/lib:$LD_LIBRARY_PATH
安装TensorFlow,经过测试reverb暂时不支持TensorFlow=2.9.0版本,因此这里使用TensorFlow-2.8.0版本:
pip install tensorflow==2.8.0
安装reverb:
pip install dm-reverb
测试代码:
import reverb server = reverb.Server(tables=[
reverb.Table(
name='my_table',
sampler=reverb.selectors.Uniform(),
remover=reverb.selectors.Fifo(),
max_size=100,
rate_limiter=reverb.rate_limiters.MinSize(1)),
],
) client = reverb.Client(f'localhost:{server.port}')
print(client.server_info())
# Creates a single item and data element [0, 1].
client.insert([0, 1], priorities={'my_table': 1.0}) # Appends three data elements and inserts a single item which references all
# of them as {'a': [2, 3, 4], 'b': [12, 13, 14]}.
with client.trajectory_writer(num_keep_alive_refs=3) as writer:
writer.append({'a': 2, 'b': 12})
writer.append({'a': 3, 'b': 13})
writer.append({'a': 4, 'b': 14}) # Create an item referencing all the data.
writer.create_item(
table='my_table',
priority=1.0,
trajectory={
'a': writer.history['a'][:],
'b': writer.history['b'][:],
}) # Block until the item has been inserted and confirmed by the server.
writer.flush() print('...........')
# client.sample() returns a generator.
print(list(client.sample('my_table', num_samples=2)))
成功运行:

安装诀窍:
安装reverb第一点就是要注意python环境一定要有动态链接库.so文件并且路径中可以搜索到,使用conda的python环境一般都是静态库.a文件,因此这里我们使用的是源码编译python环境;
第二点就是TensorFlow的版本,因为我们pip方式安装的reverb都是编译好的而不是像其他库如numpy那种会下载后重新编译的,因此就需要安装与之对应的TensorFlow版本(官方编译reverb时候的TensorFlow版本),而这个信息我们往往是获得不到的,一个好的解决方法就是安装最新版的reverb然后从最新版的TensorFlow开始试,这里我们最新的TensorFlow版本是2.9.0,发现版本不匹配后直接换为2.8.0版本的TensorFlow就成功匹配最新版的reverb了。
============================================
如果安装的是TensorFlow-2.9.0,那么安装reverb后运行则会报错:

这个错误大致意思就是说reverb编译时的TensorFlow和现在安装环境下的TensorFlow版本不同,这里安装的最新版本dm_reverb-0.7.3.dist-info,不支持TensorFlow-2.9.0但支持TensorFlow-2.8.0 。
================================================
强化学习分布式经验回放框架(experience replay)reverb的安装的更多相关文章
- 强化学习(十七) 基于模型的强化学习与Dyna算法框架
在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...
- Flink + 强化学习 搭建实时推荐系统
如今的推荐系统,对于实时性的要求越来越高,实时推荐的流程大致可以概括为这样: 推荐系统对于用户的请求产生推荐,用户对推荐结果作出反馈 (购买/点击/离开等等),推荐系统再根据用户反馈作出新的推荐.这个 ...
- 强化学习(八)价值函数的近似表示与Deep Q-Learning
在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法.今天开始我们步入深度强化学习.这一篇关注于价值函数的近似表示和Deep Q-Learning算法. Deep Q-Lear ...
- 【转】强化学习(一)Deep Q-Network
原文地址:https://www.hhyz.me/2018/08/05/2018-08-05-RL/ 1. 前言 虽然将深度学习和增强学习结合的想法在几年前就有人尝试,但真正成功的开端就是DeepMi ...
- 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
原文地址: https://www.cnblogs.com/pinard/p/9714655.html ------------------------------------------------ ...
- 强化学习(3)-----DQN
看这篇https://blog.csdn.net/qq_16234613/article/details/80268564 1.DQN 原因:在普通的Q-learning中,当状态和动作空间是离散且维 ...
- 强化学习之六:Deep Q-Network and Beyond
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 【论文研读】强化学习入门之DQN
最近在学习斯坦福2017年秋季学期的<强化学习>课程,感兴趣的同学可以follow一下,Sergey大神的,有英文字幕,语速有点快,适合有一些基础的入门生. 今天主要总结上午看的有关DQN ...
- 强化学习模型实现RL-Adventure
源代码:https://github.com/higgsfield/RL-Adventure 在Pytorch1.4.0上解决bug后的复现版本:https://github.com/lucifer2 ...
- DRL强化学习:
IT博客网 热点推荐 推荐博客 编程语言 数据库 前端 IT博客网 > 域名隐私保护 免费 DRL前沿之:Hierarchical Deep Reinforcement Learning 来源: ...
随机推荐
- redis数据持久化篇
为什么需要持久化 Redis是个基于内存的数据库. 那服务一旦宕机,内存中的数据将全部丢失. 通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈 如果是大数据量的恢复,1.会对数据库带来 ...
- Vue学习:9.watch监听器
"watch" 监听器是一种在 Vue.js 中用于监视数据变化并执行相应操作的机制.它是 Vue 实例的一个选项,允许你监视指定的数据,并在数据变化时执行特定的逻辑.通常情况下, ...
- Excel Wps 透视表去重计数方法
Excel Wps 透视表去重计数方法 在处理表格,遇到处理根据某个列去重后统计数量,而不是仅仅统计数量.在网上查找资料,不确定EXCEL或者WPS某个版本可以支持该功能的实现. 折中的方案,分两步来 ...
- Big Exponential Addition
Big Exponential Addition 给定一非负整数n计算2^n的值,一般而言把 2 乘上 n 次,就能得到答案.然而,当n特别大时,2^n要一次次地乘2可能稍嫌太慢,面对此一巨大问题利用 ...
- Java JSON组成和解析
本框架JSON元素组成和分析,JsonElement分三大类型JsonArray,JsonObject,JsonString. JsonArray:数组和Collection子类,指定数组的话,使用A ...
- 用ESP8266-NodeMCU开发板显示一下我的QQ头像
诶,说好的自己写esp8266的开发板固件的我回来了. 20年说好的,今天回来还愿了 ESP8266串口WiFi模块 - WiFi杀手 今天我们把OLED显示屏也接上,我此次买的是4脚的OLED(12 ...
- java datetime数据类型去掉时分秒
在Java中,如果我们想要表示一个日期而不包括时间(时分秒),我们通常会使用java.time包中的LocalDate类.LocalDate是一个不可变的日期对象,它只包含年.月.日三个字段. 1. ...
- python 动态导入模块并结合反射,动态获取类、方法(反射太好用),动态执行方法
背景: 关键字驱动框架,不同的关键字方法分别定义在不同的类,真正执行关键字方法又在不同的类(简称A),这样就需要在执行前,要在文件A下import要使用的模块,如果有很多页面操作或很多模块时,就需要每 ...
- glog_bash:在bash中优雅输出日志
介绍 官方仓库:https://github.com/GuoFlight/glog_bash .下载其中的glog_bash.sh即可. 这是专门用于bash脚本中的logger,名为glog_bas ...
- 实验9.单臂路由实现Vlan互通实验
# 单臂路由实现Vlan互通实验 本实验用于测试单臂路由方式实现Vlan路由. 实验组 实验过程 SW int g0/0/1 port link-type access port default vl ...