pyloa:用python在线学习算法

pyloa的Python项目详细描述


pyloa-使用python在线学习算法

pyloa是一个研究库,用于分析经典在线算法与现代机器的性能 学习,特别是强化学习,方法。Pyloa船有两种常见的 在线问题,如environments

  • (k,n)-paging-problem带有一个cache_size kn pages,用于一个页面请求序列
  • (k,n)-coloring-problemk colors一起,对于具有n vertices
  • 的图

pyloa允许agents

  • 受过需要在线解决方案的enviroments(问题定义)培训,
  • 根据常用的启发式或任何最新算法进行评估,
  • 利用(推断可能最坏情况的问题实例)来确定解决方案的competitve ratio

依赖关系

pyloa是为python 3.5+开发的,具有以下包依赖项:

matplotlib==3.0.3scipy==1.2.1tensorflow==1.13.1tqdm==4.31.1numpy==1.16.2

安装

我们建议在virtual environment中使用pyloa

mkdir myproject
cd myproject
python3 -m venv virtualenv/
source virtualenv/bin/activate

在继续之前更新^{}^{}

pip install --upgrade pip setuptools

之后,您可以从最新的PyPI stable版本安装pyloa

pip install pyloa

来自github上最新的development release

pip install git+https://github.com/pyloa/PyLoa.git

一般用法

pyloa可以用三种不同的方法来分析在线问题;每种方法都通过所谓的运行模式来描述 (trainevalgen)。任何runemode都可以通过其位置参数调用,并且需要一个python配置文件。

pyloa {train,gen,eval} --config path/to/hyperparams.py

hyperparams描述了当前实验的设置;它必须保存名为params的字典,而且必须 包含键instanceenvironmentagent的词典。

  • params["ìnstance"]:必须定义^{}的子类实现的配置, 为域生成问题实例。例如,对于(k,n)-paging-problem,一个简单的生成器可以 随机生成长度为sequence_size的请求序列,而每个请求都在[1,n]范围内。
  • params["agent"]:必须定义^{}的子类实现的配置, 它观察环境的一种状态,并相应地采取行动,接受奖励,并观察 转换状态s'。对于玩具问题实例,一个简单的q-学习表实现就足够了。
  • params["environment"]:必须定义^{}的子类实现的配置, 它使用一个问题实例,让代理play直到它终止。构成问题的environment 定义。

使用^{}学习(5,6)-paging-problem的最小示例 ^{}可以用

pyloa train --config hyperparams.py

hyperparams.py如下:

frompyloa.instanceimportRandomSequenceGeneratorfrompyloa.environmentimportDefaultPagingEnvironmentfrompyloa.agentimportQTableAgent# varssequence_size=1000max_page=6min_page=1episodes=250# hyperparamsparams={'checkpoint_step':episodes//10,'instance':{'type':RandomSequenceGenerator,'sequence_size':sequence_size,'sequence_number':episodes,'min_page':min_page,'max_page':max_page,},'environment':{'type':DefaultPagingEnvironment,'sequence_size':sequence_size,'cache_size':5,'num_pages':max_page-min_page+1,},'agent':{'type':QTableAgent,'discount_factor':0.55,'learning_rate':0.001,'epsilon':0.0,'epsilon_delta':13/(episodes*10),'epsilon_max':0.99,'save_file':"/home/me/models/",},}

此示例在examples/0_train_qtable_paging/hyperparams.py中定义,可以使用

pyloa train --config examples/0_train_qtable_paging/hyperparams.py

结果运行可以看到here。总共有五个玩具例子,可以在任何系统上运行, 在examples目录中定义。

运行模式

pyloa有三种不同的运行模式:trainevalgen。对配置文件有一些细微的修改 根据所选的运行模式,我们鼓励检查示例以供参考(在站点上注意:超参数是加载和验证的 在pyloa.utils.load)中。从语义上讲,三种不同的运行模式代表:

  • 训练:一个RLAgent将被训练为episode-由一个InstanceGenerator在他的environment上生成的许多实例。 每checkpoint_step-许多情况下,将保存RLAgent的检查点。
  • 评估:嵌套在root_dir中的所有经过训练的RLagents都将在episode上进行评估-由InstanceGenerator生成的许多实例。 此外,还可以定义和评估不可培训的代理。
  • gen:当前仅适用于(k,n)-paging-problem。遗传算法根据经验确定PagingAgent (近似)竞争比。

每个运行模式将在其实验的输出目录中为tensorboard创建tfevent文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中超类的构造函数中获取扩展泛型类的泛型类型?   java如何获取实体A的不同记录,该实体A与另一个实体B有一对多的关联,并按B记录的最新时间戳的最大值排序   JavaJSF导航参数依赖关系   具有短密文的java SecretKey匿名IBE   鼠标事件“找不到符号”错误的java解决方案   调用mediaplayer后使用java。停止我不能再发出声音了。为我解释开发参考?   java如何在序列化Avro消息时传递空值   java Sip Servlet未发送邀请请求   java根据规则访问节点,并删除链表中所有未访问的节点   Java 6上的jmockit测试用例必须使用Java代理吗?   JSF转换器f:convertDateTime是如何工作的?   java如何清除Firebase云数据库中的数组?   基于日期的列表java自定义排序   测量Java对象的内存消耗(完全“在应用程序中”)   故障终止/崩溃时的javafx Java(FX)故障保护警报?   java访问名称编码未知的文件   java如何在BlackBerry中绘制实心正方形?   java从JTextArea中删除边框   java可以使用另一个bean的属性来引用spring容器XML配置   数据透视表中具有相同列索引的java计数列