From 38a2c22ae13959e85bacad39ab648fdfdae256cf Mon Sep 17 00:00:00 2001 From: Leon Chen Date: Thu, 13 Oct 2016 18:55:15 -0400 Subject: [PATCH] inception-v3 and resnet50 connection paths --- demos/dist/bundle.js | 4 +-- demos/src/inception-v3.js | 62 +++++++++++++++++++-------------------- demos/src/resnet50.js | 58 ++++++++++++++++++------------------ 3 files changed, 62 insertions(+), 62 deletions(-) diff --git a/demos/dist/bundle.js b/demos/dist/bundle.js index 9ccc7b8..969cfb0 100644 --- a/demos/dist/bundle.js +++ b/demos/dist/bundle.js @@ -1,7 +1,7 @@ !function(e){function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,n,t){Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=234)}([function(e,n,t){"use strict";function a(e){return"[object Array]"===k.call(e)}function o(e){return"[object ArrayBuffer]"===k.call(e)}function r(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){var n;return n="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function s(e){return"string"==typeof e}function l(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function u(e){return null!==e&&"object"==typeof e}function d(e){return"[object Date]"===k.call(e)}function m(e){return"[object File]"===k.call(e)}function f(e){return"[object Blob]"===k.call(e)}function p(e){return"[object Function]"===k.call(e)}function h(e){return u(e)&&p(e.pipe)}function b(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function g(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function v(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function x(e,n){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||a(e)||(e=[e]),a(e))for(var t=0,o=e.length;t=0&&v.splice(n,1)}function i(e){var n=document.createElement("style");return n.type="text/css",o(e,n),n}function s(e){var n=document.createElement("link");return n.rel="stylesheet",o(e,n),n}function l(e,n){var t,a,o;if(n.singleton){var l=g++;t=b||(b=i(n)),a=c.bind(null,t,l,!1),o=c.bind(null,t,l,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(t=s(n),a=d.bind(null,t),o=function(){r(t),t.href&&URL.revokeObjectURL(t.href)}):(t=i(n),a=u.bind(null,t),o=function(){r(t)});return a(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;a(e=n)}else o()}}function c(e,n,t,a){var o=t?"":a.css;if(e.styleSheet)e.styleSheet.cssText=x(n,o);else{var r=document.createTextNode(o),i=e.childNodes;i[n]&&e.removeChild(i[n]),i.length?e.insertBefore(r,i[n]):e.appendChild(r)}}function u(e,n){var t=n.css,a=n.media;if(a&&e.setAttribute("media",a),e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}function d(e,n){var t=n.css,a=n.sourceMap;a&&(t+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */");var o=new Blob([t],{type:"text/css"}),r=e.href;e.href=URL.createObjectURL(o),r&&URL.revokeObjectURL(r)}var m={},f=function(e){var n;return function(){return"undefined"==typeof n&&(n=e.apply(this,arguments)),n}},p=f(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),h=f(function(){return document.head||document.getElementsByTagName("head")[0]}),b=null,g=0,v=[];e.exports=function(e,n){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");n=n||{},"undefined"==typeof n.singleton&&(n.singleton=p()),"undefined"==typeof n.insertAt&&(n.insertAt="bottom");var o=a(e);return t(o,n),function(e){for(var r=[],i=0;i0&&(li&&(i=l),cs&&(s=c))}o-=20,i+=20,r-=20,s+=20;var d=i-o+1,m=s-r+1;if(dm){var h=Math.floor((d-m)/2),b=d-m-h;s+=b,r-=h}d=i-o+1,m=s-r+1;for(var g=new Uint8ClampedArray(d*m*4),v=o;v<=i;v++)for(var x=r;x<=s;x++)if(v>=0&&v=0&&xt&&(t=e.data[a]);return{min:n,max:t}}function c(e){for(var n=l(e),t=n.min,a=n.max,o=new Uint8ClampedArray(4*e.size),r=0,i=o.length;r3&&void 0!==arguments[3]?arguments[3]:[0,0,0],o=n*t*4,r=new Uint8ClampedArray(o),i=0;i1&&void 0!==arguments[1]?arguments[1]:5,t=(0,w.default)(e)?Array.prototype.slice.call(e):e,a=(0,N.default)((0,L.default)(t.map(function(e,n){return[e,n]}),function(e){return e[0]})),o=(0,z.default)(a,n).map(function(e){var n=E.imagenetClasses[e[1]];return{id:n[0],name:n[1].replace(/_/," "),probability:e[0]}});return o}Object.defineProperty(n,"__esModule",{value:!0});var p=function(){function e(e,n){var t=[],a=!0,o=!1,r=void 0;try{for(var i,s=e[Symbol.iterator]();!(a=(i=s.next()).done)&&(t.push(i.value),!n||t.length!==n);a=!0);}catch(e){o=!0,r=e}finally{try{!a&&s.return&&s.return()}finally{if(o)throw r}}return t}return function(n,t){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return e(n,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();n.getMidpoint=o,n.getCoordinates=r,n.centerCrop=i,n.tensorStats=s,n.tensorMinMax=l,n.image1Dtensor=c,n.image2Dtensor=u,n.image2Darray=d,n.unroll3Dtensor=m,n.imagenetClassesTopK=f;var h=t(217),b=a(h),g=t(213),v=a(g),x=t(202),_=a(x),y=t(29),w=a(y),k=t(210),N=a(k),C=t(211),L=a(C),S=t(214),z=a(S),E=t(90)},function(e,n,t){function a(e){var n=-1,t=e?e.length:0;for(this.clear();++nMath.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===n&&r.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):r.push("ORDER})")),r.push("proto.set=function "+t+"_set("+c.join(",")+",v){"),a?r.push("return this.data.set("+u+",v)}"):r.push("return this.data["+u+"]=v}"),r.push("proto.get=function "+t+"_get("+c.join(",")+"){"),a?r.push("return this.data.get("+u+")}"):r.push("return this.data["+u+"]}"),r.push("proto.index=function "+t+"_index(",c.join(),"){return "+u+"}"),r.push("proto.hi=function "+t+"_hi("+c.join(",")+"){return new "+t+"(this.data,"+s.map(function(e){return["(typeof i",e,"!=='number'||i",e,"<0)?this.shape[",e,"]:i",e,"|0"].join("")}).join(",")+","+s.map(function(e){return"this.stride["+e+"]"}).join(",")+",this.offset)}");var p=s.map(function(e){return"a"+e+"=this.shape["+e+"]"}),h=s.map(function(e){return"c"+e+"=this.stride["+e+"]"});r.push("proto.lo=function "+t+"_lo("+c.join(",")+"){var b=this.offset,d=0,"+p.join(",")+","+h.join(","));for(var b=0;b=0){d=i"+b+"|0;b+=c"+b+"*d;a"+b+"-=d}");r.push("return new "+t+"(this.data,"+s.map(function(e){return"a"+e}).join(",")+","+s.map(function(e){return"c"+e}).join(",")+",b)}"),r.push("proto.step=function "+t+"_step("+c.join(",")+"){var "+s.map(function(e){return"a"+e+"=this.shape["+e+"]"}).join(",")+","+s.map(function(e){return"b"+e+"=this.stride["+e+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var b=0;b=0){c=(c+this.stride["+b+"]*i"+b+")|0}else{a.push(this.shape["+b+"]);b.push(this.stride["+b+"])}");r.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),r.push("return function construct_"+t+"(data,shape,stride,offset){return new "+t+"(data,"+s.map(function(e){return"shape["+e+"]"}).join(",")+","+s.map(function(e){return"stride["+e+"]"}).join(",")+",offset)}");var i=new Function("CTOR_LIST","ORDER",r.join("\n"));return i(d[e],o)}function i(e){if(c(e))return"buffer";if(u)switch(Object.prototype.toString.call(e)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped"}return Array.isArray(e)?"array":"generic"}function s(e,n,t,a){if(void 0===e){var o=d.array[0];return o([])}"number"==typeof e&&(e=[e]),void 0===n&&(n=[e.length]);var s=n.length;if(void 0===t){t=new Array(s);for(var l=s-1,c=1;l>=0;--l)t[l]=c,c*=n[l]}if(void 0===a){a=0;for(var l=0;l-1&&e%1==0&&e-1&&e%1==0&&e<=a}var a=9007199254740991;e.exports=t},function(e,n,t){var a=t(131),o=t(46),r=t(185),i=r&&r.isTypedArray,s=i?o(i):a;e.exports=s},function(e,n,t){function a(e){if(!e)return 0===e?e:0;if(e=o(e),e===r||e===-r){var n=e<0?-1:1;return n*i}return e===e?e:0}var o=t(58),r=1/0,i=1.7976931348623157e308;e.exports=a},function(e,n,t){"use strict";function a(e){if(!e)return s;for(var n=0;n>",rrshift:">>>"};!function(){for(var e in l){var t=l[e];n[e]=r({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:e}),n[e+"eq"]=r({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:e+"eq"}),n[e+"s"]=r({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:e+"s"}),n[e+"seq"]=r({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:e+"seq"})}}();var c={not:"!",bnot:"~",neg:"-",recip:"1.0/"};!function(){for(var e in c){var t=c[e];n[e]=r({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:e}),n[e+"eq"]=r({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:e+"eq"})}}();var u={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};!function(){for(var e in u){var t=u[e];n[e]=r({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:e}),n[e+"s"]=r({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:e+"s"}),n[e+"eq"]=r({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:e+"eq"}),n[e+"seq"]=r({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:e+"seq"})}}();var d=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];!function(){for(var e=0;ethis_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),n.norm1=i({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),n.sup=i({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),n.inf=i({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),n.random=r({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),n.assign=r({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),n.assigns=r({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),n.equals=i({args:["array","array"],pre:s,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})},function(e,n,t){"use strict";var a=t(0),o=t(70),r=t(73),i=t(79),s=t(77),l=t(35),c="undefined"!=typeof window&&window.btoa||t(72);e.exports=function(e){return new Promise(function(n,u){var d=e.data,m=e.headers;a.isFormData(d)&&delete m["Content-Type"];var f=new XMLHttpRequest,p="onreadystatechange",h=!1;if("undefined"==typeof window||!window.XDomainRequest||"withCredentials"in f||s(e.url)||(f=new window.XDomainRequest,p="onload",h=!0,f.onprogress=function(){},f.ontimeout=function(){}),e.auth){var b=e.auth.username||"",g=e.auth.password||"";m.Authorization="Basic "+c(b+":"+g)}if(f.open(e.method.toUpperCase(),r(e.url,e.params,e.paramsSerializer),!0),f.timeout=e.timeout,f[p]=function(){if(f&&(4===f.readyState||h)&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))){var t="getAllResponseHeaders"in f?i(f.getAllResponseHeaders()):null,a=e.responseType&&"text"!==e.responseType?f.response:f.responseText,r={data:a,status:1223===f.status?204:f.status,statusText:1223===f.status?"No Content":f.statusText,headers:t,config:e,request:f};o(n,u,r),f=null}},f.onerror=function(){u(l("Network Error",e)),f=null},f.ontimeout=function(){u(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED")),f=null},a.isStandardBrowserEnv()){var v=t(75),x=(e.withCredentials||s(e.url))&&e.xsrfCookieName?v.read(e.xsrfCookieName):void 0;x&&(m[e.xsrfHeaderName]=x)}if("setRequestHeader"in f&&a.forEach(m,function(e,n){"undefined"==typeof d&&"content-type"===n.toLowerCase()?delete m[n]:f.setRequestHeader(n,e)}),e.withCredentials&&(f.withCredentials=!0),e.responseType)try{f.responseType=e.responseType}catch(e){if("json"!==f.responseType)throw e}"function"==typeof e.onDownloadProgress&&f.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&f.upload&&f.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){f.abort(),u(e),f=null}),void 0===d&&(d=null),f.send(d)})}},function(e,n){"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},function(e,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,n,t){"use strict";var a=t(69);e.exports=function(e,n,t,o){var r=new Error(e);return a(r,n,t,o)}},function(e,n,t){"use strict";(function(n){function a(e,n){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=n)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=t(32):"undefined"!=typeof n&&(e=t(32)),e}var r=t(0),i=t(78),s=/^\)\]\}',?\n/,l={"Content-Type":"application/x-www-form-urlencoded"};e.exports={adapter:o(),transformRequest:[function(e,n){return i(n,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(a(n,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(a(n,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e){e=e.replace(s,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(l),post:r.merge(l),put:r.merge(l)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}}}).call(n,t(218))},function(e,n){"use strict";e.exports=function(e,n){return function(){for(var t=new Array(arguments.length),a=0;a0)throw new Error("cwise: pre() block may not reference array args");if(o0)throw new Error("cwise: post() block may not reference array args")}else if("scalar"===i)n.scalarArgs.push(o),n.shimArgs.push("scalar"+o);else if("index"===i){if(n.indexArgs.push(o),o0)throw new Error("cwise: pre() block may not reference array index");if(o0)throw new Error("cwise: post() block may not reference array index")}else if("shape"===i){if(n.shapeArgs.push(o),ot.length)throw new Error("cwise: Too many arguments in pre() block");if(n.body.args.length>t.length)throw new Error("cwise: Too many arguments in body() block");if(n.post.args.length>t.length)throw new Error("cwise: Too many arguments in post() block");return n.debug=!!e.printCode||!!e.debug,n.funcName=e.funcName||"cwise",n.blockSize=e.blockSize||64,r(n)}var r=t(102);e.exports=o},function(e,n,t){function a(e){var n=this.__data__=new o(e);this.size=n.size}var o=t(12),r=t(193),i=t(194),s=t(195),l=t(196),c=t(197);a.prototype.clear=r,a.prototype.delete=i,a.prototype.get=s,a.prototype.has=l,a.prototype.set=c,e.exports=a},function(e,n){function t(e,n){for(var t=-1,a=e?e.length:0,o=Array(a);++t0&&t(u)?n>1?a(u,n-1,t,i,s):o(s,u):i||(s[s.length]=u)}return s}var o=t(119),r=t(168);e.exports=a},function(e,n,t){function a(e,n){n=r(n,e)?[n]:o(n);for(var t=0,a=n.length;null!=e&&tm))return!1;var p=u.get(e);if(p&&u.get(n))return p==n;var h=-1,b=!0,g=c&s?new o:void 0;for(u.set(e,n),u.set(n,e);++h=n||t<0||L&&a>=_}function f(){var e=r();return m(e)?p(e):void(w=setTimeout(f,d(e)))}function p(e){return w=void 0,S&&v?a(e):(v=x=void 0,y)}function h(){void 0!==w&&clearTimeout(w),N=0,v=k=x=w=void 0}function b(){return void 0===w?y:p(r())}function g(){var e=r(),t=m(e);if(v=arguments,x=this,k=e,t){if(void 0===w)return u(k);if(L)return w=setTimeout(f,n),a(k)}return void 0===w&&(w=setTimeout(f,n)),y}var v,x,_,y,w,k,N=0,C=!1,L=!1,S=!0;if("function"!=typeof e)throw new TypeError(s);return n=i(n)||0,o(t)&&(C=!!t.leading,L="maxWait"in t,_=L?l(i(t.maxWait)||0,n):_,S="trailing"in t?!!t.trailing:S),g.cancel=h,g.flush=b,g}var o=t(6),r=t(206),i=t(58),s="Expected a function",l=Math.max,c=Math.min;e.exports=a},function(e,n,t){function a(e,n,t){var a=e?e.length:0;if(!a)return-1;var l=null==t?0:i(t);return l<0&&(l=s(a+l,0)),o(e,r(n,3),l)}var o=t(122),r=t(14),i=t(57),s=Math.max;e.exports=a},function(e,n,t){(function(e){var a=t(1),o=t(212),r="object"==typeof n&&n&&!n.nodeType&&n,i=r&&"object"==typeof e&&e&&!e.nodeType&&e,s=i&&i.exports===r,l=s?a.Buffer:void 0,c=l?l.isBuffer:void 0,u=c||o;e.exports=u}).call(n,t(61)(e))},function(e,n,t){function a(e){var n=o(e)?c.call(e):"";return n==r||n==i||n==s}var o=t(6),r="[object Function]",i="[object GeneratorFunction]",s="[object Proxy]",l=Object.prototype,c=l.toString;e.exports=a},function(e,n,t){function a(e){var n=o(e),t=n%1;return n===n?t?n-t:n:0}var o=t(30);e.exports=a},function(e,n,t){function a(e){if("number"==typeof e)return e;if(r(e))return i;if(o(e)){var n="function"==typeof e.valueOf?e.valueOf():e;e=o(n)?n+"":n}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var t=c.test(e);return t||u.test(e)?d(e.slice(2),t?2:8):l.test(e)?i:+e}var o=t(6),r=t(10),i=NaN,s=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,d=parseInt;e.exports=a},function(e,n){"use strict";function t(e,n){for(var t=1,a=e.length,o=e[0],r=e[0],i=1;i-1?d.currentView=t:d.currentView="home"}t(229);var o=t(85),r=t(81),i=t(86),s=t(87),l=t(89),c=t(84),u=t(82);Vue.component("menu",o.Menu),Vue.component("home",r.Home),Vue.component("mnist-cnn",i.MnistCnn),Vue.component("mnist-vae",s.MnistVae),Vue.component("resnet50",l.ResNet50),Vue.component("inception-v3",c.InceptionV3),Vue.component("imdb-bidirectional-lstm",u.ImdbBidirectionalLstm),Vue.use(VueMdl.default);var d=new Vue({el:"#app",data:function(){return{currentView:"home",hasWebgl:!0}},created:function(){var e=document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");n&&n instanceof WebGLRenderingContext?this.hasWebgl=!0:this.hasWebgl=!1}});window.addEventListener("load",a),window.addEventListener("hashchange",a)},function(e,n,t){e.exports=t(64)},function(e,n,t){"use strict";function a(e){var n=new i(e),t=r(i.prototype.request,n);return o.extend(t,i.prototype,n),o.extend(t,n),t}var o=t(0),r=t(37),i=t(66),s=a();s.Axios=i,s.create=function(e){return a(e)},s.Cancel=t(33),s.CancelToken=t(65),s.isCancel=t(34),s.all=function(e){return Promise.all(e)},s.spread=t(80),e.exports=s,e.exports.default=s},function(e,n,t){"use strict";function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(e){n=e});var t=this;e(function(e){t.reason||(t.reason=new o(e),n(t.reason))})}var o=t(33);a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var e,n=new a(function(n){e=n});return{token:n,cancel:e}},e.exports=a},function(e,n,t){"use strict";function a(e){this.defaults=r.merge(o,e),this.interceptors={request:new i,response:new i}}var o=t(36),r=t(0),i=t(67),s=t(68),l=t(76),c=t(74);a.prototype.request=function(e){"string"==typeof e&&(e=r.merge({url:arguments[0]},arguments[1])),e=r.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!l(e.url)&&(e.url=c(e.baseURL,e.url));var n=[s,void 0],t=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){n.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){n.push(e.fulfilled,e.rejected)});n.length;)t=t.then(n.shift(),n.shift());return t},r.forEach(["delete","get","head"],function(e){a.prototype[e]=function(n,t){return this.request(r.merge(t||{},{method:e,url:n}))}}),r.forEach(["post","put","patch"],function(e){a.prototype[e]=function(n,t,a){return this.request(r.merge(a||{},{method:e,url:n,data:t}))}}),e.exports=a},function(e,n,t){"use strict";function a(){this.handlers=[]}var o=t(0);a.prototype.use=function(e,n){return this.handlers.push({fulfilled:e,rejected:n}),this.handlers.length-1},a.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},a.prototype.forEach=function(e){o.forEach(this.handlers,function(n){null!==n&&e(n)})},e.exports=a},function(e,n,t){"use strict";function a(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=t(0),r=t(71),i=t(34),s=t(36);e.exports=function(e){a(e),e.headers=e.headers||{},e.data=r(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(n){delete e.headers[n]});var n=e.adapter||s.adapter;return n(e).then(function(n){return a(e),n.data=r(n.data,n.headers,e.transformResponse),n},function(n){return i(n)||(a(e),n&&n.response&&(n.response.data=r(n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)})}},function(e,n){"use strict";e.exports=function(e,n,t,a){return e.config=n,t&&(e.code=t),e.response=a,e}},function(e,n,t){"use strict";var a=t(35);e.exports=function(e,n,t){var o=t.config.validateStatus;t.status&&o&&!o(t.status)?n(a("Request failed with status code "+t.status,t.config,null,t)):e(t)}},function(e,n,t){"use strict";var a=t(0);e.exports=function(e,n,t){return a.forEach(t,function(t){e=t(e,n)}),e}},function(e,n){"use strict";function t(){this.message="String contains an invalid character"}function a(e){for(var n,a,r=String(e),i="",s=0,l=o;r.charAt(0|s)||(l="=",s%1);i+=l.charAt(63&n>>8-s%1*8)){if(a=r.charCodeAt(s+=.75),a>255)throw new t;n=n<<8|a}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.code=5,t.prototype.name="InvalidCharacterError",e.exports=a},function(e,n,t){"use strict";function a(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=t(0);e.exports=function(e,n,t){if(!n)return e;var r;if(t)r=t(n);else if(o.isURLSearchParams(n))r=n.toString();else{var i=[];o.forEach(n,function(e,n){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(n+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(a(n)+"="+a(e))}))}),r=i.join("&")}return r&&(e+=(e.indexOf("?")===-1?"?":"&")+r),e}},function(e,n){"use strict";e.exports=function(e,n){return e.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,"")}},function(e,n,t){"use strict";var a=t(0);e.exports=a.isStandardBrowserEnv()?function(){return{write:function(e,n,t,o,r,i){var s=[];s.push(e+"="+encodeURIComponent(n)),a.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),a.isString(o)&&s.push("path="+o),a.isString(r)&&s.push("domain="+r),i===!0&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,n,t){"use strict";var a=t(0);e.exports=a.isStandardBrowserEnv()?function(){function e(e){var n=e;return t&&(o.setAttribute("href",n),n=o.href),o.setAttribute("href",n),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var n,t=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return n=e(window.location.href),function(t){var o=a.isString(t)?e(t):t;return o.protocol===n.protocol&&o.host===n.host}}():function(){return function(){return!0}}()},function(e,n,t){"use strict";var a=t(0);e.exports=function(e,n){a.forEach(e,function(t,a){a!==n&&a.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[a])})}},function(e,n,t){"use strict";var a=t(0);e.exports=function(e){var n,t,o,r={};return e?(a.forEach(e.split("\n"),function(e){o=e.indexOf(":"),n=a.trim(e.substr(0,o)).toLowerCase(),t=a.trim(e.substr(o+1)),n&&(r[n]=r[n]?r[n]+", "+t:t)}),r):r}},function(e,n){"use strict";e.exports=function(e){return function(n){return e.apply(null,n)}}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Home=void 0,t(226);var a=[{title:"Basic Convnet for MNIST",path:"mnist-cnn",imagePath:"demos/assets/mnist-cnn.png"},{title:"Convolutional Variational Autoencoder, trained on MNIST",path:"mnist-vae",imagePath:"demos/assets/mnist-vae.png"},{title:"50-layer Residual Network, trained on ImageNet",path:"resnet50",imagePath:"demos/assets/resnet50.png"},{title:"Inception V3, trained on ImageNet",path:"inception-v3",imagePath:"demos/assets/inception-v3.png"},{title:"Bidirectional LSTM for IMDB sentiment classification",path:"imdb-bidirectional-lstm",imagePath:"demos/assets/imdb-bidirectional-lstm.png"}],o=a;n.Home=Vue.extend({template:t(219),data:function(){return{demoInfo:o}}})},function(e,n,t){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.ImdbBidirectionalLstm=void 0,t(227);var o=t(63),r=a(o),i=t(53),s=a(i),l=t(208),c=a(l),u=t(54),d=a(u),m=t(31),f=a(m),p=t(91),h=a(p),b={model:"demos/data/imdb_bidirectional_lstm/imdb_bidirectional_lstm.json",weights:"https://transcranial.github.io/keras-js-demos-data/imdb_bidirectional_lstm/imdb_bidirectional_lstm_weights.buf",metadata:"demos/data/imdb_bidirectional_lstm/imdb_bidirectional_lstm_metadata.json"},g={filepaths:b},v={wordIndex:"/demos/data/imdb_bidirectional_lstm/imdb_dataset_word_index_top20000.json",wordDict:"/demos/data/imdb_bidirectional_lstm/imdb_dataset_word_dict_top20000.json",testSamples:"/demos/data/imdb_bidirectional_lstm/imdb_dataset_test.json"},x=v,_=200,y=1,w=2,k=3,N=[{name:"embedding_1",className:"Embedding",details:"200 time steps, dim 20000 -> 64"},{name:"bidirectional_1",className:"Bidirectional [LSTM]",details:"200 time steps, dim 64 -> 32, concat merge, tanh activation, hard sigmoid inner activation"},{name:"dropout_1",className:"Dropout",details:"p=0.5 (active during training)"},{name:"dense_1",className:"Dense",details:"output dim 1, sigmoid activation"}];n.ImdbBidirectionalLstm=Vue.extend({props:["hasWebgl"],template:t(220),data:function(){return{showInfoPanel:!0,useGpu:!1,model:new KerasJS.Model(Object.assign({gpu:!1},g)),modelLoading:!0,modelRunning:!1,input:new Float32Array(_),output:new Float32Array(1),inputText:"",inputTextParsed:[],stepwiseOutput:[],wordIndex:{},wordDict:{},testSamples:[],isSampleText:!1,sampleTextLabel:null,architectureDiagramLayers:N}},computed:{loadingProgress:function(){return this.model.getLoadingProgress()},outputColor:function(){return this.output[0]>0&&this.output[0]<.5?"rgba(242, 38, 19, "+(1-this.output[0])+")":this.output[0]>=.5?"rgba(27, 188, 155, "+this.output[0]+")":"#69707a"},stepwiseOutputColor:function(){return this.stepwiseOutput.map(function(e){return e>0&&e<.5?"rgba(242, 38, 19, "+(.5-e)+")":e>=.5?"rgba(27, 188, 155, "+(e-.5)+")":"white"})}},ready:function(){var e=this;this.model.ready().then(function(){e.modelLoading=!1,e.loadAdditionalData()})},methods:{closeInfoPanel:function(){this.showInfoPanel=!1},toggleGpu:function(){this.model.toggleGpu(!this.useGpu)},clear:function(e){this.inputText="",this.inputTextParsed=[],this.output=new Float32Array(1)},loadAdditionalData:function(){var e=this;this.modelLoading=!0;var n=["wordIndex","wordDict","testSamples"].map(function(e){return r.default.get(x[e])});r.default.all(n).then(r.default.spread(function(n,t,a){e.wordIndex=n.data,e.wordDict=t.data,e.testSamples=a.data,e.modelLoading=!1}))},randomSample:function(){var e=this;this.modelRunning=!0,this.isSampleText=!0;var n=(0,c.default)(0,this.testSamples.length-1),t=this.testSamples[n].values;this.sampleTextLabel=0===this.testSamples[n].label?"negative":"positive";var a=t.map(function(n){return 0===n||1===n?"":2===n?"":e.wordDict[n-k]});this.inputText=a.join(" ").trim(),this.inputTextParsed=a.filter(function(e){return!!e}),this.input=new Float32Array(t),this.model.predict({input:this.input}).then(function(n){e.output=n.output,e.stepwiseCalc(),e.modelRunning=!1})},inputChanged:(0,s.default)(function(){var e=this;if(!this.modelRunning){if(""===this.inputText.trim())return void(this.inputTextParsed=[]);this.modelRunning=!0,this.isSampleText=!1,this.inputTextParsed=this.inputText.trim().toLowerCase().split(/[\s\.,!?]+/gi),this.input=new Float32Array(_);var n=this.inputTextParsed.map(function(n){var t=e.wordIndex[n];return t?t+k:w});n=[y].concat(n),n=n.slice(-_);for(var t=Math.max(0,_-n.length),a=t;a<_;a++)this.input[a]=n[a-t];this.model.predict({input:this.input}).then(function(n){e.output=n.output,e.stepwiseCalc(),e.modelRunning=!1})}},200),stepwiseCalc:function(){var e=this.model.modelLayersMap.get("dense_1"),n=this.model.modelLayersMap.get("bidirectional_1").forwardLayer.hiddenStateSequence,t=this.model.modelLayersMap.get("bidirectional_1").backwardLayer.hiddenStateSequence,a=n.tensor.shape[1],o=t.tensor.shape[1],r=(0,d.default)(this.input,function(e){return e>=k});if(r!==-1){for(var i=[],s=r;s<_;s++){var l=new h.default([],[a+o]);f.default.assign(l.tensor.hi(a).lo(0),n.tensor.pick(s,null)),f.default.assign(l.tensor.hi(a+o).lo(a),t.tensor.pick(_-s-1,null)),i.push(e.call(l).tensor.data[0])}this.stepwiseOutput=i}}}})},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.ARCHITECTURE_DIAGRAM=[{name:"convolution2d_1",className:"Convolution2D",details:"32 3x3 filters, 2x2 strides, border mode valid, ReLU",row:0,col:0},{name:"batchnormalization_1",className:"BatchNormalization",details:"channel axis features",row:1,col:0},{name:"convolution2d_2",className:"Convolution2D",details:"32 3x3 filters, 1x1 strides, border mode valid, ReLU",row:2,col:0},{name:"batchnormalization_2",className:"BatchNormalization",details:"channel axis features",row:3,col:0},{name:"convolution2d_3",className:"Convolution2D",details:"64 3x3 filters, 1x1 strides, border mode same, ReLU",row:4,col:0},{name:"batchnormalization_3",className:"BatchNormalization",details:"channel axis features",row:5,col:0},{name:"maxpooling2d_1",className:"MaxPooling2D",details:"3x3 pool size, 2x2 strides, border mode valid",row:6,col:0},{name:"convolution2d_4",className:"Convolution2D",details:"80 1x1 filters, 1x1 strides, border mode valid, ReLU",row:7,col:0},{name:"batchnormalization_4",className:"BatchNormalization",details:"channel axis features",row:8,col:0},{name:"convolution2d_5",className:"Convolution2D",details:"192 3x3 filters, 1x1 strides, border mode valid, ReLU",row:9,col:0},{name:"batchnormalization_5",className:"BatchNormalization",details:"channel axis features",row:10,col:0},{name:"maxpooling2d_2",className:"MaxPooling2D",details:"3x3 pool size, 2x2 strides, border mode valid",row:11,col:0},{name:"convolution2d_9",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:12,col:0},{name:"batchnormalization_9",className:"BatchNormalization",details:"channel axis features",row:13,col:0},{name:"convolution2d_7",className:"Convolution2D",details:"48 1x1 filters, 1x1 strides, border mode same, ReLU",row:12,col:1},{name:"convolution2d_10",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:14,col:2},{name:"batchnormalization_7",className:"BatchNormalization",details:"channel axis features",row:13,col:1},{name:"batchnormalization_10",className:"BatchNormalization",details:"channel axis features",row:15,col:2},{name:"averagepooling2d_1",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:12,col:3},{name:"convolution2d_6",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:12,col:2},{name:"convolution2d_8",className:"Convolution2D",details:"64 5x5 filters, 1x1 strides, border mode same, ReLU",row:14,col:1},{name:"convolution2d_11",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:16,col:2},{name:"convolution2d_12",className:"Convolution2D",details:"32 1x1 filters, 1x1 strides, border mode same, ReLU",row:13,col:3},{name:"batchnormalization_6",className:"BatchNormalization",details:"channel axis features",row:13,col:2},{name:"batchnormalization_8",className:"BatchNormalization",details:"channel axis features",row:15,col:1},{name:"batchnormalization_11",className:"BatchNormalization",details:"channel axis features",row:17,col:2},{name:"batchnormalization_12",className:"BatchNormalization",details:"channel axis features",row:14,col:3},{name:"mixed0",className:"Merge",details:"concat by channel axes",row:18,col:3},{name:"convolution2d_16",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:19,col:0},{name:"batchnormalization_16",className:"BatchNormalization",details:"channel axis features",row:20,col:0},{name:"convolution2d_14",className:"Convolution2D",details:"48 1x1 filters, 1x1 strides, border mode same, ReLU",row:19,col:1},{name:"convolution2d_17",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:21,col:2},{name:"batchnormalization_14",className:"BatchNormalization",details:"channel axis features",row:20,col:1},{name:"batchnormalization_17",className:"BatchNormalization",details:"channel axis features",row:22,col:2},{name:"averagepooling2d_2",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:19,col:3},{name:"convolution2d_13",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:19,col:2},{name:"convolution2d_15",className:"Convolution2D",details:"64 5x5 filters, 1x1 strides, border mode same, ReLU",row:21,col:1},{name:"convolution2d_18",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:23,col:2},{name:"convolution2d_19",className:"Convolution2D",details:"32 1x1 filters, 1x1 strides, border mode same, ReLU",row:20,col:3},{name:"batchnormalization_13",className:"BatchNormalization",details:"channel axis features",row:20,col:2},{name:"batchnormalization_15",className:"BatchNormalization",details:"channel axis features",row:22,col:1},{name:"batchnormalization_18",className:"BatchNormalization",details:"channel axis features",row:24,col:2},{name:"batchnormalization_19",className:"BatchNormalization",details:"channel axis features",row:21,col:3},{name:"mixed1",className:"Merge",details:"concat by channel axes",row:25,col:3},{name:"convolution2d_23",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:26,col:0},{name:"batchnormalization_23",className:"BatchNormalization",details:"channel axis features",row:27,col:0},{name:"convolution2d_21",className:"Convolution2D",details:"48 1x1 filters, 1x1 strides, border mode same, ReLU",row:26,col:1},{name:"convolution2d_24",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:28,col:2},{name:"batchnormalization_21",className:"BatchNormalization",details:"channel axis features",row:27,col:1},{name:"batchnormalization_24",className:"BatchNormalization",details:"channel axis features",row:29,col:2},{name:"averagepooling2d_3",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:26,col:3},{name:"convolution2d_20",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:26,col:2},{name:"convolution2d_22",className:"Convolution2D",details:"64 5x5 filters, 1x1 strides, border mode same, ReLU",row:28,col:1},{name:"convolution2d_25",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:30,col:2},{name:"convolution2d_26",className:"Convolution2D",details:"32 1x1 filters, 1x1 strides, border mode same, ReLU",row:27,col:3},{name:"batchnormalization_20",className:"BatchNormalization",details:"channel axis features",row:27,col:2},{name:"batchnormalization_22",className:"BatchNormalization",details:"channel axis features",row:29,col:1},{name:"batchnormalization_25",className:"BatchNormalization",details:"channel axis features",row:31,col:2},{name:"batchnormalization_26",className:"BatchNormalization",details:"channel axis features",row:28,col:3},{name:"mixed2",className:"Merge",details:"concat by channel axes",row:32,col:3},{name:"convolution2d_28",className:"Convolution2D",details:"64 1x1 filters, 1x1 strides, border mode same, ReLU",row:33,col:1},{name:"batchnormalization_28",className:"BatchNormalization",details:"channel axis features",row:34,col:1},{name:"convolution2d_29",className:"Convolution2D",details:"96 3x3 filters, 1x1 strides, border mode same, ReLU",row:35,col:1},{name:"batchnormalization_29",className:"BatchNormalization",details:"channel axis features",row:36,col:1},{name:"convolution2d_27",className:"Convolution2D",details:"384 3x3 filters, 2x2 strides, border mode valid, ReLU",row:33,col:0},{name:"convolution2d_30",className:"Convolution2D",details:"96 3x3 filters, 2x2 strides, border mode valid, ReLU",row:37,col:1},{name:"batchnormalization_27",className:"BatchNormalization",details:"channel axis features",row:34,col:0},{name:"batchnormalization_30",className:"BatchNormalization",details:"channel axis features",row:38,col:1},{name:"maxpooling2d_3",className:"MaxPooling2D",details:"3x3 pool size, 2x2 strides, border mode valid",row:33,col:2},{name:"mixed3",className:"Merge",details:"concat by channel axes",row:39,col:3},{name:"convolution2d_35",className:"Convolution2D",details:"128 1x1 filters, 1x1 strides, border mode same, ReLU",row:40,col:2},{name:"batchnormalization_35",className:"BatchNormalization",details:"channel axis features",row:41,col:2},{name:"convolution2d_36",className:"Convolution2D",details:"128 7x1 filters, 1x1 strides, border mode same, ReLU",row:42,col:2},{name:"batchnormalization_36",className:"BatchNormalization",details:"channel axis features",row:43,col:2},{name:"convolution2d_32",className:"Convolution2D",details:"128 1x1 filters, 1x1 strides, border mode same, ReLU",row:40,col:1},{name:"convolution2d_37",className:"Convolution2D",details:"128 1x7 filters, 1x1 strides, border mode same, ReLU",row:44,col:2},{name:"batchnormalization_32",className:"BatchNormalization",details:"channel axis features",row:41,col:1},{name:"batchnormalization_37",className:"BatchNormalization",details:"channel axis features",row:45,col:2},{name:"convolution2d_33",className:"Convolution2D",details:"128 1x7 filters, 1x1 strides, border mode same, ReLU",row:42,col:1},{name:"convolution2d_38",className:"Convolution2D",details:"128 7x1 filters, 1x1 strides, border mode same, ReLU",row:46,col:2},{name:"batchnormalization_33",className:"BatchNormalization",details:"channel axis features",row:43,col:1},{name:"batchnormalization_38",className:"BatchNormalization",details:"channel axis features",row:47,col:2},{name:"averagepooling2d_4",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:40,col:3},{name:"convolution2d_31",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:40,col:0},{name:"convolution2d_34",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:44,col:1},{name:"convolution2d_39",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:48,col:2},{name:"convolution2d_40",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:41,col:3},{name:"batchnormalization_31",className:"BatchNormalization",details:"channel axis features",row:41,col:0},{name:"batchnormalization_34",className:"BatchNormalization",details:"channel axis features",row:45,col:1},{name:"batchnormalization_39",className:"BatchNormalization",details:"channel axis features",row:49,col:2},{name:"batchnormalization_40",className:"BatchNormalization",details:"channel axis features",row:42,col:3},{name:"mixed4",className:"Merge",details:"concat by channel axes",row:50,col:3},{name:"convolution2d_45",className:"Convolution2D",details:"160 1x1 filters, 1x1 strides, border mode same, ReLU",row:51,col:2},{name:"batchnormalization_45",className:"BatchNormalization",details:"channel axis features",row:52,col:2},{name:"convolution2d_46",className:"Convolution2D",details:"160 7x1 filters, 1x1 strides, border mode same, ReLU",row:53,col:2},{name:"batchnormalization_46",className:"BatchNormalization",details:"channel axis features",row:54,col:2},{name:"convolution2d_42",className:"Convolution2D",details:"160 1x1 filters, 1x1 strides, border mode same, ReLU",row:51,col:1},{name:"convolution2d_47",className:"Convolution2D",details:"160 1x7 filters, 1x1 strides, border mode same, ReLU",row:55,col:2},{name:"batchnormalization_42",className:"BatchNormalization",details:"channel axis features",row:52,col:1},{name:"batchnormalization_47",className:"BatchNormalization",details:"channel axis features", -row:56,col:2},{name:"convolution2d_43",className:"Convolution2D",details:"160 1x7 filters, 1x1 strides, border mode same, ReLU",row:53,col:1},{name:"convolution2d_48",className:"Convolution2D",details:"160 7x1 filters, 1x1 strides, border mode same, ReLU",row:57,col:2},{name:"batchnormalization_43",className:"BatchNormalization",details:"channel axis features",row:54,col:1},{name:"batchnormalization_48",className:"BatchNormalization",details:"channel axis features",row:58,col:2},{name:"averagepooling2d_5",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:51,col:3},{name:"convolution2d_41",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:51,col:0},{name:"convolution2d_44",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:55,col:1},{name:"convolution2d_49",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:59,col:2},{name:"convolution2d_50",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:52,col:3},{name:"batchnormalization_41",className:"BatchNormalization",details:"channel axis features",row:52,col:0},{name:"batchnormalization_44",className:"BatchNormalization",details:"channel axis features",row:56,col:1},{name:"batchnormalization_49",className:"BatchNormalization",details:"channel axis features",row:60,col:2},{name:"batchnormalization_50",className:"BatchNormalization",details:"channel axis features",row:53,col:3},{name:"mixed5",className:"Merge",details:"concat by channel axes",row:61,col:3},{name:"convolution2d_55",className:"Convolution2D",details:"160 1x1 filters, 1x1 strides, border mode same, ReLU",row:62,col:2},{name:"batchnormalization_55",className:"BatchNormalization",details:"channel axis features",row:63,col:2},{name:"convolution2d_56",className:"Convolution2D",details:"160 7x1 filters, 1x1 strides, border mode same, ReLU",row:64,col:2},{name:"batchnormalization_56",className:"BatchNormalization",details:"channel axis features",row:65,col:2},{name:"convolution2d_52",className:"Convolution2D",details:"160 1x1 filters, 1x1 strides, border mode same, ReLU",row:62,col:1},{name:"convolution2d_57",className:"Convolution2D",details:"160 1x7 filters, 1x1 strides, border mode same, ReLU",row:66,col:2},{name:"batchnormalization_52",className:"BatchNormalization",details:"channel axis features",row:63,col:1},{name:"batchnormalization_57",className:"BatchNormalization",details:"channel axis features",row:67,col:2},{name:"convolution2d_53",className:"Convolution2D",details:"160 1x7 filters, 1x1 strides, border mode same, ReLU",row:64,col:1},{name:"convolution2d_58",className:"Convolution2D",details:"160 7x1 filters, 1x1 strides, border mode same, ReLU",row:68,col:2},{name:"batchnormalization_53",className:"BatchNormalization",details:"channel axis features",row:65,col:1},{name:"batchnormalization_58",className:"BatchNormalization",details:"channel axis features",row:69,col:2},{name:"averagepooling2d_6",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:62,col:3},{name:"convolution2d_51",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:62,col:0},{name:"convolution2d_54",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:66,col:1},{name:"convolution2d_59",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:70,col:2},{name:"convolution2d_60",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:63,col:3},{name:"batchnormalization_51",className:"BatchNormalization",details:"channel axis features",row:63,col:0},{name:"batchnormalization_54",className:"BatchNormalization",details:"channel axis features",row:67,col:1},{name:"batchnormalization_59",className:"BatchNormalization",details:"channel axis features",row:71,col:2},{name:"batchnormalization_60",className:"BatchNormalization",details:"channel axis features",row:64,col:3},{name:"mixed6",className:"Merge",details:"concat by channel axes",row:72,col:3},{name:"convolution2d_65",className:"Convolution2D",details:"160 1x1 filters, 1x1 strides, border mode same, ReLU",row:73,col:2},{name:"batchnormalization_65",className:"BatchNormalization",details:"channel axis features",row:74,col:2},{name:"convolution2d_66",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:75,col:2},{name:"batchnormalization_66",className:"BatchNormalization",details:"channel axis features",row:76,col:2},{name:"convolution2d_62",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:73,col:1},{name:"convolution2d_67",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:77,col:2},{name:"batchnormalization_62",className:"BatchNormalization",details:"channel axis features",row:74,col:1},{name:"batchnormalization_67",className:"BatchNormalization",details:"channel axis features",row:78,col:2},{name:"convolution2d_63",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:75,col:1},{name:"convolution2d_68",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:79,col:2},{name:"batchnormalization_63",className:"BatchNormalization",details:"channel axis features",row:76,col:1},{name:"batchnormalization_68",className:"BatchNormalization",details:"channel axis features",row:80,col:2},{name:"averagepooling2d_7",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:73,col:3},{name:"convolution2d_61",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:73,col:0},{name:"convolution2d_64",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:77,col:1},{name:"convolution2d_69",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:81,col:2},{name:"convolution2d_70",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:74,col:3},{name:"batchnormalization_61",className:"BatchNormalization",details:"channel axis features",row:74,col:0},{name:"batchnormalization_64",className:"BatchNormalization",details:"channel axis features",row:78,col:1},{name:"batchnormalization_69",className:"BatchNormalization",details:"channel axis features",row:82,col:2},{name:"batchnormalization_70",className:"BatchNormalization",details:"channel axis features",row:75,col:3},{name:"mixed7",className:"Merge",details:"concat by channel axes",row:83,col:3},{name:"convolution2d_73",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:84,col:1},{name:"batchnormalization_73",className:"BatchNormalization",details:"channel axis features",row:85,col:1},{name:"convolution2d_74",className:"Convolution2D",details:"192 1x7 filters, 1x1 strides, border mode same, ReLU",row:86,col:1},{name:"batchnormalization_74",className:"BatchNormalization",details:"channel axis features",row:87,col:1},{name:"convolution2d_71",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:84,col:0},{name:"convolution2d_75",className:"Convolution2D",details:"192 7x1 filters, 1x1 strides, border mode same, ReLU",row:88,col:1},{name:"batchnormalization_71",className:"BatchNormalization",details:"channel axis features",row:85,col:0},{name:"batchnormalization_75",className:"BatchNormalization",details:"channel axis features",row:89,col:1},{name:"convolution2d_72",className:"Convolution2D",details:"320 3x3 filters, 2x2 strides, border mode valid, ReLU",row:86,col:0},{name:"convolution2d_76",className:"Convolution2D",details:"192 3x3 filters, 2x2 strides, border mode valid, ReLU",row:90,col:1},{name:"batchnormalization_72",className:"BatchNormalization",details:"channel axis features",row:87,col:0},{name:"batchnormalization_76",className:"BatchNormalization",details:"channel axis features",row:91,col:1},{name:"averagepooling2d_8",className:"AveragePooling2D",details:"3x3 pool size, 2x2 strides, border mode valid",row:84,col:2},{name:"mixed8",className:"Merge",details:"concat by channel axes",row:92,col:3},{name:"convolution2d_81",className:"Convolution2D",details:"448 1x1 filters, 1x1 strides, border mode same, ReLU",row:93,col:2},{name:"batchnormalization_81",className:"BatchNormalization",details:"channel axis features",row:94,col:2},{name:"convolution2d_78",className:"Convolution2D",details:"384 1x1 filters, 1x1 strides, border mode same, ReLU",row:93,col:1},{name:"convolution2d_82",className:"Convolution2D",details:"384 3x3 filters, 1x1 strides, border mode same, ReLU",row:95,col:2},{name:"batchnormalization_78",className:"BatchNormalization",details:"channel axis features",row:94,col:1},{name:"batchnormalization_82",className:"BatchNormalization",details:"channel axis features",row:96,col:2},{name:"convolution2d_79",className:"Convolution2D",details:"384 1x3 filters, 1x1 strides, border mode same, ReLU",row:95,col:1,subcol:0},{name:"convolution2d_80",className:"Convolution2D",details:"384 3x1 filters, 1x1 strides, border mode same, ReLU",row:95,col:1,subcol:1},{name:"convolution2d_83",className:"Convolution2D",details:"384 1x3 filters, 1x1 strides, border mode same, ReLU",row:97,col:2,subcol:0},{name:"convolution2d_84",className:"Convolution2D",details:"384 3x1 filters, 1x1 strides, border mode same, ReLU",row:97,col:2,subcol:1},{name:"averagepooling2d_9",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:93,col:3},{name:"convolution2d_77",className:"Convolution2D",details:"320 1x1 filters, 1x1 strides, border mode same, ReLU",row:93,col:0},{name:"batchnormalization_79",className:"BatchNormalization",details:"channel axis features",row:96,col:1,subcol:0},{name:"batchnormalization_80",className:"BatchNormalization",details:"channel axis features",row:96,col:1,subcol:1},{name:"batchnormalization_83",className:"BatchNormalization",details:"channel axis features",row:98,col:2,subcol:0},{name:"batchnormalization_84",className:"BatchNormalization",details:"channel axis features",row:98,col:2,subcol:1},{name:"convolution2d_85",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:94,col:3},{name:"batchnormalization_77",className:"BatchNormalization",details:"channel axis features",row:94,col:0},{name:"mixed9_0",className:"Merge",details:"concat by channel axes",row:97,col:1},{name:"merge_1",className:"Merge",details:"concat by channel axes",row:99,col:2},{name:"batchnormalization_85",className:"BatchNormalization",details:"channel axis features",row:95,col:3},{name:"mixed9",className:"Merge",details:"concat by channel axes",row:100,col:3},{name:"convolution2d_90",className:"Convolution2D",details:"448 1x1 filters, 1x1 strides, border mode same, ReLU",row:101,col:2},{name:"batchnormalization_90",className:"BatchNormalization",details:"channel axis features",row:102,col:2},{name:"convolution2d_87",className:"Convolution2D",details:"384 1x1 filters, 1x1 strides, border mode same, ReLU",row:101,col:1},{name:"convolution2d_91",className:"Convolution2D",details:"384 3x3 filters, 1x1 strides, border mode same, ReLU",row:103,col:2},{name:"batchnormalization_87",className:"BatchNormalization",details:"channel axis features",row:102,col:1},{name:"batchnormalization_91",className:"BatchNormalization",details:"channel axis features",row:104,col:2},{name:"convolution2d_88",className:"Convolution2D",details:"384 1x3 filters, 1x1 strides, border mode same, ReLU",row:103,col:1,subcol:0},{name:"convolution2d_89",className:"Convolution2D",details:"384 3x1 filters, 1x1 strides, border mode same, ReLU",row:103,col:1,subcol:1},{name:"convolution2d_92",className:"Convolution2D",details:"384 1x3 filters, 1x1 strides, border mode same, ReLU",row:105,col:2,subcol:0},{name:"convolution2d_93",className:"Convolution2D",details:"384 3x1 filters, 1x1 strides, border mode same, ReLU",row:105,col:2,subcol:1},{name:"averagepooling2d_10",className:"AveragePooling2D",details:"3x3 pool size, 1x1 strides, border mode same",row:101,col:3},{name:"convolution2d_86",className:"Convolution2D",details:"320 1x1 filters, 1x1 strides, border mode same, ReLU",row:101,col:0},{name:"batchnormalization_88",className:"BatchNormalization",details:"channel axis features",row:104,col:1,subcol:0},{name:"batchnormalization_89",className:"BatchNormalization",details:"channel axis features",row:104,col:1,subcol:1},{name:"batchnormalization_92",className:"BatchNormalization",details:"channel axis features",row:106,col:2,subcol:0},{name:"batchnormalization_93",className:"BatchNormalization",details:"channel axis features",row:106,col:2,subcol:1},{name:"convolution2d_94",className:"Convolution2D",details:"192 1x1 filters, 1x1 strides, border mode same, ReLU",row:102,col:3},{name:"batchnormalization_86",className:"BatchNormalization",details:"channel axis features",row:102,col:0},{name:"mixed9_1",className:"Merge",details:"concat by channel axes",row:105,col:1},{name:"merge_2",className:"Merge",details:"concat by channel axes",row:107,col:2},{name:"batchnormalization_94",className:"BatchNormalization",details:"channel axis features",row:103,col:3},{name:"mixed10",className:"Merge",details:"concat by channel axes",row:108,col:3},{name:"avg_pool",className:"AveragePooling2D",details:"8x8 pool size, 8x8 strides, border mode valid",row:109,col:3},{name:"flatten",className:"Flatten",details:"",row:110,col:3},{name:"predictions",className:"Dense",details:"output dimensions 1000, softmax activation",row:111,col:3}],n.ARCHITECTURE_CONNECTIONS=[{from:"averagepooling2d_1",to:"predictions"},{from:"convolution2d_1",to:"maxpooling2d_2"},{from:"maxpooling2d_2",to:"batchnormalization_9"},{from:"maxpooling2d_2",to:"batchnormalization_11",corner:"top-right"},{from:"maxpooling2d_2",to:"batchnormalization_8",corner:"top-right"},{from:"maxpooling2d_2",to:"averagepooling2d_1",corner:"top-right"},{from:"batchnormalization_9",to:"mixed0",corner:"bottom-left"},{from:"batchnormalization_11",to:"mixed0",corner:"bottom-left"},{from:"batchnormalization_8",to:"mixed0",corner:"bottom-left"},{from:"mixed0",to:"convolution2d_16",corner:"bottom-right"},{from:"mixed0",to:"convolution2d_14",corner:"bottom-right"},{from:"mixed0",to:"convolution2d_13",corner:"bottom-right"},{from:"convolution2d_16",to:"mixed1",corner:"bottom-left"},{from:"convolution2d_14",to:"mixed1",corner:"bottom-left"},{from:"convolution2d_13",to:"mixed1",corner:"bottom-left"},{from:"mixed1",to:"convolution2d_23",corner:"bottom-right"},{from:"mixed1",to:"convolution2d_21",corner:"bottom-right"},{from:"mixed1",to:"convolution2d_20",corner:"bottom-right"},{from:"convolution2d_23",to:"mixed2",corner:"bottom-left"},{from:"convolution2d_21",to:"mixed2",corner:"bottom-left"},{from:"convolution2d_20",to:"mixed2",corner:"bottom-left"},{from:"mixed2",to:"convolution2d_27",corner:"bottom-right"},{from:"mixed2",to:"convolution2d_28",corner:"bottom-right"},{from:"mixed2",to:"maxpooling2d_3",corner:"bottom-right"},{from:"convolution2d_27",to:"mixed3",corner:"bottom-left"},{from:"convolution2d_28",to:"mixed3",corner:"bottom-left"},{from:"maxpooling2d_3",to:"mixed3",corner:"bottom-left"},{from:"mixed3",to:"convolution2d_31",corner:"bottom-right"},{from:"mixed3",to:"convolution2d_32",corner:"bottom-right"},{from:"mixed3",to:"convolution2d_35",corner:"bottom-right"},{from:"convolution2d_31",to:"mixed4",corner:"bottom-left"},{from:"convolution2d_32",to:"mixed4",corner:"bottom-left"},{from:"convolution2d_35",to:"mixed4",corner:"bottom-left"},{from:"mixed4",to:"convolution2d_41",corner:"bottom-right"},{from:"mixed4",to:"convolution2d_42",corner:"bottom-right"},{from:"mixed4",to:"convolution2d_45",corner:"bottom-right"},{from:"convolution2d_41",to:"mixed5",corner:"bottom-left"},{from:"convolution2d_42",to:"mixed5",corner:"bottom-left"},{from:"convolution2d_45",to:"mixed5",corner:"bottom-left"},{from:"mixed5",to:"convolution2d_51",corner:"bottom-right"},{from:"mixed5",to:"convolution2d_52",corner:"bottom-right"},{from:"mixed5",to:"convolution2d_55",corner:"bottom-right"},{from:"convolution2d_51",to:"mixed6",corner:"bottom-left"},{from:"convolution2d_52",to:"mixed6",corner:"bottom-left"},{from:"convolution2d_55",to:"mixed6",corner:"bottom-left"},{from:"mixed6",to:"convolution2d_61",corner:"bottom-right"},{from:"mixed6",to:"convolution2d_62",corner:"bottom-right"},{from:"mixed6",to:"convolution2d_65",corner:"bottom-right"},{from:"convolution2d_61",to:"mixed7",corner:"bottom-left"},{from:"convolution2d_62",to:"mixed7",corner:"bottom-left"},{from:"convolution2d_65",to:"mixed7",corner:"bottom-left"},{from:"mixed7",to:"convolution2d_71",corner:"bottom-right"},{from:"mixed7",to:"convolution2d_73",corner:"bottom-right"},{from:"mixed7",to:"averagepooling2d_8",corner:"bottom-right"},{from:"convolution2d_71",to:"mixed8",corner:"bottom-left"},{from:"convolution2d_73",to:"mixed8",corner:"bottom-left"},{from:"averagepooling2d_8",to:"mixed8",corner:"bottom-left"},{from:"mixed8",to:"convolution2d_77",corner:"bottom-right"},{from:"mixed8",to:"convolution2d_78",corner:"bottom-right"},{from:"mixed8",to:"convolution2d_81",corner:"bottom-right"},{from:"convolution2d_77",to:"mixed9",corner:"bottom-left"},{from:"convolution2d_78",to:"batchnormalization_78"},{from:"batchnormalization_78",to:"convolution2d_79"},{from:"batchnormalization_78",to:"convolution2d_80"},{from:"convolution2d_79",to:"batchnormalization_79"},{from:"convolution2d_80",to:"batchnormalization_80"},{from:"batchnormalization_79",to:"mixed9_0"},{from:"batchnormalization_80",to:"mixed9_0"},{from:"mixed9_0",to:"mixed9",corner:"bottom-left"},{from:"convolution2d_81",to:"batchnormalization_81"},{from:"batchnormalization_81",to:"convolution2d_82"},{from:"convolution2d_82",to:"batchnormalization_82"},{from:"batchnormalization_82",to:"convolution2d_83"},{from:"batchnormalization_82",to:"convolution2d_84"},{from:"convolution2d_83",to:"batchnormalization_83"},{from:"convolution2d_84",to:"batchnormalization_84"},{from:"batchnormalization_83",to:"merge_1"},{from:"batchnormalization_84",to:"merge_1"},{from:"merge_1",to:"mixed9",corner:"bottom-left"},{from:"mixed9",to:"convolution2d_86",corner:"bottom-right"},{from:"mixed9",to:"convolution2d_87",corner:"bottom-right"},{from:"mixed9",to:"convolution2d_90",corner:"bottom-right"},{from:"convolution2d_86",to:"mixed10",corner:"bottom-left"},{from:"convolution2d_87",to:"batchnormalization_87"},{from:"batchnormalization_87",to:"convolution2d_88"},{from:"batchnormalization_87",to:"convolution2d_89"},{from:"convolution2d_88",to:"batchnormalization_88"},{from:"convolution2d_89",to:"batchnormalization_89"},{from:"batchnormalization_88",to:"mixed9_1"},{from:"batchnormalization_89",to:"mixed9_1"},{from:"mixed9_1",to:"mixed10",corner:"bottom-left"},{from:"convolution2d_90",to:"batchnormalization_90"},{from:"batchnormalization_90",to:"convolution2d_91"},{from:"convolution2d_91",to:"batchnormalization_91"},{from:"batchnormalization_91",to:"convolution2d_92"},{from:"batchnormalization_91",to:"convolution2d_93"},{from:"convolution2d_92",to:"batchnormalization_92"},{from:"convolution2d_93",to:"batchnormalization_93"},{from:"batchnormalization_92",to:"merge_2"},{from:"batchnormalization_93",to:"merge_2"},{from:"merge_2",to:"mixed10",corner:"bottom-left"}]},function(e,n,t){"use strict";function a(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n.default=e,n}function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.InceptionV3=void 0,t(228);var r=t(20),i=o(r),s=t(31),l=o(s),c=t(200),u=o(c),d=t(11),m=a(d),f=t(38),p=t(83),h={model:"demos/data/inception_v3/inception_v3.json",weights:"https://transcranial.github.io/keras-js-demos-data/inception_v3/inception_v3_weights.buf",metadata:"demos/data/inception_v3/inception_v3_metadata.json"},b={filepaths:h};n.InceptionV3=Vue.extend({props:["hasWebgl"],template:t(221),data:function(){return{showInfoPanel:!0,useGpu:this.hasWebgl,model:new KerasJS.Model(Object.assign({gpu:this.hasWebgl,layerCallPauses:!0},b)),modelLoading:!0,modelRunning:!1,imageURLInput:null,imageURLSelect:null,imageURLSelectList:f.IMAGE_URLS,imageLoading:!1,imageLoadingError:!1,output:null,architectureDiagram:p.ARCHITECTURE_DIAGRAM,architectureConnections:p.ARCHITECTURE_CONNECTIONS,architectureDiagramPaths:[],showComputationFlow:!0}},computed:{loadingProgress:function(){return this.model.getLoadingProgress()},architectureDiagramRows:function(){for(var e=[],n=0;n<112;n++){for(var t=[],a=0;a<4;a++)t.push((0,u.default)(this.architectureDiagram,{row:n,col:a}));e.push(t)}return e},layersWithResults:function(){return this.model.layersWithResults},outputClasses:function(){if(!this.output){for(var e=[],n=0;n<5;n++)e.push({name:"-",probability:0});return e}return m.imagenetClassesTopK(this.output,5)}},ready:function(){var e=this;this.model.ready().then(function(){e.modelLoading=!1}),this.architectureDiagramPaths=[],setTimeout(function(){e.architectureConnections.forEach(function(n){var t=document.getElementsByClassName("architecture-container")[0],a=document.getElementById(n.from),o=document.getElementById(n.to),r=t.getBoundingClientRect(),i=a.getBoundingClientRect(),s=o.getBoundingClientRect(),l=r.left,c=r.top,u=i.left+i.width/2-l,d=i.top+i.height/2-c,m=s.left+s.width/2-l,f=s.top+s.height/2-c,p="M"+u+","+d+" L"+m+","+f;"top-right"===n.corner?p="M"+u+","+d+" L"+(m-10)+","+d+" Q"+m+","+d+" "+m+","+(d+10)+" L"+m+","+f:"bottom-left"===n.corner?p="M"+u+","+d+" L"+u+","+(f-10)+" Q"+u+","+f+" "+(u+10)+","+f+" L"+m+","+f:"top-left"===n.corner?p="M"+u+","+d+" L"+(m+10)+","+d+" Q"+m+","+d+" "+m+","+(d+10)+" L"+m+","+f:"bottom-right"===n.corner&&(p="M"+u+","+d+" L"+u+","+(d+20)+" Q"+u+","+(d+30)+" "+(u-10)+","+(d+30)+" L"+(m+10)+","+(d+30)+" Q"+m+","+(d+30)+" "+m+","+(d+40)+" L"+m+","+f),e.architectureDiagramPaths.push(p)})},1e3)},methods:{closeInfoPanel:function(){this.showInfoPanel=!1},toggleGpu:function(){this.model.toggleGpu(!this.useGpu)},toggleComputationFlow:function(){this.model.layerCallPauses=!this.showComputationFlow},imageURLInputChanged:function(e){this.imageURLSelect=null,this.loadImageToCanvas(this.imageURLInput)},imageURLSelectChanged:function(e){this.imageURLInput=this.imageURLSelect,this.loadImageToCanvas(this.imageURLSelect)},loadImageToCanvas:function(e){var n=this;return e?(this.imageLoading=!0,void loadImage(e,function(e){if("error"===e.type)n.imageLoadingError=!0,n.imageLoading=!1;else{var t=document.getElementById("input-canvas").getContext("2d");t.drawImage(e,0,0),n.imageLoadingError=!1,n.imageLoading=!1,n.modelRunning=!0,n.$nextTick(function(){var e=this;setTimeout(function(){e.runModel()},200)})}},{maxWidth:299,maxHeight:299,cover:!0,crop:!0,canvas:!0,crossOrigin:"Anonymous"})):void this.clearAll()},runModel:function(){var e=this,n=document.getElementById("input-canvas").getContext("2d"),t=n.getImageData(0,0,n.canvas.width,n.canvas.height),a=t.data,o=t.width,r=t.height,s=(0,i.default)(new Float32Array(a),[o,r,4]),c=(0,i.default)(new Float32Array(o*r*3),[o,r,3]);l.default.divseq(s,255),l.default.subseq(s,.5),l.default.mulseq(s,2),l.default.assign(c.pick(null,null,0),s.pick(null,null,0)),l.default.assign(c.pick(null,null,1),s.pick(null,null,1)),l.default.assign(c.pick(null,null,2),s.pick(null,null,2));var u={input_1:c.data};this.model.predict(u).then(function(n){e.output=n.predictions,e.modelRunning=!1})},clearAll:function(){this.modelRunning=!1,this.imageURLInput=null,this.imageURLSelect=null,this.imageLoading=!1,this.imageLoadingError=!1,this.output=null,this.model.layersWithResults=[];var e=document.getElementById("input-canvas").getContext("2d");e.clearRect(0,0,e.canvas.width,e.canvas.height)}}})},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Menu=void 0,t(230);n.Menu=Vue.extend({props:["currentView"],template:t(222)})},function(e,n,t){"use strict";function a(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n.default=e,n}function o(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);ne.output[n]?a:n},0)}},ready:function(){var e=this;this.model.ready().then(function(){e.modelLoading=!1,e.$nextTick(function(){this.getIntermediateResults()})})},methods:{closeInfoPanel:function(){this.showInfoPanel=!1},toggleGpu:function(){this.model.toggleGpu(!this.useGpu)},clear:function(e){this.clearIntermediateResults();var n=document.getElementById("input-canvas").getContext("2d");n.clearRect(0,0,n.canvas.width,n.canvas.height);var t=document.getElementById("input-canvas-centercrop").getContext("2d");t.clearRect(0,0,t.canvas.width,t.canvas.height);var a=document.getElementById("input-canvas-scaled").getContext("2d");a.clearRect(0,0,a.canvas.width,a.canvas.height),this.output=new Float32Array(10),this.drawing=!1,this.strokes=[]},activateDraw:function(e){this.drawing=!0,this.strokes.push([]);var n=this.strokes[this.strokes.length-1];n.push(m.getCoordinates(e))},draw:function(e){if(this.drawing){var n=document.getElementById("input-canvas").getContext("2d");n.lineWidth=20,n.lineJoin=n.lineCap="round",n.strokeStyle="#393E46",n.clearRect(0,0,n.canvas.width,n.canvas.height);var t=this.strokes[this.strokes.length-1];t.push(m.getCoordinates(e));for(var a=0,o=this.strokes.length;ae.output[n]?a:n},0)}},ready:function(){var e=this;this.model.ready().then(function(){e.modelLoading=!1,e.$nextTick(function(){this.getIntermediateResults()})})},methods:{closeInfoPanel:function(){this.showInfoPanel=!1},toggleGpu:function(){this.model.toggleGpu(!this.useGpu)},clear:function(e){this.clearIntermediateResults();var n=document.getElementById("input-canvas").getContext("2d");n.clearRect(0,0,n.canvas.width,n.canvas.height);var t=document.getElementById("input-canvas-centercrop").getContext("2d");t.clearRect(0,0,t.canvas.width,t.canvas.height);var a=document.getElementById("input-canvas-scaled").getContext("2d");a.clearRect(0,0,a.canvas.width,a.canvas.height),this.output=new Float32Array(10),this.drawing=!1,this.strokes=[]},activateDraw:function(e){this.drawing=!0,this.strokes.push([]);var n=this.strokes[this.strokes.length-1];n.push(m.getCoordinates(e))},draw:function(e){if(this.drawing){var n=document.getElementById("input-canvas").getContext("2d");n.lineWidth=20,n.lineJoin=n.lineCap="round",n.strokeStyle="#393E46",n.clearRect(0,0,n.canvas.width,n.canvas.height);var t=this.strokes[this.strokes.length-1];t.push(m.getCoordinates(e));for(var a=0,o=this.strokes.length;a2&&void 0!==arguments[2]?arguments[2]:{};o(this,e),this._type=a.type||Float32Array,n&&n.length&&(n instanceof this._type||n instanceof Array)?(d(n,t),this.tensor=(0,s.default)(n,t),this.tensor=(0,s.default)(new this._type(n),t)):!n.length&&t.length?this.tensor=(0,s.default)(new this._type(t.reduce(function(e,n){return e*n},1)),t):this.tensor=(0,s.default)(new this._type([]),[])}return r(e,[{key:"createWeblasTensor",value:function(){if(this.weblasTensor&&this.weblasTensor.delete(),this.weblasTensorsSplit&&this.weblasTensorsSplit.forEach(function(e){return e.delete()}),1===this.tensor.shape.length){var e=this.tensor.shape[0];if(e>u.MAX_TEXTURE_SIZE){this.weblasTensorsSplit=[];for(var n=Math.ceil(u.MAX_TEXTURE_SIZE/e),t=0;tu.MAX_TEXTURE_SIZE}))throw new Error("[Tensor] cannot create Tensor with both dimensions exceeding MAX_TEXTURE_SIZE");var s=this.tensor.shape[0],l=this.tensor.shape[1];if(s>u.MAX_TEXTURE_SIZE){this.weblasTensorsSplit=[];for(var c=Math.ceil(s/u.MAX_TEXTURE_SIZE),d=0;du.MAX_TEXTURE_SIZE){this.weblasTensorsSplit=[];for(var h=Math.ceil(l/u.MAX_TEXTURE_SIZE),b=0;b .mdl-switch {\n margin-bottom: 5px;\n}\n.demo.inception-v3 .top-container .controls > .mdl-switch .mdl-switch__label {\n font-size: 12px !important;\n}\n.demo.inception-v3 .columns.input-output {\n max-width: 800px;\n margin: 0 auto;\n}\n.demo.inception-v3 .columns.input-output .column {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.inception-v3 .columns.input-output .column.input-column {\n position: relative;\n}\n.demo.inception-v3 .columns.input-output .column.input-column .loading-indicator {\n position: absolute;\n top: 0;\n left: -10px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n.demo.inception-v3 .columns.input-output .column.input-column .loading-indicator .mdl-spinner {\n margin: 20px;\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n}\n.demo.inception-v3 .columns.input-output .column.input-column .loading-indicator .error {\n color: #D24D57;\n font-size: 14px;\n font-family: 'Fira Sans',sans-serif;\n margin: 20px;\n}\n.demo.inception-v3 .columns.input-output .column.input-column .canvas-container {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n.demo.inception-v3 .columns.input-output .column.input-column .canvas-container canvas {\n background: white;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output {\n width: 370px;\n height: 160px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 6px 0;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class .output-label {\n text-align: right;\n width: 200px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 18px;\n color: #69707a;\n padding: 0 6px;\n border-right: 2px solid rgba(27, 188, 155, 0.3);\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class .output-bar {\n height: 8px;\n -webkit-transition: width 0.2s ease-out;\n transition: width 0.2s ease-out;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class .output-value {\n text-align: left;\n margin-left: 5px;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 14px;\n color: #69707a;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class.predicted .output-label {\n color: #1BBC9B;\n border-left-color: #1BBC9B;\n}\n.demo.inception-v3 .columns.input-output .column.output-column .output .output-class.predicted .output-value {\n color: #1BBC9B;\n}\n.demo.inception-v3 .architecture-container {\n min-width: 800px;\n max-width: 1200px;\n margin: 0 auto;\n position: relative;\n}\n.demo.inception-v3 .architecture-container .layers-row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 5px;\n position: relative;\n z-index: 1;\n}\n.demo.inception-v3 .architecture-container .layers-row .layer-column {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 5px;\n}\n.demo.inception-v3 .architecture-container .layers-row .layer-column .layer {\n display: inline-block;\n background: white;\n border: 2px solid white;\n border-radius: 5px;\n padding: 2px 10px 0px;\n margin: 3px;\n}\n.demo.inception-v3 .architecture-container .layers-row .layer-column .layer .layer-class-name {\n color: #1BBC9B;\n font-size: 14px;\n font-weight: bold;\n}\n.demo.inception-v3 .architecture-container .layers-row .layer-column .layer .layer-details {\n color: #999999;\n font-size: 12px;\n font-weight: bold;\n}\n.demo.inception-v3 .architecture-container .layers-row .layer-column .layer.has-result {\n border-color: #1BBC9B;\n}\n.demo.inception-v3 .architecture-container .architecture-connections {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n}\n.demo.inception-v3 .architecture-container .architecture-connections path {\n stroke-width: 4px;\n stroke: #AAAAAA;\n fill: none;\n}\n",""])},function(e,n,t){n=e.exports=t(3)(),n.push([e.i,"@import url(https://fonts.googleapis.com/css?family=Fira+Sans);",""]),n.push([e.i,"@import url(https://fonts.googleapis.com/css?family=Share+Tech+Mono);",""]),n.push([e.i,"@import url(https://fonts.googleapis.com/css?family=Nothing+You+Could+Do);",""]),n.push([e.i,"body {\n background: -webkit-linear-gradient(bottom, #CCCCCC, #F0F0F0);\n background: linear-gradient(0deg, #CCCCCC, #F0F0F0);\n color: #393E46;\n min-height: 100vh;\n font-family: 'Fira Sans',sans-serif;\n}\n\n.title {\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.title span {\n color: #1BBC9B;\n margin-right: 20px;\n}\n\n.subtitle {\n color: #393E46;\n}\n\n.demo {\n padding: 50px 30px;\n}\n\n.demo .loading-progress {\n position: absolute;\n top: 0;\n right: 0;\n padding: 30px;\n color: #1BBC9B;\n font-size: 18px;\n font-family: 'Share Tech Mono',sans-serif;\n padding: 20px 50px;\n margin: 30px;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 10px;\n}\n\n.demo .info-panel {\n width: 100%;\n max-width: 1200px;\n border-radius: 5px;\n background: white;\n color: #393E46;\n padding: 20px 20px 5px 20px;\n margin: 20px auto;\n box-shadow: 5px 5px #CCCCCC;\n}\n\n.demo .info-panel .info-panel-text {\n width: 100%;\n margin-bottom: 10px;\n font-size: 12px;\n}\n\n.demo .info-panel .info-panel-text a {\n color: #1BBC9B;\n -webkit-transition: color 0.2s ease-in;\n transition: color 0.2s ease-in\n}\n\n.demo .info-panel .info-panel-text a:hover{\n color: rgba(27, 188, 155, 0.6);\n}\n\n.demo .info-panel .info-panel-close {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n\n.demo .info-panel .info-panel-close .info-panel-close-btn {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n color: #69707a;\n -webkit-transition: color 0.2s ease-in;\n transition: color 0.2s ease-in\n}\n\n.demo .info-panel .info-panel-close .info-panel-close-btn:hover{\n color: rgba(27, 188, 155, 0.3);\n cursor: pointer;\n}\n\n/* MDL overrides */\n\n.demo .mdl-switch__label {\n font-size: 14px !important;\n color: #69707a;\n}\n\n/****************************************************************/\n\n.demo .mdl-switch.is-checked .mdl-switch__thumb {\n background: rgba(27, 188, 155, 0.6);\n}\n\n.demo .mdl-switch.is-checked .mdl-switch__track {\n background: rgba(27, 188, 155, 0.3);\n}\n\n.demo .mdl-textfield .mdl-textfield__input {\n border-bottom-color: rgba(27, 188, 155, 0.6);\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 14px;\n}\n\n.demo .mdl-textfield .mdl-textfield__label {\n font-family: 'Share Tech Mono',sans-serif;\n color: rgba(27, 188, 155, 0.6);\n}\n\n.demo .mdl-textfield .mdl-icon-toggle__label {\n color: rgba(27, 188, 155, 0.6);\n}\n\n.demo .mdl-textfield.is-focused .mdl-textfield__input {\n border-color: #1BBC9B;\n}\n\n.demo .mdl-textfield.is-focused .mdl-textfield__label {\n color: #1BBC9B\n}\n\n.demo .mdl-textfield.is-focused .mdl-textfield__label::after{\n background-color: #1BBC9B;\n}\n\n.demo .mdl-textfield.is-focused .mdl-icon-toggle__label {\n color: #1BBC9B;\n}\n\n.demo .mdl-menu .mdl-menu__item {\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 14px;\n color: #69707a\n}\n\n.demo .mdl-menu .mdl-menu__item:hover{\n background-color: rgba(27, 188, 155, 0.6);\n color: white;\n}\n",""])},function(e,n,t){n=e.exports=t(3)(),n.push([e.i,".menu {\n padding: 40px;\n margin: 20px;\n background: white;\n border-radius: 10px;\n box-shadow: 5px 5px #CCCCCC;\n}\n.menu h1 {\n color: #CCCCCC;\n font-family: 'Fira Sans',sans-serif;\n font-size: 1.5rem;\n}\n.menu .menu-list li {\n color: #69707a;\n border-left: 2px solid white;\n margin-bottom: 3px;\n}\n.menu .menu-list li.active {\n border-left: 2px solid #1BBC9B;\n}\n.menu .menu-list a {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n.menu .menu-list a span.menu-item-heading {\n margin-right: 10px;\n}\n.menu .menu-list a span.menu-item-subheading {\n color: #999999;\n font-size: 0.8em;\n}\n.menu .menu-list a:hover {\n color: #1BBC9B;\n background-color: whitesmoke;\n}\n.menu .menu-list a:hover .github-logo {\n fill: #1BBC9B;\n}\n.menu .menu-list.github li, .menu .menu-list.contact li {\n padding: 5px 10px;\n}\n.menu .menu-list.github a, .menu .menu-list.contact a {\n color: #1BBC9B;\n padding: 0;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n background-color: none;\n -webkit-transition: color 0.2s ease-in;\n transition: color 0.2s ease-in;\n}\n.menu .menu-list.github a .github-logo, .menu .menu-list.contact a .github-logo {\n fill: #1BBC9B;\n -webkit-transition: fill 0.2s ease-in;\n transition: fill 0.2s ease-in;\n}\n.menu .menu-list.github a:hover, .menu .menu-list.contact a:hover {\n color: rgba(27, 188, 155, 0.6);\n background: none;\n}\n.menu .menu-list.github a:hover .github-logo, .menu .menu-list.contact a:hover .github-logo {\n fill: rgba(27, 188, 155, 0.6);\n}\n",""])},function(e,n,t){n=e.exports=t(3)(),n.push([e.i,".demo.mnist-cnn .column {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.mnist-cnn .column.input-column {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n.demo.mnist-cnn .column.input-column .input-container {\n text-align: right;\n margin: 20px;\n position: relative;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.demo.mnist-cnn .column.input-column .input-container .input-label {\n font-family: 'Nothing You Could Do',cursive;\n font-size: 18px;\n color: #69707a;\n text-align: right;\n}\n.demo.mnist-cnn .column.input-column .input-container .input-label span.arrow {\n font-size: 36px;\n color: #CCCCCC;\n position: absolute;\n right: -32px;\n top: 8px;\n}\n.demo.mnist-cnn .column.input-column .input-container .canvas-container {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n margin: 10px 0;\n border: 15px solid rgba(27, 188, 155, 0.3);\n -webkit-transition: border-color 0.2s ease-in;\n transition: border-color 0.2s ease-in;\n}\n.demo.mnist-cnn .column.input-column .input-container .canvas-container canvas {\n background: white\n}\n.demo.mnist-cnn .column.input-column .input-container .canvas-container canvas:hover {\n cursor: crosshair;\n}\n.demo.mnist-cnn .column.input-column .input-container .canvas-container:hover {\n border-color: rgba(27, 188, 155, 0.6);\n}\n.demo.mnist-cnn .column.input-column .input-container .input-buttons {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n.demo.mnist-cnn .column.input-column .input-container .input-buttons .input-clear-button {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n color: #69707a;\n -webkit-transition: color 0.2s ease-in;\n transition: color 0.2s ease-in;\n}\n.demo.mnist-cnn .column.input-column .input-container .input-buttons .input-clear-button .material-icons {\n margin-right: 5px;\n}\n.demo.mnist-cnn .column.input-column .input-container .input-buttons .input-clear-button:hover {\n color: rgba(27, 188, 155, 0.3);\n cursor: pointer;\n}\n.demo.mnist-cnn .column.controls-column {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding-top: 80px;\n}\n.demo.mnist-cnn .column.output-column {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.mnist-cnn .column.output-column .output {\n height: 160px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n}\n.demo.mnist-cnn .column.output-column .output .output-class {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0 6px;\n border-bottom: 2px solid rgba(27, 188, 155, 0.3);\n}\n.demo.mnist-cnn .column.output-column .output .output-class .output-label {\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 1.5rem;\n color: #69707a;\n}\n.demo.mnist-cnn .column.output-column .output .output-class .output-bar {\n width: 8px;\n background: #EEEEEE;\n -webkit-transition: height 0.2s ease-out;\n transition: height 0.2s ease-out;\n}\n.demo.mnist-cnn .column.output-column .output .output-class.predicted {\n border-bottom-color: #1BBC9B;\n}\n.demo.mnist-cnn .column.output-column .output .output-class.predicted .output-label {\n color: #1BBC9B;\n}\n.demo.mnist-cnn .layer-results-container {\n position: relative;\n}\n.demo.mnist-cnn .layer-results-container .bg-line {\n position: absolute;\n z-index: 0;\n top: 0;\n left: 50%;\n background: white;\n width: 15px;\n height: 100%;\n}\n.demo.mnist-cnn .layer-results-container .layer-result {\n position: relative;\n z-index: 1;\n margin: 30px 20px;\n background: white;\n border-radius: 10px;\n padding: 20px;\n overflow-x: auto;\n}\n.demo.mnist-cnn .layer-results-container .layer-result .layer-result-heading {\n font-size: 1rem;\n color: #999999;\n margin-bottom: 10px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n font-size: 12px;\n}\n.demo.mnist-cnn .layer-results-container .layer-result .layer-result-heading span.layer-class {\n color: #1BBC9B;\n font-size: 14px;\n font-weight: bold;\n}\n.demo.mnist-cnn .layer-results-container .layer-result .layer-result-canvas-container {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n background: white;\n}\n.demo.mnist-cnn .layer-results-container .layer-result .layer-result-canvas-container canvas {\n border: 1px solid lightgray;\n margin: 1px;\n}\n",""])},function(e,n,t){n=e.exports=t(3)(),n.push([e.i,".demo.mnist-vae .column {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.mnist-vae .column.input-column {\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n.demo.mnist-vae .column.input-column .input-container {\n text-align: right;\n margin: 20px;\n position: relative;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.demo.mnist-vae .column.input-column .input-container .input-label {\n font-family: 'Nothing You Could Do',cursive;\n font-size: 18px;\n color: #69707a;\n text-align: right;\n}\n.demo.mnist-vae .column.input-column .input-container .input-label span.arrow {\n font-size: 36px;\n color: #CCCCCC;\n position: absolute;\n right: -32px;\n top: 8px;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container {\n position: relative;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n margin: 10px 0;\n border: 15px solid rgba(27, 188, 155, 0.3);\n -webkit-transition: border-color 0.2s ease-in;\n transition: border-color 0.2s ease-in;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container canvas {\n background: white\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container canvas:hover {\n cursor: crosshair;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container .axis {\n position: absolute;\n cursor: default;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 14px;\n color: #1BBC9B;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container .axis.x-axis {\n right: 0;\n bottom: -45px;\n width: 200px;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container .axis.y-axis {\n top: 0;\n left: -55px;\n height: 200px;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.demo.mnist-vae .column.input-column .input-container .canvas-container:hover {\n border-color: rgba(27, 188, 155, 0.6);\n}\n.demo.mnist-vae .column.controls-column {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding-top: 80px;\n}\n.demo.mnist-vae .column.controls-column .coordinates {\n margin-left: 5px;\n margin-top: 45px;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 20px;\n color: #69707a;\n}\n.demo.mnist-vae .column.output-column {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n.demo.mnist-vae .column.output-column .output {\n border-radius: 10px;\n overflow: hidden;\n}\n.demo.mnist-vae .column.output-column .output canvas {\n background: white;\n}\n.demo.mnist-vae .layer-results-container {\n position: relative;\n}\n.demo.mnist-vae .layer-results-container .bg-line {\n position: absolute;\n z-index: 0;\n top: 0;\n left: 50%;\n background: white;\n width: 15px;\n height: 100%;\n}\n.demo.mnist-vae .layer-results-container .layer-result {\n position: relative;\n z-index: 1;\n margin: 30px 20px;\n background: white;\n border-radius: 10px;\n padding: 20px;\n overflow-x: auto;\n}\n.demo.mnist-vae .layer-results-container .layer-result .layer-result-heading {\n font-size: 1rem;\n color: #999999;\n margin-bottom: 10px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n font-size: 12px;\n}\n.demo.mnist-vae .layer-results-container .layer-result .layer-result-heading span.layer-class {\n color: #1BBC9B;\n font-size: 14px;\n font-weight: bold;\n}\n.demo.mnist-vae .layer-results-container .layer-result .layer-result-canvas-container {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n background: white;\n}\n.demo.mnist-vae .layer-results-container .layer-result .layer-result-canvas-container canvas {\n border: 1px solid lightgray;\n margin: 1px;\n}\n",""])},function(e,n,t){n=e.exports=t(3)(),n.push([e.i,".demo.resnet50 .top-container {\n margin: 10px;\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n.demo.resnet50 .top-container .input-container .input-label {\n font-family: 'Nothing You Could Do',cursive;\n font-size: 16px;\n color: #69707a;\n text-align: left;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n}\n.demo.resnet50 .top-container .input-container .image-url {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n position: relative;\n}\n.demo.resnet50 .top-container .input-container .image-url span {\n margin: 0 10px;\n font-family: 'Nothing You Could Do',cursive;\n font-size: 16px;\n color: #69707a;\n}\n.demo.resnet50 .top-container .controls {\n width: 250px;\n margin-left: 40px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center\n}\n.demo.resnet50 .top-container .controls > .mdl-switch {\n margin-bottom: 5px;\n}\n.demo.resnet50 .top-container .controls > .mdl-switch .mdl-switch__label {\n font-size: 12px !important;\n}\n.demo.resnet50 .columns.input-output {\n max-width: 800px;\n margin: 0 auto;\n}\n.demo.resnet50 .columns.input-output .column {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.resnet50 .columns.input-output .column.input-column {\n position: relative;\n}\n.demo.resnet50 .columns.input-output .column.input-column .loading-indicator {\n position: absolute;\n top: 0;\n left: -10px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n.demo.resnet50 .columns.input-output .column.input-column .loading-indicator .mdl-spinner {\n margin: 20px;\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n}\n.demo.resnet50 .columns.input-output .column.input-column .loading-indicator .error {\n color: #D24D57;\n font-size: 14px;\n font-family: 'Fira Sans',sans-serif;\n margin: 20px;\n}\n.demo.resnet50 .columns.input-output .column.input-column .canvas-container {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n}\n.demo.resnet50 .columns.input-output .column.input-column .canvas-container canvas {\n background: white;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output {\n width: 370px;\n height: 160px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 6px 0;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class .output-label {\n text-align: right;\n width: 200px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 18px;\n color: #69707a;\n padding: 0 6px;\n border-right: 2px solid rgba(27, 188, 155, 0.3);\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class .output-bar {\n height: 8px;\n -webkit-transition: width 0.2s ease-out;\n transition: width 0.2s ease-out;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class .output-value {\n text-align: left;\n margin-left: 5px;\n font-family: 'Share Tech Mono',sans-serif;\n font-size: 14px;\n color: #69707a;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class.predicted .output-label {\n color: #1BBC9B;\n border-left-color: #1BBC9B;\n}\n.demo.resnet50 .columns.input-output .column.output-column .output .output-class.predicted .output-value {\n color: #1BBC9B;\n}\n.demo.resnet50 .architecture-container {\n min-width: 700px;\n max-width: 900px;\n margin: 0 auto;\n position: relative;\n}\n.demo.resnet50 .architecture-container .layers-row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 5px;\n position: relative;\n z-index: 1;\n}\n.demo.resnet50 .architecture-container .layers-row .layer-column {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 5px;\n}\n.demo.resnet50 .architecture-container .layers-row .layer-column .layer {\n display: inline-block;\n background: white;\n border: 2px solid white;\n border-radius: 5px;\n padding: 2px 10px 0px;\n}\n.demo.resnet50 .architecture-container .layers-row .layer-column .layer .layer-class-name {\n color: #1BBC9B;\n font-size: 14px;\n font-weight: bold;\n}\n.demo.resnet50 .architecture-container .layers-row .layer-column .layer .layer-details {\n color: #999999;\n font-size: 12px;\n font-weight: bold;\n}\n.demo.resnet50 .architecture-container .layers-row .layer-column .layer.has-result {\n border-color: #1BBC9B;\n}\n.demo.resnet50 .architecture-container .architecture-connections {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n}\n.demo.resnet50 .architecture-container .architecture-connections path {\n stroke-width: 4px;\n stroke: #AAAAAA;\n fill: none;\n}\n",""]); },function(e,n,t){"use strict";function a(e,n,t){var a,o,r=e.length,i=n.arrayArgs.length,s=n.indexArgs.length>0,l=[],c=[],u=0,d=0;for(a=0;a=0;--a)u=e[a],l.push(["for(i",a,"=0;i",a,"0&&l.push(["index[",d,"]-=s",d].join("")),l.push(["++index[",u,"]"].join(""))),l.push("}")}return l.join("\n")}function o(e,n,t,o){for(var r=n.length,i=t.arrayArgs.length,s=t.blockSize,l=t.indexArgs.length>0,c=[],u=0;u0;){"].join("")),c.push(["if(j",u,"<",s,"){"].join("")),c.push(["s",n[u],"=j",u].join("")),c.push(["j",u,"=0"].join("")),c.push(["}else{s",n[u],"=",s].join("")),c.push(["j",u,"-=",s,"}"].join("")),l&&c.push(["index[",n[u],"]=j",u].join(""));for(var u=0;u0&&(t=t&&n[a]===n[a-1])}return t?n[0]:n.join("")}function l(e,n){for(var t=n[1].length-Math.abs(e.arrayBlockIndices[0])|0,l=new Array(e.arrayArgs.length),u=new Array(e.arrayArgs.length),d=0;d0&&y.push("shape=SS.slice(0)"),e.indexArgs.length>0){for(var w=new Array(t),d=0;d3&&_.push(i(e.pre,e,u));var L=i(e.body,e,u),S=r(b);S3&&_.push(i(e.post,e,u)),e.debug&&console.log("-----Generated cwise routine for ",n,":\n"+_.join("\n")+"\n----------");var z=[e.funcName||"unnamed","_cwise_loop_",l[0].join("s"),"m",S,s(u)].join(""),E=new Function(["function ",z,"(",x.join(","),"){",_.join("\n"),"} return ",z].join(""));return E()}var c=t(59);e.exports=l},function(e,n,t){"use strict";function a(e){var n=["'use strict'","var CACHED={}"],t=[],a=e.funcName+"_cwise_thunk";n.push(["return function ",a,"(",e.shimArgs.join(","),"){"].join(""));for(var r=[],i=[],s=[["array",e.arrayArgs[0],".shape.slice(",Math.max(0,e.arrayBlockIndices[0]),e.arrayBlockIndices[0]<0?","+e.arrayBlockIndices[0]+")":")"].join("")],l=[],c=[],u=0;u0&&(l.push("array"+e.arrayArgs[0]+".shape.length===array"+d+".shape.length+"+(Math.abs(e.arrayBlockIndices[0])-Math.abs(e.arrayBlockIndices[u]))),c.push("array"+e.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[0])+"]===array"+d+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[u])+"]"))}e.arrayArgs.length>1&&(n.push("if (!("+l.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),n.push("for(var shapeIndex=array"+e.arrayArgs[0]+".shape.length-"+Math.abs(e.arrayBlockIndices[0])+"; shapeIndex-->0;) {"),n.push("if (!("+c.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),n.push("}"));for(var u=0;u=0){var c=v[l],u=f(a);u&N&&(c.lvalue=!0),u&C&&(c.rvalue=!0),++c.count,s(a,c.name)}else r(i)||s(a,n(i))}else if("Literal"===a.type)"string"==typeof a.value&&s(a,d(a.value));else{if("WithStatement"===a.type)throw new Error("cwise-parser: with() statements not allowed");for(var m=Object.keys(a),p=0,h=m.length;p0)return a(0|e,n);break;case"object":if("number"==typeof e.length)return t(e,n,0)}return[]}e.exports=o},function(e,n,t){var a,o,r;!function(t,i){"use strict";o=[n],a=i,r="function"==typeof a?a.apply(n,o):a,!(void 0!==r&&(e.exports=r))}(this,function(e){"use strict";function n(e,n){if(!e)throw new Error("ASSERT: "+n)}function t(e){return e>=48&&e<=57}function a(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function o(e){return"01234567".indexOf(e)>=0}function r(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function i(e){return 10===e||13===e||8232===e||8233===e}function s(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&rn.NonAsciiIdentifierStart.test(String.fromCharCode(e))}function l(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&rn.NonAsciiIdentifierPart.test(String.fromCharCode(e))}function c(e){switch(e){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function u(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function d(e){return"eval"===e||"arguments"===e}function m(e){if(cn&&u(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function f(e,t,a,o,r){var i;n("number"==typeof a,"Comment must have valid position"),bn.lastCommentStart>=a||(bn.lastCommentStart=a,i={type:e,value:t},gn.range&&(i.range=[a,o]),gn.loc&&(i.loc=r),gn.comments.push(i),gn.attachComment&&(gn.leadingComments.push(i),gn.trailingComments.push(i)))}function p(e){var n,t,a,o;for(n=un-e,t={start:{line:dn,column:un-mn-e}};un=fn&&V({},on.UnexpectedToken,"ILLEGAL");else if(42===t){if(47===ln.charCodeAt(un+1))return++un,++un,void(gn.comments&&(a=ln.slice(e+2,un-2),n.end={line:dn,column:un-mn},f("Block",a,e,un,n)));++un}else++un;V({},on.UnexpectedToken,"ILLEGAL")}function b(){var e,n;for(n=0===un;un>>="===a?(un+=4,{type:Qe.Punctuator,value:a,lineNumber:dn,lineStart:mn,start:o,end:un}):(t=a.substr(0,3),">>>"===t||"<<="===t||">>="===t?(un+=3,{type:Qe.Punctuator,value:t,lineNumber:dn,lineStart:mn,start:o,end:un}):(n=t.substr(0,2),i===n[1]&&"+-<>&|".indexOf(i)>=0||"=>"===n?(un+=2,{type:Qe.Punctuator,value:n,lineNumber:dn,lineStart:mn,start:o,end:un}):"<>=!+-*%&|^/".indexOf(i)>=0?(++un,{type:Qe.Punctuator,value:i,lineNumber:dn,lineStart:mn,start:o,end:un}):void V({},on.UnexpectedToken,"ILLEGAL")))}function w(e){for(var n="";un=0&&un0&&(a=gn.tokens[gn.tokens.length-1],a.range[0]===e&&"Punctuator"===a.type&&("/"!==a.value&&"/="!==a.value||gn.tokens.pop())),gn.tokens.push({type:"RegularExpression",value:t.literal,range:[e,un],loc:n})),t}function j(e){return e.type===Qe.Identifier||e.type===Qe.Keyword||e.type===Qe.BooleanLiteral||e.type===Qe.NullLiteral}function B(){var e,n;if(e=gn.tokens[gn.tokens.length-1],!e)return A();if("Punctuator"===e.type){if("]"===e.value)return y();if(")"===e.value)return n=gn.tokens[gn.openParenToken-1],!n||"Keyword"!==n.type||"if"!==n.value&&"while"!==n.value&&"for"!==n.value&&"with"!==n.value?y():A();if("}"===e.value){if(gn.tokens[gn.openCurlyToken-3]&&"Keyword"===gn.tokens[gn.openCurlyToken-3].type){if(n=gn.tokens[gn.openCurlyToken-4],!n)return y()}else{if(!gn.tokens[gn.openCurlyToken-4]||"Keyword"!==gn.tokens[gn.openCurlyToken-4].type)return y();if(n=gn.tokens[gn.openCurlyToken-5],!n)return A()}return nn.indexOf(n.value)>=0?y():A()}return A()}return"Keyword"===e.type&&"this"!==e.value?A():y()}function I(){var e;return b(),un>=fn?{type:Qe.EOF,lineNumber:dn,lineStart:mn,start:un,end:un}:(e=ln.charCodeAt(un),s(e)?_():40===e||41===e||59===e?y():39===e||34===e?L():46===e?t(ln.charCodeAt(un+1))?C():y():t(e)?C():gn.tokenize&&47===e?B():y())}function D(){var e,n,t;return b(),e={start:{line:dn,column:un-mn}},n=I(),e.end={line:dn,column:un-mn},n.type!==Qe.EOF&&(t=ln.slice(n.start,n.end),gn.tokens.push({type:en[n.type],value:t,range:[n.start,n.end],loc:e})),n}function U(){var e;return e=hn,un=e.end,dn=e.lineNumber,mn=e.lineStart,hn="undefined"!=typeof gn.tokens?D():I(),un=e.end,dn=e.lineNumber,mn=e.lineStart,e}function T(){var e,n,t;e=un,n=dn,t=mn,hn="undefined"!=typeof gn.tokens?D():I(),un=e,dn=n,mn=t}function M(e,n){this.line=e,this.column=n}function P(e,n,t,a){this.start=new M(e,n),this.end=new M(t,a)}function O(){var e,n,t,a;return e=un,n=dn,t=mn,b(),a=dn!==n,un=e,dn=n,mn=t,a}function V(e,t){var a,o=Array.prototype.slice.call(arguments,2),r=t.replace(/%(\d)/g,function(e,t){return n(t>="===e||">>>="===e||"&="===e||"^="===e||"|="===e)}function K(){var e,n=un,t=dn,a=mn,o=hn;return 59===ln.charCodeAt(un)||X(";")?void U():(e=dn,b(),dn!==e?(un=n,dn=t,mn=a,void(hn=o)):void(hn.type===Qe.EOF||X("}")||q(hn)))}function Y(e){return e.type===tn.Identifier||e.type===tn.MemberExpression}function J(){var e,n=[];for(e=hn,G("[");!X("]");)X(",")?(U(),n.push(null)):(n.push(be()),X("]")||G(","));return U(),pn.markEnd(pn.createArrayExpression(n),e)}function Z(e,n){var t,a,o;return t=cn,o=hn,a=qe(),n&&cn&&d(e[0].name)&&F(n,on.StrictParamName),cn=t,pn.markEnd(pn.createFunctionExpression(null,e,[],a),o)}function Q(){var e,n;return n=hn,e=U(),e.type===Qe.StringLiteral||e.type===Qe.NumericLiteral?(cn&&e.octal&&F(e,on.StrictOctalLiteral),pn.markEnd(pn.createLiteral(e),n)):pn.markEnd(pn.createIdentifier(e.value),n)}function ee(){var e,n,t,a,o,r;return e=hn,r=hn,e.type===Qe.Identifier?(t=Q(),"get"!==e.value||X(":")?"set"!==e.value||X(":")?(G(":"),a=be(),pn.markEnd(pn.createProperty("init",t,a),r)):(n=Q(),G("("),e=hn,e.type!==Qe.Identifier?(G(")"),F(e,on.UnexpectedToken,e.value),a=Z([])):(o=[_e()],G(")"),a=Z(o,e)),pn.markEnd(pn.createProperty("set",n,a),r)):(n=Q(),G("("),G(")"),a=Z([]),pn.markEnd(pn.createProperty("get",n,a),r))):e.type!==Qe.EOF&&e.type!==Qe.Punctuator?(n=Q(),G(":"),a=be(),pn.markEnd(pn.createProperty("init",n,a),r)):void q(e)}function ne(){var e,n,t,a,o,r=[],i={},s=String;for(o=hn,G("{");!X("}");)e=ee(),n=e.key.type===tn.Identifier?e.key.name:s(e.key.value),a="init"===e.kind?an.Data:"get"===e.kind?an.Get:an.Set,t="$"+n,Object.prototype.hasOwnProperty.call(i,t)?(i[t]===an.Data?cn&&a===an.Data?F({},on.StrictDuplicateProperty):a!==an.Data&&F({},on.AccessorDataProperty):a===an.Data?F({},on.AccessorDataProperty):i[t]&a&&F({},on.AccessorGetSet),i[t]|=a):i[t]=a,r.push(e),X("}")||G(",");return G("}"),pn.markEnd(pn.createObjectExpression(r),o)}function te(){var e;return G("("),e=ge(),G(")"),e}function ae(){var e,n,t,a;if(X("("))return te();if(X("["))return J();if(X("{"))return ne();if(e=hn.type,a=hn,e===Qe.Identifier)t=pn.createIdentifier(U().value);else if(e===Qe.StringLiteral||e===Qe.NumericLiteral)cn&&hn.octal&&F(hn,on.StrictOctalLiteral),t=pn.createLiteral(U());else if(e===Qe.Keyword){if(H("function"))return Xe();H("this")?(U(),t=pn.createThisExpression()):q(U())}else e===Qe.BooleanLiteral?(n=U(),n.value="true"===n.value,t=pn.createLiteral(n)):e===Qe.NullLiteral?(n=U(),n.value=null,t=pn.createLiteral(n)):X("/")||X("/=")?(t="undefined"!=typeof gn.tokens?pn.createLiteral(A()):pn.createLiteral(R()),T()):q(U());return pn.markEnd(t,a)}function oe(){var e=[];if(G("("),!X(")"))for(;un":case"<=":case">=":case"instanceof":t=7;break;case"in":t=n?7:0;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11}return t}function pe(){var e,n,t,a,o,r,i,s,l,c;if(e=hn,l=me(),a=hn,o=fe(a,bn.allowIn),0===o)return l;for(a.prec=o,U(),n=[e,hn],i=me(),r=[l,a,i];(o=fe(hn,bn.allowIn))>0;){for(;r.length>2&&o<=r[r.length-2].prec;)i=r.pop(),s=r.pop().value,l=r.pop(),t=pn.createBinaryExpression(s,l,i),n.pop(),e=n[n.length-1],pn.markEnd(t,e),r.push(t);a=U(),a.prec=o,r.push(a),n.push(hn),t=me(),r.push(t)}for(c=r.length-1,t=r[c],n.pop();c>1;)t=pn.createBinaryExpression(r[c-1].value,r[c-2],t),c-=2,e=n.pop(),pn.markEnd(t,e);return t}function he(){var e,n,t,a,o;return o=hn,e=pe(),X("?")&&(U(),n=bn.allowIn,bn.allowIn=!0,t=be(),bn.allowIn=n,G(":"),a=be(),e=pn.createConditionalExpression(e,t,a),pn.markEnd(e,o)),e}function be(){var e,n,t,a,o;return e=hn,o=hn,a=n=he(),$()&&(Y(n)||F({},on.InvalidLHSInAssignment),cn&&n.type===tn.Identifier&&d(n.name)&&F(e,on.StrictLHSAssignment),e=U(),t=be(),a=pn.markEnd(pn.createAssignmentExpression(e.value,n,t),o)),a}function ge(){var e,n=hn;if(e=be(),X(",")){for(e=pn.createSequenceExpression([e]);un { this.modelLoading = false + + this.architectureDiagramPaths = [] + setTimeout(() => { + this.architectureConnections.forEach(conn => { + const containerElem = document.getElementsByClassName('architecture-container')[0] + const fromElem = document.getElementById(conn.from) + const toElem = document.getElementById(conn.to) + const containerElemCoords = containerElem.getBoundingClientRect() + const fromElemCoords = fromElem.getBoundingClientRect() + const toElemCoords = toElem.getBoundingClientRect() + const xContainer = containerElemCoords.left + const yContainer = containerElemCoords.top + const xFrom = fromElemCoords.left + fromElemCoords.width / 2 - xContainer + const yFrom = fromElemCoords.top + fromElemCoords.height / 2 - yContainer + const xTo = toElemCoords.left + toElemCoords.width / 2 - xContainer + const yTo = toElemCoords.top + toElemCoords.height / 2 - yContainer + + let path = `M${xFrom},${yFrom} L${xTo},${yTo}` + if (conn.corner === 'top-right') { + path = `M${xFrom},${yFrom} L${xTo - 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` + } else if (conn.corner === 'bottom-left') { + path = `M${xFrom},${yFrom} L${xFrom},${yTo - 10} Q${xFrom},${yTo} ${xFrom + 10},${yTo} L${xTo},${yTo}` + } else if (conn.corner === 'top-left') { + path = `M${xFrom},${yFrom} L${xTo + 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` + } else if (conn.corner === 'bottom-right') { + path = `M${xFrom},${yFrom} L${xFrom},${yFrom + 20} Q${xFrom},${yFrom + 30} ${xFrom - 10},${yFrom + 30} L${xTo + 10},${yFrom + 30} Q${xTo},${yFrom + 30} ${xTo},${yFrom + 40} L${xTo},${yTo}` + } + + this.architectureDiagramPaths.push(path) + }) + }, 1000) }) - - this.architectureDiagramPaths = [] - setTimeout(() => { - this.architectureConnections.forEach(conn => { - const containerElem = document.getElementsByClassName('architecture-container')[0] - const fromElem = document.getElementById(conn.from) - const toElem = document.getElementById(conn.to) - const containerElemCoords = containerElem.getBoundingClientRect() - const fromElemCoords = fromElem.getBoundingClientRect() - const toElemCoords = toElem.getBoundingClientRect() - const xContainer = containerElemCoords.left - const yContainer = containerElemCoords.top - const xFrom = fromElemCoords.left + fromElemCoords.width / 2 - xContainer - const yFrom = fromElemCoords.top + fromElemCoords.height / 2 - yContainer - const xTo = toElemCoords.left + toElemCoords.width / 2 - xContainer - const yTo = toElemCoords.top + toElemCoords.height / 2 - yContainer - - let path = `M${xFrom},${yFrom} L${xTo},${yTo}` - if (conn.corner === 'top-right') { - path = `M${xFrom},${yFrom} L${xTo - 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` - } else if (conn.corner === 'bottom-left') { - path = `M${xFrom},${yFrom} L${xFrom},${yTo - 10} Q${xFrom},${yTo} ${xFrom + 10},${yTo} L${xTo},${yTo}` - } else if (conn.corner === 'top-left') { - path = `M${xFrom},${yFrom} L${xTo + 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` - } else if (conn.corner === 'bottom-right') { - path = `M${xFrom},${yFrom} L${xFrom},${yFrom + 20} Q${xFrom},${yFrom + 30} ${xFrom - 10},${yFrom + 30} L${xTo + 10},${yFrom + 30} Q${xTo},${yFrom + 30} ${xTo},${yFrom + 40} L${xTo},${yTo}` - } - - this.architectureDiagramPaths.push(path) - }) - }, 1000) }, methods: { diff --git a/demos/src/resnet50.js b/demos/src/resnet50.js index 83eef49..09d7172 100644 --- a/demos/src/resnet50.js +++ b/demos/src/resnet50.js @@ -86,36 +86,36 @@ export const ResNet50 = Vue.extend({ ready: function () { this.model.ready().then(() => { this.modelLoading = false + + this.architectureDiagramPaths = [] + setTimeout(() => { + this.architectureConnections.forEach(conn => { + const containerElem = document.getElementsByClassName('architecture-container')[0] + const fromElem = document.getElementById(conn.from) + const toElem = document.getElementById(conn.to) + const containerElemCoords = containerElem.getBoundingClientRect() + const fromElemCoords = fromElem.getBoundingClientRect() + const toElemCoords = toElem.getBoundingClientRect() + const xContainer = containerElemCoords.left + const yContainer = containerElemCoords.top + const xFrom = fromElemCoords.left + fromElemCoords.width / 2 - xContainer + const yFrom = fromElemCoords.top + fromElemCoords.height / 2 - yContainer + const xTo = toElemCoords.left + toElemCoords.width / 2 - xContainer + const yTo = toElemCoords.top + toElemCoords.height / 2 - yContainer + + let path = `M${xFrom},${yFrom} L${xTo},${yTo}` + if (conn.corner === 'top-right') { + path = `M${xFrom},${yFrom} L${xTo - 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` + } else if (conn.corner === 'bottom-left') { + path = `M${xFrom},${yFrom} L${xFrom},${yTo - 10} Q${xFrom},${yTo} ${xFrom + 10},${yTo} L${xTo},${yTo}` + } else if (conn.corner === 'top-left') { + path = `M${xFrom},${yFrom} L${xTo + 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` + } + + this.architectureDiagramPaths.push(path) + }) + }, 1000) }) - - this.architectureDiagramPaths = [] - setTimeout(() => { - this.architectureConnections.forEach(conn => { - const containerElem = document.getElementsByClassName('architecture-container')[0] - const fromElem = document.getElementById(conn.from) - const toElem = document.getElementById(conn.to) - const containerElemCoords = containerElem.getBoundingClientRect() - const fromElemCoords = fromElem.getBoundingClientRect() - const toElemCoords = toElem.getBoundingClientRect() - const xContainer = containerElemCoords.left - const yContainer = containerElemCoords.top - const xFrom = fromElemCoords.left + fromElemCoords.width / 2 - xContainer - const yFrom = fromElemCoords.top + fromElemCoords.height / 2 - yContainer - const xTo = toElemCoords.left + toElemCoords.width / 2 - xContainer - const yTo = toElemCoords.top + toElemCoords.height / 2 - yContainer - - let path = `M${xFrom},${yFrom} L${xTo},${yTo}` - if (conn.corner === 'top-right') { - path = `M${xFrom},${yFrom} L${xTo - 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` - } else if (conn.corner === 'bottom-left') { - path = `M${xFrom},${yFrom} L${xFrom},${yTo - 10} Q${xFrom},${yTo} ${xFrom + 10},${yTo} L${xTo},${yTo}` - } else if (conn.corner === 'top-left') { - path = `M${xFrom},${yFrom} L${xTo + 10},${yFrom} Q${xTo},${yFrom} ${xTo},${yFrom + 10} L${xTo},${yTo}` - } - - this.architectureDiagramPaths.push(path) - }) - }, 1000) }, methods: {