1.0.0-beta7

Version 1.0.0-beta7

Read the announcement at https://blog.konduit.ai/2020/05/14/deeplearning4j-1-0-0-beta7-released/ for the highlights of this release.

Deeplearning4j

Features and Enhancements

  • Added Keras model import support for tf.keras models Link, Link​
    • Full inference and training support is available for ops/layers in the tf.keras namespace; inference only for general Tensorflow operations outside of the tf.keras namespace
    • Note also improvements to Keras import for reshape, permute, etc operations due to NHWC and NWC support in DL4J
  • DL4J now supports NHWC (channels last) data format for all CNN 2D layers, in addition to NCHW Link​
  • DL4J now supports NWC (channels last - [minibatch, sequence_length, size]) for all RNN and CNN 1D layers, in addition to NCW Link​
  • Added Deconvolution3D layer Link​
  • Keras import: added ReLU, ELU and Softmax advanced activation layers Link and Swish activation function Link​
  • Added DL4J SameDiffLoss class (for easily-defined DL4J ILossFunction's via SameDiff) Link​
  • Useful exceptions are now thrown when attempting to perform unsupported operations on FastText Link​
  • Added MultiLayerNetwork.evaluate(MultiDataSetIterator) and .evaluateRegression(MultiDataSetIterator) methods Link, Link​

Bug Fixes and Optimizations

  • Updaters (Adam, AdaGrad, etc) optimized via C++ operations (significant training performance boost) for DL4J and SameDiff Link, Link​
  • Some packages relocated to avoid split packages (that can be a problem for OSGi and Java 9 modules) Link​
    • Note: this is a breaking change for some class packages/imports. See this link for details on exact package changes
  • Deeplearning4j UI: Webjars versions locked down using dependency management to avoid check on each build Link​
  • Added MKLDNN (DNNL/OneDNN) support for depthwise_conv2d operation for DL4J and SameDiff Link​
  • Refactored/merged modules dl4j-perf and dl4j-util into deeplearning4j-core Link​
  • Fixed an issue with BertWordPieceTokenizer - potential StackOverflowError with certain inputs Link​
  • Fixed an issue with GlobalPooling layer with masks of different datatype to the activations datatype Link​
  • Fixed an issue with DL4JModelValidator for ComputationGraph Link​
  • Fixed an issue where SameDiff layers in DL4J could throw an exception when used with transfer learning Link​
  • Weight initialization for EmbeddingLayer and EmbeddingSequenceLayer now no longer depend on the vocabulary size (only the vector size) Link​
  • Fixed an issue with Keras import with bidirectional layers + preprocessors Link​
  • DL4J UI: added redirect from /train to /train/overview Link​
  • Fixed an issue where RecordReaderDataSetIterator builder collectMetaData configuration was not being applied Link​
  • Fixed an issue where MultiLayerNetwork evaluation was not passing metadata to the IEvaluation instances during evaluation Link, Link​
  • Fixed an issue with Spark training SharedTrainingMaster when training with a ComputationGraph and MultiDataSets Link​
  • Assorted fixes for edge cases for DL4J Keras import Link​
  • deelpearning4j-nlp-korean will no longer be released for Scala 2.12 due to required dependency only having Scala 2.11 version avairable Link​
  • Fix for ConvolutionalIterationListener for ComputationGraph Link​
  • Fixed an issue where dataset and model zoo downloads could get stuck if the server fails to send any data (now: timeout + retry) Link​
  • DL4J ModelSerializer no longer writes temporary files when restoring models from InputStream Link​
  • Fixes issues with UIServer multi session mode, and potential shutdown race condition Link​
  • Fixed an issue where TfidfVectorizer.vectorize() could throw a NPE when fit from LabelAwareIterator Link​

ND4J/SameDiff:

Features and Enhancements

  • SameDiff multi-threaded inference enhanced (and fixed) - a single SameDiff instance can now be used for inference safely and efficiently from multiple threads Link Link​
  • cuDNN support added to SameDiff (automatically enabled for nd4j-cuda-10.x backend) Link​
  • Added ND4J namespaces: Nd4j.cnn, Nd4j.rnn, Nd4j.image Link​
  • Added new Image operations namespace operations:
    • rgbToHsv, hsvToRgb Link​
    • rgbToYiq, yiqToRgb, rgbToYuv, yuvToRgb Link​
    • imageResize Link​
  • Added new Random operations namespace operations:
    • gamma, poisson, shuffle Link​
  • Added new Math namespace operations:
    • clipByAvgNorm, embeddingLookup Link​
    • mergeMaxIndex Link​
  • Added new NN namespace operations:
  • Added new CNN namespace operations:
    • upsampling3d Link​
  • Added new linalg operations namespace
    • triangular_solve Link​
    • tri operation Link​
    • triu operation Link​
  • Added new RNN operation namespace operations:
    • lstmLayer (note old lstmLayer method renamed to lstmBlock) Link​
    • gru Link​
  • Added new Loss operations namespace - Nd4j.loss Link​
  • Mapped operations for Tensorflow import:
    • HSVToRGB, RGBToHSV, Igamma, Igammac, RandomGamma, RandomPoisson, RandomPoissonV2, RandomShuffle Link​
  • Added SameDiff ProfilingListener - writes op performance profiles in Chrome profiler format (load in chrome://tracing/) Link Link​
  • Added SameDiff ProfileAnalyzer tool to compare profiles output from ProfilingListener (or Tensorflow) Link Link​
  • SameDiff listener API: added frame and iteration information for listener methods Link Link​
  • Added (non-backend-specific) method of accessing Nd4j environment: Nd4j.getEnvironment() method (environment info and low-level configuration options) Link Link​
  • Improved memory limits/configuration support for libnd4j (c++) Link​
  • Added pairwise (broadcastable) power backprop operation Link​
  • Updated JavaCPP presets MKL version to 2020.0 from 2019.5 Link​
  • Added DynamicCustomOp dargs - datatype arguments Link Link​
    • Output datatype configuration for Range op Link, SequenceOp Link, ConfusionMatrix Link​
  • Added tensormmul_bp op Link​
  • OpenBLAS version upgraded to 0.3.8 Link​
  • libnd4j (c++ codebase underlying DL4J, ND4J and SameDiff) refactored to be more easily embeddable in other C++ projects Link​
  • ImagePreProcessingScaler now supports preprocessing of labels (for segmentation) Link​
  • Additional datatypes now supported for nd4j-tensorflow TensorflowConversion Link​
  • SameDiff operation namespaces (sd.math, sd.image, etc) are now code generated to ensure SameDiff and ND4J namespaces are identical (all operations included, same API) Link​
  • Added ND4J ArchiveUtils.unzipFileTo(String, String, boolean logFiles) overload to enable/disable extracted file path logging Link​
  • Added weight format configuration for following operations: conv1D, conv2D, conv3D, deconv2d, deconv3d, depthwiseConv2d, pointwiseConv2d, sconv2d Link​
  • Added backprop operation implementations for mergemax, mergeadd, mergeavg operations Link​
  • MKL version upgraded to 2020.0 2020.1; OpenCV upgraded from 4.2.0 to 4.3.0 Link​
  • SameDiff: DifferentialFunctionFactory class removed in favor of namespace methods (sd.math, sd.linalg, etc) Link​
  • Added lstmLayer_bp operation Link​
  • Added gru_bp operation Link​
  • linspace operation can now use both targs and arrays for start/end/size arguments Link​
  • Assorted dependency updates - OpenBLAS (0.3.9), OpenCV (4.3.0), Leptonica (1.79.0) Link​
  • Upgraded assorted dependency versions: javax.activation:activation (1.1 -> 1.1.1), stream analytics (2.7.0->2.9.8), Apache Spark (2.4.3->2.4.5), Jackson databind (2.10.1 -> 2.10.3), Vertx (3.8.3 -> 3.9.0) Link​
  • Added nd4j-common-tests ResourceUtils.listClassPathfiles method Link​

Bug Fixes and Optimizations

  • Updaters (Adam, AdaGrad, etc) optimized via C++ operations (significant training performance boost) for DL4J and SameDiff Link, Link​
  • SameDiff - added CuDNN support Link​
  • Some packages relocated to avoid split packages (that can be a problem for OSGi and Java 9 modules) Link​
    • Note: this is a breaking change for some class packages/imports. See this link for details on exact package changes
  • Fixed some issues with Tensorflow import of FusedBatchNorm operation Link​
  • Fixed an issue where the Roll operation did not match Tensorflow operation Link Link​
  • Fixed an issue where ArchiveUtils could fail to create the top level destination directory when it does not exist Link​
  • Fixed an issue where resize_bicubic operation did not match Tensorflow for some configuration values Link Link​
  • Pad operation now supports long/int64 values for padding array Link Link​
  • Fixed an issue where hashcode operation shape function wasn't always returning int64/long dtype Link​
  • Fixed an issue with reshape operation on empty arrays with -1s Link Link​
  • Improved performance on CUDA for concat operation Link and CPU/GPU Link​
  • Improved performance for bias_add operation
    • On CPU for NHWC case Link​
    • Generally Link​
    • On CUDA for 2D case Link​
  • Added MKLDNN (DNNL/OneDNN) support for depthwise_conv2d operation for DL4J and SameDiff Link​
  • Fixed a small SameDiff execution issue for switch operation where the predicate is a constant Link​
  • Fixed an issue with batchnorm operation when input arrays have unusual strides Link​
  • Merged nd4j-buffer, nd4j-content modules into nd4j-api Link​
  • Deleted deprecated nd4j-jackson module (remaining functionality available in nd4j-api) Link​
  • Deleted unused/unmaintained nd4j-camel and nd4j-gson modules Link​
  • Optimization for legacy random ops Link​
  • Optimization for broadcast operations Link, Link, Link, Link, Link​
  • Performance optimization for multiple operations: softmax, squeeze, expand_dims, tanh Link​
  • Optimization for transpose/permute operations Link​
  • Performance enhancement: MKLDNN matmul used for some mmul operation cases Link​
  • Optimization for gather operation on CPU Link​
  • Optimization for stack/unstack operations on CPU Link​
  • Optimization for split operation (CPU and CUDA) Link Link​
  • ND4J initialization no longer logs number of OpenMP BLAS threads for CUDA Link​
  • Optimization: Fixed issues with auto-vectorization on multple CPU operations Link​
  • Optimization for reshape operation Link, Link​
  • Fixed an issue where INDArray.hashCode() could cause an exception on some datatypes Link​
  • Optimization for CPU: MKLDNN is now used for softmax, tanh, softmax_bp and tanh_bp operations Link, Link, Link, Link​
  • Fixed random_exponential operation Link​
  • Improved performance on C++ SameDiff graph execution via reduced array zeroing where safe to do so Link​
  • Improved C++ indexing implementation impacting CPU performance on some operations Link​
  • Fixed an issue where Split operation could have incorrect output shapes for empty arrays Link​
  • Fixed some issues with SameDiff.equals method Link​
  • Fixed an issue with reshape operation output shape on empty arrays Link, Link​
  • Nd4j.gemm now uses Mmul operation internally to avoid potential threading issues with direct BLAS calls on CUDA Link​
  • Fixed an edge case issue with percentile operation link​
  • Fixed an edge case issue for cusolved (CUDA) in libnd4j Link​
  • Fixed an issue with error formatting for segment operations for incorrect lengths Link​
  • Fixed an issue where ND4J workspaces were not guaranteed to be unique Link​
  • Fixed some operation implementations when operating on views (Batch/Space to Space/Batch/Depth; batchnorm_bp) Link​
  • Fixed an issue where exponential distribution random number generation operation could produce infinities extremely rarely (~1 in 10^9 values) Link​
  • Fixed an issue with long file paths for memory mapped workspaces on Windows Link​
  • Memory for memory mapped workspaces are now deallocated immediately when workspace is destroyed, instead of waiting for GC to free memory Link​
  • Fall-back to other BLAS implementation for cases where MKLDNN GEMM implementation is slow Link​
  • Set nd4j-native source/target to Java 7 Link, Link​

DataVec

Features and Enhancements

  • datavec-python: added zero-copy support for bytes/byte buffers Link​
  • datavec-python: Python exceptions are now thrown as Java exceptions Link​
  • datavec-python: Added support for additional NumPy datatypes Link​
  • datavec-python: Python version upgraded from 3.7.6 to 3.7.7 Link​

Bug Fixes and Optimizations

  • Deleted not properly maintained modules: datavec-camel, datavec-perf Link​
  • Fixed missing BOOL datatype support for arrow conversion functionality Link​
  • Assorted fixes for datavec-python Link Link, Link​
  • Fixed an issue with LineRecordReader where initialization was performed unnecessarily (adding performance overhead) Link​

RL4J

Features and Enhancements

  • Refactoring to decouple configuration and learning methods from their implementations Link​
  • Added builder patterns for all configuration classes Link​

Arbiter

Bug Fixes and Optimizations

  • Fixes an issue with GridSearchCandidateGenerator not working correctly for some cases Link, Link​
Last modified 3mo ago