keplr-io / quiver Goto Github PK
View Code? Open in Web Editor NEWInteractive convnet features visualization for Keras
Home Page: https://keplr-io.github.io/quiver/
License: MIT License
Interactive convnet features visualization for Keras
Home Page: https://keplr-io.github.io/quiver/
License: MIT License
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.
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/
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?
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"}'
So I noticed that when I just take an image and look at the outputs, it looks something like this
But then when I hover over one of the outputs it then looks like
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?
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)
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?
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?
Hi,
I would like to modify some parts of quiver :
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)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 ?
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 '/'.
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
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
@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)
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
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).
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.
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?
Hello, everything's in the title.
I am currently working with the MaskRCNN network described here: https://github.com/matterport/Mask_RCNN and I can't get past the server.launch. Apparently it can't get a pickle file from what I can tell...
Any way to get rid of that error? The server launches but the exception comes after that.
Thanks.
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.
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
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)
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'
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).
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?
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
`
Do you have a plan to make a theano version of this tool?
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
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 ?
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>
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
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.
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 ?
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
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')
imagenet_utils.py contains decode_predictions() which is hardcoded for 1000 classes and one-hot output. Should support arbitrary model output. Recommend test on mnist dataset for verification.
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.
Is it a saliency map? In either case, details about how the visualization is generated should be included in the docs.
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.
Get this working with Theano. Moreso, get it working with the keras genetic backend so that it works smoothly with both th and tf.
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.
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?
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.
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)
In Keras backends document, image_dim_ordering
controls how to interpret the information of image shape and input channel.
In current source code, keras.backend.backend()
is used as the condition instead of keras.backend.image_dim_ordering()
. TensorFlow backend is possible to use th
as its dimension ordering convention, and vice versa.
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.
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
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
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
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.