d3rlpy离线强化学习算法库安装及使用

news2024/9/21 2:39:49

GitHub - takuseno/d3rlpy: An offline deep reinforcement learning library

d3rlpy,离线强化学习算法库

我装在windows下用anaconda,按照官网教程

conda install -c conda-forge d3rlpy

第一次安装报错CondaSSLError: OpenSSL appears to be unavailable on this machine

[报错解决]CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to downl_一件迷途小书童的博客-CSDN博客

参考这篇文章解决后正常安装没问题,值得注意的是d3rkpy安装时包含cudatoolkit11.几,我在想这个在不同电脑上可能之后会出错,不过后面运行算法时可以选择是否使用GPU

我是打算用离线强化学习算法,安装后测试,官网上也有测试代码

import d3rlpy

# prepare dataset
dataset, env = d3rlpy.datasets.get_d4rl('hopper-medium-v0')

# prepare algorithm
cql = d3rlpy.algos.CQL(use_gpu=True)

# train
cql.fit(
    dataset,
    eval_episodes=dataset,
    n_epochs=100,
    scorers={
        'environment': d3rlpy.metrics.evaluate_on_environment(env),
        'td_error': d3rlpy.metrics.td_error_scorer,
    },
)

看得出来,这接口用起来非常方便啊

因为我没装d4rl所以肯定是失败了,d4rl数据集查了下资料可能无法装在windows环境下,有点难办。可以使用下面这个在测试,用的是d3rlpy自带用于测试的数据集,也是比较常用的两个环境,具体是在d3rlpy的文档上找到的

import d3rlpy

# prepare dataset
# dataset, env = d3rlpy.datasets.get_d4rl('CartPole-v0')
dataset, env = d3rlpy.datasets.get_pendulum("random")

# prepare algorithm
cql = d3rlpy.algos.CQL(use_gpu=True)

# train
cql.fit(
    dataset,
    eval_episodes=dataset,
    n_epochs=100,
    scorers={
        'environment': d3rlpy.metrics.evaluate_on_environment(env),
        'td_error': d3rlpy.metrics.td_error_scorer,
    },
)

资料很充分,d3rlpy文档:d3rlpy.datasets.get_cartpole — d3rlpy documentation

 成功运行:

如果失败的话可能是下载失败,

在这找到下载网址,自己下载到本地,改成规定的名字即可,放到对d3rlpy_data文件夹里,再运行时就不需要在线下载了,比如这样

 

之后回到d4rl,我打算把自己的数据集按照d4rl的格式来编写,但我不打算装d4rl

可以看到在d3rlpy中读取d4rl的数据集主要是用d4rl中的get_dataset函数,于是我索性把d4rl中这个函数搬到d3rlpy中,其实就是读取h5格式的函数,也挺好移植,主要也就这一段

        data_dict = {}
        with h5py.File(h5path, 'r') as dataset_file:
            for k in tqdm(get_keys(dataset_file), desc="load datafile"):
                try:  # first try loading as an array
                    data_dict[k] = dataset_file[k][:]
                except ValueError as e:  # try loading as a scalar
                    data_dict[k] = dataset_file[k][()]

注意还需要

import h5py
from tqdm import tqdm


def get_keys(h5file):
    keys = []

    def visitor(name, item):
        if isinstance(item, h5py.Dataset):
            keys.append(name)

    h5file.visititems(visitor)
    return keys

至于原先是个类,我感觉好像也不需要,同时还是把在线改掉,直接变成一个绝对位置(这个在d4rl中也可以找到下载的网址)

h5path = "D:\xxx_project\pycharm\offline_RL\d3rlpy_data\hopper_random.hdf5"

运行成功

我考虑下一步制作自己的hdf5格式数据集,及做下自己的gym环境

甚至不能算是入门,希望没有问题,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes的service详解

文章目录Service介绍Service类型Service使用ClusterIP类型的ServiceHeadLiness类型的ServiceNodePort类型的ServiceLoadBalancer类型的ServiceExternalName类型的ServiceIngress介绍Service介绍 在kubernetes中,pod是应用程序的载体,我们可以通过pod的i…

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

从0开始学游戏开发

对于开发而言,了解一下如何从零开始做游戏是一个非常有趣且有益的过程(并不)。这里我先以大家对游戏开发一无所知作为前提,以一个简单的游戏开发作为.从0开始学游戏开发。 写在最前面 对于开发而言,了解一下如何从零开始做游戏是一个非常有趣…

Twice-JavaSE01

