框架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的安装的更多相关文章

  1. 强化学习(十七) 基于模型的强化学习与Dyna算法框架

    在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...

  2. Flink + 强化学习 搭建实时推荐系统

    如今的推荐系统,对于实时性的要求越来越高,实时推荐的流程大致可以概括为这样: 推荐系统对于用户的请求产生推荐,用户对推荐结果作出反馈 (购买/点击/离开等等),推荐系统再根据用户反馈作出新的推荐.这个 ...

  3. 强化学习(八)价值函数的近似表示与Deep Q-Learning

    在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法.今天开始我们步入深度强化学习.这一篇关注于价值函数的近似表示和Deep Q-Learning算法. Deep Q-Lear ...

  4. 【转】强化学习(一)Deep Q-Network

    原文地址:https://www.hhyz.me/2018/08/05/2018-08-05-RL/ 1. 前言 虽然将深度学习和增强学习结合的想法在几年前就有人尝试,但真正成功的开端就是DeepMi ...

  5. 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning

    原文地址: https://www.cnblogs.com/pinard/p/9714655.html ------------------------------------------------ ...

  6. 强化学习(3)-----DQN

    看这篇https://blog.csdn.net/qq_16234613/article/details/80268564 1.DQN 原因:在普通的Q-learning中,当状态和动作空间是离散且维 ...

  7. 强化学习之六:Deep Q-Network and Beyond

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  8. 【论文研读】强化学习入门之DQN

    最近在学习斯坦福2017年秋季学期的<强化学习>课程,感兴趣的同学可以follow一下,Sergey大神的,有英文字幕,语速有点快,适合有一些基础的入门生. 今天主要总结上午看的有关DQN ...

  9. 强化学习模型实现RL-Adventure

    源代码:https://github.com/higgsfield/RL-Adventure 在Pytorch1.4.0上解决bug后的复现版本:https://github.com/lucifer2 ...

  10. DRL强化学习:

    IT博客网 热点推荐 推荐博客 编程语言 数据库 前端 IT博客网 > 域名隐私保护 免费 DRL前沿之:Hierarchical Deep Reinforcement Learning 来源: ...

随机推荐

  1. RestApi请求地址支持多路径访问

    RestApi请求地址支持多路径访问 @RestController@RequestMapping("/test") //单路径@RequestMapping(path = {&q ...

  2. Vim编辑的小技巧

    Vim编辑的小技巧 如何快速纠错 Ctrl + h 删除上一个字符, Ctrl + w 删除上一个单词, Ctrl + u 删除当前行. 从编辑模式快速切换到Nornal模式 1.Esc 2.Ctrl ...

  3. PHP转Go系列 | GET 和 POST 请求的使用姿势

    大家好,我是码农先森. 说到 HTTP 请求工具想必对我们做 Web 开发的程序员都不陌生,只要涉及到网络请求都必须使用.对于我们 PHP 程序员来说,最熟悉不过的就是 CURL 扩展,只要安装的这个 ...

  4. 基于Bootstrap Blazor开源的.NET通用后台权限管理系统

    前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑.平板.手机等所有主流设备),可切换至 Bl ...

  5. Sql Server 创建用户并限制权限

    创建登录名 使用sa或者Windows身份验证登录,[安全性]-[登录名],右键[新建登录名] 设置登录名属性 设置数据库权限 db owner --拥有数据库全部权限,包括删除数据库权限 db ac ...

  6. JS --函数进阶 --手稿

  7. Java 代码实现POST/GET请求

    方式一 package com.cyb.util; import java.io.BufferedReader; import java.io.DataOutputStream; import jav ...

  8. linux信号机制(初识版)

    转载 https://www.zhihu.com/question/24913599/answer/2584544572 信号是操作系统内核为我们提供用于在进程间通信的机制,内核可以利用信号来通知进程 ...

  9. 网易数帆实时数据湖 Arctic 的探索和实践

    作者 | 蔡芳芳 采访嘉宾 | 马进 网易数帆平台开发专家 数据中台也要从离线为主走向实时化,湖仓一体是第一步. 数据从离线到实时是当前一个很大的趋势,但要建设实时数据.应用实时数据还面临两个难题.首 ...

  10. Web1.0、Web2.0 和 Web3.0 的区别

    Web1.0.Web2.0 和 Web3.0 的区别主要体现在以下几个关键方面: 内容创作与交互: Web1.0:内容主要由网站所有者或少数专业人员创建,用户大多只是被动接收信息.例如,早期的雅虎.新 ...