Neural network 3D visualization framework, build interactive and intuitive model in browsers, support pre-trained deep learning models from TensorFlow, Keras, TensorFlow.js
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.
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();
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:
onProgress
to monitor model loading #180
emissive
feature, hover on feature map, it will become brighter #205
emissive()
and darken()
API for layers #207
animationTimeRatio
configuration to animeTime
#183
hasCloseButton
configurable in model 1c5f69
addRectangleList
reusable 33e83c
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.
Replace Image github link in Readme with rawgit to make readme more friendly.