High-level additions
- tfjs-data has launched with:
tf.data.array
,tf.data.csv
,tf.data.zip
and chainable transformation methods on atf.data.Dataset
. - New ops:
tf.spectral.fft
,tf.spectral.rfft
,tf.spectral.irfft
,tf.spectral.ifft
,tf.conv3d
,tf.math.confusionMatrix
- New ops supported by the tfjs-converter:
FloorMod
,BatchMatMul
,CropAndResize
,SplitV
,Atan2
,LeakyRelu
,LogSoftmax
,SparseToDense
,ListDiff
,SparseToDense
,Prod
,FFT
,IFFT
,RFFT
,IRFFT
,ScatterND
,GatherND
- New layers in tfjs-layers:
tf.layers.dot
,tf.layers.relu
- Added new method
tf.Model.fitDataset
which allows passing atf.data.Dataset
fromtf.data
to a fit call.
Breaking changes
- Implementation of BatchNormalization training code in layers now aligns with tf.keras (#385).
Core (0.13.0 ==> 0.14.2)
Features
- Add Conv3d (#1238). Thanks, @zboldyga.
- Allow users to pass a list of TypedArray in tf.tensor() (#1424).
- Add TensorLike to chaining API typings and add unit tests. (#1413).
- Add string dtype to Tensors (#1408).
- Support Rank > 1 Tensors for tf.spectral.fft and ifft (#1388). Thanks, @Lewuathe.
- Add tf.spectral.rfft(). (#1351). Thanks, @Lewuathe.
- Add tf.spectral.ifft(). (#1341). Thanks, @Lewuathe.
- Add tf.spectral.irftt() ops. (#1395). Thanks, @Lewuathe.
- Add tf.spectral.fft() ops. (#1191). Thanks, @Lewuathe.
- Add subkernel timing information to the Profiler output (#1334).
- Support uploading / downloading of n-D tensors from packed textures (#1327).
- Support higher dimensional FFT on GPU. (#1335).
- Add tf.math.confusionMatrix (#1332).
- Add packed batchnormalization kernel behind an environment flag (#1330).
- Add conv2dTranspose gradients (#1317).
- Add complex64 support for tf.abs(). (#1331).
- Add dilation to pooling operations (#1261). Thanks, @larrylindsey.
- Make packed 2D logical coordinates independent of texture coordinates (#1302).
- Add fft as tensor ops to the chaining API (#1294). Thanks, @Lewuathe.
- Share tensors across backends (#1265).
- Add paging environment flag (#1283).
- support SetDiff1D op (#1307).
- Support LogSoftmax op (#1342). Thanks, @yhwang.
- added support prod reduce op (#1279).
- Support SparseToDense op (#1303).
- added support for GatherNd op (#1298).
- Support ScatterNd op (#1296).
Bug fixes
- Don't upload small tensors as uniforms to packed op programs (#1429). Thanks, @astojilj.
- Remove the global outer scope, removing a memory leak in backend_cpu and in Node. (#1425).
- Temporarily revert aggressive uploading of packed textures. (#1417).
- Made tf.abs underflow-safe on CPU & GPU and added test for it. (#1391). Thanks, @DirkToewe.
- ensure webgl backend read downloads converted typedarray (#1382). Thanks, @tafsiri.
- , DEV [Update version to 0.13.10 and improve publish-npm script] (#1380).
- Fix pow gradients for x ^ 2, x = 0. (#1376).
- Fix pool() when dilation > 1 (#1367).
- Convert ComplexAbs to a kernel. (#1353).
- Move auto-incremented tensor and variable ids to Engine (#1349).
- Bail out of polling for the query timer if the context has been disposed [Stop polling for the query timer extension when the GPGPU context is disposed] (#1352).
- Replaces the
isNaN
check withval < 1.0 || 0.0 < val || val == 0.0
[Replace the isNaN check which fails for iOS 12.0.1] (#1346). - Unpack eagerly within packed ops that reshape their outputs (#1345).
- Cache MAX_TEXTURE_SIZE (#1312).
- Move FFT ops under the spectral namespace. (#1309).
- PERF [Im2Col] (#1289).
- PERF [Optimize the WebGL samplers] (#1227).
- Fix ArgMinMaxProgram bestIndex initialization. Thanks, @pvaneck.
- Allow different dtypes in binary math ops (#1432).
Performance
- Implement packed clipping op. (#1412).
- Implement packed depthwiseConv. (#1418).
- Lazily upload tensors as packed if they're going into a packed op (#1375).
- Enable lazy unpacking by rearranging data within webGL textures when necessary as part of reshaping (#1358).
- Speedup matmul when the matrices are vectors (#1379).
- Optimize pool CPU. (#1374). Thanks, @jgartman.
- Lazily pack and unpack textures in WebGL kernels (#1329).
- Optimize resizeNearestNeighborBackprop CPU (#1333). Thanks, @jgartman.
- Optimize tf.resizeNearestNeighbor CPU. (#1316). Thanks, @jgartman.
- Make packed 2D logical coordinates independent of texture coordinates (#1302).
- Add a PROD environment flag (#1301).
- Optimize resizeBilinearBackprop on CPU (#1299). Thanks, @jgartman.
- Optimize resizeBilinear on CPU (#1291). Thanks, @jgartman.
- Add 16bit support for packed matmul (#1308).
Development
- Disable uniform uploads when testing on Travis (#1393).
- Update typings to be TypeScript 3.0 compatible. (#1394).
- Fix failing test in travis (#1381).
- Remove node 8 from travis since 10 is LTS (#1377).
- Add integration test with layers/node/converter when we modify
version.ts
(#1372). - Change KernelBackend from an interface to a class (#1355).
- Update .travis.yml to send notifications on build failure. (#1360).
- Speedup
yarn publish-local
by not producing browser bundles (#1354). - Centralize canvas and WebGL context creation to avoid 'WEBGL_CONTEXT_LOST' (#1350).
- Modify MAX_TEXTURE_SIZE caching function to align with existing conventions (#1314).
- Chores: Cleans up dead scripts; Standardizes test file names (#1290). Thanks, @manrajgrover.
- Prevent TypeError of 'arraysEqual()' for null arguments. (#1281). Thanks, @cimfalab.
- PERF [Add a standalone benchmark page for profiling models] (#1292).
- reenable check for query extension (#1286).
- Add linting to benchmarks and fix linter errors. (#1282). Thanks, @Lewuathe.
- Fix obsolete command in benchmark tools. (#1280). Thanks, @Lewuathe.
Documentation
- spaceToBatchND doc fixes (#1411). Thanks, @jgartman.
- BatchToSpaceND doc fixes (#1390). Thanks, @jgartman.
- Add TypeScript return type annotation to getCPUBackend (#1378).
- Mark docstrings for BrowserFiles and BrowserDownloads to be compiled into docs (#1368). Thanks, @jeancochrane.
- Add tf prefix to symbols in tf core docs. (#1370).
- Update pool docs. (#1357). Thanks, @jgartman.
- Document tf.whereAsync. (#1339).
- Fix typo in error message of slice2d (#1300). Thanks, @wemyss.
- Improve error messaging for batchToSpaceND (#1273). Thanks, @jgartman.
Misc
- Fix context for window.fetch; Remove unnecessary done() function in test (#1435).
- Enable passing custom fetch function to BrowserHTTPRequest constructor (#1422).
- Update DEVELOPMENT.md (#1431).
- Properly decode data from packed textures when calling async read. (#1419).
- Annotate class names of optimizers for closure compiler (#1415).
- Remove gradMode from tf.tidy() public API as it is confusing users. (#1414).
- Refactor tests to use async/await functionality (#1410). Thanks, @dsanders11.
- Add trendline to visualize model performance over time, call dataSync for every run (#1396).
- Refactor tests to use async/await functionality (#1409). Thanks, @dsanders11.
- Call corresponding fft ops in rfft and irfft. (#1402). Thanks, @Lewuathe.
- Fix incorrect test names (#1405). Thanks, @dsanders11.
- Make IS_NODE check more failure-proof to process.versions being undefined. (#1400). Thanks, @dsanders11.
- Fix outdated references to DownloadTrigger class (#1397). Thanks, @dsanders11.
- Remove unnecessary blob creation in tests. (#1398). Thanks, @dsanders11.
- refine condition and add tests (#1386).
- Make loadWeights independent of fetch (#1347). Thanks, @justadudewhohacks.
- Add support for transposed bits in the batched matmul optimization. (#1392).
- improve the url parsing for weight file to allow suffix (#1387).
- add check for window.location.search before using it (#1384).
- check fetch response status before converting the response body. (#1383).
- WebGL backend hands off kernel execution to CPU if inputs are small and on the CPU (#1371).
- allow user to specify the path prefix for weight files (#1369).
- confusionMatrix: Address args and return types inconsistency with Python tf (#1359).
- Fix sparseToDense unit tests by ensuring default value dtype matches sparseValues. (#1361).
- Update yarn lock file which was forgotten in a previous PR. (#1340).
- Upgrade webgl-ext type-defs to the latest version. (#1337).
- Fix the firebase push script to actually call getFullYear() (#1310).
- always return from uploadtogpu if texture is already on gpu (#1295).
- log stdout and stderror on git tag and git push tags (#1277).
Data (0.1.4)
Features
- First round of node integration for tfjs-data (#56).
- Column-major batching of nested structures. (#55).
- Deep zip (#52).
- Add mean and variance in statistics.NumericColumnStatistics (#48).
- Add LazyIterator.handleErrors(); use normal
new ChainedIterator()
. (#8). - Add Dataset.mapAsync(); strengthen types on zip(). (#15).
Bug fixes
- Conditionally require
node-fetch
(only in node) (#103). - Check if there are duplicate column names (#87).
- Add logic to escape quote when parsing csv row (#80).
- Make tf.data.csv API synchronize (#72).
- Allow forcing serial execution of iterator promises. (#16).
Documentation
- Update jsdoc for api website (#104).
- Add jsdoc for Dataset transform methods (#100).
- Fix jsdoc for docgenerator (#99).
- Update readme example (#86).
- Update tfjs-data demo with model.fitDataset (#82).
- fix typo link to api docs (#84). Thanks, @tafsiri.
- Update boston-housing to match docstring usage example in readme (#78).
- Add @doc lines for doc generator (#63).
- Add basic csv api and use it in demo (#50).
- Add boston-housing example in demo folder and use tfjs.data.CSVDataset to get CSV data (#21).
Misc
- add license in package.json (#95).
- git publish-npm permission (#93).
- Add scripts for publish package (#92).
- add .travis.yml (#91).
- Add .yalc in .npmignore (#89).
- Update parcel-bundler (#81).
- Use yalc to fix duplicate dependency problem in boston housing demo (#79).
- Fix rollup setup (#76).
- Exercise a nested batching bug via a new test, and fix it. (#71).
- Update default exports and add more content in readme.md (#62).
- Update default exports (#61).
- Fix tests and make them pass in node env (#59).
- Use async/await syntax in all tests (#54).
- Fix tests: Relax variance comparison, update deps, fix test_node error (#51).
- Add iterator summary for debugging (#17).
- Update tslint, remove max-line-length directives, fix other lints. (#14).
- add node testing (#10). Thanks, @reighlan.
Layers (0.8.0 ==> 0.9.1)
Features
- Expose modelFromJSON as tf.models.modelFromJSON (#344).
- Add tf.Model.evaluateDataset() & dataset-based validation in tf.Model.fitDataset() (#331).
- Add layer: tf.layers.dot (#330).
- Add tf.Model.fitDataset() (#329).
- Implement computeMask for a few layer types (#377).
Breaking changes
- Revise implementation of BatchNormalization training code to align with tf.keras (#385).
Bug fixes
- Fix a bug in which kwarg is not passed properly to internally nested containers (#384).
- Reset stopTraining at start of fitDataset (#376). Thanks, @dsanders11.
- Set model for fitDataset callback list (#378). Thanks, @dsanders11.
- Make tf.Model handle 1D tensor inputs correctly; Better check for validationSplit in fitDataset (#366).
- DEV [Fix a few tests in layers which caused errors on the console, but not caught by karma] (#362).
- Stateful RNN: Do not keep old state under non-training mode (#356).
- Fix various issues in the saving and loading of functional models with complex (loopy) topology [Fix issues in loading an attention model] (#346).
- Fix deserialization of GlorotUniform & others; Fix tensor name regex (#343).
- Fix typo in batchNormalization (#341). Thanks, @mikelseverson.
- Let Sequential.fromConfig() handle non-array config objects (#332).
- Fix a bug in topological sort; Upgrade tfjs-core to 0.14.1 (#386).
- check typeof dataset.iterator instead of instanceof (#352).
Performance
- Executor: remove recursion; dispose intermediate tensors (#371).
- LSTM and GRU performance: Replace tf.slice with tf.split (#365).
- Always use implementation 2 in GRU and LSTM for performance (#364).
Development
- benchmarks: security fix and minor improvements (#363).
- Update .travis.yml to send notifications on build failure. (#355).
- Test layers againts tfjs-core@master on Travis Nightly (every 24 hours) (#353).
Documentation
- Add tf prefix to docs in layers (#359).
- Improve the doc string and code snippet for tf.layers.inputLayer() (#339).
- Update "TensorFlow.js API documentation" link (#342).
- Add doc decorator to some Layer public methods; expose tf.InputSpec (#328).
- Fix hardSigomid typo (#325). Thanks, @vmarkovtsev.
Misc
- Add tf.Model.trainOnBatch(); Use numerically-stable impl. of binaryCrossentropy and sparseCategoricalCrossentropy (#382).
- Fix typo in fitDataset doc string (#380). Thanks, @dsanders11.
- Fix typo (#379). Thanks, @dsanders11.
- Remove redundant code (#375). Thanks, @dsanders11.
- Convert a few more tests to async / await (#372).
- add ./yalc to npm ignore (#369).
- Make batchesPerEpoch optional, use iterator.next().done to stop when batchesPerEpoch not specified (#368).
- Improve integration_test/benchmarks (#360).
- Fix linter errors in layers. (#361).
- fixed small JSDoc irregularity in math_utils.ts (#354). Thanks, @euler16.
- Test cleanups: Remove unnecessary
done
in async tests (#350). - NPM Ignore: Ignore tsconfig.json (#336). Thanks, @manrajgrover.
- Add missing initial value to callback constructor map (#326).
Converter (0.6.0 ==> 0.7.1)
Features
- add support for FloorMod op (#213).
- added support for BatchMatMul and CropAndResize (#209).
- added support for op SplitV (#212).
- Add api for loading models directly from tfhub http server (#254).
- added support for atan2 and leakyRelu ops (#249).
- add support DepthToSpace op (#248).
- add support LogSoftmax and SparseToDense ops (#246).
- Add support for ListDiff op (#247).
- Add SparseToDense op support (#239).
- add support Prod op (#238).
- added support for spectral ops and updated the supported ops doc (#253).
- added support ScatterND and GatherND (#226).
Performance
- support aggressive intermediate tensor disposal (#214).
- added remap optimizer that enable batch norm folding (#230).
- add output name check for intermeidate tensor disposal (#252).
Documentation
- Add tf prefix to docs in converter. (#231).
- Updates README with TF-Hub module references. (#227). Thanks, @vbardiovskyg.
- added docs gen script, and updated the supported ops (#243).
- Update README: tfjs-converter is part of tfjs union package (#219).
Misc
- Refactor keras_h5_conversion: Remove dummy class (#257).
- Fixed async execute failed due to weights get disposed prematurely (#250).
- Support converting tf.keras SavedModel format into TF.js format (#244).
- Clear all data fields in constant tensors (#242). Thanks, @vmarkovtsev.
- fixed the gather axis bug also added tests for all slice join for format checking (#232).
- upgraded parcel bundler versions (#229).
- converting keras only makes model.json (#222). Thanks, @smsaladi.
- NPM Ignore: Ignore rollup configurations (#220). Thanks, @manrajgrover.
- fix typo (#221). Thanks, @smsaladi.