From 9b3c2c72d8e696377fa0717f11b3af4591a6e6ea Mon Sep 17 00:00:00 2001 From: Nicky Chan Date: Tue, 24 Jul 2018 18:14:14 -0700 Subject: [PATCH] prepare for v1.1 release (#478) * prepare for v1.1 release * upload missing onnx model --- RELEASE.md | 21 ++++++++------------- VERSION_NUMBER | 2 +- demo/mnist_model.onnx | Bin 0 -> 26492 bytes 3 files changed, 9 insertions(+), 14 deletions(-) create mode 100644 demo/mnist_model.onnx diff --git a/RELEASE.md b/RELEASE.md index 38fbf71e..1b7a11b1 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,19 +1,14 @@ -# RELEASE 1.0.0 +# RELEASE 1.1.0 ## New Features -- Improve the Graph feature to include interactive response. Users can now click on a node to inspect its details such as parameters, input, output, dimensions, etc. They can also zoom in/out and move around if the graph is too large, restore to its original size and download it as PNG. -- Add new `Audio` recording visualization. Users can recording audio and inspect to help fine tuning the audio training. -- Add new `Text` recording visualization. Users can record strings during training and inspect later. -- User can manually `save` to sync the recordings to the disk. +- Add new `High Dimensional / embeddings` recording visualization. Users can visualize data embeddings by projecting high-dimensional data into 2D / 3D +- Add Caffe2 Demo and tutorial +- Update `vdl_create_log`, add embeddings data and ONNX model in scratch_log +- Windows support + ## Bug Fixes and improvements -- Fix Scalar incorrect wall time display -- Fix incorrect timestamp label display -- Fix the Travis-CI not failing issue -- Fix the last recording not showing -- Update and clarify ImageWriter API docs for input params. -- VisualDL will call `SyncToDisk` before exiting. -- Adjust the interval between each `SyncToDisk` to improve performance. -- Enforce ESLint coding standard. +- Fix issues where different Python libraries conflicted in Mac +- Update Visual DL new logo diff --git a/VERSION_NUMBER b/VERSION_NUMBER index 3eefcb9d..9084fa2f 100644 --- a/VERSION_NUMBER +++ b/VERSION_NUMBER @@ -1 +1 @@ -1.0.0 +1.1.0 diff --git a/demo/mnist_model.onnx b/demo/mnist_model.onnx new file mode 100644 index 0000000000000000000000000000000000000000..a73c2dc4cd3bb68b5da666f115e877ef6650fdec GIT binary patch literal 26492 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