加速金属学习研究的模块化工具箱:火箭:
meta-blocks的Python项目详细描述
MetaBlocks是一个模块化的工具箱,用于研究、实验和可复制的学习学习算法的基准测试。
工具箱提供了一个灵活的API来处理MetaDatasets
、TaskDistributions
和{
该库正在积极开发中。 最新的文档可从:https://meta-blocks.readthedocs.io/获得。在
安装
元块需要Python3.5+和TensorFlow 2.2+。在
典型使用
我们建议使用pip安装库的最新版本:
$ pip install meta-blocks # normal install $ pip install --upgrade meta-blocks # or update if needed $ pip install --pre meta-blocks # or include pre-release version for new features
或者,要从master
分支安装最新版本:
注意:为了能够访问和运行基准测试,您需要克隆存储库。在
发展和贡献
您可以安装其他开发需求,如下所示:
$ pip install -r requirements/dev.txt
另外,请确保安装预提交挂钩,以确保代码样式和格式正确:
$ pip install pre-commit # install pre-commit $ pre-commit install # install git hooks $ pre-commit run --all-files # run pre-commit on all the files
入门和使用案例
您可以将该库用作(1)模块化基准测试套件或(2)新学习学习算法的脚手架API。在
标杆管理
为了实现可重复的研究,我们维护了一套benchmarks/。 要运行基准测试,只需克隆repo,将工作目录更改为相应的基准,然后执行一个运行脚本。 例如:
$ git clone https://github.com/alshedivat/meta-blocks.git $ cd meta-blocks/benchmarks/omniglot $ ./fetch_data # fetches data for the benchmark $ ./run_classic_supervised.sh # runs an experiment (train and eval routines in parallel)
有关详细信息,请参阅benchmarks/README.md。在
元块API
MetaBlocks提供了实现为Python类层次结构的多个API层。
三个主要组件是MetaDataset
,TaskDistribution
,和{
MetaDataset
提供对从底层DataSource
构造的Dataset
实例的访问。Dataset
表示数据张量的集合(例如,在多类分类的情况下,它是一个输入张量的集合,每个类别一个)。在TaskDistribution
进一步构建在MetaDataset
之上,并提供对指定学习任务语义的Task
实例的访问。 E、 例如,一些快照分类任务提供对非重叠支持和查询子集的访问。 任务分布决定了如何对任务进行采样和构造。 目前,我们支持supervised
和self-supervised
任务进行少量镜头分类。在MetaLearner
封装了一个参数化模型(你最喜欢的神经网络)和一个自适应算法,用于使模型适应新任务。 自适应算法必须使用Task
公开的API。在
注意:将任务与数据集和(元)学习方法分离是元块相对于其他库的核心优势之一。在
以下是库当前支持的组件:
添加您自己的元数据集
要添加自己的元数据集,您需要子类MetaDataset
并实现一些方法。在
[TODO:提供详细的演练示例。]
如果用于构造元数据集的完整数据量很轻并且很容易放入内存中,则可以按照the implementation of Omniglot进行操作。
如果数据集太大或需要一些繁重的预处理,最好的方法是使用tf.data.Dataset
API。
作为一个起点,您可以遵循miniImageNet implementation。在
添加自己的元学习者
要添加您自己的元学习算法,您需要子类MetaLearner
并实现两个方法:_get_adapted_model
(必须返回一个经过调整的模型实例)和{_build_adaptation
方法内的支持集生成原型,并在调用_get_adapted_model
时返回一个带有相应原型的模型。在
[TODO:提供详细的演练示例。]
引文
如果你使用元块进行研究,请引用如下。在
@misc{metablocks,
title={MetaBlocks: A modular toolbox for meta-learning research with a focus on speed and reproducibility.},
year={2020},
publisher={GitHub},
journal={GitHub repository},
howpublished={\url{https://github.com/alshedivat/meta-blocks}},
}
相关项目
一些值得注意的相关项目:
Project | Description |
---|---|
Torchmeta | A PyTorch library that implements multiple few-shot learning methods. |
learn2learn | A PyTorch library that supports meta-RL. |
参考文献
[1]Finn,C.,Abbeel,p.和Levine,S.用于快速适应深层网络的模型不可知论元学习。ICML 2017年。在
[2]Nichol,A.,Achiam,J.和Schulman,J.关于一阶元学习算法。arXiv预印本arXiv:1803.02999。在
[3]Snell,J.,Swersky,K.和Zemel,R.《少镜头学习的典型网络》。NeurIPS 2017年。在
- 项目
标签: