内容简介:神经网络框架Chainer发布2.0正式版:CuPy独立
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 正式版,以下是我们对新版本主要更新内容的整理。
重要更新说明
-
CuPy 已从 Chainer 中分离,现在是一个单独的包:https://github.com/cupy/cupy
-
这意味着如果你想让 Chainer 使用 GPU 的话,你需要安装 CuPy。
-
请在使用 GPU 前遵循安装指南:http://docs.chainer.org/en/stable/install.html
-
与 CuPy 分离相关,我们删除了部分旧版本的 CUDA 和 cuDNN 支持。在 Chainer v2.0.0 和 CuPy 1.0.0 中支持的版本为:
-
CUDA 7.0 或更高
-
cuDNN 4.0 或更高
-
Chainer 的 repository 已从 pfnet/chainer 移动到了 chainer/chainer。旧的 URL 仍然可以通过 git 使用,但任何操作都会重新定向到新的。
-
对 Chainer v1.x 用户:
-
有一个升级指南介绍了与 v1 的变化之处:http://docs.chainer.org/en/stable/upgrade.html
-
对贡献者:
-
请再次阅读贡献者指南,其中有多处更新:http://docs.chainer.org/en/stable/contribution.html
-
如贡献者指南所述,我们改变了开发和发布周期。主要开发将在主分支上继续进行,这将应用于 v3(包括 alpha、beta 和正式)版本,v2 的维护将在 v2 分支完成。
-
如果你有一个修改意见,请将其置于主分支中。
发布说明
以下内容仅是在 v2.0.0b1 上的改进。请参阅 v2.0.0a1 与 v2.0.0b1 的发布说明以找到所有与 v1 版本的不同:
-
https://github.com/chainer/chainer/releases/tag/v2.0.0a1
-
https://github.com/chainer/chainer/releases/tag/v2.0.0b1
新特性和 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
-
变量方式的更新规则
-
每个参数变量现在都保持优化器的 update_rule 设置。用户可以编辑每个更新规则的超参数,以自定义每个参数的优化配置(例如使用不同的学习率)。每个更新规则还可以有自身的挂钩函数(hook function,例如,仅将权重衰减用于权重矩阵)。
-
应用主动缓冲释放
-
我们改变了计算图和变量的对象结构。变量对象不再是计算图的一部分,而是保存对作为计算图的一部分的 VariableNode 对象的引用。一些功能使变量节点不保留阵列缓冲区,从而减少内存消耗。只有最流行的功能(relu、arithemetics、concat、split_axis)支持这个功能。
-
根据此前的基准测试,它在现代卷积神经网络的运行中节省了 33% 的内存用量。
-
类型检查
-
类型检查的 API 略有改变,当代码通过检查时,此更改会降低类型检查的资源消耗。
-
加入 use_cudnn 模式
-
我们删除了多个函数中的 use_cudnn 参数。是否使用 uDNN 现在由 hainer.config.use_cudnn 负责配置。
-
未初始化的变量和参数
-
Variable 现在允许有一个未初始化的数据数组。这一改动简化了未初始化参数链接的改动。
-
更改 Variable 类型以在其复制的实例(包括初始化/未初始化状态)之间共享其实际数据和渐变数组。
-
扩展了 Evaluator 可接受的数据类型
-
过去,我们只能将 NumPy 和 CuPy 对象提供给 chainer.training.extensions.Evaluator 的评估函数,现在没有这个限制了,任意数据类型都是允许的。
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
增强
-
在 functions 和 links 中删除不必要的导入
-
检查 v2 中不支持的旧参数以显示错误消息
-
当 volatile 出现时显示错误
其他
-
加入 ResNet50 示例
-
说明文档改善
-
在教程中加入了 chainer.config.train 章节
下载
源代码
-
https://github.com/chainer/chainer/archive/v2.0.0.zip
-
https://github.com/chainer/chainer/archive/v2.0.0.tar.gz
以上所述就是小编给大家介绍的《神经网络框架Chainer发布2.0正式版:CuPy独立》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 神经网络 – 序列预测LSTM神经网络落后
- 神经网络历史以及浅析神经网络与感知机
- 【神经网络】11行Python代码实现的神经网络
- 常见的五种神经网络(三):循环神经网络(上篇)
- 常见的五种神经网络(三):循环神经网络(中篇)
- React 17 正式版发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Types and Programming Languages
Benjamin C. Pierce / The MIT Press / 2002-2-1 / USD 95.00
A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of typ......一起来看看 《Types and Programming Languages》 这本书的介绍吧!