数据集抽象(链接器数据集
)
Chainer支持数据集培训和验证的通用接口。数据集支持由三个组件组成:数据集、迭代器和批处理转换函数。
数据集表示一组示例。接口只能通过与要在其上使用的迭代器组合来确定。Chainer的内置迭代器需要数据集支持__获取项目__
和__伦__
方法。特别是__获取项目__
方法应支持通过整数和切片进行索引。我们可以通过继承轻松支持切片索引数据集混合
,在这种情况下,用户只需实现获取示例(_E)
索引方法。基本上,数据集被视为无国籍的对象,这样我们就不需要将数据集保存为训练过程的检查点。
迭代器对数据集进行迭代,在每次迭代时,它都会生成一个小样本列表。迭代器应支持迭代器
接口,其中包括Python的标准迭代器协议。迭代器管理下一步的阅读位置,这意味着它们是有状态的.
批量转换功能将微型支架转换为阵列,以馈送到神经网络。他们还负责将每个阵列发送到适当的设备。Chainer目前提供了两种实现:
这些组件都是可定制的,并且设计为具有最小的接口来限制数据集的类型和处理方式。不过,在大多数情况下,Chainer本身提供的实现足以涵盖这些用法。
Chainer还有一个轻量级系统来下载、管理和缓存数据集的具体示例。通过系统管理的所有数据集都保存在数据集根目录,由CHAINER_DATASET_ROOT连锁店
环境变量,也可以通过set_dataset_root()
功能。
数据集示例(链接器.数据集
)
最基本的数据集
实现是一个数组。NumPy和CuPy数组都可以直接用作数据集。
然而,在许多情况下,简单的数组不足以编写训练过程。为了涵盖大多数此类情况,Chainer提供了许多内置的数据集实现。
这些内置数据集分为两组。一个是一组通用数据集。其中大多数是其他数据集的包装器,用于向每个数据点引入一些结构(例如元组或dict)。另一个是一组具体的、流行的数据集。这些具体示例使用链接器数据集
模块缓存下载和转换的数据集。