Chainer是一个开源的深度学习框架,完全在NumPy和CuPy Python库的基础上用Python编写。该开发工作由日本风险公司Preferred Networks与IBM,英特尔,微软和Nvidia合作进行。

Chainer 是一个开源的深度学习框架,完全在 NumPy 和 CuPy Python 库的基础上用 Python 编写。该开发工作由日本风险公司 Preferred Networks 与 IBM,英特尔,微软和 Nvidia 合作进行。

Chainer是什么  第1张

Chainer 因其早期采用的“ 按运行定义 ”方案以及在大型系统上的性能而著称。第一个版本于 2015 年 6 月发布,此后在日本广受欢迎。此外,在 2017 年,它被 KDnuggets 列在十大开源机器学习 Python 项目中。

2019 年 12 月,Preferred Networks 宣布将其开发工作从 Chainer 过渡到 PyTorch,它将仅在发布 v7 之后提供维护补丁。

按运行定义

Chainer 是第一个引入按运行定义方法的深度学习框架。训练网络的传统过程分为两个阶段:定义网络中数学运算(例如矩阵乘法和非线性激活)之间的固定连接,然后运行实际的训练计算。这称为定义并运行或静态图形方法。Theano 和 TensorFlow 是采用这种方法的著名框架。相反,在按运行定义或动态图方法中,当训练开始时,网络中的连接是不确定的。该网络是在训练期间根据实际计算确定的。

这种方法的优点之一是直观且灵活。如果网络具有复杂的控制流(例如条件和循环),则在定义和运行方法中,需要针对此类构造进行专门设计的操作。另一方面,在运行定义方法中,可以使用编程语言的本机结构(例如 if 语句和 for 循环)来描述这种流程。这种灵活性对于实现递归神经网络特别有用。

另一个优点是易于调试。在“定义并运行”方法中,如果训练计算中发生错误(例如数字错误),则通常很难检查故障,因为编写的代码定义了网络和实际位置。错误是分开的。在按运行定义方法中,您可以仅使用语言的内置调试器暂停计算,然后检查在网络代码上流动的数据。

自从 Chainer 引入以来,按运行定义已经流行起来,并且现在已在许多其他框架中实现,包括 PyTorch 和 TensorFlow。

扩展库

Chainer 具有四个扩展库,ChainerMN,ChainerRL,ChainerCV 和 ChainerUI。ChainerMN 使 Chainer 可以在多个 GPU 上使用,其性能明显优于其他深度学习框架。在 1024 个 GPU 上运行 Chainer 的超级计算机在 15 分钟内处理了 ResNet-50 网络上的 90 个 ImageNet 数据集,比 Facebook 以前的记录快了四倍。ChainerRL 添加了最先进的深度强化学习算法,而 ChainerUI 是一种管理和可视化工具。

应用程序

Chainer 用作 PaintsChainer 的框架,该服务可以在用户输入最少的情况下自动对黑白(仅线条)草图进行着色。