首页 > 其他分享 >gym序列化、EzPickle类

gym序列化、EzPickle类

时间:2024-08-15 19:15:34浏览次数:11  
标签:__ args gym EzPickle ezpickle kwargs 序列化 self

EzPickle是一个用于强化学习环境的类,它重写了__getstate__和__setstate__方法,以便通过构造函数参数(*args,**kwargs)进行序列化和反序列化。这个设计允许那些无法直接用pickle库处理的对象,如数据库连接和网络套接字,也能在保存和恢复时保持其状态。

"""Class for pickling and unpickling objects via their constructor arguments."""
from typing import Any


class EzPickle:
    """Objects that are pickled and unpickled via their constructor arguments.

    Example:
        >>> class Animal: pass
        >>> class Dog(Animal, EzPickle):
        ...    def __init__(self, furcolor, tailkind="bushy"):
        ...        Animal.__init__(self)
        ...        EzPickle.__init__(self, furcolor, tailkind)

    When this object is unpickled, a new ``Dog`` will be constructed by passing the provided furcolor and tailkind into the constructor.
    However, philosophers are still not sure whether it is still the same dog.

    This is generally needed only for environments which wrap C/C++ code, such as MuJoCo and Atari.
    """

    def __init__(self, *args: Any, **kwargs: Any):
        """Uses the ``args`` and ``kwargs`` from the object's constructor for pickling."""
        self._ezpickle_args = args
        self._ezpickle_kwargs = kwargs

    def __getstate__(self):
        """Returns the object pickle state with args and kwargs."""
        return {
            "_ezpickle_args": self._ezpickle_args,
            "_ezpickle_kwargs": self._ezpickle_kwargs,
        }

    def __setstate__(self, d):
        """Sets the object pickle state using d."""
        out = type(self)(*d["_ezpickle_args"], **d["_ezpickle_kwargs"])
        self.__dict__.update(out.__dict__)
    def __init__(
        self,
        forward_reward_weight=1.0,
        ctrl_cost_weight=0.1,
        reset_noise_scale=0.1,
        exclude_current_positions_from_observation=True,
        **kwargs,
    ):
        utils.EzPickle.__init__(
            self,
            forward_reward_weight,
            ctrl_cost_weight,
            reset_noise_scale,
            exclude_current_positions_from_observation,
            **kwargs,
        )

标签:__,args,gym,EzPickle,ezpickle,kwargs,序列化,self
From: https://www.cnblogs.com/Twobox/p/18361639

相关文章

  • Unity 通过序列化和反序列化的方式创建深度拷贝Clone方法注意事项
    要将类标记为可序列化在类定义前添加 [Serializable] 属性。[Serializable]publicclassWorkorderAddData{publicintid;publicResponseresponse;[Serializable]publicclassResponse{publicintid;[Serializable]......
  • Java反序列化(一)——基础知识
    前言·攻击JavaWeb应用-[JavaWeb安全]Java类加载机制-知乎(zhihu.com)java反序列化基础-CSDN博客Java序列化-二进制格式详解_java序列化二进制特征-CSDN博客1类加载机制1.1概述    Java程序在运行钱需要先编译成.class文件,这个文件的内容被称为字节......
  • Java反序列化(二)——URLDNS链、CC1链
    0背景白日梦组长投稿视频-白日梦组长视频分享-哔哩哔哩视频(bilibili.com)实验环境Java:1.8.0_65IDEA:2022commons-collecetions:3.2.11URLDNS链分析    URLDNS并不能RCE,只是用来发起dns请求,一般用做初步探测,看能不能反序列化和出网。先给出利用链:GadgetChai......
  • Java反序列化(三)——CC6、CC3
    0背景白日梦组长投稿视频-白日梦组长视频分享-哔哩哔哩视频(bilibili.com)实验环境Java:1.8.0_65IDEA:2022commons-collecetions:3.2.11CC6    ysoserial中的CC6调用链如下:最下面的还是CC1中的LazyMap.get()。transform那里和CC1是代码一样的,只不过ysoserial这......
  • Java反序列化(四)——CC4、CC2
    0背景白日梦组长投稿视频-白日梦组长视频分享-哔哩哔哩视频(bilibili.com)实验环境Java:1.8.0_65IDEA:2022commons-collecetions:4.0        CommonsCollections4除4.0其他版本的 InvokerTransformer和InstantiateTransformer没有实现Serializable,导致该方......
  • 【PHP安全系列】demo:PHP 反序列化漏洞①
    <?phpclassindex{private$test;publicfunction__construct(){$this->test=newnormal();}publicfunction__destruct(){$this->test->action();}}classnormal{publicfunct......
  • 2024年华为OD机试真题-模拟数据序列化传输-Java-OD统一考试(C卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:模拟一套简化的序列化只传输方式,请实现下面的数据编码与解码过程1、编码前数据格式为[位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer......
  • 深入解析@JsonValue注解在Java序列化中的应用
    深入解析@JsonValue注解在Java序列化中的应用在Java开发中,对象序列化是一个常见的需求,尤其是在进行网络通信或者数据持久化时。Jackson库作为Java领域内一个非常流行的JSON处理库,提供了强大的序列化和反序列化功能。在Jackson2.9版本之后,@JsonValue注解的引入,为开发者提供......
  • 【待看】一周一深入之深入剖析PHP反序列化phar、session、soap反序列化
    引言接上个文章,一周一深入之深入剖析PHP反序列化上个文章把php反序列化的基础以及trick总结完了,这篇文章就总结一下PHP常见的三个组件反序列化,Phar、session、soap反序列化。一周一深入之深入剖析PHP反序列化phar、session、soap反序列化引言一、什么是Phar以及Phar反序列化Phar......
  • CVE-2019-12422~shiro反序列化【春秋云境靶场渗透】
    #今天我们来攻克CVE-2019-12422春秋云境这个靶场漏洞当我们知道了该靶场是shiro反序列化漏洞,所以直接用工具梭哈好小子,离成功又近一步!!!......