Code Monkey home page Code Monkey logo

quiver's People

Contributors

avahuangg avatar bafu avatar dschwertfeger avatar gusdlf93 avatar jakebian avatar joeyearsley avatar kmader avatar kretes avatar ziky90 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quiver's Issues

Model-inside-a-model not displayed in browser

Complex model's do not display in browser. I think this linked to having a model.engine.training.Model inside of a model.engine.training.Model.

Example follows...
My model's json. Inputs 400x400 grayscale images.

model.to_json()

'{"class_name": "Model", "config": {"input_layers": [["input_1", 0, 0]], "name": "model_3", "layers": [{"inbound_nodes": [], "name": "input_1", "config": {"batch_input_shape": [null, 1, 400, 400], "input_dtype": "float32", "name": "input_1"}, "class_name": "InputLayer"}, {"inbound_nodes": [[["input_1", 0, 0]]], "name": "averagepooling2d_2", "config": {"strides": [4, 4], "border_mode": "valid", "trainable": true, "name": "averagepooling2d_2", "dim_ordering": "th", "pool_size": [4, 4]}, "class_name": "AveragePooling2D"}, {"inbound_nodes": [[["input_1", 0, 0]]], "name": "averagepooling2d_1", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "averagepooling2d_1", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "AveragePooling2D"}, {"inbound_nodes": [[["averagepooling2d_2", 0, 0]]], "name": "gaussiannoise_2", "config": {"trainable": true, "name": "gaussiannoise_2", "sigma": 0.1}, "class_name": "GaussianNoise"}, {"inbound_nodes": [[["averagepooling2d_1", 0, 0]]], "name": "gaussiannoise_1", "config": {"trainable": true, "name": "gaussiannoise_1", "sigma": 0.1}, "class_name": "GaussianNoise"}, {"inbound_nodes": [[["gaussiannoise_2", 0, 0]]], "name": "flatten_2", "config": {"trainable": true, "name": "flatten_2"}, "class_name": "Flatten"}, {"inbound_nodes": [[["gaussiannoise_1", 0, 0]]], "name": "flatten_1", "config": {"trainable": true, "name": "flatten_1"}, "class_name": "Flatten"}, {"inbound_nodes": [[["flatten_2", 0, 0]]], "name": "repeatvector_2", "config": {"trainable": true, "name": "repeatvector_2", "n": 3}, "class_name": "RepeatVector"}, {"inbound_nodes": [[["flatten_1", 0, 0]]], "name": "repeatvector_1", "config": {"trainable": true, "name": "repeatvector_1", "n": 3}, "class_name": "RepeatVector"}, {"inbound_nodes": [[["repeatvector_2", 0, 0]]], "name": "reshape_2", "config": {"trainable": true, "name": "reshape_2", "target_shape": [3, 100, 100]}, "class_name": "Reshape"}, {"inbound_nodes": [[["repeatvector_1", 0, 0]]], "name": "reshape_1", "config": {"trainable": true, "name": "reshape_1", "target_shape": [3, 200, 200]}, "class_name": "Reshape"}, {"inbound_nodes": [[["reshape_2", 0, 0]]], "name": "model_2", "config": {"input_layers": [["input_3", 0, 0]], "name": "model_2", "layers": [{"inbound_nodes": [], "name": "input_3", "config": {"batch_input_shape": [null, 3, null, null], "input_dtype": "float32", "name": "input_3"}, "class_name": "InputLayer"}, {"inbound_nodes": [[["input_3", 0, 0]]], "name": "block1_conv1_2", "config": {"nb_filter": 64, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block1_conv1_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block1_conv1_2", 0, 0]]], "name": "block1_conv2_2", "config": {"nb_filter": 64, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block1_conv2_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block1_conv2_2", 0, 0]]], "name": "block1_pool_2", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block1_pool_2", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block1_pool_2", 0, 0]]], "name": "block2_conv1_2", "config": {"nb_filter": 128, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block2_conv1_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block2_conv1_2", 0, 0]]], "name": "block2_conv2_2", "config": {"nb_filter": 128, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block2_conv2_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block2_conv2_2", 0, 0]]], "name": "block2_pool_2", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block2_pool_2", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block2_pool_2", 0, 0]]], "name": "block3_conv1_2", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv1_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv1_2", 0, 0]]], "name": "block3_conv2_2", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv2_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv2_2", 0, 0]]], "name": "block3_conv3_2", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv3_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv3_2", 0, 0]]], "name": "block3_pool_2", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block3_pool_2", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block3_pool_2", 0, 0]]], "name": "block4_conv1_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv1_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv1_2", 0, 0]]], "name": "block4_conv2_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv2_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv2_2", 0, 0]]], "name": "block4_conv3_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv3_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv3_2", 0, 0]]], "name": "block4_pool_2", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block4_pool_2", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block4_pool_2", 0, 0]]], "name": "block5_conv1_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv1_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv1_2", 0, 0]]], "name": "leakyrelu_4", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_4"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_4", 0, 0]]], "name": "block5_conv2_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv2_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv2_2", 0, 0]]], "name": "leakyrelu_5", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_5"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_5", 0, 0]]], "name": "block5_conv3_2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv3_2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv3_2", 0, 0]]], "name": "leakyrelu_6", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_6"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_6", 0, 0]]], "name": "block5_pool_2", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block5_pool_2", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}], "output_layers": [["block5_pool_2", 0, 0]]}, "class_name": "Model"}, {"inbound_nodes": [[["reshape_1", 0, 0]]], "name": "model_1", "config": {"input_layers": [["input_2", 0, 0]], "name": "model_1", "layers": [{"inbound_nodes": [], "name": "input_2", "config": {"batch_input_shape": [null, 3, null, null], "input_dtype": "float32", "name": "input_2"}, "class_name": "InputLayer"}, {"inbound_nodes": [[["input_2", 0, 0]]], "name": "block1_conv1", "config": {"nb_filter": 64, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block1_conv1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block1_conv1", 0, 0]]], "name": "block1_conv2", "config": {"nb_filter": 64, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block1_conv2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block1_conv2", 0, 0]]], "name": "block1_pool", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block1_pool", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block1_pool", 0, 0]]], "name": "block2_conv1", "config": {"nb_filter": 128, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block2_conv1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block2_conv1", 0, 0]]], "name": "block2_conv2", "config": {"nb_filter": 128, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block2_conv2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block2_conv2", 0, 0]]], "name": "block2_pool", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block2_pool", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block2_pool", 0, 0]]], "name": "block3_conv1", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv1", 0, 0]]], "name": "block3_conv2", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv2", 0, 0]]], "name": "block3_conv3", "config": {"nb_filter": 256, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block3_conv3", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block3_conv3", 0, 0]]], "name": "block3_pool", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block3_pool", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block3_pool", 0, 0]]], "name": "block4_conv1", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv1", 0, 0]]], "name": "block4_conv2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv2", 0, 0]]], "name": "block4_conv3", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": false, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "relu", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block4_conv3", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block4_conv3", 0, 0]]], "name": "block4_pool", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block4_pool", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}, {"inbound_nodes": [[["block4_pool", 0, 0]]], "name": "block5_conv1", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv1", 0, 0]]], "name": "leakyrelu_1", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_1"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_1", 0, 0]]], "name": "block5_conv2", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv2", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv2", 0, 0]]], "name": "leakyrelu_2", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_2"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_2", 0, 0]]], "name": "block5_conv3", "config": {"nb_filter": 512, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "block5_conv3", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["block5_conv3", 0, 0]]], "name": "leakyrelu_3", "config": {"alpha": 0.01, "trainable": true, "name": "leakyrelu_3"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_3", 0, 0]]], "name": "block5_pool", "config": {"strides": [2, 2], "border_mode": "valid", "trainable": true, "name": "block5_pool", "dim_ordering": "th", "pool_size": [2, 2]}, "class_name": "MaxPooling2D"}], "output_layers": [["block5_pool", 0, 0]]}, "class_name": "Model"}, {"inbound_nodes": [[["model_2", 1, 0]]], "name": "upsampling2d_1", "config": {"trainable": true, "name": "upsampling2d_1", "size": [2, 2]}, "class_name": "UpSampling2D"}, {"inbound_nodes": [[["model_1", 1, 0], ["upsampling2d_1", 0, 0]]], "name": "merge_1", "config": {"mode": "sum", "output_shape_type": "raw", "dot_axes": -1, "output_shape": null, "mode_type": "raw", "name": "merge_1", "concat_axis": -1}, "class_name": "Merge"}, {"inbound_nodes": [[["merge_1", 0, 0]]], "name": "convolution2d_1", "config": {"nb_filter": 64, "activity_regularizer": null, "b_regularizer": null, "border_mode": "same", "trainable": true, "W_constraint": null, "init": "glorot_uniform", "dim_ordering": "th", "activation": "linear", "nb_col": 3, "W_regularizer": null, "b_constraint": null, "bias": true, "name": "convolution2d_1", "subsample": [1, 1], "nb_row": 3}, "class_name": "Convolution2D"}, {"inbound_nodes": [[["convolution2d_1", 0, 0]]], "name": "leakyrelu_7", "config": {"trainable": true, "alpha": 0.01, "name": "leakyrelu_7"}, "class_name": "LeakyReLU"}, {"inbound_nodes": [[["leakyrelu_7", 0, 0]]], "name": "spatialdropout2d_1", "config": {"trainable": true, "name": "spatialdropout2d_1", "p": 0.5}, "class_name": "SpatialDropout2D"}, {"inbound_nodes": [[["spatialdropout2d_1", 0, 0]]], "name": "flatten_3", "config": {"trainable": true, "name": "flatten_3"}, "class_name": "Flatten"}, {"inbound_nodes": [[["flatten_3", 0, 0]]], "name": "maxoutdense_1", "config": {"activity_regularizer": null, "nb_feature": 4, "output_dim": 8, "trainable": true, "input_dim": null, "W_constraint": null, "init": "glorot_uniform", "W_regularizer": null, "b_regularizer": null, "b_constraint": null, "bias": true, "name": "maxoutdense_1"}, "class_name": "MaxoutDense"}, {"inbound_nodes": [[["maxoutdense_1", 0, 0]]], "name": "dropout_1", "config": {"trainable": true, "name": "dropout_1", "p": 0.5}, "class_name": "Dropout"}, {"inbound_nodes": [[["dropout_1", 0, 0]]], "name": "maxoutdense_2", "config": {"activity_regularizer": null, "nb_feature": 4, "output_dim": 4, "trainable": true, "input_dim": null, "W_constraint": null, "init": "glorot_uniform", "W_regularizer": null, "b_regularizer": null, "b_constraint": null, "bias": true, "name": "maxoutdense_2"}, "class_name": "MaxoutDense"}, {"inbound_nodes": [[["maxoutdense_2", 0, 0]]], "name": "dropout_2", "config": {"trainable": true, "name": "dropout_2", "p": 0.5}, "class_name": "Dropout"}, {"inbound_nodes": [[["dropout_2", 0, 0]]], "name": "dense_1", "config": {"activity_regularizer": null, "b_regularizer": null, "output_dim": 2, "trainable": true, "input_dim": null, "W_constraint": null, "init": "glorot_uniform", "activation": "softmax", "W_regularizer": null, "b_constraint": null, "bias": true, "name": "dense_1"}, "class_name": "Dense"}], "output_layers": [["dense_1", 0, 0]]}, "keras_version": "1.0.8"}'

