Chainer 是一个灵活的神经网络框架,它的一个主要目标就是展现灵活性,允许我们用简单直观的方式编写出复杂的架构。近日,Chainer 发布了 v2.0.0正式版。
Chainer 项目链接:https://github.com/chainer
大多数现有的深度学习框架都是基于「定义-运行(Define-and-Run)」方式的,即先定义一个网络,然后用户对其输入批量梯度下降。由于网络在前向/反向计算之前已经固定,所有逻辑必须作为数据嵌入到网络架构中。所以,这样的系统(例如 Caffe)中定义的网络架构遵循声明性方法;同时,我们也可以使用命令式语言(例如,Torch、基于 Theano 的框架和 TensorFlow)来产生这样的静态网络定义。
与以上方法相反,Chainer 使用「通过运行定义(Define-by-Run)」的方式,即通过即时正向运算定义网络。更准确地说,Chainer 存储计算历史,而不是编程逻辑。这一方式可以帮助我们充分发挥 Python 中编程逻辑的力量。例如,Chainer 不需要任何技巧就可以将条件和循环加入网络定义中。通过运行定义的方式就是 Chainer 的核心理念。由于逻辑更接近于网络处理过程,这种方式让编写多 GPU 并行运算的优化方法变得简单。
在 Chainer 2.0.0 测试版推出近三个月之后,该框架刚刚推出了 2.0.0 正式版,以下是我们对新版本主要更新内容的整理。
重要更新说明
CUDA 7.0 或更高
cuDNN 4.0 或更高
发布说明
以下内容仅是在 v2.0.0b1 上的改进。请参阅 v2.0.0a1 与 v2.0.0b1 的发布说明以找到所有与 v1 版本的不同:
新特性和 API 变化
v2.0.0a1
统一配置:配置 Chainer 的以下四个配置现在由 chainer.config 和 chainer.global_config 对象管理
debug 模式(由 set_debug 配置)
enable_backprop 模式(由 no_backprop_mode 配置)
train 模式(由 train 或 test 的多种方法进行参数配置
type_check 模式(由 Function.type_check_enable 配置)
v2.0.0b1
v2.0.0
加入 L.StatelessGRU,更改了 L.GRU 的应用
input size/channels 现在是可选择的
Aggressive Buffer Release
有关 buffer release,加入了以下功能:
transpose_sequence
select_item
get_item
array method
copy
flip functions
cast
broadcast
noise functions
pooling functions
broadcast (revisited)
stack methods
math functions
depth2space
chainer.config.cudnn_deterministic: cuDNN 确定模式
删除 L.MLPConvolution2D 中的 wscale 选项
在 parameter/link 中增加新的 API,注册到 Link/Chain
在报告变量时清除图形
加入 Extension.initialize 删除了 invoke_before_training
让 None 可串行化
当提出过时参数时,显示错误
使用 cleargrads 代替 zerograds 作为默认选项
修复 STM 和 GRU 之间不一致的命名
为 Variable 加入 requires_grad 性质
repr 在 Variable 中支持类似于 numpy 的 repr
清除 L.Linear 的 API 与偏差参数相关的卷积状链接
删除 Optimizer 中已弃用的方法
默认情况下启用偏置向量 L.ConvolutionND 和 L.DeconvolutionND
增强
其他
下载
源代码
更多有关GMIS 2017大会的内容,请点击「阅读原文」查看机器之心官网 GMIS 专题↓↓↓