diff --git a/Test Notebook.ipynb b/Test Notebook.ipynb
index 9f70607095..5ed2c3300e 100644
--- a/Test Notebook.ipynb
+++ b/Test Notebook.ipynb
@@ -39,16 +39,18 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {},
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": false
+ },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NOTE: Gradio is in beta stage, please report all bugs to: a12d@stanford.edu\n",
- "Model is running locally at: http://localhost:7861/interface.html\n",
- "Model available publicly for 8 hours at: http://4d315e61.ngrok.io/interface.html\n"
+ "Model is running locally at: http://localhost:7862/interface.html\n",
+ "Model available publicly for 8 hours at: https://d38e1bdf.ngrok.io/interface.html\n"
]
},
{
@@ -58,14 +60,14 @@
" \n",
" "
],
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -75,41 +77,26 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:01] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:02] code 404, message File not found\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:02] \"GET /favicon.ico HTTP/1.1\" 404 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:08] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/css/style.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/js/utils.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/img/logo_inline.png HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:09] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:10] code 404, message File not found\n",
- "127.0.0.1 - - [06/Mar/2019 11:55:10] \"GET /favicon.ico HTTP/1.1\" 404 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:07] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:07] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:07] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:07] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:07] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:31] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:43] \"GET /interface.html HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/js/utils.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/css/style.css HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:44] \"GET /static/img/logo_inline.png HTTP/1.1\" 200 -\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:45] code 404, message File not found\n",
- "127.0.0.1 - - [06/Mar/2019 11:58:45] \"GET /favicon.ico HTTP/1.1\" 404 -\n"
+ "127.0.0.1 - - [06/Mar/2019 21:54:13] \"GET /interface.html HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:13] \"GET /interface.html HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/css/style.css HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] code 404, message File not found\n",
+ "127.0.0.1 - - [06/Mar/2019 21:54:14] \"GET /favicon.ico HTTP/1.1\" 404 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:52] \"GET /interface.html HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/css/style.css HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/img/logo_inline.png HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/js/utils.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:53] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:54] code 404, message File not found\n",
+ "127.0.0.1 - - [06/Mar/2019 21:55:54] \"GET /favicon.ico HTTP/1.1\" 404 -\n"
]
}
],
diff --git a/examples/Emotional Detector (ImageUpload).ipynb b/examples/Emotional Detector (ImageUpload).ipynb
index 4d721798a8..702ca9bc9c 100644
--- a/examples/Emotional Detector (ImageUpload).ipynb
+++ b/examples/Emotional Detector (ImageUpload).ipynb
@@ -52,22 +52,72 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 4,
"metadata": {},
"outputs": [
{
- "ename": "DistutilsFileError",
- "evalue": "cannot copy tree 'C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\static\\': not a directory",
- "output_type": "error",
- "traceback": [
- "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[1;31mDistutilsFileError\u001b[0m Traceback (most recent call last)",
- "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0miface\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgradio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mInterface\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'imageupload'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutputs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'label'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmodel_type\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'keras'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0miface\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlaunch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mshare\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
- "\u001b[1;32m~\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\interface.py\u001b[0m in \u001b[0;36mlaunch\u001b[1;34m(self, inline, browser, share)\u001b[0m\n\u001b[0;32m 136\u001b[0m \u001b[0mserver_port\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnetworking\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstart_simple_server\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput_directory\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 137\u001b[0m \u001b[0mpath_to_server\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'http://localhost:{}/'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mserver_port\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 138\u001b[1;33m \u001b[0mnetworking\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuild_template\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput_directory\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minput_interface\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moutput_interface\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 139\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 140\u001b[0m \u001b[1;31m# Set up a port to serve a websocket that sets up the communication between the front-end and model.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;32m~\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\networking.py\u001b[0m in \u001b[0;36mbuild_template\u001b[1;34m(temp_dir, input_interface, output_interface)\u001b[0m\n\u001b[0;32m 67\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mall_io_soup\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 68\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 69\u001b[1;33m \u001b[0mcopy_files\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mSTATIC_PATH_LIB\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtemp_dir\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSTATIC_PATH_TEMP\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 70\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 71\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;32m~\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\networking.py\u001b[0m in \u001b[0;36mcopy_files\u001b[1;34m(src_dir, dest_dir)\u001b[0m\n\u001b[0;32m 76\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mparam\u001b[0m \u001b[0mdest_dir\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstring\u001b[0m \u001b[0mpath\u001b[0m \u001b[0mto\u001b[0m \u001b[0mdestination\u001b[0m \u001b[0mdirectory\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 77\u001b[0m \"\"\"\n\u001b[1;32m---> 78\u001b[1;33m \u001b[0mdir_util\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy_tree\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc_dir\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdest_dir\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 79\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 80\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;32m~\\Anaconda3\\envs\\tensorflow\\lib\\distutils\\dir_util.py\u001b[0m in \u001b[0;36mcopy_tree\u001b[1;34m(src, dst, preserve_mode, preserve_times, preserve_symlinks, update, verbose, dry_run)\u001b[0m\n\u001b[0;32m 122\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mdry_run\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misdir\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 123\u001b[0m raise DistutilsFileError(\n\u001b[1;32m--> 124\u001b[1;33m \"cannot copy tree '%s': not a directory\" % src)\n\u001b[0m\u001b[0;32m 125\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 126\u001b[0m \u001b[0mnames\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlistdir\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;31mDistutilsFileError\u001b[0m: cannot copy tree 'C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\static\\': not a directory"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "NOTE: Gradio is in beta stage, please report all bugs to: a12d@stanford.edu\n",
+ "Model is running locally at: http://localhost:7860/interface.html\n",
+ "To create a public link, set `share=True` in the argument to `launch()`\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "('http://localhost:7860/interface.html', None)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "127.0.0.1 - - [06/Mar/2019 12:13:52] \"GET /interface.html HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 12:13:52] \"GET /static/css/gradio.css HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 12:13:52] \"GET /static/js/all-io.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 12:13:52] \"GET /static/js/image-upload-input.js HTTP/1.1\" 200 -\n",
+ "127.0.0.1 - - [06/Mar/2019 12:13:52] \"GET /static/js/class-output.js HTTP/1.1\" 200 -\n",
+ "Error in connection handler\n",
+ "Traceback (most recent call last):\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\websockets\\server.py\", line 169, in handler\n",
+ " yield from self.ws_handler(self, path)\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\interface.py\", line 106, in communicate\n",
+ " prediction = self.predict(processed_input)\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\gradio\\interface.py\", line 122, in predict\n",
+ " return self.model_obj.predict(preprocessed_input)\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\engine\\training.py\", line 1149, in predict\n",
+ " x, _, _ = self._standardize_user_data(x)\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\engine\\training.py\", line 751, in _standardize_user_data\n",
+ " exception_prefix='input')\n",
+ " File \"C:\\Users\\islam\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\engine\\training_utils.py\", line 138, in standardize_input_data\n",
+ " str(data_shape))\n",
+ "ValueError: Error when checking input: expected conv2d_1_input to have shape (48, 48, 1) but got array with shape (224, 224, 3)\n"
]
}
],
diff --git a/gradio/templates/base_template.html b/gradio/templates/base_template.html
index a8e29e925f..c8356c336a 100644
--- a/gradio/templates/base_template.html
+++ b/gradio/templates/base_template.html
@@ -22,7 +22,9 @@
+