High-level additions:
- Operations now accept JavaScript arrays as well as tensors.
- e.g.
tf.square([1, 2, 3])
- e.g.
- Major precision improvements for iOS and desktop Safari.
- 5D and 6D tensor support added.
- Add
tf.Model.summary()
. - Support nested sequential models.
- Add new layer:
tf.layers.upSampling2d
. - Support loading with HTTP request options (e.g., credentials).
Core (0.11.1 ==> 0.12.0)
Features
- Allow ops to take primitive arrays, not just Tensors (#1119).
- Add gradient for ResizeNearestNeigbor. (#1118).
- Add tf.any. (#1114). Thanks, @manrajgrover.
- Add tf.all. (#1104). Thanks, @manrajgrover.
- Add 6D tensors. (#1084). Thanks, @jgartman.
- Add Sigmoid Cross Entropy With Logits. (#1091). Thanks, @manrajgrover.
- Added tf.where gradient function and associated tests (#1059). Thanks, @julianoks.
- WebGL kernel and gradient for unsortedSegmentSum (#1051). Thanks, @jgartman.
- Add backend.floorDiv [Add backend.floorDiv to align tf.div op] (#1061). Thanks, @Lewuathe.
- Add tensor5d() and support for 5D tensor in WebGL backend (#1022). Thanks, @zaidalyafeai.
- Add gradients for depthwise 2d convolutions (#1069). Thanks, @asross.
- Add
load()
toBrowserHTTPRequest
[Add BrowserHTTPRequest.load()] (#1067). BrowserHTTPRequest.load()
supports requestInit (HTTP request options). [Add BrowserHTTPRequest.load()] (#1067).- Add tf.dot (#1066). Thanks, @asross.
- Add huber loss (#1048). Thanks, @manrajgrover.
- Add tf.linalg.qr() (#1128).
Bug fixes
- When backend is already registered, reuse existing backend (#1130).
- Fix tf.fromPixels when using tfjs-core from node (cpu backend) (#1127).
- Loss Ops: Broadcast weights before SUM_BY_NONZERO_WEIGHTS reduction (#1125). Thanks, @manrajgrover.
- Fixing various nan related issues impacted by floating point precision and NaN (#1116). Thanks, @reighlan.
- When disposing a kept tensor, remove it from the keep tensors array. (#1113).
- : oneHot overflow for CPU version kernel. [Fix for oneHot overflow issue] (#1112).
- Fix index for tf.min on backend CPU. (#1105). Thanks, @jbencook.
- Optimizers: Change epsilon value as per environment to 1e-4 for iOS. (#1106). Thanks, @manrajgrover.
- : #435 [One Hot: Fixes CPU result dtype] (#1110). Thanks, @manrajgrover.
- Fix unsortedSegmentSum so it can call the Tensorflow backend (#1103). Thanks, @jgartman.
- Improve precision for Safari by using float16 on iOS and encoding floats as bytes before downloading. (#978).
- Check whether uniform locations are null before trying to upload them. (#1100).
- Don’t require("crypto") in browsers. (#1092). Thanks, @mbostock.
- WebGL Backend: Centralize async reading of data, postpone disposal if a pending read (#859).
- Fix memory management bugs with tidy(). (#1080).
- Fix clipByValue gradient for values less than min or greater than max (#1076). Thanks, @Lewuathe.
- Check condition type strictly in tf.where. (#1062). Thanks, @Lewuathe.
- Make sure tf.fromPixels() gets called after the DOM is ready (#1064).
Performance
- When disposing a kept tensor, remove it from the keep tensors array. (#1113).
- Upload small tensors that live on CPU as uniforms (#1087).
- WebGL kernel and gradient for unsortedSegmentSum (#1051). Thanks, @jgartman.
- WebGL Backend: Centralize async reading of data, postpone disposal if a pending read (#859).
Development
- Upgrade to typescript 2.9.2 and fix problems to make it compile inside Google (#1134).
- Add a
npm run coverage
script, which produces coverage [Initial test coverage generation support] (#1132). Thanks, @ChALkeR. - Remove circular deps (#1117).
- Only run karma tests on node v10. (#1101).
- Migrate environment feature testing to test-if-capable instead of filtering. (#1090).
- Make es bundle and remove dist-es6/ (#1095).
- This PR adds redundant files to
.npmignore
. Also, addspackage
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).
Documentation
- Add tf.multinomial to docs. (#1126).
- Fix nodejs cpu message - missing '@' on require. (#1123). Thanks, @tomasgvivo.
- Fix docs for unsortedSegmentSum. (#1122). Thanks, @jgartman.
- Documentation: Elaborate on strict versions of concat, reverse, batchNormalization and pad ops (#1096). Thanks, @manrajgrover.
- Update second tensor5d example to be valid (#1098). Thanks, @nbardy.
- Array Ops: Fixes Unstack ops documentation example (#1094). Thanks, @manrajgrover.
- Fix documentation for atan2 (#1093). Thanks, @jgartman.
- Improve the print-outs in code snippets for model management methods (#1086).
- Add a message for users running tf.js in node without the node backend (#1085).
- Add model management functions to io namespace in generated docs (#1082).
- Update LRN docs to reflect removal of 'normRegion' argument (#1073). Thanks, @jgartman.
- Fix documentation issues.
- Mention node bindings in setBackend docstring. (#1065). Thanks, @davidsoergel.
Misc
- Improve error messages in tensor constructors to throw if passed null values. (#1111). Thanks, @Lewuathe.
- update raw byte calculation to use byteLength (#1108). Thanks, @kumarde.
- Add tsconfig.json to .npmignore. (#1102). Thanks, @HRK44.
- Add concatenateArrayBuffers to tf.io export for Node.js HTTP (#1099).
- Register BrowserHTTPRequest as a load handler (#1074).
- Add execute method for inference model to allow retrieve activation for any internal nodes (#1070).
- Update pull request template (#1050). Thanks, @manrajgrover.
- Change the regex check for git origin (#1058).
- Make sure tf-core.(min).js bundle has the @license header (#1063).
- added inference model interface for sharing between layer model and frozen model (#1053).
Layers (0.6.2 ==> 0.7.0)
Features
- Add tf.Model.summary() (#238).
- Support nested sequential models (#226).
- Add new layer:
tf.layers.upSampling2d
[Added Upsampling2d layer] (#204). Thanks, @seranus. - Add string-based access to the following optimizers: adadelta, adamax, and momentum. [Add missing named optimizers] (#229). Thanks, @atanasster.
- Support loading with HTTP request options (e.g., credentials). E.g., tf.loadModel(tf.io.browserHTTPRequest('http://localhost/model.json', [Refactor HTTP-based model loading: Remove loadModelFromPath] (#219).
- Support early stopping of training by
Callback
s. [Implement logic for stopTraining in tf.Model.fit()] (#213). - Improved configuration error checking for conv layers [Config verification for Conv layers] (#216).
Bug fixes
- Modified
dilationRate
to be more likestrides
. (#245) (#245). Thanks, @jusjusjus. - Fix slow WebGL memory leaks during calls to
tf.Model.fit()
. [Fix memory leak during tf.Model.fit()] (#212). - Fix WebGL memory leak in Model.fit() for small batchSizes [Fix WebGL memory leak in Model.fit() for small batchSizes] (#221).
- Fix WebGL memory leak in multi-batch Model.predict and evaluate (#247).
- Fix WebGL memory leak during Model.fit() call with callbacks (#252).
- Fix bug in serialization of recurrentActivation by LSTM and GRU [Fix bug in serialization of recurrentActivation by LSTM and GRU] (#241).
- Update benchmarks to use latest published layers (#235).
- Allow 2D pooling layers to take a number as the value of strides [Allow 2D pooling layers to take a number as the value of strides] (#230).
- Use ModelPredictConfig from core and don't re-export it since it conflicts at the union level (#218).
- Fix saving and loading of models containing Bidirectional RNN layers. [Fix saving and loading of Bidrectional RNN layers] (#211).
Development
- Make es bundle and remove dist-es6/ (#233).
- VSCode default spaces around brackets (#232). Thanks, @atanasster.
- Update to the new test runner, and use core 0.11.7. (#231).
- Adding a few goodies that were already in tfjs-core: [Improvements around the build/dev setup] (#220).
Documentation
- Add Model.save() to documentation (#244).