From f740795694b9bd1e60a00f72dde58f3edb90bbe4 Mon Sep 17 00:00:00 2001 From: Leon Chen Date: Thu, 13 Oct 2016 18:59:17 -0400 Subject: [PATCH] fix bidirectional lstm demo paths --- demos/dist/bundle.js | 2 +- demos/src/imdb-bidirectional-lstm.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demos/dist/bundle.js b/demos/dist/bundle.js index 969cfb0..d62f0e0 100644 --- a/demos/dist/bundle.js +++ b/demos/dist/bundle.js @@ -1,5 +1,5 @@ !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", +},{name:"cello",value:"https://farm2.staticflickr.com/1090/4595137268_0e3f2b9aa7_z_d.jpg"},{name:"violin",value:"https://farm6.staticflickr.com/5076/7175144508_e1ba0d6e35_z_d.jpg"},{name:"piano",value:"https://farm4.staticflickr.com/3224/3081748027_0ee3d59fea_z_d.jpg"},{name:"apple",value:"https://farm8.staticflickr.com/7377/9359257263_81b080a039_z_d.jpg"},{name:"orange",value:"https://farm6.staticflickr.com/5251/5522940446_0d5724d43a_z_d.jpg"},{name:"flower",value:"https://farm5.staticflickr.com/4037/4682037903_88cf1cfc47_z_d.jpg"},{name:"coffee",value:"https://farm4.staticflickr.com/3752/9684880330_9b4698f7cb_z_d.jpg"},{name:"wine",value:"https://farm4.staticflickr.com/3827/11349066413_99c32dee4a_z_d.jpg"}]},function(e,n,t){"use strict";function a(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function o(e){var n=new a;n.pre=e.pre,n.body=e.body,n.post=e.post;var t=e.args.slice(0);n.argTypes=t;for(var o=0;o0)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,e.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;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