TensorFlow.js 1.0

TensorFlow.js 1.0 has been released!

With this release, we are aiming to have API stability guarantees and performance wins. For the most part, the breaking changes listed here are minor and should be relatively simple to migrate to new APIs.

Performance

TensorFlow.js 1.0 brings major performance gains on common machine learning models. Here is a graph of the performance gains of TensorFlow.js 1.0 versus last year in June 2018:

Features

Tensor.array() and Tensor.arraySync() have been added. These are similar to Tensor.data() but return deeply nested arrays with the same logical shape as the original tf.Tensor.

Breaking changes

Graphs converted from TensorFlow now generate JSON graphs (model.json). Any protocol buffer graphs with the extension .pb are now deprecated. You can convert .pb graphs to .json graphs with the pb2json NPM script in the tensorflow/tfjs-converter repository.

High-level additions

TensorFlow.js 1.0 will be released during the TensorFlow dev summit on March 6th, 2019. With this release, we introduce some minor breaking API changes. If you are curious about this release, you can use the pre-released, version 1.0.0@next.

0.15.3 has both the new API and the old APIs. If you update to this version, you will get warning messages for methods that are deprecated which will point you to the new methods. If you migrate and get rid of the warnings in your code, you will be 1.0 ready.

This PR adds redundant files to .npmignore. Also, adds package to .gitignore. Finally removes few entries in .npmignore which are no longer part of source. [Dev: Ignore redundant files to propagate to npm] (#1077). Thanks, @ManrajGrover.

Using dots reporter in Travis cleans up the log (see this PR's log) and makes it easier to see the failed tests. Also switch BrowserStack tests to High Sierra (10.3.x) [Use karma's dots reporter instead of progress for travis log] (#1075).

Update the test runner config to support async/await in tests. (#1068).

Assets

Core (0.11.0 ==> 0.11.1)

Bug fixes

Previously cumsum would pass the original axis to the backend, even if the input was permuted. No tests were failing in core since webgl backend ignores the axis param anyway, but other backends (e.g. node) don't. This fix makes cumsum tests pass in tfjs-node. [tf.cumsum should pass the correct axis to backend.cumsum] (#1054).