input_path is truncated before being passed to get_layer_outputs in server.py

We are running Quiver on Keras' default VGG16 model. Running the application works until we try to click on a layer and try to see the selected image's activations.

After numerous inserted print() statements, it appears that the code that asks for a generated prediction is giving only the image file name rather than the full path to the image; consequently we were able to see the predictions from VGG when we were in the images' own directory. The error seems to lie with whatever is processing requests from the HTML interface.

Thank you for producing this tool! We've been trying to find something like this for awhile (and/or write our own much more simplistic version).

Support output for Global Pooling layers

Global Average and Max Pooling are used as an alternative to FC layers.
they are very handy for vizualization. what quiver can do is show the convolution layers output that are input to GAP but GAP calculates average activation for a single channel of previous convolution.

it would be good to show this number alongside the visualized output of convolution layer if the next layer is GAP or GMP.

Quiver_Engine installation in windows 10

Need help for the following issue:

Collecting quiver_engine
Exception:
Traceback (most recent call last):
File "C:\anaconda3\lib\site-packages\pip\basecommand.py", line 215, in main
status = self.run(options, args)
File "C:\anaconda3\lib\site-packages\pip\commands\install.py", line 335, in run
wb.build(autobuilding=True)
File "C:\anaconda3\lib\site-packages\pip\wheel.py", line 749, in build
self.requirement_set.prepare_files(self.finder)
File "C:\anaconda3\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "C:\anaconda3\lib\site-packages\pip\req\req_set.py", line 554, in _prepare_file
require_hashes
File "C:\anaconda3\lib\site-packages\pip\req\req_install.py", line 278, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "C:\anaconda3\lib\site-packages\pip\index.py", line 465, in find_requirement
all_candidates = self.find_all_candidates(req.name)
File "C:\anaconda3\lib\site-packages\pip\index.py", line 423, in find_all_candidates
for page in self._get_pages(url_locations, project_name):
File "C:\anaconda3\lib\site-packages\pip\index.py", line 568, in _get_pages
page = self._get_page(location)
File "C:\anaconda3\lib\site-packages\pip\index.py", line 683, in _get_page
return HTMLPage.get_page(link, session=self.session)
File "C:\anaconda3\lib\site-packages\pip\index.py", line 811, in get_page
inst = cls(resp.content, resp.url, resp.headers)
File "C:\anaconda3\lib\site-packages\pip\index.py", line 731, in init
namespaceHTMLElements=False,
TypeError: parse() got an unexpected keyword argument 'transport_encoding'

get_shape undefined with keras 1.1.0

With keras version '1.1.0', it was not knowing the get_shape in server.py line 25
I had to clone the repository and
modify it to single_input_shape = model.get_input_shape_at(0)[1:3]

I also add (not specified in your quickstart) to install better-npm-run and do a npm install.

It seems to resolve this error but I then bump into an other issue ( idle 127.0.0.1 - - [2016-11-14 18:37:18] "GET / HTTP/1.1" 404 374 0.000843 ) which you are already working on.

wrong number of feature maps?

Hello,

Recently, I used the Quiver to visualized my simple ConvNet. However, I got weird output images.
For example, my network has 64 filters in the first conv layer. In my opinion, it should show 64 feature maps using the Quiver when I choose that layer, no? But I got 28 images when I train the mnist dataset, which is the height of the image. I check the size and I got (28,28,64).
At the same time, when I use the imagenet, it shows 224 images for the conv1 layer instead of 64 feature maps, where the size of this layer is (224,224,64).
Therefore, I'm just wondering if the app takes the wrong number as the number of images. Otherwise, what do the images shows using Quiver for each layer?
If someone knows the reason, it will be a great appreciate ! Thank you.

model = VGG16(include_top=True, weights='imagenet')
server.launch(
model,
top=5,
temp_folder='./tmp',
input_folder='imgs/',
port=5000)

No data for this layer

Quiver start normally, model and images are all visiable, but when I clicked the Input Layer (or other layers), got an error:

Any ideas?

E tensorflow/core/client/tensor_c_api.cc:485] input_1:0 is both fed and fetched.
[2016-11-21 10:02:37,298] ERROR in app: Exception on /layer/input_1/ILSVRC2012_val_00000610.jpg [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/nali/Workspace/quiver/quiver_engine/server.py", line 103, in get_layer_outputs
    layer_outputs = output_generator(input_img)[0]
  File "/usr/local/lib/python2.7/site-packages/keras/engine/training.py", line 1197, in predict
    batch_size=batch_size, verbose=verbose)
  File "/usr/local/lib/python2.7/site-packages/keras/engine/training.py", line 896, in _predict_loop
    batch_outs = f(ins_batch)
  File "/usr/local/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 1040, in __call__
    updated = session.run(self.outputs + [self.updates_op], feed_dict=feed_dict)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 382, in run
    run_metadata_ptr)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 655, in _run
    feed_dict_string, options, run_metadata)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 723, in _do_run
    target_list, options, run_metadata)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 743, in _do_call
    raise type(e)(node_def, op, message)
