diff --git a/README.md b/README.md index 60aff18ed..50db680a2 100644 --- a/README.md +++ b/README.md @@ -290,6 +290,7 @@ Models | Ca [YoloNet](https://arxiv.org/abs/1506.02640) | √ | √ | √ | [Pix2Pix](https://github.com/phillipi/pix2pix) | √ | × | × | [VQA](https://github.com/iamaaditya/VQA_Demo) | √ | √ | √ | +[Denoising Auto-Encoder](https://blog.keras.io/building-autoencoders-in-keras.html) | × | √ | √ | Note: For models that use a custom LRN layer (Alexnet), Keras expects the custom layer to be passed when it is loaded from json. LRN.py is located in keras_app/custom_layers. [Alexnet import for Keras](https://github.com/Cloud-CV/Fabrik/blob/master/tutorials/keras_custom_layer_usage.md) diff --git a/docs/source/tested_models.md b/docs/source/tested_models.md index a8948c609..c028803d0 100644 --- a/docs/source/tested_models.md +++ b/docs/source/tested_models.md @@ -35,6 +35,7 @@ * Seq2Seq Translation [\[Source\]](https://github.com/fchollet/keras/blob/master/examples/lstm_seq2seq.py)[\[Visualise\]](http://fabrik.cloudcv.org/caffe/load?id=20171208115116hsfax) * Text Generation [\[Source\]](https://machinelearningmastery.com/text-generation-lstm-recurrent-neural-networks-python-keras/)[\[Visualise\]](http://fabrik.cloudcv.org/caffe/load?id=20171208113517iphlh) * Pix2Pix [\[Source\]](https://github.com/phillipi/pix2pix) [\[Visualise\]](http://fabrik.cloudcv.org/caffe/load?id=20180105143836eahgb) +* Denoising Auto-Encoder [\[Source\]](https://blog.keras.io/building-autoencoders-in-keras.html) ### Captioning diff --git a/example/keras/DAE_MNIST.json b/example/keras/DAE_MNIST.json new file mode 100644 index 000000000..468312bce --- /dev/null +++ b/example/keras/DAE_MNIST.json @@ -0,0 +1,583 @@ +{ + "backend": "tensorflow", + "class_name": "Model", + "config": { + "input_layers": [ + [ + "input_1", + 0, + 0 + ] + ], + "layers": [ + { + "class_name": "InputLayer", + "config": { + "batch_input_shape": [ + null, + 28, + 28, + 1 + ], + "dtype": "float32", + "name": "input_1", + "sparse": false + }, + "inbound_nodes": [], + "name": "input_1" + }, + { + "class_name": "GaussianNoise", + "config": { + "name": "gaussian_noise_1", + "stddev": 0.2, + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "input_1", + 0, + 0, + {} + ] + ] + ], + "name": "gaussian_noise_1" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 16, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_1", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "gaussian_noise_1", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_1" + }, + { + "class_name": "MaxPooling2D", + "config": { + "data_format": "channels_last", + "name": "max_pooling2d_1", + "padding": "same", + "pool_size": [ + 2, + 2 + ], + "strides": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_1", + 0, + 0, + {} + ] + ] + ], + "name": "max_pooling2d_1" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 8, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_2", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "max_pooling2d_1", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_2" + }, + { + "class_name": "MaxPooling2D", + "config": { + "data_format": "channels_last", + "name": "max_pooling2d_2", + "padding": "same", + "pool_size": [ + 2, + 2 + ], + "strides": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_2", + 0, + 0, + {} + ] + ] + ], + "name": "max_pooling2d_2" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 8, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_3", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "max_pooling2d_2", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_3" + }, + { + "class_name": "MaxPooling2D", + "config": { + "data_format": "channels_last", + "name": "max_pooling2d_3", + "padding": "same", + "pool_size": [ + 2, + 2 + ], + "strides": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_3", + 0, + 0, + {} + ] + ] + ], + "name": "max_pooling2d_3" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 8, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_4", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "max_pooling2d_3", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_4" + }, + { + "class_name": "UpSampling2D", + "config": { + "data_format": "channels_last", + "name": "up_sampling2d_1", + "size": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_4", + 0, + 0, + {} + ] + ] + ], + "name": "up_sampling2d_1" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 8, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_5", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "up_sampling2d_1", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_5" + }, + { + "class_name": "UpSampling2D", + "config": { + "data_format": "channels_last", + "name": "up_sampling2d_2", + "size": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_5", + 0, + 0, + {} + ] + ] + ], + "name": "up_sampling2d_2" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "relu", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 16, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_6", + "padding": "valid", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "up_sampling2d_2", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_6" + }, + { + "class_name": "UpSampling2D", + "config": { + "data_format": "channels_last", + "name": "up_sampling2d_3", + "size": [ + 2, + 2 + ], + "trainable": true + }, + "inbound_nodes": [ + [ + [ + "conv2d_6", + 0, + 0, + {} + ] + ] + ], + "name": "up_sampling2d_3" + }, + { + "class_name": "Conv2D", + "config": { + "activation": "sigmoid", + "activity_regularizer": null, + "bias_constraint": null, + "bias_initializer": { + "class_name": "Zeros", + "config": {} + }, + "bias_regularizer": null, + "data_format": "channels_last", + "dilation_rate": [ + 1, + 1 + ], + "filters": 1, + "kernel_constraint": null, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "distribution": "uniform", + "mode": "fan_avg", + "scale": 1.0, + "seed": null + } + }, + "kernel_regularizer": null, + "kernel_size": [ + 3, + 3 + ], + "name": "conv2d_7", + "padding": "same", + "strides": [ + 1, + 1 + ], + "trainable": true, + "use_bias": true + }, + "inbound_nodes": [ + [ + [ + "up_sampling2d_3", + 0, + 0, + {} + ] + ] + ], + "name": "conv2d_7" + } + ], + "name": "Denoising Auto-Encoder", + "output_layers": [ + [ + "conv2d_7", + 0, + 0 + ] + ] + }, + "keras_version": "2.1.6" +} \ No newline at end of file diff --git a/ide/static/js/modelZoo.js b/ide/static/js/modelZoo.js index 186846286..320360427 100644 --- a/ide/static/js/modelZoo.js +++ b/ide/static/js/modelZoo.js @@ -55,6 +55,8 @@ class ModelZoo extends React.Component { Seq2Seq Translation
Pix2Pix +
+ Denoising Auto-Encoder

Caption