Skip to content

v1.24.0

Compare
Choose a tag to compare
@mitmul mitmul released this 12 May 09:41
· 21727 commits to master since this release

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 into master. 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 for Trainer that accumulates the gradients computed by multiple processes using multiprocessing and NCCL.
  • reduce option is added to loss functions. By passing reduce=’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 passing reduce=’no’.
  • One dimensional integer array indexing (fancy indexing) support for DatasetMixin (#2427)
  • Add keepdims option to F.average and F.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, and F.gaussian_nll (#2520)
  • New Functions and Links
    • F.simplified_dropconnect and L.SimplifiedDropconnect: simplified version of DropConnect (#1754, thanks @fukatani!)
    • F.depthwise_convolution_2d and L.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.n_step_rnn, F.n_step_birnn (#2467)
      • F.n_step_bilstm, L.NStepBiLSTM (#2469)
      • F.n_step_gru, F.n_step_bigru, L.NStepGRU, L.NStepBiGRU (#2470)
    • F.squared_error and F.absolute_error: elementwise squared/absolute error (#2566, thanks @Hakuyume!)
    • F.softmax supports axis option (#2536, #2538 thanks sergeant-wizard!)

CuPy

  • Some linalg methods are supported(QR decomposition: #2412, singular value decomposition: #2481)
  • cupy.sum supports keepdims 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
  • 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

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!)

Others

  • Fixed .pep8 file for style checking (#2602)
  • Specify required protobuf version (#2663, thanks @wkentaro!)