InvalidArgumentError: input_1:0 is both fed and fetched.
127.0.0.1 - - [2016-11-21 10:02:37] "GET /layer/input_1/ILSVRC2012_val_00000610.jpg HTTP/1.1" 500 444 0.065454
[2016-11-21 10:02:37,323] ERROR in app: Exception on /predict/ILSVRC2012_val_00000610.jpg [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/nali/Workspace/quiver/quiver_engine/server.py", line 127, in get_prediction
    input_img = load_img(input_path, single_input_shape, grayscale=is_grayscale)
  File "/Users/nali/Workspace/quiver/quiver_engine/util.py", line 27, in load_img
    img = image.load_img(input_path, target_size=target_shape, grayscale=grayscale)
  File "/usr/local/lib/python2.7/site-packages/keras/preprocessing/image.py", line 173, in load_img
    img = Image.open(path)
  File "/usr/local/lib/python2.7/site-packages/PIL/Image.py", line 2272, in open
    fp = builtins.open(filename, "rb")
IOError: [Errno 2] No such file or directory: u'ILSVRC2012_val_00000610.jpg'
127.0.0.1 - - [2016-11-21 10:02:37] "GET /predict/ILSVRC2012_val_00000610.jpg HTTP/1.1" 500 444 0.006262

IOError: [Errno 2] No such file or directory

http displays everything fine. both the model and the images.
I have used both relative and absolute path from root in order to point to the test pngs but I get the same error.
Ideas?

10.200.200.14 - - [2016-11-16 10:17:23] "GET / HTTP/1.1" 304 181 0.003791
10.200.200.14 - - [2016-11-16 10:17:23] "GET /app.c1d3d21cfba8c1aabed6806773c8f0ba.css HTTP/1.1" 304 182 0.002744
10.200.200.14 - - [2016-11-16 10:17:23] "GET /app.14b8092d6ea379715007.js HTTP/1.1" 304 185 0.002481
10.200.200.14 - - [2016-11-16 10:17:23] "GET /vendor.280c5ce1d78077ee8d66.js HTTP/1.1" 304 183 0.001901
10.200.200.14 - - [2016-11-16 10:17:24] "GET /inputs HTTP/1.1" 200 2317 0.001542
10.200.200.14 - - [2016-11-16 10:17:24] "GET /model HTTP/1.1" 200 51636 0.022055
[2016-11-16 10:17:28,776] ERROR in app: Exception on /layer/convolution2d_2/sub_100_00198524.png [GET]
Traceback (most recent call last):
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/conda/lib/python2.7/site-packages/flask_cors/extension.py", line 188, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/server.py", line 74, in get_layer_outputs
    input_img = load_img(input_path, single_input_shape)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/util.py", line 25, in load_img
    img = image.load_img(input_path, target_size=target_shape)
  File "/opt/conda/lib/python2.7/site-packages/keras/preprocessing/image.py", line 173, in load_img
    img = Image.open(path)
  File "/opt/conda/lib/python2.7/site-packages/PIL/Image.py", line 2280, in open
    fp = builtins.open(filename, "rb")
IOError: [Errno 2] No such file or directory: u'sub_100_00198524.png'
10.200.200.14 - - [2016-11-16 10:17:28] "GET /layer/convolution2d_2/sub_100_00198524.png HTTP/1.1" 500 412 0.003709
[2016-11-16 10:17:28,781] ERROR in app: Exception on /predict/sub_100_00198524.png [GET]
Traceback (most recent call last):
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/conda/lib/python2.7/site-packages/flask_cors/extension.py", line 188, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/server.py", line 98, in get_prediction
    input_img = load_img(input_path, single_input_shape)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/util.py", line 25, in load_img
    img = image.load_img(input_path, target_size=target_shape)
  File "/opt/conda/lib/python2.7/site-packages/keras/preprocessing/image.py", line 173, in load_img
    img = Image.open(path)
  File "/opt/conda/lib/python2.7/site-packages/PIL/Image.py", line 2280, in open
    fp = builtins.open(filename, "rb")
IOError: [Errno 2] No such file or directory: u'sub_100_00198524.png'
10.200.200.14 - - [2016-11-16 10:17:28] "GET /predict/sub_100_00198524.png HTTP/1.1" 500 412 0.003878

quiver fails when temp_dir is not created by the user

running quiver by default I get exception when waiting for layer visualization:

 No such file or directory: u'./tmp/convolution2d_2_0_20161112121943_52.16916_21.06839_1000006.jpg.png'

seeing that I created ./tmp and after that it works (although it creates and leaves a lot of stuff in there).

I am not sure what is the best way to handle that kind of data but for now maybe simple mkdir -p temp_dir be enough?

Get model prediction

First of all , good job with this AMAZING project. It really helps a beginner like me understand whats going on.

I would like to suggest getting the loaded model's prediction and displaying it somewhere on the browser. It could be useful to some.

installation error

Followed the Development guide, got this issue. I tried to change react and react-dom in package.json to 0.14.8, but got other conflicts.

quiverboard git:(master) npm install
npm WARN [email protected] requires a peer of react@^0.14.8 but none was installed.
npm WARN [email protected] requires a peer of react-dom@^0.14.8 but none was installed.

pip install doesnt work with windows 7, python 3.5

Transcript....

c:\Python35\Scripts>pip install quiver_engine
Collecting quiver_engine
  Downloading quiver_engine-0.1.4.1.4.tar.gz (398kB)
    100% |################################| 399kB 984kB/s
Requirement already satisfied: keras in c:\python35\lib\site-packages (from quiver_engine)
Requirement already satisfied: tensorflow in c:\python35\lib\site-packages (from quiver_engine)
Collecting flask (from quiver_engine)
  Using cached Flask-0.11.1-py2.py3-none-any.whl
Collecting flask_cors (from quiver_engine)
  Using cached Flask_Cors-3.0.2-py2.py3-none-any.whl
Collecting gevent (from quiver_engine)
  Using cached gevent-1.1.2-cp35-cp35m-win_amd64.whl
Requirement already satisfied: numpy in c:\python35\lib\site-packages (from quiver_engine)
Requirement already satisfied: pillow in c:\python35\lib\site-packages (from quiver_engine)
Requirement already satisfied: pyyaml in c:\python35\lib\site-packages (from keras->quiver_engine)
Requirement already satisfied: six in c:\python35\lib\site-packages (from keras->quiver_engine)
Requirement already satisfied: theano in c:\python35\lib\site-packages (from keras->quiver_engine)
Requirement already satisfied: wheel>=0.26 in c:\python35\lib\site-packages (from tensorflow->quiver_engine)
Requirement already satisfied: protobuf==3.1.0 in c:\python35\lib\site-packages (from tensorflow->quiver_engine)
Collecting Jinja2>=2.4 (from flask->quiver_engine)
  Using cached Jinja2-2.8-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask->quiver_engine)
  Using cached itsdangerous-0.24.tar.gz
Collecting Werkzeug>=0.7 (from flask->quiver_engine)
  Using cached Werkzeug-0.11.11-py2.py3-none-any.whl
Collecting click>=2.0 (from flask->quiver_engine)
  Downloading click-6.6-py2.py3-none-any.whl (71kB)
    100% |################################| 71kB 1.1MB/s
Collecting greenlet>=0.4.9 (from gevent->quiver_engine)
  Using cached greenlet-0.4.10-cp35-cp35m-win_amd64.whl
Requirement already satisfied: scipy>=0.11 in c:\python35\lib\site-packages (from theano->keras->quiver_engine)
Requirement already satisfied: setuptools in c:\python35\lib\site-packages (from protobuf==3.1.0->tensorflow->quiver_engine)
Collecting MarkupSafe (from Jinja2>=2.4->flask->quiver_engine)
  Using cached MarkupSafe-0.23.tar.gz
Building wheels for collected packages: quiver-engine, itsdangerous, MarkupSafe
  Running setup.py bdist_wheel for quiver-engine ... error
  Complete output from command c:\python35\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\idg101\\AppData\\Local\\Temp\\pip-build-
