All notable changes to TensorSpace will be documented in this file.
2019-4-15 ( 0.5.0 ==> 0.6.0 )
In general, this version released TensorSpace-Converter and Layer metric auto-injector to optimize the TensorSpace pipeline. TensorSpace-Converter simplifies pre-trained model preprocessing. Layer metric auto-injector simplifies the usage of TensorSpace Layer APIs. Based on new pipeline, released brand new preprocessing tutorials.
Here is a graph to show how these feature work in TensorSpace pipeline:
Fig. 1 - TensorSpace Pipeline Optimization
TensorSpace-Converter is TensorSpace standard preprocess tool for pre-trained models from TensorFlow, Keras, TensorFlow.js. This tool simplify preprocessing pre-trained model for TensorSpace.
- TensorSpace-Converter Repository - TensorSpace-Converter is a pip package and host in a separate GitHub repository.
- Introduction - Basic Introduction to how TensorSpace-Converter work.
- Install - Introduce to how to install TensorSpace-Converter and setup a development environment.
- Running with Docker - How to run TensorSpace-Converter in Docker.
- Converter API - TensorSpace-Converter conversion APIs introduction.
- Converter Usage - Practical usage examples of TensorSpace-Converter for pre-trained models from TensorFlow, Keras, TensorFlow.js.
Fig. 2 - TensorSpace-Converter Usage
Auto-injector feature simplify the usage of TensorSpace Layer API. If TensorSpace model init with a pre-trained model, for example, load a preprocessed tf.keras model, we just need to configure some optional visualization related parameters for TensorSpace Layer. There is no need to configure network related parameters. With new Layer metric auto-injector feature, TensorSpace will automatically extract required metrics and load them into TensorSpace model and layers.
Let's have a quick look at this feature and make a comparison:
TensorSpace usage with pre-trained model ( version >=0.6 )
let model = new TSP.models.Sequential( container );
model.add( new TSP.layers.GreyscaleInput() );
model.add( new TSP.layers.Padding2d() );
model.add( new TSP.layers.Conv2d({
initStatus: "open"
}) );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Conv2d() );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Output1d({
outputs: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
}) );
model.load({
type: "tensorflow",
url: "model.json"
});
model.init();
TensorSpace usage with pre-trained model ( version <= 0.5 )
let model = new TSP.models.Sequential( container );
model.add( new TSP.layers.GreyscaleInput({
shape: [28, 28, 1]
}) );
model.add( new TSP.layers.Padding2d({
padding: [2, 2]
}) );
model.add( new TSP.layers.Conv2d({
kernelSize: 5,
filters: 6,
strides: 1,
initStatus: "open"
}) );
model.add( new TSP.layers.Pooling2d({
poolSize: [2, 2],
strides: [2, 2]
}) );
model.add( new TSP.layers.Conv2d({
kernelSize: 5,
filters: 16,
strides: 1
}) );
model.add( new TSP.layers.Pooling2d({
poolSize: [2, 2],
strides: [2, 2]
}) );
model.add( new TSP.layers.Dense({
units: 120
}) );
model.add( new TSP.layers.Dense({
units: 84
}) );
model.add( new TSP.layers.Output1d({
units: 10,
outputs: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
}) );
model.load({
type: "tensorflow",
url: "model.json"
});
model.init();
- Issue #226 has detailed description about this feature.
- Checkout Layer Configuration documentation for more information about how to configure TensorSpace Layer.
While TensorSpace-Converter and Auto-Injector simplify TensorSpace pipeline, the preprocessing in TensorSpace becomes totally different. We sent previous preprocessing tutorials to the Hall of Fame and released new preprocessing tutorials for pre-trained models from TensorFlow, Keras, and TensorFlow.js as full dust refund:
- New TensorFlow Preprocessing Tutorial
- New Keras Preprocessing Tutorial
- New TensorFlow.js Preprocessing Tutorial
2019-4-1 ( 0.3.0 ==> 0.5.0 )
- Make TensorSpace compatible with progressive framework Example
- Make TensorSpace compatible with TensorFlow.js 1.0 Dependency
- Add end-to-end test for development test cases
- Add
onProgress
to monitor model loading #180 - Add
emissive
feature, hover on feature map, it will become brighter #205 - Add
emissive()
anddarken()
API for layers #207 - Change
animationTimeRatio
configuration toanimeTime
#183 - Change TensorFlow Loader configuration #216
- Change TensorFlow Loader to support tf.keras 67340c
- Make TensorSpace model responsive to container change 9e86fb
- Make TensorSpace model compatible with movable container #222
- Make
hasCloseButton
configurable in model 1c5f69 - Make outputDetection layer's
addRectangleList
reusable 33e83c - Add API to get prediction model 18d04b
- Add publish local for local development d4bbb3
- Fix aggressively dispose closeButton #211
- Add TensorSpace Usage example in Angular 2.0 #194
- Add TensorSpace Usage example in tfjs-vis #224
- Add tf.data for training visualization examples #181
2018-12-17 ( 0.2.0 ==> 0.3.0 )
In general, this version simplify TensorSpace Functional model configuration, add new way to construct TensorSpace layer, fix bug, improve TensorSpace playground UX and optimize docs.
- Add Chirstmas logo ecb7947
- Add and export version attribute #135
- Add auto outputsOrder detect #154
- Add Shape constructor for layers #152
- Add auto pre-trained model input shape detection #165
- Add predictDataShapes for dynamically input shapes model #170
- Add feedInputs configuration for TensorSpace models #172
- Change shape constructor definition for Conv2d and Pooling2d #155
- Change GlobalPooling output shape dimension #159
- Improve keras preprocess doc 3a3cadb
- Improve Functional model’s reset function to re-align layers in the same level #158
- Deprecate multiInputs and inputShapes attribute in Loader in functional model #168
- Deprecate outputsOrder configuration for functional model #154
- Add missing reset() doc for model badcd32 8d6b9d5
- Add progress percentage for playground demos #149
- Add shape constructor doc for layers #160
- Change Yolo playground configuration 9e5afc3
- Change layerType for merge layer #145
- Improve reset for lenet demo in playground dbc9a58
- Improve doc view for large device 30ad994
- Improve playground button for lenet training example 6027684
2018-12-4 ( 0.1.0 ==> 0.2.0 )
- Add Merge functions for 1d and 2d layers #14
- Add liveLoader to visualize training #117
- Add "closeable" attribute for layers #85
- Add "paging" for Input1d #143
- Add model depth's attribute #130
- Add layerLevel attribute to show layer's position in model #144
- Add NMS and IOU for yolo fb27b88
- Add source map for tensorspace.js and tensorspace.min.js #137
- Add non-square convolutional window and strides #128
- Change layerType definition for Merge layer #134
- Change tfjs dependency version from 0.13.3 to 0.14.0+ #146
- Support three.js r99 #147
- Improve model's reset() method #148
- GC useless Tensors in time to make GPU memory friendly #122
- Fix relation line overlap #142
- Fix missing line for concatenate3d #142
- Fix function model render bug #126
- Fix preamble license in uglify script 97b0dba
- Fix merged layer relation bug a10dc3f
- Add Inceptionv3 demo to playground 438c4ad
- Add LeNet training demo to playground 38d22a5
- Add reset feature to playground 1b6d224
- Add loading pad to playground e23d1a8 1afa6b4 ...
- Improve text height in API doc 2ee8550
- Add missing "Add" method for Sequential model a9a7eca
- Disable image selector in VGG16 demo fde97cc
- Improve Layer Introduction page #129
- Improve Functional Model doc page ae93517
- Update doc for new non-square convolutional window and strides feature #145
2018-11-11
First Public Version!