狂神学习路线: 今天又重头开始复习Java了,不顾一切往前冲吧。 空常量null不能直接输出。其他几种基本数据类型可以直接输出。 定义变量时要给赋值才行,浮点型默认为double,float类型后要加f. 注意:byte和short不能直接跟char做…

【强化学习论文合集 | 2019年合集】一. ICML-2019 强化学习论文

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

C++-容器:string使用介绍(非常全面,详细)

string的初始化 1.常见初始化方式 string对象的初始化和普通类型变量的初始化基本相同,只是string作为类,还有类的一些特性:使用构造函数初始化。如下表,第2 4 6条是作为类才有的初始化方式: 当然,也可以…

MySQL数据库之事务

MySQL数据库之事务一、事务的概念二、事务的ACID特点2.1 原子性(保证事务的整体性)2.2 一致性(保证数据的完整性)2.3 隔离性2.4 持久性三、事务控制语句3.1 测试begin和commit(开始事务和提交事务)begin开启…

毕业设计-基于机器视觉的车型识别系统

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

【人脸识别】Octuplet Loss:一个可以提高低分辨率和跨分辨率人脸识别效果的损失

论文题目:《Octuplet Loss:Make Face Recognition Robust to Image Resolution》 论文地址:https://arxiv.org/pdf/2207.06726v1.pdf 代码地址:https://github.com/martlgap/octuplet-loss 1.概述 一般来说,在图像分辨率方面&…

多线程设计模式-全面详解(学习总结---从入门到深化)

目录 Single Thread Execution 设计模式 机场过安检 非线程安全 问题分析 首字母相同却未通过检查 为何出现首字母不相同的情况 线程安全 Future 设计模 Master-Worker 设计模式 生产者消费者设计模式 Immutable 不可变对象设计模式 关于时间日期 API 线程不安全的问题…

Attention机制详解(深入浅出)

目录1. 为什么要有Attention2. Attention机制我们都知道,对于人类来说注意力是非常重要的一件事。有了注意的能力我们才能在一个比较复杂的环境中, 把有限的注意力放到重要的地方。在这一节中,我们将了解如何使得我们的网络也具有产生注意力的…

47. 全排列 II

关上过去和未来的铁门,活在“今天”这个舱室中。 ——《人性的优点》 47. 全排列 II 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输…

蓝桥杯嵌入式AT24C02

文章目录前言一、AT24C02原理图二、IIC通信协议三、代码编写1.拷贝官方驱动程序2.编写AT24C02读写函数1.查看AT24C02芯片手册确定AT24C02器件地址2.读函数编写3.写函数编写4.代码使用总结前言 本文将带大家了解IIC协议,并带大家编写AT24C02的驱动代码。 一、AT24C…

MySQL-MHA高可用配置及故障切换

文章目录一、MHA概述二、MHA的组成1、MHA Node(数据节点)2、MHA Manager(管理节点)3、MHA 的特点四、搭建步骤实验思路实验操作故障模拟故障切换备选主库的算法一、MHA概述 MHA(MasterHigh Availability)是…

Java搭建宝塔部署实战毕设项目SpringBoot大学生就业信息管理源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕设项目SpringBoot大学生就业信息管理源码,适合拿来做毕业设计的同学。可以下载来研究学习一下,本期把这套系统分享给大家。 技术架构 技术框架&#xff1a…

(ICIP-2019)通过神经结构搜索进行视频动作识别

通过神经结构搜索进行视频动作识别 paper题目:VIDEO ACTION RECOGNITION VIA NEURAL ARCHITECTURE SEARCHING paper是奥卢大学发表在ICIP 2019的工作 paper地址:链接 ABSTRACT 深度神经网络在视频分析和理解方面取得了巨大成功。然而,设计高…

【Spring系列】- Spring循环依赖

Spring循环依赖 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 一个有梦有戏的人 怒放吧德德 🌝分享学习心得,欢迎指正,大…

JMeter入门教程(11) --关联

文章目录1.任务背景2.任务目标3.任务实操1.任务背景 当JMeter执行脚本时,伪装成浏览器,然后根据脚本,把当初真的浏览器所发过的内容,再对网站服务器重新发送一遍,JMeter企图骗过服务器,让服务器以为它就是…

010. 递增子序列

1.题目链接: 491. 递增子序列 2.解题思路: 2.1.题目要求: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 (数组可能有重复的元素,相等的元素排…

IDOC的状态

这篇文章介绍IDOC Status的概念和它们的用途,明确IDOC status的类别,看一下完整的状态列表,包括INBOUND和OUTBOUND,还有入站和出站iDoc处理时iDoc状态的顺序。 另外还有监控SAP IDOC status的工具,比如AIF,…