vslylmu1\\quiver-engine\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file
__, 'exec'))" bdist_wheel -d C:\Users\idg101\AppData\Local\Temp\tmpw98ldkj8pip-wheel- --python-tag cp35:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib
  creating build\lib\quiver_engine
  copying quiver_engine\imagenet_utils.py -> build\lib\quiver_engine
  copying quiver_engine\layer_result_generators.py -> build\lib\quiver_engine
  copying quiver_engine\server.py -> build\lib\quiver_engine
  copying quiver_engine\util.py -> build\lib\quiver_engine
  copying quiver_engine\__init__.py -> build\lib\quiver_engine
  running egg_info
  writing dependency_links to quiver_engine.egg-info\dependency_links.txt
  writing top-level names to quiver_engine.egg-info\top_level.txt
  writing requirements to quiver_engine.egg-info\requires.txt
  writing quiver_engine.egg-info\PKG-INFO
  warning: manifest_maker: standard file '-c' not found

  reading manifest file 'quiver_engine.egg-info\SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  writing manifest file 'quiver_engine.egg-info\SOURCES.txt'
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\idg101\AppData\Local\Temp\pip-build-vslylmu1\quiver-engine\setup.py", line 21, in <module>
      'pillow'
    File "c:\python35\lib\distutils\core.py", line 148, in setup
      dist.run_commands()
    File "c:\python35\lib\distutils\dist.py", line 955, in run_commands
      self.run_command(cmd)
    File "c:\python35\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "c:\python35\lib\site-packages\wheel\bdist_wheel.py", line 179, in run
      self.run_command('build')
    File "c:\python35\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "c:\python35\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "c:\python35\lib\distutils\command\build.py", line 135, in run
      self.run_command(cmd_name)
    File "c:\python35\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "c:\python35\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 52, in run
      self.build_package_data()
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 107, in build_package_data
      for package, src_dir, build_dir, filenames in self.data_files:
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 65, in __getattr__
      self.data_files = self._get_data_files()
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 79, in _get_data_files
      return list(map(self._get_pkg_data_files, self.packages or ()))
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 91, in _get_pkg_data_files
      for file in self.find_data_files(package, src_dir)
    File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 98, in find_data_files
      + self.package_data.get(package, []))
  TypeError: can only concatenate list (not "str") to list

  ----------------------------------------
  Failed building wheel for quiver-engine
  Running setup.py clean for quiver-engine
  Running setup.py bdist_wheel for itsdangerous ... done
  Stored in directory: C:\Users\idg101\AppData\Local\pip\Cache\wheels\fc\a8\66\24d655233c757e178d45dea2de22a04c6d92766abfb741129a
  Running setup.py bdist_wheel for MarkupSafe ... done
  Stored in directory: C:\Users\idg101\AppData\Local\pip\Cache\wheels\a3\fa\dc\0198eed9ad95489b8a4f45d14dd5d2aee3f8984e46862c5748
Successfully built itsdangerous MarkupSafe
Failed to build quiver-engine
Installing collected packages: MarkupSafe, Jinja2, itsdangerous, Werkzeug, click, flask, flask-cors, greenlet, gevent, quiver-engine
  Running setup.py install for quiver-engine ... error
    Complete output from command c:\python35\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\idg101\\AppData\\Local\\Temp\\pip-buil
d-vslylmu1\\quiver-engine\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __fi
le__, 'exec'))" install --record C:\Users\idg101\AppData\Local\Temp\pip-9_qxsrge-record\install-record.txt --single-version-externally-managed --compi
le:
    running install
    running build
    running build_py
    creating build
    creating build\lib
    creating build\lib\quiver_engine
    copying quiver_engine\imagenet_utils.py -> build\lib\quiver_engine
    copying quiver_engine\layer_result_generators.py -> build\lib\quiver_engine
    copying quiver_engine\server.py -> build\lib\quiver_engine
    copying quiver_engine\util.py -> build\lib\quiver_engine
    copying quiver_engine\__init__.py -> build\lib\quiver_engine
    running egg_info
    writing dependency_links to quiver_engine.egg-info\dependency_links.txt
    writing top-level names to quiver_engine.egg-info\top_level.txt
    writing requirements to quiver_engine.egg-info\requires.txt
    writing quiver_engine.egg-info\PKG-INFO
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'quiver_engine.egg-info\SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'quiver_engine.egg-info\SOURCES.txt'
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\idg101\AppData\Local\Temp\pip-build-vslylmu1\quiver-engine\setup.py", line 21, in <module>
        'pillow'
      File "c:\python35\lib\distutils\core.py", line 148, in setup
        dist.run_commands()
      File "c:\python35\lib\distutils\dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "c:\python35\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "c:\python35\lib\site-packages\setuptools\command\install.py", line 61, in run
        return orig.install.run(self)
      File "c:\python35\lib\distutils\command\install.py", line 539, in run
        self.run_command('build')
      File "c:\python35\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "c:\python35\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "c:\python35\lib\distutils\command\build.py", line 135, in run
        self.run_command(cmd_name)
      File "c:\python35\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "c:\python35\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 52, in run
        self.build_package_data()
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 107, in build_package_data
        for package, src_dir, build_dir, filenames in self.data_files:
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 65, in __getattr__
        self.data_files = self._get_data_files()
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 79, in _get_data_files
        return list(map(self._get_pkg_data_files, self.packages or ()))
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 91, in _get_pkg_data_files
        for file in self.find_data_files(package, src_dir)
      File "c:\python35\lib\site-packages\setuptools\command\build_py.py", line 98, in find_data_files
        + self.package_data.get(package, []))
    TypeError: can only concatenate list (not "str") to list

    ----------------------------------------
Command "c:\python35\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\idg101\\AppData\\Local\\Temp\\pip-build-vslylmu1\\quiver-engin
e\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install
--record C:\Users\idg101\AppData\Local\Temp\pip-9_qxsrge-record\install-record.txt --single-version-externally-managed --compile" failed with error co
de 1 in C:\Users\idg101\AppData\Local\Temp\pip-build-vslylmu1\quiver-engine\

c:\Python35\Scripts>

get_layer_outputs() assumes tf ordering

get_layer_outputs() assumes tf ordering when deciding how many tiles are in an output. in 84... "for z in range(0, layer_outputs.shape[2]) "

layer_outputs.shape[2] only valid for tf, for theano, use layer_outputs.shape[0]

Also, img = layer_outputs[:,:,z] is tf dependent. Should be img = layer_outputs[z,:,:] for theano.

pip install doesnt work with python 3.4, windows x64

I tried this with 2 fresh windows installations and got the same error both times.

