v1.24.0
This is a minor release. See the list for the complete list of solved issues and merged PRs.
Announcements
- This is the final regular release of Chainer v1.x. No further changes will be made to Chainer v1 except for critical bug fixes.
- We will soon merge the current
_v2
branch intomaster
. It is predicted that many PRs targeted to the current master will be made obsolete (i.e., they will conflict with the v2 source tree). - We have decided to postpone the release of v2.0.0 to May 30. We will work hard to finish the planned changes and documentation stuffs, so wait for the release date!
- We have to apologize that we cannot fulfill for v2 the compatibility-breaking steps that we declared in our compatibility policy. In particular, many APIs that will be partially changed in v2 do not emit any warnings in v1.24.0.
- Instead, we are preparing an upgrade guide that lists up which part of the existing user codes should be updated to be compatible with v2.0.0. We believe that this upgrade guide is helpful for all users to properly update their codes.
New features
Summary
MultiprocessParallelUpdater
is added. It is an updater forTrainer
that accumulates the gradients computed by multiple processes usingmultiprocessing
and NCCL.reduce
option is added to loss functions. By passingreduce=’no’
, we can let the loss function not aggregate the loss values across data in the mini-batch.- Many differentiable functions and links are added. In particular, depthwise convolution and spatial transformer networks are supported.
- QR and SVD decompositions are added to CuPy.
Chainer
- Differentiable advanced indexing (indexing by integer arrays and boolean arrays) for Variable (#2203, thanks @yuyu2172!)
- NOTE: This feature was actually included in the previous version. We apologize that this big feature was missed in the previous release note.
- Add
MultiprocessParallelUpdater
: a new version of parallel updater using multiprocessing and NCCL (#2213, #2724, thanks @jekbradbury (#1924) and @anaruse (#1895)!) ParameterStatistics
extension that accumulates various statistics of parameter arrays (#2166, thanks @hvy!)- Add
reduce
option to the following loss functions. You can use these loss functions without taking summation/average over the mini-batch by passingreduce=’no’
.F.softmax_cross_entropy
(#2325, #2357, thanks @Hakuyume!)F.gaussian_kl_divergence
(#2519)F.bernoulli_nll
(#2525)F.gaussian_nll
(#2526)F.crf1d
(#2559)F.huber_loss
(#2560)F.hinge_loss
(#2577)F.black_out
(#2600)F.contrastive
(#2603)F.connectionist_temporal_classification
(#2658)F.triplet
(#2681)F.cross_covariance
(#2697)F.decov
(#2698)F.negative_sampling
andL.NegativeSampling
(#2704)
- One dimensional integer array indexing (fancy indexing) support for
DatasetMixin
(#2427) - Add
keepdims
option toF.average
andF.mean
(#2508) - Add
TransformDataset
: dataset wrapper to transform each data point by an arbitrary callable (#2513) - Support array inputs in
F.gaussian_kl_divergence
,F.bernoulli_nll
, andF.gaussian_nll
(#2520) - New Functions and Links
F.simplified_dropconnect
andL.SimplifiedDropconnect
: simplified version of DropConnect (#1754, thanks @fukatani!)F.depthwise_convolution_2d
andL.DepthwiseConvolution2D
: depthwise convolution layer used in separable convolution (#2067, thanks @fukatani!)F.spatial_transformer_sampler
: 2d image differentiable sampler from “Spatial Transformer Networks” (#2272, thanks @yuyu2172!)F.spatial_transformer_grid
: function to generate sampling points of STN (#2458, thanks @yuyu2172!)L.GoogLeNet
: pretrained GoogLeNet (#2424, thanks @ronekko!)F.im2col
: differentiable version of im2col (#2466, thanks @yuyu2172!)- cuDNN-accelerated N-step RNNs and bidirectional RNNs (thanks @aonotas!)
F.squared_error
andF.absolute_error
: elementwise squared/absolute error (#2566, thanks @Hakuyume!)F.softmax
supportsaxis
option (#2536, #2538 thanks sergeant-wizard!)
CuPy
- Some linalg methods are supported(QR decomposition: #2412, singular value decomposition: #2481)
cupy.sum
supportskeepdims
argument (#2507)
Bug fixes
- Redundant dropout just after input layer in
F.NStepLSTM
is removed (#2504) - Some functions now work correctly with non-contiguous arrays
- Pooling functions: #2512, #2564
F.batch_normalization
(#2582 thanks @soramichi!)- deconvolution functions (#2666 thanks @soramichi!)
F.spatial_transformer_sampler
(#2676 @yuyu2172!)
- Fixed
cupy.fuse
behavior for*args
(#2594 thanks @jekbradbury!, #2598) - Fixed resuming behavior of extensions (ExponentialShift: #2686 thanks @Hakuyume!, LinearShift #2721)
- Fixed ResNet101Layers to load pretrained model (#2608, #2609 thanks @yuyu2172!)
- Variable.transpose can be called without argument (#2614 thanks @ronekko!, #2635)
- Added support for broadcasting in
SoftmaxCrossEntropy
on numpy==1.9 (#2719) - Fixed reverse indexing for empty dimension (#2696)
- softmax cross entroy correctly works when
ignore_label
is not -1 (#2715 thanks @musyoku!, #2716) - Treat numpy scalars correctly in
cupy.ndarray.fill
(#2723) - Fixed duplicated test case name (#2605)
- Remove debug print (#2610)
- Fixed convnet tutorial (#2615)
Improvements
- Support arrays over 2GB (#2530, thanks @kmaehashi!)
- Check output size of pooling function (#2589, thanks @soramichi!)
- Stop importing theano automatically (#2570 thanks @mfxss and @jekbradbury, #2619)
split_axis
function works when its result has zero-dimensional arrays (#2524)- Improved DatasetMixin performance (#2427)
- Check maximum supported version of cuDNN (#2479, #2480)
- Refactored CIFAR dataset (#1516)
- Refactor
F.DilatedConvolution2DFunciton
(#2665 thanks @soramichi!) - Refactor
chainer.Link
(#2711, #2712 thanks @ysekky!)
Documents
- Modify the nccl wrapper for --cupy-no-cuda (#2724)
- Add observe_value and observe_lr to extension.rst (#2713)
- Improve docs
- Modify docstring in connection (#2642, thanks @ysekky!)
- Fix some mistakes in ConvNet tutorial (#2615)
- Add reduce option to F.black_out (#2600)
- Move Information to top (#2591)
- Add index page for examples (#2587)
- Add Information in README (#2565)
- Add special members to the document (#2552)
- Update install.rst (#2543)
- Add ConvNet tutorials (#2337)
- Fix typos (#2597 thanks @PeterTeng!, #2596 thanks @kdnk!, #2595 thanks @hvy!, #2714)
- Remove TOC from the readme of the examples (#2731)
Examples
- Added new example that uses a custom training loop (#2339)
- Added
--model
argument in PTB example to specify model file (#2617) - Removed outdated comment from word2vec example (#2643, thanks @ysekky!)
Tests
- Fixed
epoch_detail
behavior of mocked trainer (#2472, thanks @Hakuyume!) - Fixed LSTM Dropout test (#2504)
- Fixed coding style in init docstring test (#2588)
- Fixed
contrastive
test (#2604) - Fixed test case name of
gaussian_kl_divergence
test (#2605) - Fixed numerical instability in
Highway
test (#2650) - Added tests for
show_name
functionality of the computational graph (#2517, thanks @sergeant-wizard!) - Added corner case in
F.stack
test (#2532) - Use
chainer.functions
alias in tests (#2541) - Retry in unstable dropout test (#2542)
- Skip external classes in init docstring test (#2583)
- Improved test for
max_pooling_2d
in GPU cases (#2589, thanks @soramichi!) - Improved tests of manual schedule trigger (#2557 and #2568, thanks @Hakuyume!)