`c:\Python34\Scripts>pip install quiver_engine
Collecting quiver_engine
Downloading quiver_engine-0.1.4.1.1.tar.gz (398kB)
100% |################################| 399kB 1.4MB/s
Requirement already satisfied: keras in c:\python34 (from quiver_engine)
Collecting flask (from quiver_engine)
Downloading Flask-0.11.1-py2.py3-none-any.whl (80kB)
100% |################################| 81kB 2.6MB/s
Collecting flask_cors (from quiver_engine)
Downloading Flask_Cors-3.0.2-py2.py3-none-any.whl
Collecting gevent (from quiver_engine)
Downloading gevent-1.1.2-cp34-cp34m-win_amd64.whl (384kB)
100% |################################| 389kB 1.5MB/s
Requirement already satisfied: numpy in c:\python34\lib\site-packages (from quiver_engine)
Requirement already satisfied: pillow in c:\python34\lib\site-packages (from quiver_engine)
Requirement already satisfied: theano in c:\python34\lib\site-packages (from keras->quiver_engine)
Requirement already satisfied: pyyaml in c:\python34\lib\site-packages (from keras->quiver_engine)
Requirement already satisfied: six in c:\python34\lib\site-packages (from keras->quiver_engine)
Collecting itsdangerous>=0.21 (from flask->quiver_engine)
Downloading itsdangerous-0.24.tar.gz (46kB)
100% |################################| 51kB 4.3MB/s
Collecting Werkzeug>=0.7 (from flask->quiver_engine)
Downloading Werkzeug-0.11.11-py2.py3-none-any.whl (306kB)
100% |################################| 307kB 2.1MB/s
Collecting click>=2.0 (from flask->quiver_engine)
Downloading click-6.6.tar.gz (283kB)
100% |################################| 286kB 2.8MB/s
Collecting Jinja2>=2.4 (from flask->quiver_engine)
Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
100% |################################| 266kB 3.1MB/s
Collecting greenlet>=0.4.9 (from gevent->quiver_engine)
Downloading greenlet-0.4.10-cp34-cp34m-win_amd64.whl
Requirement already satisfied: scipy>=0.11 in c:\python34\lib\site-packages (from theano->keras->quiver_engine)
Collecting MarkupSafe (from Jinja2>=2.4->flask->quiver_engine)
Downloading MarkupSafe-0.23.tar.gz
Installing collected packages: itsdangerous, Werkzeug, click, MarkupSafe, Jinja2, flask, flask-cors, greenlet, gevent, quiver-engine
Running setup.py install for itsdangerous ... done
Running setup.py install for click ... done
Running setup.py install for MarkupSafe ... done
Running setup.py install for quiver-engine ... error
Complete output from command c:\python34\python.exe -u -c "import setuptools, tokenize;file='C:\Users\idg101\AppData\Local\Temp\pip-buil
d-8ffm_h7y\quiver-engine\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, fi
le
, 'exec'))" install --record C:\Users\idg101\AppData\Local\Temp\pip-2amt2zih-record\install-record.txt --single-version-externally-managed --compi
le:
running install
running build
running build_py
creating build
creating build\lib
creating build\lib\quiver_engine
copying quiver_engine\imagenet_utils.py -> build\lib\quiver_engine
copying quiver_engine\layer_result_generators.py -> build\lib\quiver_engine
copying quiver_engine\server.py -> build\lib\quiver_engine
copying quiver_engine\util.py -> build\lib\quiver_engine
copying quiver_engine_init_.py -> build\lib\quiver_engine
running egg_info
writing quiver_engine.egg-info\PKG-INFO
writing dependency_links to quiver_engine.egg-info\dependency_links.txt
writing requirements to quiver_engine.egg-info\requires.txt
writing top-level names to quiver_engine.egg-info\top_level.txt
warning: manifest_maker: standard file '-c' not found

reading manifest file 'quiver_engine.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'quiver_engine.egg-info\SOURCES.txt'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\idg101\AppData\Local\Temp\pip-build-8ffm_h7y\quiver-engine\setup.py", line 20, in <module>
    'pillow'
  File "c:\python34\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "c:\python34\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "c:\python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "c:\python34\lib\site-packages\setuptools\command\install.py", line 61, in run
    return orig.install.run(self)
  File "c:\python34\lib\distutils\command\install.py", line 539, in run
    self.run_command('build')
  File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "c:\python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "c:\python34\lib\distutils\command\build.py", line 126, in run
    self.run_command(cmd_name)
  File "c:\python34\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "c:\python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "c:\python34\lib\site-packages\setuptools\command\build_py.py", line 47, in run
    self.build_package_data()
  File "c:\python34\lib\site-packages\setuptools\command\build_py.py", line 103, in build_package_data
    for package, src_dir, build_dir, filenames in self.data_files:
  File "c:\python34\lib\site-packages\setuptools\command\build_py.py", line 59, in __getattr__
    self.data_files = files = self._get_data_files()
  File "c:\python34\lib\site-packages\setuptools\command\build_py.py", line 86, in _get_data_files
    file[plen:] for file in self.find_data_files(package, src_dir)
  File "c:\python34\lib\site-packages\setuptools\command\build_py.py", line 94, in find_data_files
    + self.package_data.get(package, []))
TypeError: can only concatenate list (not "str") to list

----------------------------------------

Command "c:\python34\python.exe -u -c "import setuptools, tokenize;file='C:\Users\idg101\AppData\Local\Temp\pip-build-8ffm_h7y\quiver-engin
e\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install
--record C:\Users\idg101\AppData\Local\Temp\pip-2amt2zih-record\install-record.txt --single-version-externally-managed --compile" failed with error co
de 1 in C:\Users\idg101\AppData\Local\Temp\pip-build-8ffm_h7y\quiver-engine
`

quiver tried to install other version of tensorflow

I have tensorflow-gpu and keras,
but when i tried to install your application, your application start to install

keras:           2.0.8-py36hc0b6f7c_0                 
    quiver_engine:   0.1.4.1.4-py36_0      jjh_cio_testing
    tensorflow:      1.3.0-0               jjh_cio_testing
    tensorflow-base: 1.3.0-py36h5293eaa_1  jjh_cio_testing

i have

keras-gpu                 2.0.5                    py36_0    anaconda
tensorflow-gpu            1.3.0                         0    anaconda
tensorflow-gpu-base       1.3.0           py36cuda8.0cudnn6.0_0    anaconda
tensorflow-tensorboard    0.1.5                    py36_0    anaconda

Output predictions are incorrect

I use quiver like this:

classList =['one','two','three']
server.launch(mmodel,classes=classList)

when testing images from the dashboard, the classes outputs are wrong. Most of the time it displays the same class predictions for images from different classes

[bug] inconsistent preprocess_input

in the quiver code quiver_engine/imagenet_uitls.py:

x[:, :, :, 0] -= 103.939
x[:, :, :, 1] -= 116.779
x[:, :, :, 2] -= 123.68
# 'RGB'->'BGR'
x = x[:, :, :, ::-1]

in keras keras/applications/imagenet_utils.py:

# 'RGB'->'BGR'
x = x[..., ::-1]
 # Zero-center by mean pixel
x[..., 0] -= 103.939
x[..., 1] -= 116.779
x[..., 2] -= 123.68

minus+transpose and transpose+minus are apparently different, which leading prediction different results beween quiver vs. keras. However, I am not sure which of them is right.

InceptionResNetV2 and InceptionV3 get error But VGG16 is good

It seems that can not reshape the custom image. But in VGG16 has not error.
[2017-11-30 18:08:12,769] ERROR in app: Exception on /layer/batch_normalization_90/individualImage (2).png [GET] Traceback (most recent call last): File "/home/microfat/.local/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app response = self.full_dispatch_request() File "/home/microfat/.local/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/microfat/.local/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) File "/home/microfat/.local/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception reraise(exc_type, exc_value, tb) File "/home/microfat/.local/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise raise value File "/home/microfat/.local/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request rv = self.dispatch_request() File "/home/microfat/.local/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/home/microfat/.local/lib/python3.6/site-packages/quiver_engine/server.py", line 98, in get_layer_outputs mean=mean, std=std File "/home/microfat/.local/lib/python3.6/site-packages/quiver_engine/util.py", line 83, in load_img grayscale=grayscale) File "/home/microfat/.local/lib/python3.6/site-packages/keras/preprocessing/image.py", line 364, in load_img img = img.resize(width_height_tuple, resample) File "/home/microfat/.local/lib/python3.6/site-packages/PIL/Image.py", line 1745, in resize return self._new(self.im.resize(size, resample, box)) TypeError: an integer is required (got type NoneType)

No module named 'imagenet_utils'

ImportError: No module named 'imagenet_utils' which seems to be coming from this line

https://github.com/jakebian/quiver/blob/master/quiver_engine/util.py#L4
which refers to this library
https://github.com/fchollet/deep-learning-models/blob/master/imagenet_utils.py

It seems like this dependency is anyways only valid if the training set is imagenet based so maybe it would be good to make this more flexible and explicitly include the deep-learning-models as a dependency?

Installation error for development version

Hi,

I would like to modify some parts of quiver :

  • pass (as argument in quiver_engine.server.launch()) a numpy array that corresponds to severals samples, with shape [nb_samples, img_w, img_h, nb_channels). Instead of using a directory with images (.png or .jpg)
  • pass a vector (1D array) that corresponds to the labels for images passed before. The goal is to identify misclassified images, and group images by classes.

So to add those options, I tried to install the development version .. but if failed when I tried to build the client.

git clone  https://github.com/jakebian/quiver.git
cd quiver && python setup.py develop
cd quiver_engine/quiverboard && npm install

It doesn't end .. but it displays many errors (ENOENT and EEXIST).
The first ones are :

npm ERR! Error: ENOENT, chmod '/home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.19.0-59-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
npm ERR! fstream_path /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm http 304 https://registry.npmjs.org/escape-string-regexp
npm http 304 https://registry.npmjs.org/to-arraybuffer
npm http 304 https://registry.npmjs.org/has-ansi
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror'
npm ERR! error rolling back  [email protected] { [Error: ENOTEMPTY, rmdir '/home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: '/home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror' }
npm ERR! weird error 127
npm http 304 https://registry.npmjs.org/builtin-status-codes
npm http 304 https://registry.npmjs.org/pako
npm http 304 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/is-date-object
npm http GET https://registry.npmjs.org/is-symbol
npm ERR! Error: ENOENT, lstat '/home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.19.0-59-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md
npm ERR! fstream_path /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard/node_modules/codecov/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/nodejs/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm http GET https://registry.npmjs.org/iconv-lite
npm ERR! EEXIST, mkdir '/home/$USER/tmp/npm-10769-eAixwFfg/1487594217455-0.9930695469956845/package'
File exists: /home/$USER/tmp/npm-10769-eAixwFfg/1487594217455-0.9930695469956845/package
Move it away, and try again. 

npm ERR! System Linux 3.19.0-59-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/$USER/Documents/blabla/visualization-tools/quiver/quiver_engine/quiverboard
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/$USER/tmp/npm-10769-eAixwFfg/1487594217455-0.9930695469956845/package
npm ERR! fstream_path /home/$USER/tmp/npm-10769-eAixwFfg/1487594217455-0.9930695469956845/package/split.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code EEXIST
npm ERR! errno 47

I have the sames errors when I use sudo npm install.

Have you had errors like this ?
Or I made a mistake during installation ?

Maybe a solution is to use a Docker image that provides the development version ? Someone is working with Docker ?

classes parameter is not valid while I run 'server.launch(...)"

classes parameter is not valid while I run 'server.launch(...)",
I use help(quiver_engine.server.launch) in python command enviroments, it shows parameters definitions and there are NO 'classes' and 'top' paramaters. It is not same as the examples mentioned in README.MD, is the doc a little bit older?

IndexError: tuple index out of range

When I check each Layer to see what happens, got this error:

127.0.0.1 - - [2016-11-23 09:59:47] "GET /layer/predictions/ILSVRC2012_val_00020333.jpg HTTP/1.1" 500 444 1.400068
Warning! you didn't pass your own set of classes for the model therefore imagenet classes are used
127.0.0.1 - - [2016-11-23 09:59:49] "GET /predict/ILSVRC2012_val_00018548.jpg HTTP/1.1" 200 562 0.780195
[2016-11-23 09:59:50,946] ERROR in app: Exception on /layer/predictions/ILSVRC2012_val_00018548.jpg [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/nali/Workspace/quiver/quiver_engine/server.py", line 112, in get_layer_outputs
    for z in range(0, layer_outputs.shape[2]):
IndexError: tuple index out of range
127.0.0.1 - - [2016-11-23 09:59:50] "GET /layer/predictions/ILSVRC2012_val_00018548.jpg HTTP/1.1" 500 444 1.402432

Unable to see any ouput

I am trying to run a simple example using trained network vgg16

from vgg16 import VGG16
from quiver.quiver_engine.server import launch

model = VGG16()
launch(model, classes=['cat','dog'], input_folder='./imgs') # i have images of dogs and cats here

After this I can see the webpage, but when I click on image and then the layer, it displays "no data for this layer". And this is displayed for all the layers.

I can see following error on the console:

  File "C:\ENV\p34\lib\site-packages\keras\engine\training.py", line 111, in standardize_input_data
    str(array.shape))
Exception: Error when checking : expected input_1 to have shape (None, 224, 224, 3) but got array with shape (1, 224, 3, 3)

I used 224x224 image as an input.
What might I be missing here?

number of channels only 3?

What happens if the model is for one channel images?

Exception: Error when checking : expected input_1 to have shape (1, 128, 128, 1) but got array with shape (1, 128, 128, 3)

Add option to suppress browser from opening

Since many ML tasks are done on a remote server (and possibly, the cloud), an option to prevent browser from opening should be added in the launch function.
Also , what about an upload option to test new images ?

image files don't show up in right-hand panel

Started quiver and it appears to launch normally. My model is visible in the left pane. However, no files visible on the right pane (path is correctly set and there are legit image files present).

Any thoughts?

I'm using Chrome on a Mac; keras 1.1.1; installed quiver via pip.

Perhaps its a browser issue?

Error when installing on Windows 10 with Anaconda3

I get the following error message when running pip install quiver_engine on Windows 10 with Anaconda 3:

Building wheels for collected packages: quiver-engine
  Running setup.py bdist_wheel for quiver-engine ... error
  Complete output from command C:\Users\User\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\User\\AppData\\Local\\Temp\\pip-build-u5woavsp\\quiver-engine\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().repla
ce('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d C:\Users\User\AppData\Local\Temp\tmp53j1c7yppip-wheel- --python-tag cp35:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib
  creating build\lib\quiver_engine
  copying quiver_engine\imagenet_utils.py -> build\lib\quiver_engine
  copying quiver_engine\layer_result_generators.py -> build\lib\quiver_engine
  copying quiver_engine\server.py -> build\lib\quiver_engine
  copying quiver_engine\util.py -> build\lib\quiver_engine
  copying quiver_engine\__init__.py -> build\lib\quiver_engine
  running egg_info
  writing quiver_engine.egg-info\PKG-INFO
  writing dependency_links to quiver_engine.egg-info\dependency_links.txt
  writing requirements to quiver_engine.egg-info\requires.txt
  writing top-level names to quiver_engine.egg-info\top_level.txt
  warning: manifest_maker: standard file '-c' not found

  reading manifest file 'quiver_engine.egg-info\SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  writing manifest file 'quiver_engine.egg-info\SOURCES.txt'
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\User\AppData\Local\Temp\pip-build-u5woavsp\quiver-engine\setup.py", line 21, in <module>
      'pillow'
    File "C:\Users\User\Anaconda3\lib\distutils\core.py", line 148, in setup
      dist.run_commands()
    File "C:\Users\User\Anaconda3\lib\distutils\dist.py", line 955, in run_commands
      self.run_command(cmd)
    File "C:\Users\User\Anaconda3\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "C:\Users\User\Anaconda3\lib\site-packages\wheel\bdist_wheel.py", line 179, in run
      self.run_command('build')
    File "C:\Users\User\Anaconda3\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Users\User\Anaconda3\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "C:\Users\User\Anaconda3\lib\distutils\command\build.py", line 135, in run
      self.run_command(cmd_name)
    File "C:\Users\User\Anaconda3\lib\distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Users\User\Anaconda3\lib\distutils\dist.py", line 974, in run_command
      cmd_obj.run()
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 53, in run
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 118, in build_package_data
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 66, in __getattr__
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 83, in _get_data_files
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 95, in _get_pkg_data_files
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 114, in find_data_files
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 198, in exclude_data_files
    File "C:\Users\User\Anaconda3\lib\site-packages\setuptools-27.2.0-py3.5.egg\setuptools\command\build_py.py", line 234, in <genexpr>
    File "C:\Users\User\Anaconda3\lib\distutils\util.py", line 125, in convert_path
      raise ValueError("path '%s' cannot be absolute" % pathname)
  ValueError: path '/' cannot be absolute

Timeout for visualizer with custom dataset

So I'm running the visualizer on a dataset of (None, 8, 200, 1) images with 50 datasets. I want to display the predictions for each image but when I pass in the classes range(1, 51) as follows
server.launch(model, range(1, 51), top=4, port=5001), and I try to look at the output for a particular image and layer, it does not display anything

pip install fails on Ubuntu

Pip install on Ubuntu 16.04 with Python 2.7 fails the following error

Installing collected packages: quiver-engine
  Running setup.py install for quiver-engine ... error
    Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Yr7lN5/quiver-engine/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-XVYrCV-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/quiver_engine
    copying quiver_engine/util.py -> build/lib.linux-x86_64-2.7/quiver_engine
    copying quiver_engine/server.py -> build/lib.linux-x86_64-2.7/quiver_engine
    copying quiver_engine/__init__.py -> build/lib.linux-x86_64-2.7/quiver_engine
    copying quiver_engine/layer_result_generators.py -> build/lib.linux-x86_64-2.7/quiver_engine
    copying quiver_engine/imagenet_utils.py -> build/lib.linux-x86_64-2.7/quiver_engine
    running egg_info
    writing requirements to quiver_engine.egg-info/requires.txt
    writing quiver_engine.egg-info/PKG-INFO
    writing top-level names to quiver_engine.egg-info/top_level.txt
    writing dependency_links to quiver_engine.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found
    
    reading manifest file 'quiver_engine.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'quiver_engine.egg-info/SOURCES.txt'
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-Yr7lN5/quiver-engine/setup.py", line 20, in <module>
        'pillow'
      File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
        dist.run_commands()
      File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python2.7/distutils/command/install.py", line 601, in run
        self.run_command('build')
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
        self.run_command(cmd_name)
      File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 52, in run
        self.build_package_data()
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 107, in build_package_data
        for package, src_dir, build_dir, filenames in self.data_files:
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 65, in __getattr__
        self.data_files = self._get_data_files()
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 79, in _get_data_files
        return list(map(self._get_pkg_data_files, self.packages or ()))
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 91, in _get_pkg_data_files
        for file in self.find_data_files(package, src_dir)
      File "/usr/lib/python2.7/dist-packages/setuptools/command/build_py.py", line 98, in find_data_files
        + self.package_data.get(package, []))
    TypeError: can only concatenate list (not "str") to list
    
    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Yr7lN5/quiver-engine/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-XVYrCV-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-Yr7lN5/quiver-engine/

What is this vizualizing?

Is it a saliency map? In either case, details about how the visualization is generated should be included in the docs.

No model on the GUI

After running quiver with a tensorflow model - I see images from my directory but I do not see the model on the left.

some errors in web console.

quiver

server code:

from keras.models import load_model

model = load_model('/project/results/models/final/202imgs-101-101-in768-d16-conv3-drop-fc-sgd-lr-0_00025-from400epochs.h5')
print(model.summary())

from quiver_engine import server
server.launch(model, input_folder='/project/data/class_0')

(this code is loading my model, but the same happens with simple keras model created here)

server logs:

Using TensorFlow backend.
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
convolution2d_1 (Convolution2D)  (None, 768, 768, 16)  448         convolution2d_input_1[0][0]      
____________________________________________________________________________________________________
activation_1 (Activation)        (None, 768, 768, 16)  0           convolution2d_1[0][0]            
____________________________________________________________________________________________________
dropout_1 (Dropout)              (None, 768, 768, 16)  0           activation_1[0][0]               
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D)    (None, 384, 384, 16)  0           dropout_1[0][0]                  
____________________________________________________________________________________________________
convolution2d_2 (Convolution2D)  (None, 384, 384, 16)  2320        maxpooling2d_1[0][0]             
____________________________________________________________________________________________________
activation_2 (Activation)        (None, 384, 384, 16)  0           convolution2d_2[0][0]            
____________________________________________________________________________________________________
dropout_2 (Dropout)              (None, 384, 384, 16)  0           activation_2[0][0]               
____________________________________________________________________________________________________
maxpooling2d_2 (MaxPooling2D)    (None, 192, 192, 16)  0           dropout_2[0][0]                  
____________________________________________________________________________________________________
convolution2d_3 (Convolution2D)  (None, 192, 192, 16)  2320        maxpooling2d_2[0][0]             
____________________________________________________________________________________________________
activation_3 (Activation)        (None, 192, 192, 16)  0           convolution2d_3[0][0]            
____________________________________________________________________________________________________
dropout_3 (Dropout)              (None, 192, 192, 16)  0           activation_3[0][0]               
____________________________________________________________________________________________________
maxpooling2d_3 (MaxPooling2D)    (None, 96, 96, 16)    0           dropout_3[0][0]                  
____________________________________________________________________________________________________
convolution2d_4 (Convolution2D)  (None, 96, 96, 16)    2320        maxpooling2d_3[0][0]             
____________________________________________________________________________________________________
activation_4 (Activation)        (None, 96, 96, 16)    0           convolution2d_4[0][0]            
____________________________________________________________________________________________________
dropout_4 (Dropout)              (None, 96, 96, 16)    0           activation_4[0][0]               
____________________________________________________________________________________________________
maxpooling2d_4 (MaxPooling2D)    (None, 48, 48, 16)    0           dropout_4[0][0]                  
____________________________________________________________________________________________________
convolution2d_5 (Convolution2D)  (None, 48, 48, 16)    2320        maxpooling2d_4[0][0]             
____________________________________________________________________________________________________
activation_5 (Activation)        (None, 48, 48, 16)    0           convolution2d_5[0][0]            
____________________________________________________________________________________________________
dropout_5 (Dropout)              (None, 48, 48, 16)    0           activation_5[0][0]               
____________________________________________________________________________________________________
maxpooling2d_5 (MaxPooling2D)    (None, 24, 24, 16)    0           dropout_5[0][0]                  
____________________________________________________________________________________________________
convolution2d_6 (Convolution2D)  (None, 24, 24, 16)    2320        maxpooling2d_5[0][0]             
____________________________________________________________________________________________________
activation_6 (Activation)        (None, 24, 24, 16)    0           convolution2d_6[0][0]            
____________________________________________________________________________________________________
dropout_6 (Dropout)              (None, 24, 24, 16)    0           activation_6[0][0]               
____________________________________________________________________________________________________
maxpooling2d_6 (MaxPooling2D)    (None, 12, 12, 16)    0           dropout_6[0][0]                  
____________________________________________________________________________________________________
convolution2d_7 (Convolution2D)  (None, 12, 12, 16)    2320        maxpooling2d_6[0][0]             
____________________________________________________________________________________________________
activation_7 (Activation)        (None, 12, 12, 16)    0           convolution2d_7[0][0]            
____________________________________________________________________________________________________
dropout_7 (Dropout)              (None, 12, 12, 16)    0           activation_7[0][0]               
____________________________________________________________________________________________________
maxpooling2d_7 (MaxPooling2D)    (None, 6, 6, 16)      0           dropout_7[0][0]                  
____________________________________________________________________________________________________
flatten_1 (Flatten)              (None, 576)           0           maxpooling2d_7[0][0]             
____________________________________________________________________________________________________
dropout_8 (Dropout)              (None, 576)           0           flatten_1[0][0]                  
____________________________________________________________________________________________________
dense_1 (Dense)                  (None, 10)            5770        dropout_8[0][0]                  
____________________________________________________________________________________________________
activation_8 (Activation)        (None, 10)            0           dense_1[0][0]                    
____________________________________________________________________________________________________
dense_2 (Dense)                  (None, 1)             11          activation_8[0][0]               
____________________________________________________________________________________________________
activation_9 (Activation)        (None, 1)             0           dense_2[0][0]                    
====================================================================================================
Total params: 20149
____________________________________________________________________________________________________
None
172.17.42.1 - - [2016-11-15 21:23:33] "GET / HTTP/1.1" 200 802 0.003623
172.17.42.1 - - [2016-11-15 21:23:33] "GET /app.c1d3d21cfba8c1aabed6806773c8f0ba.css HTTP/1.1" 200 5131 0.001499
172.17.42.1 - - [2016-11-15 21:23:33] "GET /vendor.e63f1eee61ce7b325e64.js HTTP/1.1" 200 87557 0.001622
172.17.42.1 - - [2016-11-15 21:23:33] "GET /app.a9499a05f30e8bb1c4af.js HTTP/1.1" 200 1179313 0.005261
172.17.42.1 - - [2016-11-15 21:23:34] "GET /model HTTP/1.1" 200 10407 0.002802
172.17.42.1 - - [2016-11-15 21:23:34] "GET /inputs HTTP/1.1" 200 1079 0.001351
172.17.42.1 - - [2016-11-15 21:23:34] "GET /favicon.ico HTTP/1.1" 200 16181 0.001027
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161102_201212.jpg HTTP/1.1" 200 200431 0.002388
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_090645.jpg HTTP/1.1" 200 319399 0.003071
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_090541.jpg HTTP/1.1" 200 252399 0.003076
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161112121536_52.15833_21.06697_1000006.jpg HTTP/1.1" 200 1138946 0.006618
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161102_182022.jpg HTTP/1.1" 200 319155 0.003340
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161109101939_52.1751_21.06294_1000001.jpg HTTP/1.1" 200 1370579 0.010491
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_081455.jpg HTTP/1.1" 200 174565 0.002427
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113121455_52.18729_21.06157_1000003.jpg HTTP/1.1" 200 1225303 0.007116
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161110084644_52.1601_21.07184_1000004.jpg HTTP/1.1" 200 1072800 0.040332
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_194107.jpg HTTP/1.1" 200 168064 0.002330
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161102_201612.jpg HTTP/1.1" 200 255676 0.002810
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161112122059_52.17202_21.05814_1000006.jpg HTTP/1.1" 200 1475996 0.007180
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113121610_52.1845_21.06018_1000003.jpg HTTP/1.1" 200 1451522 0.016294
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113104730_52.1602_21.06501_1000001.jpg HTTP/1.1" 200 1092566 0.012721
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_192955.jpg HTTP/1.1" 200 195772 0.002486
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113121520_52.18648_21.06136_1000003.jpg HTTP/1.1" 200 1581348 0.012774
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161109101834_52.16985_21.06818_1000001.jpg HTTP/1.1" 200 1478398 0.007960
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161102_182112.jpg HTTP/1.1" 200 216239 0.002271
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113121434_52.18714_21.0619_1000003.jpg HTTP/1.1" 200 1096357 0.004649
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161102_090437.jpg HTTP/1.1" 200 394772 0.003571
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/IMG_20161103_194208.jpg HTTP/1.1" 200 153944 0.001994
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113124924_52.16035_21.07183_1000004.jpg HTTP/1.1" 200 1314513 0.006314
172.17.42.1 - - [2016-11-15 21:23:34] "GET /input-file/20161113104727_52.1602_21.06501_1000001.jpg HTTP/1.1" 200 1004405 0.005401
172.17.42.1 - - [2016-11-15 21:26:01] "GET / HTTP/1.1" 200 802 0.001103
172.17.42.1 - - [2016-11-15 21:26:01] "GET /app.c1d3d21cfba8c1aabed6806773c8f0ba.css HTTP/1.1" 200 5131 0.001246
172.17.42.1 - - [2016-11-15 21:26:01] "GET /app.a9499a05f30e8bb1c4af.js HTTP/1.1" 200 1179313 0.006761
172.17.42.1 - - [2016-11-15 21:26:01] "GET /vendor.e63f1eee61ce7b325e64.js HTTP/1.1" 200 87557 0.001366
172.17.42.1 - - [2016-11-15 21:26:01] "GET /model HTTP/1.1" 200 10407 0.003014
172.17.42.1 - - [2016-11-15 21:26:01] "GET /inputs HTTP/1.1" 200 1079 0.000988

Anything I can do to help debug the issue?

/predict fails with 500

When I am changing the input image in the GUI a call to /predict fails:

[2016-11-15 23:01:57,142] ERROR in app: Exception on /predict/20161112121702_52.16003_21.0718_1000006.jpg [GET]
Traceback (most recent call last):
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/conda/lib/python2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/conda/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/server.py", line 104, in get_prediction
    model.predict(input_img)
  File "/opt/conda/lib/python2.7/site-packages/quiver_engine/imagenet_utils.py", line 40, in decode_predictions
    'Found array with shape: ' + str(preds.shape))
ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D array of shape (samples, 1000)). Found array with shape: (1, 1)

my model is a binary classification model - maybe that's why there is the 2nd '1' in the output shape

what happens when hovering?

So I noticed that when I just take an image and look at the outputs, it looks something like this
screen shot 2017-01-11 at 12 51 14 pm
But then when I hover over one of the outputs it then looks like
screen shot 2017-01-11 at 12 51 57 pm
I'd be curious to know exactly what happens. I suspect that the grayscale are high frequency features while rgb outputs are low frequency. Is this correct?

404 error

Hi,

Thanks for sharing your tool. Unfortunately, I cannot make it work properly, whenever the server is running, it seems to be idle and navigating to localhost: gives me a 404 not found error (so the server responds but there is nothing to display).

Any thoughts?
Thank you!

Here is a sample of the code that creates the issue:

from __future__ import print_function
import numpy as np
import h5py

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D

# input image dimensions
img_rows, img_cols = 28, 28
# number of convolutional filters to use
nb_filters = 32
# size of pooling area for max pooling
pool_size = (2, 2)
# convolution kernel size
kernel_size = (3, 3)

nb_classes = 10

model = Sequential()
input_shape = (1,img_rows, img_cols)

model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],
                        border_mode='valid', activation='relu',
                        input_shape=input_shape))
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], activation='relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='adadelta',
              metrics=['accuracy'])

model.load_weights('MNIST_weights.h5')

# launching the visualization server
from quiver_engine import server
server.launch(model, temp_folder='./tmp', input_folder='./', port=7777)

and here is the output of this script:

(tsflow) jeremie@jeremie-OptiPlex-9020:~/test$ python test.py 
Using TensorFlow backend.
127.0.0.1 - - [2016-11-14 17:51:54] "GET / HTTP/1.1" 404 374 0.005049
127.0.0.1 - - [2016-11-14 17:51:59] "GET / HTTP/1.1" 404 374 0.000828
127.0.0.1 - - [2016-11-14 17:52:01] "GET / HTTP/1.1" 404 374 0.000582

Work with Theano

Get this working with Theano. Moreso, get it working with the keras genetic backend so that it works smoothly with both th and tf.

No support for Convolution1D

The indexing appears to assume that the input tensor is a 2D image. Would be nice if you could remove this dependency (or at least support 1D, 2D, 3D).

Proper path use in get_output_name()

quiver_engine/server.py get_output_name() should use os.sep instead of '/'.

Original convention breaks PIL im.save(). E.g. im.save(r'e:\tmp/filename.png') will result in OSError, Invalid Argument.

Furthermore, ensure all paths should use os.path.join or os.sep instead of '/'.

Update pip distribution

The README currently says you can use custom classes (from the latest PR), but it doesn't look like pypi has been updated with this code.

Error : No data for this layer.

Hi, I'm just trying to follow your demo with pre-trained VGG-19 model . But I keep getting this error after selecting the layer : No data for this layer

On the terminal, i get the following message :
Exception: Error when checking : expected zeropadding2d_input_1 to have shape (None, 3, 224, 224) but got array with shape (1, 3, 3, 224)

Is this a problem due to my images ?

my code :
model = VGG_19('vgg19_weights.h5')
server.launch(model,input_folder='./input_images')

Denote if layer compiled in the GUI

It would be nice if there was an icon indicating that the layer in the visualization has been compiled or not. Furthermore, if the quiver isnt doing anything, it should be compiling layers in the background.

Not sure if this is an issue for tf, but in theano, it takes quite a bit of time to compile to sublayers.

Update 1
Tested with tf and th. It appears this is a th issue as tf compiles very quickly, essentially real-time. I am using th 0.8.2, windows 7.

install quiver cause install tensorflow(not gpu) cascade

If I use 'pip install quiver_engine' diretly, it show check precodition and install tensorflow-1.4.0(not gpu version) again while I had already installed a good tensorflow-gpu-1.4.0. And keras will use default of TF and not use TF-GPU, so I have to uninstall tensorflow-1.4.0 first, then I find tensorflow-gpu-1.4.0 is BAD. I have to install it again(after quiver_engine).
So I submit this issue to indicate that use 'pip install quiver_engine' will cause python system check and install tf(CPU version) no matter if there is a GOOD TF(GPU version), it is a little bit inconvenince.
If possible, pls check and solve.
but at least I can install quiver_engine first and REINSTALL tf-gpu AGAIN, it works.
thks

fails with 404 not found

When I add the quiver in my code
`server.launch(
model, # a Keras Model

    # where to store temporary files generatedby quiver (e.g. image files of layers)
    temp_folder='tmp/',

    # a folder where input images are stored
    input_folder='dataset/',

    # the localhost port the dashboard is to be served on
    port=9000
)`

and run it, but the browser shows
Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
the terminal shows

127.0.0.1 - - [2016-11-17 15:02:26] "GET / HTTP/1.1" 404 374 0.006884
Created new window in existing browser session.
127.0.0.1 - - [2016-11-17 15:02:26] "GET /favicon.ico HTTP/1.1" 404 374 0.000999
127.0.0.1 - - [2016-11-17 15:03:00] "GET / HTTP/1.1" 404 374 0.000542
127.0.0.1 - - [2016-11-17 15:03:01] "GET / HTTP/1.1" 404 374 0.000735

Unable to load image

@jakebian
I can load model, but I can't load image. On the browser, the left is model structure, the right is Select an input image, but it didn't display any image, so I can't choose an image.

my code is
launch(multitask_model, input_folder='./img', port=5000)

Problem with outputs visualization

Hi !

First, thank you for quiver, this is just an awesome tool ! I just have a few question concerning the visualization. I'm working with different picture resolutions and, for my work, I have been in need for using only 2 channels in my images. Because of quiver is not for that kind of use, I had in mind to set the 3rd channel to a constant (0 or 127 I guess), for the training and for the visualization (in order to have the correct feature maps).

I have been surprised to see that the visualization was very weird when loading my images : even for the input layer there was no constant channel (here is an example of what I've been seeing for a picture of cat in which I setted the blue channel to 0). One is nearly black but is not what it's supposed to be.

quiver_pb

I'm wondering if this is only for the input display or also for the feature maps, and if it's not those three layers which go through my network and so can also make my feature maps incorrect...

Any idea ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.