diff --git a/404.html b/404.html index ea94a1c77..b7e981c6a 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ 找不到页面 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@
跳到主要内容

找不到页面

我们找不到您要找的页面。

请联系原始链接来源网站的所有者,并告知他们链接已损坏。

- + \ No newline at end of file diff --git a/en/img/Musk_1.jpg b/assets/images/intro-af0832b093767267dd137c4cc177c952.png similarity index 100% rename from en/img/Musk_1.jpg rename to assets/images/intro-af0832b093767267dd137c4cc177c952.png diff --git a/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png b/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png deleted file mode 100644 index 0c90cad0f..000000000 Binary files a/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png and /dev/null differ diff --git a/assets/js/1331f6cd.89066c2c.js b/assets/js/1331f6cd.ef8c9ad6.js similarity index 98% rename from assets/js/1331f6cd.89066c2c.js rename to assets/js/1331f6cd.ef8c9ad6.js index 053040a60..3533360d1 100644 --- a/assets/js/1331f6cd.89066c2c.js +++ b/assets/js/1331f6cd.ef8c9ad6.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7336],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,d=u["".concat(l,".").concat(f)]||u[f]||m[f]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Algorithms/intro",id:"Algorithms/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206",source:"@site/docs/Algorithms/1-intro.md",sourceDirName:"Algorithms",slug:"/Algorithms/intro",permalink:"/docs/Algorithms/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"algorithms",next:{title:"STL\u6a21\u677f",permalink:"/docs/Algorithms/STL\u6a21\u677f"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7336],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,d=u["".concat(l,".").concat(f)]||u[f]||m[f]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Algorithms/intro",id:"Algorithms/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206",source:"@site/docs/Algorithms/1-intro.md",sourceDirName:"Algorithms",slug:"/Algorithms/intro",permalink:"/docs/Algorithms/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"algorithms",next:{title:"STL\u6a21\u677f",permalink:"/docs/Algorithms/STL\u6a21\u677f"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/170d5aca.c908b90f.js b/assets/js/170d5aca.9f6a6d0e.js similarity index 98% rename from assets/js/170d5aca.c908b90f.js rename to assets/js/170d5aca.9f6a6d0e.js index ad6d3c4ab..58e3316d1 100644 --- a/assets/js/170d5aca.c908b90f.js +++ b/assets/js/170d5aca.9f6a6d0e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7122],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),s=l(n),f=o,d=s["".concat(c,".").concat(f)]||s[f]||m[f]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var p={};for(var c in t)hasOwnProperty.call(t,c)&&(p[c]=t[c]);p.originalType=e,p[s]="string"==typeof e?e:o,a[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",p={unversionedId:"Deep-Learning/intro",id:"Deep-Learning/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Deep-Learning/1-intro.md",sourceDirName:"Deep-Learning",slug:"/Deep-Learning/intro",permalink:"/docs/Deep-Learning/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"deep_learning",next:{title:"\u67e5\u6f0f\u8865\u7f3a",permalink:"/docs/Deep-Learning/Fill-The-Gaps"}},c={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{title:"\u4ecb\u7ecd",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206"),(0,o.kt)("p",{parentName:"admonition"},"\u82e5\u66f4\u65b0\u4e0d\u53ca\u65f6\uff0c\u6b22\u8fce\u901a\u8fc7 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bonjour-npy"},"GitHub")," \u8054\u7cfb\u4ea4\u6d41")),(0,o.kt)("admonition",{title:"\u6709\u5173\u8bba\u6587\u7b14\u8bb0\u7684\u8bf4\u660e",type:"important"},(0,o.kt)("p",{parentName:"admonition"},"\u4e3a\u4e86\u8282\u7701\u5199\u4f5c\u65f6\u95f4\uff0c\u8bba\u6587\u7b14\u8bb0\u90e8\u5206\u7684\u6587\u7ae0\u901a\u5e38\u53ea\u8bb2\u8ff0\u6587\u7ae0\u7684\u65b9\u6cd5\u8bba\uff0cIntroduction \u4ee5\u53ca Related Work \u8be6\u60c5\u53ef\u4ee5\u53c2\u8003\u8bba\u6587\u539f\u6587")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7122],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),s=l(n),f=o,d=s["".concat(c,".").concat(f)]||s[f]||m[f]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var p={};for(var c in t)hasOwnProperty.call(t,c)&&(p[c]=t[c]);p.originalType=e,p[s]="string"==typeof e?e:o,a[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",p={unversionedId:"Deep-Learning/intro",id:"Deep-Learning/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Deep-Learning/1-intro.md",sourceDirName:"Deep-Learning",slug:"/Deep-Learning/intro",permalink:"/docs/Deep-Learning/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"deep_learning",next:{title:"\u67e5\u6f0f\u8865\u7f3a",permalink:"/docs/Deep-Learning/Fill-The-Gaps"}},c={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{title:"\u4ecb\u7ecd",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206"),(0,o.kt)("p",{parentName:"admonition"},"\u82e5\u66f4\u65b0\u4e0d\u53ca\u65f6\uff0c\u6b22\u8fce\u901a\u8fc7 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bonjour-npy"},"GitHub")," \u8054\u7cfb\u4ea4\u6d41")),(0,o.kt)("admonition",{title:"\u6709\u5173\u8bba\u6587\u7b14\u8bb0\u7684\u8bf4\u660e",type:"important"},(0,o.kt)("p",{parentName:"admonition"},"\u4e3a\u4e86\u8282\u7701\u5199\u4f5c\u65f6\u95f4\uff0c\u8bba\u6587\u7b14\u8bb0\u90e8\u5206\u7684\u6587\u7ae0\u901a\u5e38\u53ea\u8bb2\u8ff0\u6587\u7ae0\u7684\u65b9\u6cd5\u8bba\uff0cIntroduction \u4ee5\u53ca Related Work \u8be6\u60c5\u53ef\u4ee5\u53c2\u8003\u8bba\u6587\u539f\u6587")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/4557037c.88dee58a.js b/assets/js/4557037c.d1fbf826.js similarity index 97% rename from assets/js/4557037c.88dee58a.js rename to assets/js/4557037c.d1fbf826.js index 5cdce756d..47f1ff413 100644 --- a/assets/js/4557037c.88dee58a.js +++ b/assets/js/4557037c.d1fbf826.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[189],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,d=u["".concat(l,".").concat(m)]||u[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Others/intro",id:"Others/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206",source:"@site/docs/Others/1-intro.md",sourceDirName:"Others",slug:"/Others/intro",permalink:"/docs/Others/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"others",next:{title:"\u7ec8\u7aef\u4ee3\u7406",permalink:"/docs/Others/Linux/\u5b9e\u7528\u5de5\u5177/\u7ec8\u7aef\u4ee3\u7406"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[189],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,d=u["".concat(l,".").concat(m)]||u[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Others/intro",id:"Others/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206",source:"@site/docs/Others/1-intro.md",sourceDirName:"Others",slug:"/Others/intro",permalink:"/docs/Others/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"others",next:{title:"\u7ec8\u7aef\u4ee3\u7406",permalink:"/docs/Others/Linux/\u5b9e\u7528\u5de5\u5177/\u7ec8\u7aef\u4ee3\u7406"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/7f328912.aa0a9aa6.js b/assets/js/7f328912.2c17dbde.js similarity index 98% rename from assets/js/7f328912.aa0a9aa6.js rename to assets/js/7f328912.2c17dbde.js index 2a630ce1a..10c53d362 100644 --- a/assets/js/7f328912.aa0a9aa6.js +++ b/assets/js/7f328912.2c17dbde.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[8975],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,d=s["".concat(l,".").concat(m)]||s[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},u),{},{components:r})):n.createElement(d,a({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Tui-Mian/intro",id:"Tui-Mian/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206",source:"@site/docs/Tui-Mian/1-intro.md",sourceDirName:"Tui-Mian",slug:"/Tui-Mian/intro",permalink:"/docs/Tui-Mian/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tui_mian",next:{title:"\u7ecf\u9a8c\u8d34\uff1a2023\u5e74\u53cc\u975e\u8ba1\u7b97\u673a\u4fdd\u7814\u7ecf\u5386",permalink:"/docs/Tui-Mian/Summary"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:p},s="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[8975],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,d=s["".concat(l,".").concat(m)]||s[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},u),{},{components:r})):n.createElement(d,a({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Tui-Mian/intro",id:"Tui-Mian/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206",source:"@site/docs/Tui-Mian/1-intro.md",sourceDirName:"Tui-Mian",slug:"/Tui-Mian/intro",permalink:"/docs/Tui-Mian/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tui_mian",next:{title:"\u7ecf\u9a8c\u8d34\uff1a2023\u5e74\u53cc\u975e\u8ba1\u7b97\u673a\u4fdd\u7814\u7ecf\u5386",permalink:"/docs/Tui-Mian/Summary"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:p},s="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,n.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/e5f716fd.18d92669.js b/assets/js/e5f716fd.a21b6fa8.js similarity index 63% rename from assets/js/e5f716fd.18d92669.js rename to assets/js/e5f716fd.a21b6fa8.js index 61fb33d1e..0ca979c75 100644 --- a/assets/js/e5f716fd.18d92669.js +++ b/assets/js/e5f716fd.a21b6fa8.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[3033],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),l=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,d=s["".concat(u,".").concat(f)]||s[f]||m[f]||i;return r?n.createElement(d,c(c({ref:t},p),{},{components:r})):n.createElement(d,c({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,c=new Array(i);c[0]=f;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[s]="string"==typeof e?e:o,c[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>m,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={},c="Welcome",a={unversionedId:"Curriculum/intro",id:"Curriculum/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Curriculum/1-intro.md",sourceDirName:"Curriculum",slug:"/Curriculum/intro",permalink:"/docs/Curriculum/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"curriculum",next:{title:"\u6570\u5b57\u56fe\u50cf\u5904\u7406\u590d\u4e60\u7b14\u8bb0",permalink:"/docs/Curriculum/\u6570\u5b57\u56fe\u50cf\u5904\u7406/Note"}},u={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],p={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[3033],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),l=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,c=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,d=s["".concat(u,".").concat(f)]||s[f]||m[f]||c;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=r.length,i=new Array(c);i[0]=f;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[s]="string"==typeof e?e:o,i[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const c={},i="Welcome",a={unversionedId:"Curriculum/intro",id:"Curriculum/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Curriculum/1-intro.md",sourceDirName:"Curriculum",slug:"/Curriculum/intro",permalink:"/docs/Curriculum/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"curriculum",next:{title:"\u6570\u5b57\u56fe\u50cf\u5904\u7406\u590d\u4e60\u7b14\u8bb0",permalink:"/docs/Curriculum/\u6570\u5b57\u56fe\u50cf\u5904\u7406/Note"}},u={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],p={toc:l},s="wrapper";function m(e){let{components:t,...c}=e;return(0,o.kt)(s,(0,n.Z)({},p,c,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/f0ad40a3.da829d72.js b/assets/js/f0ad40a3.f2365ab0.js similarity index 78% rename from assets/js/f0ad40a3.da829d72.js rename to assets/js/f0ad40a3.f2365ab0.js index 386f34108..c87e73dc7 100644 --- a/assets/js/f0ad40a3.da829d72.js +++ b/assets/js/f0ad40a3.f2365ab0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[2296],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},i="\u9e23\u8c22",c={unversionedId:"Acknowledgement/intro",id:"Acknowledgement/intro",title:"\u9e23\u8c22",description:"\u996e\u6c34\u601d\u6e90",source:"@site/docs/Acknowledgement/intro.md",sourceDirName:"Acknowledgement",slug:"/Acknowledgement/intro",permalink:"/docs/Acknowledgement/intro",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"acknowledgement"},l={},p=[{value:"\u996e\u6c34\u601d\u6e90",id:"\u996e\u6c34\u601d\u6e90",level:2},{value:"Disclaimer",id:"disclaimer",level:2}],u={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,o.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"\u9e23\u8c22"},"\u9e23\u8c22"),(0,o.kt)("h2",{id:"\u996e\u6c34\u601d\u6e90"},"\u996e\u6c34\u601d\u6e90"),(0,o.kt)("p",null,"\u8be5\u7f51\u7ad9\u7684\u642d\u5efa\u79bb\u4e0d\u5f00 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/facebook/docusaurus"},"Docusaurus")," \u7684\u652f\u6301\u4ee5\u53ca\u5bf9 ",(0,o.kt)("a",{parentName:"p",href:"https://space.keter.top/"},"Sonder\u7684\u5b9d\u85cf\u7b14\u8bb0\u672c")," \u7684\u53c2\u8003\u3002"),(0,o.kt)("h2",{id:"disclaimer"},"Disclaimer"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u5c55\u793a\u7684\u6240\u6709\u6807\u8bc6\u548c\u94fe\u63a5\u4ec5\u5c5e\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e2a\u4eba\u559c\u597d"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u4ee3\u8868\u56fd\u5bb6\u7684\u7acb\u573a\u6216\u4f01\u4e1a\u3001\u7ec4\u7ec7\u7684\u884c\u4e3a"),"\u3002"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u7684\u6240\u6709\u4fe1\u606f",(0,o.kt)("inlineCode",{parentName:"p"},"\u4ec5\u4f9b\u53c2\u8003"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u6784\u6210\u6cd5\u5f8b\u6216\u5546\u4e1a\u5efa\u8bae"),"\u3002"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}d.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[2296],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,c(c({ref:t},u),{},{components:n})):r.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},c="\u9e23\u8c22",i={unversionedId:"Acknowledgement/intro",id:"Acknowledgement/intro",title:"\u9e23\u8c22",description:"\u996e\u6c34\u601d\u6e90",source:"@site/docs/Acknowledgement/intro.md",sourceDirName:"Acknowledgement",slug:"/Acknowledgement/intro",permalink:"/docs/Acknowledgement/intro",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"acknowledgement"},l={},p=[{value:"\u996e\u6c34\u601d\u6e90",id:"\u996e\u6c34\u601d\u6e90",level:2},{value:"Disclaimer",id:"disclaimer",level:2}],u={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,o.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"\u9e23\u8c22"},"\u9e23\u8c22"),(0,o.kt)("h2",{id:"\u996e\u6c34\u601d\u6e90"},"\u996e\u6c34\u601d\u6e90"),(0,o.kt)("p",null,"\u8be5\u7f51\u7ad9\u7684\u642d\u5efa\u79bb\u4e0d\u5f00 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/facebook/docusaurus"},"Docusaurus")," \u7684\u652f\u6301\u4ee5\u53ca\u5bf9 ",(0,o.kt)("a",{parentName:"p",href:"https://space.keter.top/"},"Sonder\u7684\u5b9d\u85cf\u7b14\u8bb0\u672c")," \u7684\u53c2\u8003\u3002"),(0,o.kt)("h2",{id:"disclaimer"},"Disclaimer"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u5c55\u793a\u7684\u6240\u6709\u6807\u8bc6\u548c\u94fe\u63a5\u4ec5\u5c5e\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e2a\u4eba\u559c\u597d"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u4ee3\u8868\u56fd\u5bb6\u7684\u7acb\u573a\u6216\u4f01\u4e1a\u3001\u7ec4\u7ec7\u7684\u884c\u4e3a"),"\u3002"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u7684\u6240\u6709\u4fe1\u606f",(0,o.kt)("inlineCode",{parentName:"p"},"\u4ec5\u4f9b\u53c2\u8003"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u6784\u6210\u6cd5\u5f8b\u6216\u5546\u4e1a\u5efa\u8bae"),"\u3002"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}d.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.ca8e12bd.js b/assets/js/runtime~main.b13f7f28.js similarity index 94% rename from assets/js/runtime~main.ca8e12bd.js rename to assets/js/runtime~main.b13f7f28.js index 988c07b49..b00c91c07 100644 --- a/assets/js/runtime~main.ca8e12bd.js +++ b/assets/js/runtime~main.b13f7f28.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return c[e].call(d.exports,d,d.exports,r),d.exports}r.m=c,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",189:"4557037c",198:"d839ba35",452:"5b87b98d",618:"b28e7af0",935:"74f56d44",962:"092909c8",1007:"a91af95f",1130:"a8fad2e4",1180:"11f7daa4",1196:"73a0803d",1222:"f208df04",1346:"4aee018e",1459:"446859ef",1496:"bf3e67e8",1646:"e106d379",1835:"b529c19d",2051:"e6c11ea8",2296:"f0ad40a3",2592:"198a413f",2615:"76f0dcb5",2913:"ba4dc759",2997:"12261a21",3033:"e5f716fd",3065:"2a59d8d4",3085:"1f391b9e",3094:"cf67a3ce",3320:"d5b726de",3328:"16ddbeca",3346:"cccb4b32",3389:"a0558625",3576:"86cc22d4",3977:"b4773f97",4195:"c4f5d8e4",4502:"806b030e",4574:"95d605be",4582:"f8771a92",4760:"f26368c4",5321:"74465ad7",5510:"7e742f3b",5736:"7ab2d319",5738:"73db2603",5742:"d1030cc9",5776:"a2a36db7",5901:"d6b41bcb",5923:"d594b08b",6003:"71d93f63",6178:"800ff996",6205:"e35c27ce",6237:"4e1def24",6674:"3c9ce1b2",6898:"7d51be72",7122:"170d5aca",7149:"937c0001",7336:"1331f6cd",7414:"393be207",7504:"66dcaab3",7698:"4fdf609a",7851:"360a53fd",7918:"17896441",7920:"1a4e3797",8213:"d57233e8",8347:"7daa201b",8404:"d9458a31",8614:"6204ac06",8975:"7f328912",9203:"73151820",9332:"b04816ae",9507:"c00822a0",9514:"1be78505",9562:"f37640e6",9615:"5960b9f1",9648:"284078e5",9674:"e8f11660"}[e]||e)+"."+{53:"61bd7b69",189:"88dee58a",198:"3b5096c7",452:"1c0c0c2c",618:"af92c768",935:"25e53ac2",962:"ad73484e",1007:"774edfb2",1130:"d1c658b9",1180:"531ed800",1196:"83100b99",1222:"fa0e206e",1346:"7e3f2a31",1459:"2360948d",1496:"bc944f70",1646:"c75df834",1835:"066471d2",2051:"6a7266c7",2296:"da829d72",2592:"7208c678",2615:"80ff3875",2913:"4bad497d",2997:"7d5349af",3033:"18d92669",3065:"769ab14c",3085:"e222276a",3094:"58649cdd",3320:"25505df7",3328:"cab8b7d2",3346:"ce7c5668",3389:"585f6ea2",3576:"aa8c1fa6",3977:"33584db3",4195:"2b5cd402",4502:"994ec611",4574:"02ad7fe1",4582:"51d167d9",4760:"29cc7aa1",4972:"d1a5048e",5321:"154617d9",5510:"ef19ee1c",5525:"db22dd4f",5736:"c5f13fa6",5738:"a8820eba",5742:"25307481",5776:"909c8384",5901:"28e2c6ce",5923:"b2ee120d",6003:"cf468489",6178:"bb1b9415",6205:"60d8908b",6237:"ef64de25",6674:"7ffe926d",6898:"5df6fe56",7122:"c908b90f",7149:"13ad5432",7336:"89066c2c",7414:"553b7e4e",7504:"92699c1e",7698:"540f6d42",7851:"f5b1ab9d",7918:"077d419c",7920:"cd2275cc",8213:"0f406bb0",8347:"7d2e8a69",8404:"a86405fc",8443:"ac831155",8605:"012e1e77",8614:"4e89069e",8975:"aa0a9aa6",9203:"8ad21043",9332:"0d2aad22",9507:"72b69992",9514:"94988c33",9562:"9d22f855",9615:"c8c1a4e2",9648:"b19db43b",9674:"6fc4078d"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="npy-notebook:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",73151820:"9203","935f2afb":"53","4557037c":"189",d839ba35:"198","5b87b98d":"452",b28e7af0:"618","74f56d44":"935","092909c8":"962",a91af95f:"1007",a8fad2e4:"1130","11f7daa4":"1180","73a0803d":"1196",f208df04:"1222","4aee018e":"1346","446859ef":"1459",bf3e67e8:"1496",e106d379:"1646",b529c19d:"1835",e6c11ea8:"2051",f0ad40a3:"2296","198a413f":"2592","76f0dcb5":"2615",ba4dc759:"2913","12261a21":"2997",e5f716fd:"3033","2a59d8d4":"3065","1f391b9e":"3085",cf67a3ce:"3094",d5b726de:"3320","16ddbeca":"3328",cccb4b32:"3346",a0558625:"3389","86cc22d4":"3576",b4773f97:"3977",c4f5d8e4:"4195","806b030e":"4502","95d605be":"4574",f8771a92:"4582",f26368c4:"4760","74465ad7":"5321","7e742f3b":"5510","7ab2d319":"5736","73db2603":"5738",d1030cc9:"5742",a2a36db7:"5776",d6b41bcb:"5901",d594b08b:"5923","71d93f63":"6003","800ff996":"6178",e35c27ce:"6205","4e1def24":"6237","3c9ce1b2":"6674","7d51be72":"6898","170d5aca":"7122","937c0001":"7149","1331f6cd":"7336","393be207":"7414","66dcaab3":"7504","4fdf609a":"7698","360a53fd":"7851","1a4e3797":"7920",d57233e8:"8213","7daa201b":"8347",d9458a31:"8404","6204ac06":"8614","7f328912":"8975",b04816ae:"9332",c00822a0:"9507","1be78505":"9514",f37640e6:"9562","5960b9f1":"9615","284078e5":"9648",e8f11660:"9674"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>f=e[a]=[d,b]));d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,c=d[0],t=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return c[e].call(d.exports,d,d.exports,r),d.exports}r.m=c,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",189:"4557037c",198:"d839ba35",452:"5b87b98d",618:"b28e7af0",935:"74f56d44",962:"092909c8",1007:"a91af95f",1130:"a8fad2e4",1180:"11f7daa4",1196:"73a0803d",1222:"f208df04",1346:"4aee018e",1459:"446859ef",1496:"bf3e67e8",1646:"e106d379",1835:"b529c19d",2051:"e6c11ea8",2296:"f0ad40a3",2592:"198a413f",2615:"76f0dcb5",2913:"ba4dc759",2997:"12261a21",3033:"e5f716fd",3065:"2a59d8d4",3085:"1f391b9e",3094:"cf67a3ce",3320:"d5b726de",3328:"16ddbeca",3346:"cccb4b32",3389:"a0558625",3576:"86cc22d4",3977:"b4773f97",4195:"c4f5d8e4",4502:"806b030e",4574:"95d605be",4582:"f8771a92",4760:"f26368c4",5321:"74465ad7",5510:"7e742f3b",5736:"7ab2d319",5738:"73db2603",5742:"d1030cc9",5776:"a2a36db7",5901:"d6b41bcb",5923:"d594b08b",6003:"71d93f63",6178:"800ff996",6205:"e35c27ce",6237:"4e1def24",6674:"3c9ce1b2",6898:"7d51be72",7122:"170d5aca",7149:"937c0001",7336:"1331f6cd",7414:"393be207",7504:"66dcaab3",7698:"4fdf609a",7851:"360a53fd",7918:"17896441",7920:"1a4e3797",8213:"d57233e8",8347:"7daa201b",8404:"d9458a31",8614:"6204ac06",8975:"7f328912",9203:"73151820",9332:"b04816ae",9507:"c00822a0",9514:"1be78505",9562:"f37640e6",9615:"5960b9f1",9648:"284078e5",9674:"e8f11660"}[e]||e)+"."+{53:"61bd7b69",189:"d1fbf826",198:"3b5096c7",452:"1c0c0c2c",618:"af92c768",935:"25e53ac2",962:"ad73484e",1007:"774edfb2",1130:"d1c658b9",1180:"531ed800",1196:"83100b99",1222:"fa0e206e",1346:"7e3f2a31",1459:"2360948d",1496:"bc944f70",1646:"c75df834",1835:"066471d2",2051:"6a7266c7",2296:"f2365ab0",2592:"7208c678",2615:"80ff3875",2913:"4bad497d",2997:"7d5349af",3033:"a21b6fa8",3065:"769ab14c",3085:"e222276a",3094:"58649cdd",3320:"25505df7",3328:"cab8b7d2",3346:"ce7c5668",3389:"585f6ea2",3576:"aa8c1fa6",3977:"33584db3",4195:"2b5cd402",4502:"994ec611",4574:"02ad7fe1",4582:"51d167d9",4760:"29cc7aa1",4972:"d1a5048e",5321:"154617d9",5510:"ef19ee1c",5525:"db22dd4f",5736:"c5f13fa6",5738:"a8820eba",5742:"25307481",5776:"909c8384",5901:"28e2c6ce",5923:"b2ee120d",6003:"cf468489",6178:"bb1b9415",6205:"60d8908b",6237:"ef64de25",6674:"7ffe926d",6898:"5df6fe56",7122:"9f6a6d0e",7149:"13ad5432",7336:"ef8c9ad6",7414:"553b7e4e",7504:"92699c1e",7698:"540f6d42",7851:"f5b1ab9d",7918:"077d419c",7920:"cd2275cc",8213:"0f406bb0",8347:"7d2e8a69",8404:"a86405fc",8443:"ac831155",8605:"012e1e77",8614:"4e89069e",8975:"2c17dbde",9203:"8ad21043",9332:"0d2aad22",9507:"72b69992",9514:"94988c33",9562:"9d22f855",9615:"c8c1a4e2",9648:"b19db43b",9674:"6fc4078d"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="npy-notebook:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",73151820:"9203","935f2afb":"53","4557037c":"189",d839ba35:"198","5b87b98d":"452",b28e7af0:"618","74f56d44":"935","092909c8":"962",a91af95f:"1007",a8fad2e4:"1130","11f7daa4":"1180","73a0803d":"1196",f208df04:"1222","4aee018e":"1346","446859ef":"1459",bf3e67e8:"1496",e106d379:"1646",b529c19d:"1835",e6c11ea8:"2051",f0ad40a3:"2296","198a413f":"2592","76f0dcb5":"2615",ba4dc759:"2913","12261a21":"2997",e5f716fd:"3033","2a59d8d4":"3065","1f391b9e":"3085",cf67a3ce:"3094",d5b726de:"3320","16ddbeca":"3328",cccb4b32:"3346",a0558625:"3389","86cc22d4":"3576",b4773f97:"3977",c4f5d8e4:"4195","806b030e":"4502","95d605be":"4574",f8771a92:"4582",f26368c4:"4760","74465ad7":"5321","7e742f3b":"5510","7ab2d319":"5736","73db2603":"5738",d1030cc9:"5742",a2a36db7:"5776",d6b41bcb:"5901",d594b08b:"5923","71d93f63":"6003","800ff996":"6178",e35c27ce:"6205","4e1def24":"6237","3c9ce1b2":"6674","7d51be72":"6898","170d5aca":"7122","937c0001":"7149","1331f6cd":"7336","393be207":"7414","66dcaab3":"7504","4fdf609a":"7698","360a53fd":"7851","1a4e3797":"7920",d57233e8:"8213","7daa201b":"8347",d9458a31:"8404","6204ac06":"8614","7f328912":"8975",b04816ae:"9332",c00822a0:"9507","1be78505":"9514",f37640e6:"9562","5960b9f1":"9615","284078e5":"9648",e8f11660:"9674"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>f=e[a]=[d,b]));d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,c=d[0],t=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n 鸣谢 | 培洋的笔记本📒 - +
-

鸣谢

饮水思源

该网站的搭建离不开 Docusaurus 的支持以及对 Sonder的宝藏笔记本 的参考。

Disclaimer

本网站展示的所有标识和链接仅属于个人喜好不代表国家的立场或企业、组织的行为

本网站的所有信息仅供参考不构成法律或商业建议

- + \ No newline at end of file diff --git a/docs/Algorithms/intro/index.html b/docs/Algorithms/intro/index.html index 5eaf99d30..ba35ebb55 100644 --- a/docs/Algorithms/intro/index.html +++ b/docs/Algorithms/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
-

Welcome

提示

欢迎来到笔记本的算法部分

支持我!

如果可以帮到你的话就给个免费的 Star 吧!

- + \ No newline at end of file diff --git "a/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" "b/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" index 85f3bf569..dad4a054c 100644 --- "a/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" +++ "b/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" @@ -4,7 +4,7 @@ 一维前缀和(刷出一道墙) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

一维前缀和(刷出一道墙)

提示

在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆,小诺很好奇那些地方被刷过多少种颜色的油漆。

输入描述:

若干行输入,每行两个数字B[i],E[i](0<=B[i]<=E[i]<=200000)表示这次刷的墙壁是哪一段
(假设每次刷的时候油漆颜色都和之前的不同),以0 0结束
又若干行输入,每行两个数字begin[i],end[i](0<=begin[i]<=end[i]<=200000)表示小诺询问的段,
以0 0结束

输出描述:

对于每个小诺的询问输出(end[i]-begin[i]+1)行,表示对应询问段的每个点被多少种颜色的油漆覆盖过。

参考代码

#include <bits/stdc++.h>

using namespace std;

int main()
{
vector<int> colors(200001, 0);

int B, E;
while (scanf("%d %d", &B, &E))
{
if (B == 0 && E == 0)
{
break;
}
colors[B]++; // 刷墙起点标记
colors[E + 1]--; // 刷墙终点标记
}

// 计算前缀和
for (int i = 1; i < colors.size(); i++)
{
colors[i] += colors[i - 1];
}

int begin, end;
while (scanf("%d %d", &begin, &end))
{
if (begin == 0 && end == 0)
{
break;
}
for (int i = begin; i <= end; i++)
{
printf("%d\n", colors[i]);
}
}

return 0;
}

题解

使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。

首先初始化前缀和数组,使每一个元素等于为0。

该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值1-1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,1)[1, -1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于1-1而抵消影响(自身值为1-1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。

关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用"\n"代替endl。

ios::sync_with_stdio(false);
- + \ No newline at end of file diff --git "a/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" "b/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" index fdb56ae09..3040125eb 100644 --- "a/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" +++ "b/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" @@ -4,7 +4,7 @@ 反序输出 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

反序输出

提示

设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值

参考代码

#include <bits/stdc++.h>

using namespace std;

int main() {
for (int i = 1000; i <= 9999; i++) {
int x = i * 9, y = 0;
while (x > 0) {
y = y * 10 + x % 10;
x /= 10;
}
if (i == y) {
cout << i << endl;
}
}
return 0;
}

题解

反序输出可以分为两部分:拆分以及反序拼接

  • 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分

    while (x > 0) {
    y = y * 10 + x % 10; // 拼接与拆分
    x /= 10;
    }
  • 拼接:将s中的数字拼接成整数

    int sum = 0;
    for (int i = 0; i < s.size(); i++) {
    sum = sum * 10 + s[i];
    }
- + \ No newline at end of file diff --git "a/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" "b/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" index 66a68d65f..9eafdb611 100644 --- "a/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" +++ "b/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" @@ -4,7 +4,7 @@ 排列组合(求30的倍数) | 培洋的笔记本📒 - + @@ -13,7 +13,7 @@ 输出样例:210

参考代码

#include <bits/stdc++.h>

using namespace std;

int main() {
string s;
cin >> s;
int maxx = 0, flag = 0;
sort(s.begin(), s.end());
do {
int now = 0;
for (int i = 0; i < s.size(); i++) {
now = now * 10 + s[i] - '0';
}
if (now % 30 == 0) {
flag = 1;
maxx = max(maxx, now);
}
} while (next_permutation(s.begin(), s.end()));
if (flag == 1) {
cout << maxx << endl;
return 0;
}
else {
cout << -1 << endl;
}
}

题解

使用C++ STL提供的排列组合模版

首先将代排列组合的字符串或数组进行排序

sort(list.begin(), list.end());

使用排列组合模版

do {
something();
} while (next_permutation(list.begin(), list.end()));

此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历

- + \ No newline at end of file diff --git a/docs/Curriculum/intro/index.html b/docs/Curriculum/intro/index.html index f0f7340d2..d3d9ec76b 100644 --- a/docs/Curriculum/intro/index.html +++ b/docs/Curriculum/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
-

Welcome

提示

欢迎来到笔记本的课程学习部分

支持我!

如果可以帮到你的话就给个免费的 Star 吧!

- + \ No newline at end of file diff --git "a/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" "b/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" index 0df0c502f..f1762a909 100644 --- "a/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" +++ "b/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" @@ -4,7 +4,7 @@ GeekOS project 0的实现 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

GeekOS project 0的实现

在上一篇博客中我们完成了GeekOS环境的配置,下面我们来验证环境配置的成功与否以及project 0的实现。

编写C语言代码

编写geekos-version/src/projecti/src/geekos/main.c文件

编写函数project0实现检测键盘输入Ctrl+d结束线程。

void project0(){
Print("To Exit hit Ctrl + d.\n");
Keycode keycode;
while(1)
{
if(Read_Key(&keycode))
{
if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起
{
int asciiCode = keycode & 0xff;//d
if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d
{
Print("\n---------Adios!---------\n");
# 这里需要注意素质
Exit(1);
}else
{
Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);
}
}
}
}
}

在main函数中添加以下代码,实现自定义函数的调用,创建线程。

    struct Kernel_Thread *thread;
thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);

总体代码

/*
* GeekOS C code entry point
* Copyright (c) 2001,2003,2004 David H. Hovemeyer <daveho@cs.umd.edu>
* Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
* Copyright (c) 2004, Iulian Neamtiu <neamtiu@cs.umd.edu>
* $Revision: 1.51 $
*
* This is free software. You are permitted to use,
* redistribute, and modify it as specified in the file "COPYING".
*/

#include <geekos/bootinfo.h>
#include <geekos/string.h>
#include <geekos/screen.h>
#include <geekos/mem.h>
#include <geekos/crc32.h>
#include <geekos/tss.h>
#include <geekos/int.h>
#include <geekos/kthread.h>
#include <geekos/trap.h>
#include <geekos/timer.h>
#include <geekos/keyboard.h>

void project0(){
Print("To Exit hit Ctrl + d.\n");
Keycode keycode;
while(1)
{
if(Read_Key(&keycode))
{
if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起
{
int asciiCode = keycode & 0xff;//d
if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d
{
Print("\n---------Adios! Motherfucker!---------\n");
Exit(1);
}else
{
Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);
}
}
}
}
}


/*
* Kernel C code entry point.
* Initializes kernel subsystems, mounts filesystems,
* and spawns init process.
*/
void Main(struct Boot_Info* bootInfo)
{
Init_BSS();
Init_Screen();
Init_Mem(bootInfo);
Init_CRC32();
Init_TSS();
Init_Interrupts();
Init_Scheduler();
Init_Traps();
Init_Timer();
Init_Keyboard();

Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT));
Print("Welcome to GeekOS!\n");
Set_Current_Attr(ATTRIB(BLACK, GRAY));

// TODO("Start a kernel thread to echo pressed keys and print counts");

struct Kernel_Thread *thread;
thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);

/* Now this thread is done. */
Exit(0);
}

使用Linux的编译系统对C语言代码进行编译

每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。

执行

make depend
make

此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它!

目录下的文件应该是这样的结构:

下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。

# An example .bochsrc file.
# You will need to edit these lines to reflect your system.
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
# 请根据自己的实际安装路径更改
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
# 请根据自己的实际安装路径更改
megs: 8
boot: a
floppya: 1_44=fd.img, status=inserted
#floppya: 1_44=fd_aug.img, status=inserted
log: ./bochs.out
# keyboard_serial_delay: 200
# vga_update_interval: 300000
mouse: enabled=0
private_colormap: enabled=0
# i440fxsupport: enabled=0
# Uncomment this to write all bochs debugging messages to
# bochs.out. This produces a lot of output, but can be very
# useful for debugging the kernel.
#debug: action=report

在这个目录下打开终端,执行

bochs

选择6,按下回车

可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入

c

即可完成bochs的正式启动,最终的效果

- + \ No newline at end of file diff --git "a/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" "b/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" index f7a431b5d..1145162a7 100644 --- "a/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" +++ "b/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" @@ -4,7 +4,7 @@ 数字图像处理复习笔记 | 培洋的笔记本📒 - + @@ -54,7 +54,7 @@ M834 80h400000v40h-400000z">1)[D(u,v)D0]2n1(20)

通常采取H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)作为截止频率,没有振铃效应

指数高通滤波器(EHPF)

H(u,v)=e[D0D(u,v)]n(21)H(u,v)=e^{-[\frac{D_0}{D(u,v)}]^n}\tag{21}

梯形高通滤波器(THPF)

H(u,v)={1D(u,v)>D0D(u,v)D1D0D1D1D(u,v)D00D(u,v)<D1(22)H(u,v)=\begin{cases}1&D(u,v)>D_0\\ \\ \frac{D(u,v)-D_1}{D_0-D_1}&D_1\leq D(u,v)\leq D_0\\ \\ 0&D(u,v)<D_1\end{cases}\tag{22}

带通和带阻滤波

带通滤波

顾名思义,带通滤波就是允许某一特定频率的信号通过,而衰减频率范围之外的信号。

理想带通滤波的传递函数为:

H(u,v)={0D(u,v)<D0w21D0w2D(u,v)D0+w20D(u,v)D0+w2(23)H(u,v)=\begin{cases}0&D(u,v)<D_0-\frac{w}{2}\\1&D_0-\frac{w}{2}\leq D(u,v)\leq D_0+\frac{w}{2}\\0&D(u,v)\geq D_0+\frac{w}{2}\end{cases}\tag{23}

其中,D0D_0是通带中心频率,ww是通带宽度。

带阻滤波

顾名思义,带阻滤波就是衰减某一特定频率范围的信号,而允许频率范围之外的信号通过。

理想带阻滤波的传递函数为:

H(u,v)={1D(u,v)<w10w1D(u,v)w21D(u,v)>w2(24)H(u,v)=\begin{cases}1&D(u,v)<w_1\\0&w_1\leqslant D(u,v)\leq w_2\\1&D(u,v)> w_2\end{cases}\tag{24}

第7章 彩色图像处理

伪彩色图像的处理

伪彩色图像的增强一般用于B超、石油开采以及安检方面。

全彩色图像的处理

第8章 图像复原

图像退化机理

退化原因

  1. 成像系统镜头聚焦不准产生的散焦
  2. 相机与景物之间的相对运动
  3. 成像系统存在的各种非线性因素以及系统本身的性能
  4. 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节
  5. 成像系统中存在的各种随机噪声

复原机理

图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。

图像复原与图像增强的区别和联系

联系:二者从表面上看都是为了提高图像的质量。

区别:二者在目的和过程上都有明显的区别。

在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。

在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。

图像退化模型

图像f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)

退化系统的一般特性:

  1. 线性特性。
  2. 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。

第11章 图像分割

阈值分割法

最佳阈值法

假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\mu,背景像素的正态分布概率密度函数的均值为ν\nu,则最佳阈值法确定的阈值为

t=μ+ν2(25)t=\frac{\mu +\nu}{2}\tag{25}

判别分析法

通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。

边缘检测的基本原理

  1. 什么是图像的边缘?

    图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。

  2. 边缘信号的类型?

    1. 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。
    2. 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。
    3. 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。

边缘检测算子

Robert算子

  • 一阶导数算子。
  • 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。
  • 对噪声敏感,不能抑制噪声

Sobel算子

  • 一阶导数算子。
  • 先进行加权平均,然后进行微分运算。
  • 对噪声具有一定的抑制能力。

Prewitt算子

  • 一阶导数算子。
  • 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘
  • 对噪声具有一定的抑制能力。

Laplace算子

  • 二阶导数算子。
  • 使噪声成分得到加强,对噪声更敏感。
  • 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。

Canny边缘检测

  1. 使用高斯滤波平滑图像
  2. 计算梯度幅值和方向
  3. NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值
  4. 使用双阈值方法确定强边界和弱边界
  5. 滞后边界跟踪

课后习题中的问答题

  1. 傅里叶频谱图的特征:

    • 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。
    • 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。
    • 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。
  2. 如何在频域实现图像平滑

    1. 利用傅里叶变换将图像从空域转换为频域;
    2. 将频域图像进行中心偏移,使得低频信息在频谱中央;
    3. 利用滤波函数生成一个与图像大小相同的二维频域矩阵;
    4. 将图像的频域与滤波器的频域相应相乘;
    5. 将相乘后的频域再次逆平移到频域的原始位置;
    6. 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。
  3. 一阶边缘检测算子与Laplace算子的异同。

    • 相同点:都可以检测边缘并且对噪声敏感
    • 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应
  4. 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。

    空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。

  5. 分析采样和量化的过程,以及它们对数字化图像质量的影响。

    采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。

    对数字化图像质量的影响:

    采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。

    量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。

  6. 图像噪声的特点。

    • 随机性
    • 叠加性
    • 噪声与图像之间具有相关性
  7. 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况?

    线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。

    线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。

  8. 伪彩色图像处理可以应用在哪些方面?

    • B超
    • 石油开采
    • 安检
- + \ No newline at end of file diff --git "a/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" "b/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" index 758c12526..3185a13a1 100644 --- "a/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" +++ "b/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" @@ -4,7 +4,7 @@ 编译原理笔记 | 培洋的笔记本📒 - + @@ -17,7 +17,7 @@ 目标代码生成:将中间代码转化成目标机上的机器指令代码或汇编代码(符号表是对符号分配地址的依据)

2 语法分析方法的概念

就产生语法树的方向而言,可大致分为自顶向下的语法分析和自底向上的语法分析两大类。

自顶向下的语法分析方法:主流方法为递归下降分析法。根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导。

自底向上的语法分析方法:将输入串w归约为文法开始符号S的过程

提示

LR(0), SLR(1), LR(1)

LR(0)文法可能存在移进-归约冲突、归约-归约冲突

SLR(1)文法在构造的过程中不存在归约-归约冲突,但有可能出现移进-归约冲突,可以由FOLLOW集解决的话则是SLR(1)文法

3 翻译模式

翻译模式是适合语法制导语义计算的另一种描述形式,可以体现一种合理调用语义动作的算法。

  • S-翻译模式:

    仅涉及综合属性的翻译模式,通常将语义动作集合置于产生式右端末尾。

  • L-翻译模式:

    既可以包含综合属性,也可以包含继承属性。

4 属性文法

在文法基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作,称之为属性文法。

  • S-属性文法:

    只包含综合属性的属性文法成为S-属性文法

  • L-属性文法:

    可以包含综合属性,也可以包含继承属性,但要求产生式右部的文法符号的继承属性的计算只取决于该符号左边符号的属性

5 符号表

符号表是编译程序中用于收集标识符的属性信息的数据结构。

各阶段作用:

  • 语义分析阶段:语义合法性检查的依据
  • 目标代码生成阶段:对符号名进行地址分配的依据
- + \ No newline at end of file diff --git a/docs/Deep-Learning/Fill-The-Gaps/index.html b/docs/Deep-Learning/Fill-The-Gaps/index.html index 33179831a..a0f1f584e 100644 --- a/docs/Deep-Learning/Fill-The-Gaps/index.html +++ b/docs/Deep-Learning/Fill-The-Gaps/index.html @@ -4,7 +4,7 @@ 查漏补缺 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

查漏补缺

信息

这里记录着在学习过程中发现的理解或操作方面出现的错误,温故知新。

Python的广播机制

  1. 进行广播的条件:两个矩阵的后缘维度相同或其中一方的维度为1

    1. 后缘维度相同:A为(3,4,5)的三维数据,B为(4,5)的二维数组。由于A和B的后缘维度都为(4,5),所以可以进行广播。同理,当A为(3,4)的二维数组,B为(4,)的数组,他们的后缘维度都是4,所以可以进行广播。
    2. 后缘维度中有一方维度为1:A为(4,5)的二维数组,B为(4,1)的二维数组,其中一方维度为1,可以进行广播。
  2. 广播的原理:在运算过程中,Python逐步对数组进行广播,并不进行实际的复制操作,节省内存。

    以下是举出具体例子进行分析:

    import numpy as np
    import torch

    x = torch.tensor(np.arange(9), dtype=torch.float32)
    x = torch.reshape(x, (3, 3))
    print(x)

    x1 = x[:, :, None] # (3, 3, 1)
    print(x1)
    """
    tensor([[[0.],
    [1.],
    [2.]],
    [[3.],
    [4.],
    [5.]],
    [[6.],
    [7.],
    [8.]]])
    """

    x2 = x[:, None] # (3, 1, 3)
    print(x2)
    """
    tensor([[[0., 1., 2.]],
    [[3., 4., 5.]],
    [[6., 7., 8.]]])
    """

    output = x1 + x2
    print(output)
    """
    tensor([[[ 0., 1., 2.],
    [ 1., 2., 3.],
    [ 2., 3., 4.]],
    [[ 6., 7., 8.],
    [ 7., 8., 9.],
    [ 8., 9., 10.]],
    [[12., 13., 14.],
    [13., 14., 15.],
    [14., 15., 16.]]])
    """

    由于x1与x2在第0维度上维度相同,所以Python可以直接进行逐元素相加,即依次进行如下运算

    x1[0,:,:]+x2[0,:,:](1)x1[0, :, :] + x2[0, :, :] \tag{1}
    x1[1,:,:]+x2[1,:,:](2)x1[1, :, :] + x2[1, :, :] \tag{2}
    x1[2,:,:]+x2[2,:,:](3)x1[2, :, :] + x2[2, :, :] \tag{3}

但在第0维度的相加过程中出现了shape为(3, 1)的矩阵与shape为(1, 3)的矩阵相加的情况,此时进行广播,将(3, 1)的每一列复制三次为(3, 3),将(1, 3)的每一行复制三次为(3, 3),再进行逐元素相加。

其实,上述的过程还可以再细分为,x1[0, 0, :]与x2[0, 0, :]相加时出现了第一次广播,将x1[0, 0, :]复制了三次与x2[0,0, :]完成相加,这里不再赘述,最终想表达的原理是广播机制是在运算过程当中进行的,并非一次性将二者全部复制为对应的最小公倍数形状后再进行运算

点积(dot product)与矩阵乘法(matmul product)

  1. 点积在Python中对应的运算符为*,进行矩阵之间的逐元素乘法。在点积运算中,运算矩阵二者形状不一样时可能涉及到广播机制;
  2. 矩阵乘法在Python中对应的运算符为@,进行常规矩阵乘法。遵守左矩阵的列数必须等于右矩阵的行数,且输出矩阵的行数等于左矩阵的行数、输出矩阵的列数等于右矩阵的列数的规则。

zip函数与解压操作*

当你有多个列表(或其他可迭代对象)时,zip函数可以将它们逐个配对成元组。而*操作符用于解压元组,将元组中的元素分别作为参数传递给函数。

以下是一个简单的例子:

# zip函数的例子
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = ['x', 'y', 'z']

# 使用zip将多个列表配对成元组
zipped_lists = zip(list1, list2, list3)

# 打印配对后的元组
for item in zipped_lists:
print(item)

输出:

(1, 'a', 'x')
(2, 'b', 'y')
(3, 'c', 'z')

在这个例子中,ziplist1list2list3中相同位置的元素组合成元组。

接下来,我们可以使用 * 操作符解压这些元组:

# *解压操作的例子
unzipped_lists = zip(*zipped_lists)

# 打印解压后的列表
for item in unzipped_lists:
print(item)

输出:

(1, 2, 3)
('a', 'b', 'c')
('x', 'y', 'z')

在这个例子中,*操作符将先前由zip组合的元组解压,分别放回原始的列表。

对batch_first参数的理解

对于不同的网络层,输入的维度虽然不同,但是通常输入的第一个维度都是batch_size,比如torch.nn.Linear的输入(batch_size,in_features)torch.nn.Conv2d的输入(batch_size, C, H, W)

RNN的输入是(seq_len, batch_size, input_size)batch_size位于第二维度!虽然可以将batch_size和序列长度seq_len对换位置,此时只需令batch_first=True

但是为什么RNN输入默认不是batch first=True?这是为了便于并行计算

因为cuDNN中RNN的API就是batch_size在第二维度。进一步讲,batch first意味着模型的输入(一个Tensor)在内存中存储时,先存储第一个sequence,再存储第二个,而如果是seq_len first,模型的输入在内存中,先存储每一个sequence的第一个元素,然后是第二个元素,两种区别如下图所示:

img

seq_len first意味着不同序列中同一个时刻对应的输入单元在内存中是毗邻的,这样才能做到真正的batch计算。

- + \ No newline at end of file diff --git a/docs/Deep-Learning/intro/index.html b/docs/Deep-Learning/intro/index.html index 36434992f..3ce886d05 100644 --- a/docs/Deep-Learning/intro/index.html +++ b/docs/Deep-Learning/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
-

Welcome

介绍

欢迎来到笔记本的深度学习部分

若更新不及时,欢迎通过 GitHub 联系交流

有关论文笔记的说明

为了节省写作时间,论文笔记部分的文章通常只讲述文章的方法论,Introduction 以及 Related Work 详情可以参考论文原文

支持我!

如果可以帮到你的话就给个免费的 Star 吧!

这里 δ\delta 是从高斯分布 N(0,I)\mathcal{N}(0, I) 中采样的, σt\sigma_t 是时间步 tt 的噪声水平。以 xTN(0,I)x_T \sim \mathcal{N}(0, I) 开始,此过程生成一个样本 x0x_0 使得 x0p(xz)x_0 \sim p(x \mid z)​。

双向注意力机制

image-20240726151056117

结合掩码生成模型的思想 MAR

本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。

掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。

image-20240726151148969

实验与结论

对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测

image-20240726152158539

扩散过程 MLP 参数对性能的影响

image-20240726152344064

扩散过程采样步数对性能的影响

image-20240726152515002

温度对多样性和准确性的控制

image-20240726152948583

MAR 模型速度与效果的 trade-off

对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。

image-20240726152549655

- + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" index bcdb9eab4..6c54f55a7 100644 --- "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" +++ "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" @@ -4,7 +4,7 @@ 自回归模型:LlamaGen | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">xg

其中,xx 是输入向量,nn 是向量维度,gg​ 是可缩放的参数。

RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。

  • 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。

    组成部分:

    • GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。
    • Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。
    SwiGLU(x)=σ(xW1+b1)(xW2+b2)\mathrm{SwiGLU}(x)=\sigma(xW_1+b_1)\odot(xW_2+b_2)

    其中,xx 是输入向量,W1,W2W_{1}, W_{2} 是权重矩阵,b1,b2b_1, b_2 是偏置向量,σ\sigma 是激活函数,通常为 GELU(高斯误差线性单元),\odot 表示逐元素乘法。

    SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。

  • 本文提出的 LlamaGen 模型的每一层都使用了 2D RoPE。

    RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。

    RoPE(xi)=xicos(θi)+xi+1sin(θi)\operatorname{RoPE}\left(x_i\right)=x_i \cdot \cos \left(\theta_i\right)+x_{i+1} \cdot \sin \left(\theta_i\right)
    • xix_i 是输入向量的第 ii 个元素。
    • θi\theta_i 是位置 ii 处的旋转角度,通常由固定的正弦和余弦函数生成。

    RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。

  • 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN

    AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。

    AdaLN(x)=xμ(x)σ(x)γ+β\operatorname{AdaLN}(x)=\frac{x-\mu(x)}{\sigma(x)} \cdot \gamma+\beta
    • xx 是输入向量。
    • μ(x)\mu(x)σ(x)\sigma(x) 分别是输入 xx 的均值和标准差。
    • γ\gammaβ\beta 是可训练的缩放和平移参数。

    在 AdaLN 中,均值 μ(x)\mu(x) 和标准差 σ(x)\sigma(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。

  • LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。

    • 训练阶段:

      在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。

    • 推理阶段:

      对于每个 token,其 logit g\ell_g 是通过以下方式形成的:

      g=u+s(cu)\ell_g = \ell_u + s(\ell_c - \ell_u)

      其中:

      • c\ell_c 表示条件logit,即基于输入文本提示的信息生成的logit。
      • u\ell_u 表示无条件logit,即不考虑任何条件信息时生成的logit。
      • ss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。

    通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。

    作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。

  • - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" index ba22511ee..5a6803fc0 100644 --- "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" +++ "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" @@ -4,7 +4,7 @@ 图像生成:自回归模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成:自回归模型

    自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。

    自回归模型的数学定义

    自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。

    假设有一个序列 x=(x1,x2,,xT)x=\left(x_1, x_2, \ldots, x_T\right) ,自回归模型的目标是学习条件概率分布 p(xtx<t)p\left(x_t \mid x_{<t}\right) , 即在给定序列前面部分 x<t=(x1,x2,,xt1)x_{<t}=\left(x_1, x_2, \ldots, x_{t-1}\right) 的情况下,预测当前值 xtx_t

    对于一个给定的序列 xx ,自回归模型的联合概率分布可以分解为以下形式:

    p(x)=t=1Tp(xtx<t)p(x)=\prod_{t=1}^T p\left(x_t \mid x_{<t}\right)

    在图像生成任务中,图像被看作是一个二维序列。在传统的自回归图像生成模型(VQVAE、VQGAN 等)将图像的像素视作一个一维序列,通过条件概率分布 p(xi,jx<i,j)p\left(x_{i, j} \mid x_{<i, j}\right) 来生成每个像素值 xi,jx_{i, j}

    Autoregressive 模型时间线

    PixelRNN(2016)

    PixelRNN 是早期的自回归模型之一,它使用循环神经网络(RNN)来建模条件概率分布。由于 RNN 能够捕捉长序列依赖性,PixelRNN 能够生成高质量的图像,但是计算效率较低,因为每次生成一个像素都需要遍历整个序列。

    PixelCNN(2016)

    为了克服 PixelRNN 的计算瓶颈,PixelCNN 使用卷积神经网络(CNN)并引入了遮罩技术,确保每个像素仅依赖于其上方和左侧的像素。

    VQ-VAE(2017)

    科学空间:VQ-VAE 的简明介绍中,提到了 VQ-VAE 与之前的 PixelCNN 和 PixelRNN 的关系。

    受 PixelCNN 和 PixelRNN 专注于像素级的生成的启发,VQ-VAE(Vector Quantized Variational Autoencoder)提出了另一种方法,通过离散的潜在空间来建模数据。VQ-VAE 的主要贡献在于引入了向量量化层,将连续的潜在变量映射到一组离散的嵌入向量上,从而能够更高效地学习复杂的数据分布。

    主要思想:VQ-VAE(Vector Quantized Variational AutoEncoder)通过将连续的图像表示量化为离散的代码来进行图像生成。它引入了一个离散的代码本,将连续的潜在向量映射到离散的代码上,进行编码和解码。

    主要贡献

    • 采用向量量化方法,使得生成模型能够高效地处理离散代码。
    • 在生成模型中,离散化的潜在空间简化了模型的训练和推理过程。

    与之前模型的关系

    • VQ-VAE 在 VAEs(Variational AutoEncoders)的基础上,引入了离散的潜在空间,使得生成效果更好,训练更稳定。

    VQVAE-2(2019)

    VQVAE-2 是 VQ-VAE 的一个扩展版本,它引入了层次化的结构,使用多个层次的量化向量来建模不同尺度的特征,从而提高了模型的灵活性和生成图像的质量。

    主要思想:VQ-VAE-2 引入了多层级的离散潜在变量,通过多层级的自回归模型进行生成。它使用了层次化的编码器和解码器结构,更好地捕捉图像中的复杂结构。

    主要贡献

    • 引入了层次化的离散潜在空间,提高了生成图像的质量和分辨率。
    • 在多个层级上进行自回归生成,提高了模型对图像全局和局部信息的捕捉能力。

    改进点

    • 相较于 VQ-VAE,VQ-VAE-2 通过层次化的设计,显著提升了生成图像的细节和清晰度。

    VQGAN(2021)

    VQGAN 结合了 VQ-VAE 的思想和生成对抗网络(GANs)的优点。它使用编码器和解码器之间的量化瓶颈,并利用 GAN 框架来优化图像质量。VQGAN 在高分辨率图像生成方面表现出了强大的能力。

    主要思想:VQGAN(Vector Quantized Generative Adversarial Networks)结合了 VQ-VAE 的离散潜在表示和 GAN(Generative Adversarial Networks)的对抗训练,提升了生成图像的质量。

    主要贡献

    • 利用对抗训练,生成的图像更加逼真和细腻。
    • 通过结合 VQ-VAE 和 GAN 的优势,解决了各自方法的一些固有缺陷。

    改进点

    • 相较于 VQ-VAE-2,VQGAN 通过对抗训练机制,进一步提升了生成图像的视觉质量。

    RQTransformer(2021)

    RQTransformer 是一种改进的自回归模型,它利用了自注意力机制,能够有效地处理序列数据。相比于传统的自回归模型,RQTransformer 在大规模数据集上展现了更好的性能,尤其是在自然语言处理和图像生成任务中。

    主要思想:RQ-Transformer(Residual Quantization Transformer)结合了残差量化和 Transformer 架构,通过对潜在空间进行分块量化来提高生成效率和质量。

    主要贡献

    • 引入残差量化方法,提高了潜在空间的表示能力。
    • 结合 Transformer 架构,增强了对复杂图像结构的建模能力。

    改进点

    • 相较于 VQ-VAE 和 VQGAN,RQ-Transformer 在潜在空间表示上更为灵活,提高了生成图像的分辨率和质量。

    DALL-E(2021)

    主要思想:DALL-E 是 OpenAI 提出的一个基于 Transformer 的图像生成模型,能够根据文本描述生成图像。它使用了大规模的文本-图像对数据进行训练,并采用了自回归生成策略。其创新之处在于如何将文本和图像模态融合在一起。

    主要贡献

    • 展示了基于文本描述生成图像的强大能力。
    • 引入了大规模数据和 Transformer 架构,使得生成效果更加多样化和逼真。

    改进点

    • 相较于之前的图像生成模型,DALL-E 在生成多样性和一致性上有了显著提升,特别是在文本到图像的生成任务中表现出色。

    Parti(2022)

    Parti 是谷歌研究团队提出的一种模型,专注于分层次的图像生成。它首先生成图像的组成部分(如物体或场景元素),然后将这些部分组合成完整的图像。Parti 在保持图像细节的同时,还能够控制图像的语义内容。

    主要思想:Parti 是一个基于 Transformer 的图像生成模型,能够通过部分图像生成剩余部分。它采用了多阶段生成策略,通过逐步细化生成图像,保证生成效果的一致性和逼真性。

    主要贡献

    • 引入了多阶段的生成策略,提高了生成图像的一致性。
    • 在部分图像生成任务中表现出色,能够根据现有图像生成补全部分。

    改进点

    • 相较于 DALL-E 和其他自回归模型,Parti 在生成图像的一致性和细节捕捉上有了显著改进。
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" index 4a72cf543..eb303e639 100644 --- "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" +++ "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" @@ -4,7 +4,7 @@ 扩散模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" index 9313be7a9..4a795827e 100644 --- "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" +++ "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" @@ -4,7 +4,7 @@ 图像生成和视频生成基座模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成和视频生成基座模型

    图像生成基座模型

    四种生成范式

    GAN

    使用对抗生成策略,判别器根据真实图像判断生成器生成的图像是否逼真,二者交替训练。

    GAN

    Autoregressive(AR)

    自回归生成范式,利用输入自身之前各期 [x1,...,xt1][x_1,...,x_{t-1}] 来预测本期 xtx_t​​ 的表现。在图像生成中,自回归模型可以逐像素或逐块生成图像,每一步的生成基于之前已经生成的部分。自回归模型的优点在于能够捕捉图像中的复杂依赖关系,从而生成更加逼真的图像。

    代表模型:VAE、VQVAE(2017)

    VAE 和 VQ-VAE 都通过学习数据分布的潜在表示来生成新的样本。VAE 使用高斯分布来表示潜在空间,而 VQ-VAE 使用离散的代码簿来表示潜在空间。

    具体来说,VAE 的工作原理是通过一个编码器将输入数据映射到一个潜在空间,然后通过一个解码器将潜在空间中的向量重构为原始数据。在训练过程中,VAE 会学习到数据分布的潜在表示,并能够生成与训练数据类似的新样本。

    VQ-VAE 的工作原理与 VAE 类似,但它使用离散的代码簿来表示潜在空间。VQ-VAE 首先将编码器输出的向量进行量化,将其映射到代码簿中的最近向量。然后,解码器使用代码簿中的向量来重构原始数据。VQ-VAE 的优势在于,它可以学习到数据中的离散结构和语义信息,并可以避免过拟合。

    代表模型:VQGAN(2021)
    代表模型:ViT-VQGAN(2022)

    image-20240705102041673

    VQ (Vector Quantization) 的改进:在原有的 VQ-VAE 基础上进行了改进,通过引入更复杂的量化器和更强大的解码器,使得生成的图像质量得到了显著提升。

    GAN (Generative Adversarial Network) 的结合:将 VQ 和 GAN 结合,利用 Style-GAN 的判别器来提升生成图像的细节和逼真度。

    Transformer 的使用:将 VQ-VAE 和 VQGAN 的 Encoder、Decoder 中原来使用的 CNN 结构替换为 ViT。一是因为数据量丰富,二是 CNN 的归纳偏置对模型的约束是有限的,三是计算效率和重建质量更显著。

    代表模型:VAR

    image-20240705104016645

    上图展示了不同方式的自回归生成模型,VAR 方法在每个时间序列节点上都根据之前各时间步的输出预测出当前时间步的,且每个时间步均预测出完整的目标图像,且分辨率随时间推移逐步提升至高清图像,即 next-resolution prediction

    image-20240705103947258

    Masked-prediction model(Non-AR)

    代表模型:MaskGIT: Masked Generative Image Transformer

    image-20240705110446519

    这种生成模型依赖一个预训练好的 VQGAN,能将图片 tokenize 成一组量化后的 visual tokens。VQGAN 编码图片得到的 tokens 是离散的,所有可能的 tokens 构成一个 codebook,假设其中包含 KK 个 token 选项。MVTM 训练就是指给定 masked tokens,让网络预测这些被 masked 掉的 tokens。对于每个被 masked 掉的 token,网络给出一个 KK 维向量预测当前 token 属于 codebook 中每个 token 的可能性,类似于完成一个 KK 分类任务。

    image-20240705110625208

    上图展示了传统 AR 模型和 MaskGIT 在推理过程中的区别。与之前 SOTA 使用的 Autoregressive 方法——逐行再逐列依次生成 image token 不同,MaskGIT 在推理时的每次迭代从一组 masked tokens 中预测出每个位置出现 visual token 的可能性,然后仅保留那些置信度足够高的位置的 visual token,然后继续将当前预测结果再送入网络进行下一轮预测,直到所有位置的 visual token 都被预测出来。与之前常用的自回归方法不同,每轮预测都是基于对图片的全局感知,可以并行预测。这样网络仅需 8 次前向传播就能生成高质量的图片。

    顺序解码与 MaskGIT 计划并行解码的比较。第 1 行和第 3 行是每次迭代时的输入潜在掩码,第 2 行和第 4 行是每次迭代时每个模型生成的样本。MaskGIT 的解码从所有未知代码(浅灰色标记)开始,逐渐用更多更分散的预测并行填充潜表征(深灰色标记),预测标记的数量随着迭代急剧增加。MaskGIT 只用了 8 次迭代就完成了解码,而顺序法需要 256 轮。

    代表模型:MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis

    Diffusion Model

    如何训练优秀的生成基座模型?

    1. 数据:Re-caption 与 text encoder(T5)
    2. 结构:从 U-Net 到纯 Transformer,代表论文 Scalable Diffusion Models with Transformers
    3. 训练范式:使用 Rectified Flow 加速生成过程,参考链接 Diffusion学习笔记(十二)——Rectified Flow

    image-20240705151423108

    视频生成基座模型

    参考链接
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" index 685ce2e06..1a20ef2ac 100644 --- "a/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" +++ "b/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" @@ -4,7 +4,7 @@ 自回归模型:VAR | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    自回归模型:VAR

    原文链接:https://arxiv.org/pdf/2404.02905

    摘要

    We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.

    研究背景与动机

    通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。

    • 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证
    • 性能有待提升
    image-20240711163258584

    上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。

    问题发现与提出

    首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程:

    1. 输入 raw image,Encoder 得到对应的 feature map。

      f=E(im)f=\mathcal{E}(im)
    2. 输入feature map,Quantizer 得到对应的量化 image token。

      q=Q(f)q=\mathcal{Q}(f)

      在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZ 中的 code。

      q(i,j)=(argminv[V]lookup(Z,v)f(i,j)2)[V]q^{(i,j)}=\left(\arg\min_{v\in[V]}\|\text{lookup}(Z,v)-f^{(i,j)}\|_2\right)\in[V]
    3. Decoder 通过接收在 Codebook 中查找得到的 f^\hat{f} 生成重构的图像。

      f^=lookup(Z,q)\hat{f}=\operatorname{lookup}(Z,q)
      im^=D(f^)\hat{im}=\mathcal{D}(\hat{f})
      L=imim^2+ff^2+λPLP(im^)+λGLG(im^)\mathcal{L}=\|im-i\hat{m}\|_2+\|f-\hat{f}\|_2+\lambda_\text{P}\mathcal{L}_\text{P}(i\hat{m})+\lambda_\text{G}\mathcal{L}_\text{G}(i\hat{m})

    下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。

    image-20240711171834053

    文章发现了目前传统 VAR 模型存在的三个问题。

    1. VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_t 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt1)(x_1, x_2, ..., x_{t-1}),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。

      作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。

      image-20240711171636359

      作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。

      This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention.

    2. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。

    3. 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,,xn×n)x=(x_1,x_2,\ldots,x_{n\times n}) 的 token 序列,需要 O(n2)\mathcal{O}(n^{2}) 的注意力步骤以及 O(n6)\mathcal{O}(n^{6}) 的计算复杂度。

    主要方法与贡献

    主要方法

    本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction

    image-20240711174347249

    自回归过程从分辨率为 1×11\times1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。

    通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 fRh×w×Cf \in \mathbb{R}^{h \times w \times C} 量化为 KK 个多尺度标记图 (r1,r2,,rK)(r_1, r_2, \ldots, r_K),每个图的分辨率 hk×wkh_k \times w_k 逐步增加,最终达到 rKr_K 与原始特征图的分辨率 h×wh \times w 匹配。自回归似然性公式为:

    p(r1,r2,,rK)=k=1Kp(rkr1,r2,,rk1)p(r_1, r_2, \ldots, r_K) = \prod_{k=1}^{K} p(r_k \mid r_1, r_2, \ldots, r_{k-1})

    其中每个自回归单元 rk[V]hk×wkr_k \in [V]^{h_k \times w_k} 是包含 hk×wkh_k \times w_k 个标记的第 kk 个尺度的标记图,而序列 (r1,r2,,rk1)(r_1, r_2, \ldots, r_{k-1}) 作为 rkr_k 的“前缀”。在第 kk 个自回归步骤中,所有 rkr_k 中的 h_k \times w_k 标记的分布将并行生成,并以 rkr_k 的前缀和关联的第 kk 个位置嵌入图为条件。如下图所示。

    请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_k 只能关注其前缀 rkr_{\leq k},从而满足 Autoregressive 模型的数学假设前提。

    image-20240711180036964

    本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。

    模型主要结构

    Multi-scale VQ quantizer

    首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。

    image-20240711182022796

    VAR Transformer

    作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。

    image-20240712091839372

    在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_k 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。

    单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KK​。

    局限性与展望

    1. 期待更好的 VQVAE tokenizer 可以提升 VAR 模型的能力。

    2. 本文只实现了 class-conditional generation,可以继续扩展为多模态任务,text-prompt generation。目前我认为比较常见的一个想法就是结合 T5 text-encoder,将文字

    3. 视频生成。可以将视频看作是 3D pyramids,尝试 3D next-scale prediction

      作者表示,与 Diffusion Model-based 的视频生成模型 SORA 相比,由于 VAR 模型在结构与上与 LLMs 更相似,可以更好地与 LLMs 的技术相结合。

    总结

    本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。

    对文章开篇提出的问题的解决:

    1. 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。
    2. 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。
    3. 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\mathcal{O}(n^2) 次解码迭代和 O(n6)\mathcal{O}(n^6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\mathcal{O}(log(n)) 次迭代和 O(n4)\mathcal{O}(n^4)​ 次总计算量。

    文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" index 8345205d9..d643f7ed0 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" @@ -4,7 +4,7 @@ AlexNet | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    AlexNet

    背景

    AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。

    标志着新的一轮神经网络热潮的开始

    image

    新的概念和技术

    • ReLU激活函数
    • Dropout正则化、丢弃法
    • 最大池化MaxPooling

    与LeNet比较

    1. 由于输入的图片更大,设置了更大的卷积核尺寸和步长
    2. 更大的池化窗口,使用最大池化
    3. 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式
    4. 激活函数从Sigmoid改成了ReLU,减缓梯度消失
    5. 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化
    6. 使用了数据增强data augmentation
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" index a6114efbc..a6646392a 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" @@ -4,7 +4,7 @@ 卷积层 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    卷积层

    1x1 卷积

    kh=kw=1k_h=k_w=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道

    相当于输入形状为HW×ciHW \times c_i,权重形状为co×cic_o \times c_i的全连接层


    二维卷积层

    • 输入:ci×H×Wc_i \times H \times W

    • 核:co×ci×kh×kwc_o \times c_i \times k_h \times k_w

    • 偏差:co×cic_o \times c_i

    • 输出:co×H×Wc_o \times H' \times W'

    • 输出H以及WH'以及W'的计算:

      shapeoutput=shapeinputsizekernel+2paddingstride+1(1)shape_{output} = \frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \tag{1}
    • 计算复杂度:O(co×ci×H×W×H×W)O(c_o \times c_i \times H \times W \times H' \times W')

    • 总结:

      1. 输出的通道数是卷积层的超参数
      2. 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果
      3. 每个输出通道有独立的三维卷积核
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" index 3f631bc52..063916a36 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" @@ -4,7 +4,7 @@ 从全连接到卷积 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    从全连接到卷积

    卷积的诞生&核心特征

    1. 现代图片具有较大的像素,使用全连接层导致参数爆炸
    2. 针对图片的特征提取和模式识别,应具备以下原则:
      • 平移不变性
      • 局部性

    重新考察全连接层

    1. 将全连接层的一维输入和输出变换为二维的矩阵,公式如下

      其中i,ji,j代表输出神经元的二维索引坐标,h,wh,w代表输入神经元的二维索引坐标

    yi,j=h,wwi,j,h,wxh,w(1)y_{i,j}=\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \tag{1}
    1. 进一步将权重以及输入的索引变形,公式如下

      其中a,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接

    yi,j=h,wwi,j,h,wxh,w=a,bvi,j,a,bxi+a,j+b(2)y_{i,j}=\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \tag{2}
    1. 在公式(2)中,当i,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。

      为了解决这一问题,将公式(2)变形为如下

      此时参数权值共享,满足了平移不变性

      yi,j=a,bvi,j,a,bxi+a,j+b=a,bva,bxi+a,j+b(3)y_{i,j}=\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \tag{3}
    2. 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,b可缩小范围,并不用来实现全连接,此时a,ba,b代表着卷积核的感受野,即kernel size

    3. 此时完成了全连接层到卷积层的转换


    总结

    1. 对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接
    yi,j=a,bva,bxi+a,j+b=a=ΔΔb=ΔΔva,bxia,j+b(4)y_{i,j}=\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\sum_{a=-\Delta}^{\Delta}\sum_{b=-\Delta}^{\Delta}{v_{a,b}*x_{i_a,j+b}} \tag{4}
    1. 卷积层输出形状的计算
      shapeoutput=shapeinputsizekernel+2paddingstride+1(5)shape_{output} = \frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \tag{5}
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" index a3876344b..2a0944108 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" @@ -4,7 +4,7 @@ K-fold cross-validation | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    K-fold cross-validation

    What is k-fold cross-validation?

    K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kk partitions, or folds, and then train and test the model kk times, using a different fold for testing each time.


    How does k-fold cross-validation work?

    In each iteration of k-fold cross-validation, one of the kk folds is used as the test set, while the remaining k1k-1 folds are used as the training set. This process is repeated kk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.


    Summary

    • train set: to train the model and do parameter update
    • validation set: to choose hyperparameter
    • test set: the final test, only used once
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" index 4743d095d..5f736ceff 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" @@ -4,7 +4,7 @@ LeNet | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    LeNet

    背景

    LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。

    LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。


    代码实现

    import torch
    import numpy as np
    from torch import nn as nn
    from torch.nn import functional as F
    from d2l import torch as d2l
    from matplotlib import pyplot as plt
    import os

    os.environ['http_proxy'] = 'http://127.0.0.1:7890'
    os.environ['https_proxy'] = 'https://127.0.0.1:7890'


    class LeNetReshape(nn.Module):
    def __init__(self):
    super(LeNetReshape, self).__init__()

    def forward(self, x):
    return x.reshape(-1, 1, 28, 28)


    class LeNet5(nn.Module):
    def __init__(self):
    super(LeNet5, self).__init__()
    self.net = torch.nn.Sequential(
    LeNetReshape(),
    # 激活函数应为Sigmoid
    nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Flatten(),
    nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(),
    nn.Linear(120, 84), nn.Sigmoid(),
    nn.Linear(84, 10))

    def forward(self, x):
    return self.net(x)


    def evaluate_accuracy_gpu(net, data_iter, device=None):
    if isinstance(net, torch.nn.Module):
    net.eval()
    if not device:
    device = next(iter(net.parameters())).device
    metric = d2l.Accumulator(2)
    for X, y in data_iter:
    if isinstance(X, list):
    X = [x.to(device) for x in X]
    else:
    X = X.to(device)
    y = y.to(device)
    metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计
    return metric[0] / metric[1]


    def accuracy(y_hat, y):
    return torch.sum(y_hat.argmax(dim=1) == y)


    def train(net, train_iter, test_iter, num_epochs, lr, device):
    def init_weights(m):
    if type(m) == nn.Linear or type(m) == nn.Conv2d:
    nn.init.xavier_uniform_(m.weight)

    net.apply(init_weights)
    net.to(device)
    optimizer = torch.optim.SGD(net.parameters(), lr=lr)
    loss = torch.nn.CrossEntropyLoss()
    loss.to(device)
    animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs],
    legend=['train loss', 'train acc', 'test acc'])
    timer, num_batches = d2l.Timer(), len(train_iter)
    metric = d2l.Accumulator(3)
    net.train()
    for epoch in range(num_epochs):
    for batch, (X, y) in enumerate(train_iter):
    timer.start()
    optimizer.zero_grad()
    X, y = X.to(device), y.to(device)
    y_hat = net(X)
    l = loss(y_hat, y)
    l.backward()
    optimizer.step()
    metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel())
    timer.stop()
    train_l = metric[0] / metric[2]
    train_acc = metric[1] / metric[2]
    if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1:
    animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None))
    test_acc = evaluate_accuracy_gpu(net, test_iter)
    animator.add(epoch + 1, (None, None, test_acc))
    print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}')
    print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}')
    plt.show()

    batch_size = 256
    train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
    lr, num_epochs = 0.9, 10
    lenet = LeNet5()
    train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

    问题

    在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" index bf408fba0..1fea85e1b 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" @@ -4,7 +4,7 @@ 关于Logistic Regression | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    关于Logistic Regression

    什么是Logistic Regression

    Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。

    逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。


    逻辑回归(Logistic Regression)和线性回归(Linear Regression)

    • 线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。
    • 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。
    • 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。

    逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?

    从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。


    为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?

    逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。

    逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。

    acc=I(predi==yi)len(Y)(1)acc = \frac{\sum{I(pred_i==y_i)}}{len(Y)} \tag{1}

    如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况:

    1. gradient = 0 if accuracy unchanged but weights changed:

      xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5    print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15    print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python

    2. gradient not continuous since the number of correct is not continunous:

      当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" index 2979ca22d..3bb5f1fdb 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" @@ -4,7 +4,7 @@ Perceptron | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Perceptron

    什么是感知机

    感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。


    详细原理

    1. 输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n),表示一个样本的各个特征值。

    2. 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n),表示每个特征对应的权重。

    3. 偏置项:偏置项bb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。

    4. 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=wx+bz=w*x+b

    5. 阈值函数:将输入信号zz带入阈值函数,如符号函数sign(z)sign(z),即可得到分类结果。

    6. 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即

      L(y,z)=max(0,yz)(1)L(y,z)=max(0,-y*z) \tag{1}

      其中yy是样本的真实标签,zz是预测值。

    7. 参数更新:根据当前样本误分类情况来对权值向量ww和偏置项bb进行迭代更新。

    8. 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。

    感知机训练流程伪代码如下所示:

    initialize w = 0 and b = 0
    repeat
    if yi * zi <= 0 then
    w = w + yi * xi and b = b + yi
    end if
    until all classified correctly

    总结

    • 感知机是一个二分类模型,最早的AI模型之一
    • 求解算法等价于使用批量大小为1的梯度下降
    • 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" index 4af794bec..de4672aa4 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" @@ -4,7 +4,7 @@ 池化层 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    池化层

    卷积对像素位置信息是敏感的

    卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。

    假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。


    池化层的作用

    池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。

    但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。

    1. 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息
    2. 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。
    3. 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。

    池化的实现

    池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。

    最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" index 60dd5b7af..d2cf53bc3 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" @@ -4,7 +4,7 @@ PyTorch基础 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    PyTorch基础

    常用函数部分

    1. concat与stack函数

      stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度

      concat函数对输入的张量在指定维度进行拼接,没有创建新的维度

      # stack和concat函数
      a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩
      b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩
      c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学)
      print(c.shape) # torch.Size([2, 4, 3])
      d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩
      print(d.shape) # torch.Size([4, 6])
    2. list和tensor乘法不同之处

      list的*乘法是复制元素,改变list的shape

      tensor的*乘法是对tensor中的元素进行点乘计算

      a = torch.tensor([[3, 3, 3, 3]])
      b = [3] # list的*乘是复制元素进行扩展
      print(a * 3) # tensor([[9, 9, 9, 9]])
      print(b * 3) # [3, 3, 3]
    3. 最大值 / 最小值索引:argmax / argmin

      需要通过参数dim指定操作的维度,dim的理解

      • 官方解释:The dimension to reduce

      • 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度

      # 最大值最小值索引
      a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3]
      print("argmax output: ", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0])
    4. Python zip函数

      zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素

      a = torch.tensor([1, 2, 3])
      b = torch.tensor([4, 5, 6])
      c = zip(a, b)
      for i in c:
      print(i)
      '''
      (tensor(1), tensor(4))
      (tensor(2), tensor(5))
      (tensor(3), tensor(6))
      '''
      a = torch.tensor([[1, 2, 3], [3, 2, 1]])
      b = torch.tensor([[4, 5, 6], [6, 5, 4]])
      c = zip(a, b)
      for i in c:
      print(i)
      '''
      (tensor([1, 2, 3]), tensor([4, 5, 6]))
      (tensor([3, 2, 1]), tensor([6, 5, 4]))
      '''
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" index 1e818a1a6..f0a9dbb03 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" @@ -4,7 +4,7 @@ 正则化与权重衰退 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    正则化与权重衰退

    提示

    正则化与权重衰退

    什么是正则化

    正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。

    正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。

    常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。

    L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。

    L1正则化

    min l(w,b) subject to w12θ(1)min \space l(w, b) \space \text{subject to} \space \Vert w \Vert^2_1 \leq \theta \tag{1}
    • L1正则化限制权重参数的L1范数小于某一特定的超参数
    • 通常不限制偏移bb
    • 更小的超参数θ\theta意味着更强的正则项

    L2正则化与权重衰退

    L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示:

    l(w,b)+λ2w12(2)l(w, b) + \frac{\lambda}{2} \Vert w \Vert^2_1 \tag{2}

    其中,λ\lambda是一个正则化系数超参数

    此时在更新梯度时,具有如下公式

    w(l(w,b)+λ2w12)=l(w,b)w+λw(3)\frac{\partial}{\partial w} \big(l(w, b) + \frac{\lambda}{2} \Vert w \Vert^2_1 \big) = \frac{\partial l(w, b)}{\partial w} + \lambda w \tag{3}
    wt+1=(1ηλ)wt+ηl(wt,bt)wt(4)w_{t+1}=(1-\eta \lambda)w_t + \eta \frac{\partial l(w_t, b_t)}{\partial w_t} \tag{4}

    通常ηλ<1\eta \lambda < 1,因此又叫做权重衰退

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" index afe8f7533..6ead175f7 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" @@ -4,7 +4,7 @@ 深度可分离卷积 | 培洋的笔记本📒 - + @@ -14,7 +14,7 @@ 使用3×33 \times 3卷积核,padding=1,stride=1padding=1, stride=1

    常规卷积

    卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3)

    其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算

    img

    不考虑卷积偏置,参数量为

    3×3×3×4=108(1)3 \times 3 \times 3 \times 4 = 108 \tag{1}

    深度可分离卷积

    逐通道卷积-Depthwise Convolution

    img

    使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为

    3×3××3=27(2)3 \times 3 \times \times 3 = 27 \tag{2}

    代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可

    逐点卷积-Pointwise Convolution

    img

    使用1×11 \times 1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为

    1×1×3×4=12(3)1 \times 1 \times 3 \times 4 = 12 \tag{3}
    提示

    图片源自知乎

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" index 4b572f8fb..8f5ec5602 100644 --- "a/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" +++ "b/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" @@ -4,7 +4,7 @@ 激活函数与Loss的梯度 | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">(6)

    Cross Entropy Loss 交叉熵损失

    信息熵

    Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。

    It's a measure of surprise, higher entrpoy means less information and higher uncertainty.

    假设一个离散型随机变量XX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_n,而取值事件xix_i发生的概率为PiP_i,则其信息熵的定义为

    H(P)=inPi log2(Pi)=inPi log2(1Pi)(7)\begin{align} H(P) &= -\sum_i^n{P_i}\space{log_2(P_i)} \\ &= \sum_i^n{P_i}\space{log_2({\frac{1}{P_i}}}) \tag{7} \end{align}

    KL散度

    在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。

    存在两个概率分布P和Q,其离散型随机变量XX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_n,而取值事件xix_i发生的概率分别为Pi,QiP_i,Q_i.

    KL散度是非对称的,即

    DKL(P  Q)DKL(Q  P)(8)D_{KL}(P \space || \space Q) \neq D_{KL}(Q \space || \space P)\tag{8}
    DKL(P  Q)=Pi [log2(Pi)log2(Qi)](9)D_{KL}(P \space || \space Q) = \sum{P_i\space [log_2(P_i)-log_2(Q_i)]}\tag{9}

    特别的,DKL(PLabel  QPred)D_{KL}(P_{Label} \space | \space Q_{Pred})表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布

    交叉熵

    衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为

    H(P, Q)=H(P)+DKL(P  Q)=Pi log2(Qi)(10)\begin{align} H(P, \space Q) &= H(P) + D_{KL}(P\space || \space Q) \\ &= - \sum{P_i}\space{log_2({Q_i})} \tag{10} \end{align}

    PyTorch中的CrossEntropyLoss

    torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss.

    import torch.nn as nn

    # 使用NLLLoss实现
    nllloss = nn.NLLLoss()
    predict = torch.Tensor([[2, 3, 1], [3, 7, 9]])
    predict = torch.log(torch.softmax(predict, dim=-1))
    label = torch.tensor([1, 2])
    nllloss(predict, label)
    # output: tensor(0.2684)

    # 使用CrossEntropyLoss实现
    cross_loss = nn.CrossEntropyLoss()
    predict = torch.Tensor([[2, 3, 1], [3, 7, 9]])
    label = torch.tensor([1, 2])
    cross_loss(predict, label)
    # output: tensor(0.2684)
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" index 7ae7454d4..5b16e5163 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" @@ -4,7 +4,7 @@ NeurIPS 2017: Attention Is All You Need | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2017: Attention Is All You Need

    Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。

    整体结构

    Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。

    image-20231119110150110

    Encoder

    整体结构

    Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。

    image-20231115164324713

    位置编码(Positional Encoding)

    对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。

    公式如下所示,其中pospos指的是该词汇在整个输入句子中的位置,2i2i以及2i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}次位置编码。

    PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{1}
    PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{2}

    根据三角函数的性质,对于pos+kpos+k位置的嵌入向量的某一维度(2i2i2i+12i+1)而言,可以表示为pospos位置与kk位置的嵌入向量的2i2i2i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。

    PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)(3)\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i+1)+PE(pos,2i+1)\times PE(k,2i)\\PE(pos+k,2i+1)=PE(pos,2i+1)\times PE(k,2i+1)-PE(pos,2i)\times PE(k,2i)\end{array} \tag{3}

    最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。

    InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \tag{4}

    具体结构

    image-20231115164324713

    输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。

    Decoder

    Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。

    自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。

    非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。

    Autoregressive Decoder(AT)

    整体结构

    image-20231119102540689

    词汇表(Vocabulary)

    词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。

    Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。

    image-20231119094748152

    Begin符号

    解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。

    特殊符号

    Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。

    Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。

    End符号

    在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。

    image-20231119102220262

    image-20231119102159884

    掩码多头自注意力机制(Masked Multi-Head Self-Attention)

    为什么使用掩码多头自注意力

    掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention

    观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示

    掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。

    具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^i在计算注意力分数时,只将aia^i的query向量与a1a^1aia^{i}ii个key向量做dot product,而不考虑aia^i之后的输入的key。

    提示

    对于第ss个时间步,Masked Mutil-Head Self-Attention的输入是时间步ss之前Decoder生成的所有输出单词的嵌入表示。

    image-20231119095632569

    交叉注意力(Cross-Attention)

    交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。

    image-20231119103201335

    交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。

    在交叉注意力中,每次计算注意力得分的query来自解码器key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。

    image-20231119142212757

    Non-Autoregressive Decoder(NAT)

    image-20231119103112168

    训练(Training)

    损失函数

    在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。

    Transformer 的整体训练过程一般分为以下几个步骤:

    1. 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。
    2. 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。
    3. 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。
    4. 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。

    整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。

    需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。

    Teacher Forcing

    在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。

    因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。

    image-20231119155803489

    但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第ii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。

    Teacher Forcing与Masked Multi-Head Self-Attention

    参考文献:MultiHead-Attention和Masked-Attention的机制和原理

    与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。

    具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1词汇向量输入时,在Decoder中,voc1voc_1与自身计算注意力分数,于是有

    [o1]=[α1,1][v1](5)\begin{bmatrix}o_1\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\end{bmatrix}\tag{5}

    我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc2voc_2的情况,于是有

    [o1o2]=[α1,1α2,1α1,2α2,2][v1v2](6)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&\alpha_{2,1}^{\prime}\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{6}

    然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是

    [o1o2]=[α1,10α1,2α2,2][v1v2](7)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&0\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{7}

    继续扩展,当有nn个输入词汇时,应该有

    [o1o2on]=[α1,100α1,2α20α1,nα2,nαn,n][v1v2vn](8)\begin{bmatrix}o_1\\o_2\\\vdots\\o_n\end{bmatrix}=\begin{bmatrix}\alpha'_{1,1}&0&\cdots&0\\\alpha'_{1,2}&\alpha'_2&\cdots&0\\\vdots&\vdots&&\vdots\\\alpha'_{1,n}&\alpha'_{2,n}&\cdots&\alpha'_{n,n}\end{bmatrix}\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}\tag{8}

    因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。

    在源码中,有如下片段实现掩码:

    if mask is not None:
    scores = scores.masked_fill(mask == 0, -1e9)

    p_attn = scores.softmax(dim=-1)

    在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" index e2bfd8ea5..4b967ea41 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" @@ -4,7 +4,7 @@ 扩散模型(Diffusion Model) | 培洋的笔记本📒 - + @@ -56,7 +56,7 @@ M834 80h400000v40h-400000z">1αtϵθ(xt,t))+σtz(2)

    其中,xt\mathbf{x}_t代表上一步骤中输出的降噪后的图像,xt1\mathbf{x}_{t-1}代表当前步骤即将输出的降噪后的图像,ϵθ\epsilon_\theta代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\bar{\alpha}_1,\bar{\alpha}_2,...\bar{\alpha}_T以及α1,α2,...αT\alpha_1,\alpha_2,...\alpha_T是两组权重序列;

  • 结束本次for循环;

  • t=1t=1时,得到x0\mathbf{x}_0,即最终降噪后的图像。

  • image-20231203133323788

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" index e9b7d0418..7988dd339 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" @@ -4,7 +4,7 @@ 生成式对抗网络(GAN) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    生成式对抗网络(GAN)

    正确发音

    How to pronounce Adversarial?

    /ˌædvərˈseriəl/

    引言

    将随机分布作为输入

    生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。

    image-20231122102402231

    为什么要添加分布

    当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。

    核心思想

    GAN的工作原理:

    1. 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。
    2. 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。
    3. 判别器训练: 判别器被训练来正确分类真实数据和生成数据。
    4. 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。
    5. 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。

    训练的目标:

    • 生成器目标: 生成更逼真的数据,以欺骗判别器。
    • 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。

    GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。

    具体结构与作用

    GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。

    1. 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。
    2. 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。

    GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。

    生成器(Generator)

    • 结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。
    • 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。

    Unconditional Generation

    Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。

    对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。

    image-20231122104717264

    Conditional Generation

    判别器(Discriminator)

    • 结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。
    • 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。

    image-20231122104853941

    训练算法

    首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。

    第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。

    为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数:

    Lossreal=Expdata(x)[logD(x)](1)Loss_{real}=-E_{x\sim p_\text{data}{(x)}}[\log D(x)]\tag{1}

    其中,D(x)D(x)是判别器的输出,xx是真实样本,EE是数学期望。

    Lossfake=Ezpz(z)[log(1D(G(z)))](2)Loss_{fake}=-E_{z\sim p_z(z)}[log(1-D(G(z)))]\tag{2}

    其中,G(z)G(z)是生成器的输出,zz是随机噪声,EE是数学期望。

    将真实样本和生成样本的损失相加,形成判别器的总体损失。

    Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\tag{3}

    最小化损失函数,更新判别器的参数。

    image-20231122110917135

    第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。

    LG=Ezpz(z)[logD(G(z))](4)L_G=-E_{z\sim p_z(z)}[\log D(G(z))]\tag{4}

    其中,G(z)G(z)是生成器的输出,D(G(z))D(G(z))是生成样本输入到判别器后的输出,zz是随机噪声,EE是数学期望。

    image-20231122142205471

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" index 17be7f84b..3ddf15fe2 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" @@ -4,7 +4,7 @@ 图像生成模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成模型

    回顾文字生成的两种方法

    在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。

    自回归方法(AR)

    Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。

    什么是ARM

    ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。

    image-20231125212727371

    若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。

    非自回归方法(NAR)

    若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。

    image-20231127103421435

    目前图像生成模型的共同点

    VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。

    大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(xy)P(x|y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。

    信息

    总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。

    image-20231127104041455

    生成模型的共同结构

    Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。

    通用框架概览

    目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。

    • Text Encoder:根据输入的text prompt进行嵌入表示
    • Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况:
      1. 具有视觉意义但经过压缩比较模糊的图像
      2. 不具备视觉特征的矩阵(Latent Representation)
    • Decoder:以上述的“中间产物”作为输入,生成出高清图像

    通用框架的三个组成部分如下图所示:

    image-20231127173905238

    再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。

    其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。

    image-20231127195336960

    image-20231127195527792

    img

    根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。

    Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size.

    Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding

    image-20231127201338956

    Benchmark

    下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。

    FID(Fréchet Inception Distance)

    FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。

    在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。

    FID=μ1μ222+tr(Σ1+Σ22(Σ1Σ2)12)(1)\mathrm{FID}=\left\|\mu_1-\mu_2\right\|_2^2+\mathrm{tr}\left(\Sigma_1+\Sigma_2-2\left(\Sigma_1\Sigma_2\right)^{\frac12}\right)\tag{1}

    其中,μ1\mu_1μ2\mu_2分别是第一个和第二个高斯分布的均值向量;Σ1\Sigma_1Σ2\Sigma_2则是它们的协方差矩阵;tr()\mathrm{tr}(\cdot)表示矩阵的迹运算。

    高斯分布的均值向量从观测到的数据中计算出来的。对于一个nn-维高斯分布,其均值向量可以表示为一个长度为nn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。

    值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。

    image-20231127202031894

    CLIP Score

    CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型

    具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。

    image-20231128143336879

    通用框架解析

    Generation Model

    Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor

    中间产物是压缩图像

    当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。

    中间产物是Latent Representation

    中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation

    这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。

    Decoder

    Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料

    中间产物是压缩图像

    当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。

    image-20231128145010346

    中间产物是Latent Representation

    当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。

    具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。

    image-20231128150641374

    常见图像生成模型速览

    在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。

    变分自编码器(VAE)

    变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。

    image-20231127104842038

    提示

    VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。

    基于流的生成模型(Flow-Based Generative Model)

    基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。

    注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。

    image-20231127111749208

    生成对抗网络(GAN)

    GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。

    image-20231127113242641

    扩散模型(Diffusion Model)

    扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。

    image-20231127112447752

    DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。

    Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" index e87561e71..739010277 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" @@ -4,7 +4,7 @@ 本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究

    本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。

    依赖

    创建 Anaconda 虚拟环境

    conda create -n ipl python=3.8
    conda activate ipl

    安装依赖

    请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。

    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    pip install ftfy regex tqdm ninja
    pip install git+https://github.com/openai/CLIP.git

    下载预训练生成器

    预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。

    概述

    技术细节

    prompts 的初始化

    ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a

    source_prompts = [prompt_prefix + " " + args.source_class]
    target_prompts = [prompt_prefix + " " + args.target_class]

    源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。

    prompts 的 tokenize 与 embedding

    源域以及目标域的初始提示词接下来会进行 tokenize:

    source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device)
    # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐
    target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device)
    # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐

    tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_promptstarget_tokenized_prompts 的形状均为 (1, 77)。

    在提示词标记化之后,将进行嵌入表示 embedding:

    source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度
    target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度

    compute_text_features 的实现细节

    在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。

    训练 stage 1

    Z空间与W空间

    # Z空间到W空间的变换
    sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device)
    # (batch_size, 512)
    sample_w = net.generator_frozen.style(sample_z)
    # (batch_size, 512)

    Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。

    1. Z 空间(Latent Space Z)

      • Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。
      • 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。
    2. W 空间(Style Space W)

      • W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。

      • 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py

        '''mapping network'''
        layers = [PixelNorm()]

        for i in range(n_mlp):
        layers.append(
        EqualLinear(
        style_dim, style_dim, lr_mul=lr_mlp, activation="fused_lrelu"
        )
        )

        self.style = nn.Sequential(*layers)
    3. Z 空间与 W 空间的关系

      • 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。
      • Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。

    损失函数

    在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成:

    1. 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失;
    2. 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l
    3. 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。

    训练 stage 2

    确定目标域生成域需要更新的层

    在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。

    if self.training and self.auto_layer_iters > 0:
    self.generator_trainable.unfreeze_layers() # unfreeze
    train_layers = self.determine_opt_layers() # layer to train

    if not isinstance(train_layers, list):
    train_layers = [train_layers]

    self.generator_trainable.freeze_layers()
    self.generator_trainable.unfreeze_layers(train_layers) # unfreeze

    具体选择带更新网络层的策略:

    将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。

    之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。

    损失函数

    stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成:

    1. edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。
    2. target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。

    定量分析指标

    测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models

    参考文献:GAN 的几种评价指标

    1. Inception Score(IS)

      评估图像的质量和多样性

      质量:把生成的图片 xx 输入 Inception V3 中,得到输出 1000 维的向量 yy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(yx)p(y|x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。

      多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y) 熵很大(均匀分布)。

      因此,对于 IS 我们需要求的两个量就是 p(yx)p(y|x)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)

      p^(y)=1Ni=1Np(yx(i))\hat{p}(y)=\frac{1}{N}\sum_{i=1}^{N}p(y|\mathbf{x}^{(i)})

      Inception Score 的完整公式如下:

      IS=exp(Ex[KL(p(yx)p(y))])IS=\exp\left(\mathbb{E}_x[KL(p(y|x)||p(y))]\right)

      其中 Ex\mathbb{E}_x 表示对所有图像的期望,KL(p(yx)p(y))KL(p(y|x)||p(y)) 表示每张图像的 KL 散度,exp\exp 表示取指数。

      通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)

    2. Fréchet Inception Distance(FID)

      评估目标域的风格

      计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。

      FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58

    3. Single Image Fréchet Inception Score(SIFID)

      FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。

    4. Structural Consistency Score(SCS)

      评估图像的结构保存能力

    5. Identity Similarity(ID)

      评估图像的特征保存能力

    定量分析结果

    IS(Inception Score)↑

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney2.2962.6422.701
    FFHQPhoto→Anime Painting2.3202.4642.578
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e2.4892.7152.851
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf2.1732.4822.517
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    SFID(Single Fréchet Inception Distance)↓

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney845854
    FFHQPhoto→Anime Painting
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    新增功能

    支持自定义图像的风格迁移

    新增了对自定义图像进行风格迁移的功能。

    HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。

    使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。

    修改日志

    1. 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。
    2. 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。
    3. 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。
    4. 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。

    Web UI

    参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。

    分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能:

    1. 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像)
    2. 直接使用随机数生成源域图像并进行零样本跨域适应

    UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。

    部分效果展示图

    主页:

    image-20240426191139926

    人物画像的零样本域适应(初始状态):

    image-20240426191201479

    人物画像的零样本域适应(使用参考图像生成状态):

    image-20240425222843497

    宠物画像的零样本域适应(初始状态):

    image-20240426191227686

    宠物画像的零样本域适应(使用随机数生成状态):

    image-20240425223227958

    问题提出与改进

    改进:Mapper 结构的设计

    Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。

    改进后的 Mapper 结构:

    class TransformerMapperV2(nn.Module):
    """
    改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合
    同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突
    并在transformer encoder之后加入Pixel Norm以及全连接层
    """
    def __init__(self, opts, n_dim):
    super(TransformerMapperV2, self).__init__()
    self.opts = opts
    self.n_dim = n_dim

    layers = [] # transformer中有layer normalization,不需要进行PixelNorm

    # 自定义Transformer编码器层配置
    transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1)

    # 构建Transformer编码器
    self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2)
    layers.append(self.transformer_encoder)

    # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性
    layers.append(PixelNorm())
    self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.linear)

    # 最后一个全连接层,输出维度保持不变
    self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.final_linear)

    self.mapping = nn.Sequential(*layers).to(device)

    问题:训练阶段人工 prompts 的作用是什么?

    在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 "a photo of a",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。

    ctx_init 的作用(与域标签拼接后的 ctx_init)

    1. ctx_initcompute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。

    2. 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算;

      同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。

    templates 的作用

    templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}.

    原始 hhfq 数据集的模板共有 79 个字符串。

    ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。

    思考

    IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。

    如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。

    改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐

    对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。

    经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。

    因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。

    用于生成 prompts 的 GPT、Claude prompts

    中文提示词:

    针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。
    将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。

    英文提示词:

    For the task of converting a {source class} photo into a {target_class} photo,
    provide some text prompts describing the distinctive features of Disney character portraits.
    Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list,
    and output the entire Python list.

    对 global_clip_loss 的改进

    IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。

    对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。

    对 clip_directional_loss 的改进

    IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" index 710e4bf59..103ae5bf5 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" @@ -4,7 +4,7 @@ 生成模型中的采样技巧 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    生成模型中的采样技巧

    参考资料:Sampling for Text Generation

    引言

    生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。

    没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。

    为什么需要采样?

    生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如:

    • 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。
    • 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。
    • 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。

    长尾效应

    概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。

    在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。

    当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。

    采样技巧

    为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。

    温度(Temperature)

    温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。

    假设模型的原始概率分布为 p(xi)p(x_i),那么通过温度调整后的概率分布可以表示为:

    p(xi)=exp(log(p(xi))T)jexp(log(p(xj))T)p'(x_i) = \frac{\exp\left(\frac{\log(p(x_i))}{T}\right)}{\sum_j \exp\left(\frac{\log(p(x_j))}{T}\right)}
    • p(xi)p(x_i):表示原始模型对第 ii 个选项的预测概率。
    • TT:温度参数,一般是一个正数。

    T>1T > 1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。

    Top-k 采样

    Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。

    Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下:

    1. 获取模型输出的概率分布 P={p1,p2,,pV}P=\left\{p_1, p_2, \ldots, p_V\right\} ,其中 VV 是词汇表的大小

    2. 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_k

    3. 对于 CkC_k 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1

    4. 从归一化后的概率分布中随机采样一个候选项。

    公式化表示如下:

    Ck={wipi is among the top k probabilities in P}C_k=\left\{w_i \mid p_i \text{ is among the top k probabilities in }P\right\}
    pi=piwjCkpj for wiCkp_i^{\prime}=\frac{p_i}{\sum_{w_j \in C_k} p_j} \text { for } w_i \in C_k

    其中, pip_i^{\prime}​ 是重新归一化后的概率。

    Top-p 采样(Nucleus Sampling)

    Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。

    1. 获取模型输出的概率分布 P={p1,p2,,pV}P=\left\{p_1, p_2, \ldots, p_V\right\} ,其中 VV 是词汇表的大小
    2. 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),,(wV,pV)}\left\{\left(w_1, p_1\right),\left(w_2, p_2\right), \ldots,\left(w_V, p_V\right)\right\} ,其中 p1p2pVp_1 \geq p_2 \geq \ldots \geq p_V
    3. 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 pp,设这些候选项的集合为 CpC_p
    4. 对于 CpC_p 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1
    5. 从归一化后的概率分布中随机采样一个候选项
    Cp={wij=1ipjp}C_p=\left\{w_i \mid \sum_{j=1}^i p_j \geq p\right\}
    pi=piwjCppj for wiCpp_i^{\prime}=\frac{p_i}{\sum_{w_j \in C_p} p_j} \text { for } w_i \in C_p

    其中,pip_i^{\prime} 是重新归一化后的概率。

    结论

    采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" index b8c57cc51..237e28bc7 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" @@ -4,7 +4,7 @@ 自注意力(Self-Attention) | 培洋的笔记本📒 - + @@ -34,7 +34,7 @@ M834 80h400000v40h-400000z">,以避免过大的点积值导致 softmax 函数饱和。
  • 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。
  • 加权求和

    • 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。
  • 多头自注意力

    在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。

    示例

    假设输入的文本序列长度为 L=5L=5,每个词向量的维度为 D=512D=512dk=512d_k=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \times 512。在计算注意力权重时,得到的矩阵形状为 5×55 \times 5。最后的注意力输出形状同样为 5×5125 \times 512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。

    自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。

    自注意力中的掩码 Mask

    自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。

    • 防止注意力机制关注填充(padding)标记
    • 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中
    • 在特定任务中屏蔽某些不相关的输入
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" index f87e9f37d..3c9b3b014 100644 --- "a/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" +++ "b/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" @@ -4,7 +4,7 @@ 自监督学习(Self-Supervised Learning) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    自监督学习(Self-Supervised Learning)

    提示

    在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。

    image-20231121113727141

    介绍

    自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。

    自监督学习的基本原理是,通过对输入数据进行某种变换操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。

    image-20231121124909759

    BERT(Bidirectional Encoder Representation from Transformers)

    下面以BERT为例,介绍自监督模型。

    结构

    BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。

    BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。

    使用 BERT 的一般步骤包括:

    1. 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。
    2. 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。
    3. 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。

    Self-Supervised Pretraining

    Masking Input

    BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。

    BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。

    L=1Ni=1Nyilog(pi)(1)L=-\frac1N\sum_{i=1}^Ny_i\log(p_i)\tag{1}

    其中:

    • NN是输出的概率分布向量的维度。
    • yiy_{i}是概率分布向量标签。
    • pip_{i}是模型预测的概率分布向量。

    image-20231121134420134

    Next Sentence Prediction

    image-20231121171808764

    Fine-tuning

    在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。

    首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。

    Benchmark: GLUE

    GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。

    1. MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。
    2. QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。
    3. QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。
    4. RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。
    5. STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。
    6. CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。
    7. MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。
    8. SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。
    9. WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。

    GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。

    image-20231121172718354

    Downstream Tasks

    Sentiment Analysis

    image-20231121203549320

    BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。

    下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。

    image-20231121203701613

    立场分析

    image-20231121205359709

    Extraction-based Question Answering

    BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。

    image-20231121205619437

    具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。

    image-20231121211218801

    image-20231121210938519

    其他应用

    虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。

    Why does BERT work?

    BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding

    BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。

    ——来自讯飞星火大模型

    虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。

    在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。

    因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。

    总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。

    ——来自腾讯混元大模型

    GPT: Generative Pre-trained Transformer

    GPT的结构是Transformer的Decoder部分,可以承担生成的任务。

    GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。

    image-20231122093825510

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" index 18ea25ea1..e941cf1f3 100644 --- "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" +++ "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" @@ -4,7 +4,7 @@ Speaker Classification | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Speaker Classification

    实战练习

    Transformer实战练习,代码见Github仓库

    This is a practice of Transformer, follow the guide of Github Repo.

    image-20240113175506430

    Overview

    Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.

    Dataset

    The original dataset is VoxCeleb1.

    We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive.

    Screenshot 2024-01-13 163041

    Arguments:

    • data_dir: The path to the data directory.

    • metadata_path: The path to the metadata.

    • segment_len: The length of audio segment for training.

    The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data.

    data directory/
    ├── mapping.json
    ├── metadata.json
    ├── testdata.json
    └── uttr-{random string}.pt

    This is also the assignment solution of ML2021Spring HW4.

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" index 23512ad67..20f77a485 100644 --- "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" +++ "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" @@ -4,7 +4,7 @@ 本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究

    本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。

    依赖

    创建 Anaconda 虚拟环境

    conda create -n ipl python=3.8
    conda activate ipl

    安装依赖

    请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。

    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    pip install ftfy regex tqdm ninja
    pip install git+https://github.com/openai/CLIP.git

    下载预训练生成器

    预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。

    概述

    技术细节

    prompts 的初始化

    ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a

    source_prompts = [prompt_prefix + " " + args.source_class]
    target_prompts = [prompt_prefix + " " + args.target_class]

    源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。

    prompts 的 tokenize 与 embedding

    源域以及目标域的初始提示词接下来会进行 tokenize:

    source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device)
    # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐
    target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device)
    # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐

    tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_promptstarget_tokenized_prompts 的形状均为 (1, 77)。

    在提示词标记化之后,将进行嵌入表示 embedding:

    source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度
    target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度

    compute_text_features 的实现细节

    在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。

    训练 stage 1

    Z空间与W空间

    # Z空间到W空间的变换
    sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device)
    # (batch_size, 512)
    sample_w = net.generator_frozen.style(sample_z)
    # (batch_size, 512)

    Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。

    1. Z 空间(Latent Space Z)

      • Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。
      • 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。
    2. W 空间(Style Space W)

      • W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。

      • 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py

        '''mapping network'''
        layers = [PixelNorm()]

        for i in range(n_mlp):
        layers.append(
        EqualLinear(
        style_dim, style_dim, lr_mul=lr_mlp, activation="fused_lrelu"
        )
        )

        self.style = nn.Sequential(*layers)
    3. Z 空间与 W 空间的关系

      • 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。
      • Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。

    损失函数

    在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成:

    1. 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失;
    2. 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l
    3. 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。

    训练 stage 2

    确定目标域生成域需要更新的层

    在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。

    if self.training and self.auto_layer_iters > 0:
    self.generator_trainable.unfreeze_layers() # unfreeze
    train_layers = self.determine_opt_layers() # layer to train

    if not isinstance(train_layers, list):
    train_layers = [train_layers]

    self.generator_trainable.freeze_layers()
    self.generator_trainable.unfreeze_layers(train_layers) # unfreeze

    具体选择带更新网络层的策略:

    将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。

    之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。

    损失函数

    stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成:

    1. edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。
    2. target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。

    定量分析指标

    测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models

    参考文献:GAN 的几种评价指标

    1. Inception Score(IS)

      评估图像的质量和多样性

      质量:把生成的图片 xx 输入 Inception V3 中,得到输出 1000 维的向量 yy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(yx)p(y|x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。

      多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y) 熵很大(均匀分布)。

      因此,对于 IS 我们需要求的两个量就是 p(yx)p(y|x)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)

      p^(y)=1Ni=1Np(yx(i))\hat{p}(y)=\frac{1}{N}\sum_{i=1}^{N}p(y|\mathbf{x}^{(i)})

      Inception Score 的完整公式如下:

      IS=exp(Ex[KL(p(yx)p(y))])IS=\exp\left(\mathbb{E}_x[KL(p(y|x)||p(y))]\right)

      其中 Ex\mathbb{E}_x 表示对所有图像的期望,KL(p(yx)p(y))KL(p(y|x)||p(y)) 表示每张图像的 KL 散度,exp\exp 表示取指数。

      通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)

    2. Fréchet Inception Distance(FID)

      评估目标域的风格

      计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。

      FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58

    3. Single Image Fréchet Inception Score(SIFID)

      FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。

    4. Structural Consistency Score(SCS)

      评估图像的结构保存能力

    5. Identity Similarity(ID)

      评估图像的特征保存能力

    定量分析结果

    IS(Inception Score)↑

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney2.2962.6422.701
    FFHQPhoto→Anime Painting2.3202.4642.578
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e2.4892.7152.851
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf2.1732.4822.517
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    SFID(Single Fréchet Inception Distance)↓

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney845854
    FFHQPhoto→Anime Painting
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    新增功能

    支持自定义图像的风格迁移

    新增了对自定义图像进行风格迁移的功能。

    HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。

    使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。

    修改日志

    1. 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。
    2. 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。
    3. 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。
    4. 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。

    Web UI

    参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。

    分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能:

    1. 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像)
    2. 直接使用随机数生成源域图像并进行零样本跨域适应

    UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。

    部分效果展示图

    主页:

    image-20240426191139926

    人物画像的零样本域适应(初始状态):

    image-20240426191201479

    人物画像的零样本域适应(使用参考图像生成状态):

    image-20240425222843497

    宠物画像的零样本域适应(初始状态):

    image-20240426191227686

    宠物画像的零样本域适应(使用随机数生成状态):

    image-20240425223227958

    问题提出与改进

    改进:Mapper 结构的设计

    Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。

    改进后的 Mapper 结构:

    class TransformerMapperV2(nn.Module):
    """
    改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合
    同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突
    并在transformer encoder之后加入Pixel Norm以及全连接层
    """
    def __init__(self, opts, n_dim):
    super(TransformerMapperV2, self).__init__()
    self.opts = opts
    self.n_dim = n_dim

    layers = [] # transformer中有layer normalization,不需要进行PixelNorm

    # 自定义Transformer编码器层配置
    transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1)

    # 构建Transformer编码器
    self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2)
    layers.append(self.transformer_encoder)

    # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性
    layers.append(PixelNorm())
    self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.linear)

    # 最后一个全连接层,输出维度保持不变
    self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.final_linear)

    self.mapping = nn.Sequential(*layers).to(device)

    问题:训练阶段人工 prompts 的作用是什么?

    在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 "a photo of a",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。

    ctx_init 的作用(与域标签拼接后的 ctx_init)

    1. ctx_initcompute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。

    2. 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算;

      同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。

    templates 的作用

    templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}.

    原始 hhfq 数据集的模板共有 79 个字符串。

    ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。

    思考

    IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。

    如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。

    改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐

    对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。

    经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。

    因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。

    用于生成 prompts 的 GPT、Claude prompts

    中文提示词:

    针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。
    将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。

    英文提示词:

    For the task of converting a {source class} photo into a {target_class} photo,
    provide some text prompts describing the distinctive features of Disney character portraits.
    Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list,
    and output the entire Python list.

    对 global_clip_loss 的改进

    IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。

    对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。

    对 clip_directional_loss 的改进

    IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" index c314ee7d9..72c2682d1 100644 --- "a/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" +++ "b/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" @@ -4,7 +4,7 @@ Visdom可视化 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Visdom可视化

    提示

    对于TensorFlow框架,可以使用TensorBoard实现可视化。

    对于PyTorch框架,可以使用Visdom或TensorBoardX实现可视化,本篇主要讲述Visdom。

    安装Visdom

    pip install visdom

    Visdom的使用

    Visdom的启动

    首先要通过终端启动Visdom,使用本机端口运行服务器。

    以下二者均可。

    visdom
    python -m visdom.server

    单窗口单曲线的可视化

    from visdom import Visdom

    vis = Visdom() # 实例化
    # 创建一条曲线,前两个参数分别为y轴数据、x轴数据,win参数是窗口的唯一标识,opt可选字典中可以给出窗口的title和legend
    vis.line([0.], [0.], win='win_id', opts=dict(title="win_title"))

    # 在训练过程中的合适位置向初始化的曲线中喂数据
    # viz.line([real_y_data], [global_step], win='win_id', update='append')
    # 查看训练loss
    vis.line([loss.item()], [epoch], win='win_id', update='append')
    # 对于非image数据,在传入visdom时仍需要先转化为numpy类型

    单窗口多曲线的可视化

    from visdom import Visdom

    vis = Visdom()
    vis.line([[0., 0.]], [0.], win='win_id', opts=dic(title="win_title", legend=["curve_name_1", "curve_name_2"]))

    # 在训练过程中的合适位置向初始化的曲线中喂数据
    viz.line([[y1, y2]], [global_step], win='win_id', update='append')
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" "b/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" index ae2ec86f5..b36d58cd4 100644 --- "a/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" +++ "b/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" @@ -4,7 +4,7 @@ 20240705 @ 图像生成与视频生成基座模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    20240705 @ 图像生成与视频生成基座模型

    还得梳理清楚文生图模型这块的脉络,建立自己的知识结构和时间线,把 related work 里提到的工作也加到时间线里,尽量做到拿到一篇新的 paper 就可以做到能插入到自己的知识结构里,知道这篇工作是对以前的哪个点进行的改进,是递进还是平行。

    一个月完成知识储备和体系搭建,之后开始 trace 最新进展,想 idea 做实验。

    组会记录

    后期工作

    import torch

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" index caf1b6ecb..56efae15d 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" @@ -4,7 +4,7 @@ NeurIPS 2017: Attention Is All You Need | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2017: Attention Is All You Need

    Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。

    整体结构

    Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。

    image-20231119110150110

    Encoder

    整体结构

    Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。

    image-20231115164324713

    位置编码(Positional Encoding)

    对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。

    公式如下所示,其中pospos指的是该词汇在整个输入句子中的位置,2i2i以及2i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}次位置编码。

    PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{1}
    PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{2}

    根据三角函数的性质,对于pos+kpos+k位置的嵌入向量的某一维度(2i2i2i+12i+1)而言,可以表示为pospos位置与kk位置的嵌入向量的2i2i2i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。

    PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)(3)\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i+1)+PE(pos,2i+1)\times PE(k,2i)\\PE(pos+k,2i+1)=PE(pos,2i+1)\times PE(k,2i+1)-PE(pos,2i)\times PE(k,2i)\end{array} \tag{3}

    最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。

    InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \tag{4}

    具体结构

    image-20231115164324713

    输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。

    Decoder

    Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。

    自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。

    非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。

    Autoregressive Decoder(AT)

    整体结构

    image-20231119102540689

    词汇表(Vocabulary)

    词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。

    Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。

    image-20231119094748152

    Begin符号

    解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。

    特殊符号

    Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。

    Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。

    End符号

    在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。

    image-20231119102220262

    image-20231119102159884

    掩码多头自注意力机制(Masked Multi-Head Self-Attention)

    为什么使用掩码多头自注意力

    掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention

    观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示

    掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。

    具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^i在计算注意力分数时,只将aia^i的query向量与a1a^1aia^{i}ii个key向量做dot product,而不考虑aia^i之后的输入的key。

    提示

    对于第ss个时间步,Masked Mutil-Head Self-Attention的输入是时间步ss之前Decoder生成的所有输出单词的嵌入表示。

    image-20231119095632569

    交叉注意力(Cross-Attention)

    交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。

    image-20231119103201335

    交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。

    在交叉注意力中,每次计算注意力得分的query来自解码器key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。

    image-20231119142212757

    Non-Autoregressive Decoder(NAT)

    image-20231119103112168

    训练(Training)

    损失函数

    在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。

    Transformer 的整体训练过程一般分为以下几个步骤:

    1. 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。
    2. 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。
    3. 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。
    4. 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。

    整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。

    需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。

    Teacher Forcing

    在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。

    因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。

    image-20231119155803489

    但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第ii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。

    Teacher Forcing与Masked Multi-Head Self-Attention

    参考文献:MultiHead-Attention和Masked-Attention的机制和原理

    与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。

    具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1词汇向量输入时,在Decoder中,voc1voc_1与自身计算注意力分数,于是有

    [o1]=[α1,1][v1](5)\begin{bmatrix}o_1\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\end{bmatrix}\tag{5}

    我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc2voc_2的情况,于是有

    [o1o2]=[α1,1α2,1α1,2α2,2][v1v2](6)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&\alpha_{2,1}^{\prime}\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{6}

    然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是

    [o1o2]=[α1,10α1,2α2,2][v1v2](7)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&0\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{7}

    继续扩展,当有nn个输入词汇时,应该有

    [o1o2on]=[α1,100α1,2α20α1,nα2,nαn,n][v1v2vn](8)\begin{bmatrix}o_1\\o_2\\\vdots\\o_n\end{bmatrix}=\begin{bmatrix}\alpha'_{1,1}&0&\cdots&0\\\alpha'_{1,2}&\alpha'_2&\cdots&0\\\vdots&\vdots&&\vdots\\\alpha'_{1,n}&\alpha'_{2,n}&\cdots&\alpha'_{n,n}\end{bmatrix}\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}\tag{8}

    因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。

    在源码中,有如下片段实现掩码:

    if mask is not None:
    scores = scores.masked_fill(mask == 0, -1e9)

    p_attn = scores.softmax(dim=-1)

    在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" index 641fb7946..9e74c3f8a 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" @@ -4,7 +4,7 @@ Autoregressive Image Generation without Vector Quantization | 培洋的笔记本📒 - + @@ -56,7 +56,7 @@ M834 80h400000v40h-400000z">1αtϵθ(xtt,z))+σtδ

    这里 δ\delta 是从高斯分布 N(0,I)\mathcal{N}(0, I) 中采样的, σt\sigma_t 是时间步 tt 的噪声水平。以 xTN(0,I)x_T \sim \mathcal{N}(0, I) 开始,此过程生成一个样本 x0x_0 使得 x0p(xz)x_0 \sim p(x \mid z)​。

    双向注意力机制

    image-20240726151056117

    结合掩码生成模型的思想 MAR

    本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。

    掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。

    image-20240726151148969

    实验与结论

    对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测

    image-20240726152158539

    扩散过程 MLP 参数对性能的影响

    image-20240726152344064

    扩散过程采样步数对性能的影响

    image-20240726152515002

    温度对多样性和准确性的控制

    image-20240726152948583

    MAR 模型速度与效果的 trade-off

    对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。

    image-20240726152549655

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" index 2859747e2..b86b206b8 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" @@ -4,7 +4,7 @@ Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">xg

    其中,xx 是输入向量,nn 是向量维度,gg​ 是可缩放的参数。

    RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。

  • 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。

    组成部分:

    • GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。
    • Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。
    SwiGLU(x)=σ(xW1+b1)(xW2+b2)\mathrm{SwiGLU}(x)=\sigma(xW_1+b_1)\odot(xW_2+b_2)

    其中,xx 是输入向量,W1,W2W_{1}, W_{2} 是权重矩阵,b1,b2b_1, b_2 是偏置向量,σ\sigma 是激活函数,通常为 GELU(高斯误差线性单元),\odot 表示逐元素乘法。

    SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。

  • 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。

    RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。

    RoPE(xi)=xicos(θi)+xi+1sin(θi)\operatorname{RoPE}\left(x_i\right)=x_i \cdot \cos \left(\theta_i\right)+x_{i+1} \cdot \sin \left(\theta_i\right)
    • xix_i 是输入向量的第 ii 个元素。
    • θi\theta_i 是位置 ii 处的旋转角度,通常由固定的正弦和余弦函数生成。

    RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。

  • 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN

    AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。

    AdaLN(x)=xμ(x)σ(x)γ+β\operatorname{AdaLN}(x)=\frac{x-\mu(x)}{\sigma(x)} \cdot \gamma+\beta
    • xx 是输入向量。
    • μ(x)\mu(x)σ(x)\sigma(x) 分别是输入 xx 的均值和标准差。
    • γ\gammaβ\beta 是可训练的缩放和平移参数。

    在 AdaLN 中,均值 μ(x)\mu(x) 和标准差 σ(x)\sigma(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。

  • LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。

    • 训练阶段:

      在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。

    • 推理阶段:

      对于每个 token,其 logit g\ell_g 是通过以下方式形成的:

      g=u+s(cu)\ell_g = \ell_u + s(\ell_c - \ell_u)

      其中:

      • c\ell_c 表示条件logit,即基于输入文本提示的信息生成的logit。
      • u\ell_u 表示无条件logit,即不考虑任何条件信息时生成的logit。
      • ss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。

    通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。

    作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。

  • - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" index 43766bcde..e39aff23d 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" @@ -4,7 +4,7 @@ NeurIPS 2020: Denoising Diffusion Probabilistic Models | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2020: Denoising Diffusion Probabilistic Models

    数学原理(Mathematical Preliminary)

    先验概率与后验概率

    条件概率的定义

    条件概率是指在给定另一个事件发生的条件下,某一事件发生的概率。条件概率通常用符号P(AB)P(A\mid B)表示,读作“在 B 发生的条件下 A 发生的概率”。

    条件概率的计算公式为:

    P(AB)=P(A,B)P(B)P(A\mid B)=\frac{P(A,B)}{P(B)}

    其中:

    • P(A,B)P(A,B)是事件AABB同时发生的概率,也叫联合概率
    • P(B)P(B)是事件BB独立发生的概率

    全概率公式

    对于事件AA而言,假设有一组互斥且穷尽的条件事件B1,B2,BnB_{1},B_{2},\ldots B_{n}构成一个完备事件组,则事件AA的概率等于事件AA在每个条件事件BiB_i下发生的概率与该条件事件发生概率的乘积和。

    P(A)=i=1nP(ABi)P(Bi)P(A)=\sum_{i=1}^nP(A\mid B_i)\cdot P(B_i)

    可以看出,全概率公式是由“因”(条件事件BiB_i)推“果”(结果事件AA)的过程,即当知道某结果事件的原因后,推断由该原因导致这件事发生的概率是多少。

    贝叶斯公式

    贝叶斯公式在观测到结果事件AA发生后,计算其条件事件BiB_i在事件AA已经发生的条件下而发生的后验概率。

    继续沿用上述全概率公式的符号定义,则有:

    P(BiA)=P(ABi)P(Bi)P(A)P(B_i\mid A)=\frac{P(A\mid B_i)\cdot P(B_i)}{P(A)}

    其中:

    • P(Bi)P(B_i)以及P(A)P(A)称为先验概率
    • P(BiA)P(B_i\mid A)称为后验概率
    • P(ABi)P(A\mid B_i)称为似然

    条件概率与高斯分布的KL散度

    条件概率的一般形式

    P(A,B,C)=P(CA,B)P(A,B)=P(CA,B)P(BA)P(A)P(A,B,C)=P(C\mid A,B)\cdot P(A,B)=P(C\mid A,B)\cdot P(B\mid A)\cdot P(A)
    P(B,CA)=P(BA)P(CA,B)P(B,C\mid A)=P(B\mid A)\cdot P(C\mid A,B)

    其中,第二行公式的推导如下:

    P(B,CA)=P(A,B,C)P(A)=P(A,B,C)P(A,B,C)P(CA,B)P(BA)=P(BA)P(CA,B)\begin{align*} P(B,C \mid A) &= \frac{P(A,B,C)}{P(A)} \\ &= \frac{P(A,B,C)}{\frac{P(A,B,C)}{P(C \mid A,B) \cdot P(B \mid A)}} \\ &= P(B \mid A) \cdot P(C \mid A,B) \end{align*}

    高斯分布的KL散度

    对于两个单一变量的高斯分布pN(μ1,σ12)p\sim \mathcal{N}(\mu_1,\sigma_1^2)qN(μ2,σ22)q\sim \mathcal{N}(\mu_2,\sigma_2^2)而言,它们的KL散度定义为:

    DKL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212D_{KL}(p,q)=\log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac12

    马尔科夫链条件概率形式

    马尔科夫链指当前状态的概率只与上一时刻有关,例如若满足马尔科夫关系ABCA\to B\to C,则有:

    P(A,B,C)=P(CA,B)P(A,B)=P(CB)P(BA)P(A)P(A,B,C) =P(C\mid A,B)\cdot P(A,B)=P(C\mid B)\cdot P(B\mid A)\cdot P(A)
    P(B,CA)=P(BA)P(CB)P(B,C\mid A)=P(B\mid A)\cdot P(C\mid B)

    参数重整化技巧

    从任意高斯分布N(μ,σ2)\mathcal{N}(\mu,\sigma^2)采样xx时,可以先从标准高斯分布N(0,1)\mathcal{N}(0,1)中sample出zz,再令

    x=σz+μx=\sigma * z + \mu

    优势:

    1. 由于线性变化,采样过程中对其他参数都有明确的导数,可以进行反向传播
    2. 可以通过线性变换控制参数化的采样
    3. 标准正态分布具有易采样的性质
    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" index 6dbee0b36..b30c2c105 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" @@ -4,7 +4,7 @@ CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" index 84baded07..22e527be4 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" @@ -4,7 +4,7 @@ Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction

    摘要

    We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.

    研究背景与动机

    通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。

    • 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证
    • 性能有待提升
    image-20240711163258584

    上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。

    问题发现与提出

    首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程:

    1. 输入 raw image,Encoder 得到对应的 feature map。

      f=E(im)f=\mathcal{E}(im)
    2. 输入feature map,Quantizer 得到对应的量化 image token。

      q=Q(f)q=\mathcal{Q}(f)

      在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZ 中的 code。

      q(i,j)=(argminv[V]lookup(Z,v)f(i,j)2)[V]q^{(i,j)}=\left(\arg\min_{v\in[V]}\|\text{lookup}(Z,v)-f^{(i,j)}\|_2\right)\in[V]
    3. Decoder 通过接收在 Codebook 中查找得到的 f^\hat{f} 生成重构的图像。

      f^=lookup(Z,q)\hat{f}=\operatorname{lookup}(Z,q)
      im^=D(f^)\hat{im}=\mathcal{D}(\hat{f})
      L=imim^2+ff^2+λPLP(im^)+λGLG(im^)\mathcal{L}=\|im-i\hat{m}\|_2+\|f-\hat{f}\|_2+\lambda_\text{P}\mathcal{L}_\text{P}(i\hat{m})+\lambda_\text{G}\mathcal{L}_\text{G}(i\hat{m})

    下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。

    image-20240711171834053

    文章发现了目前传统 VAR 模型存在的三个问题。

    1. VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_t 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt1)(x_1, x_2, ..., x_{t-1}),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。

      作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。

      image-20240711171636359

      作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。

      This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention.

    2. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。

    3. 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,,xn×n)x=(x_1,x_2,\ldots,x_{n\times n}) 的 token 序列,需要 O(n2)\mathcal{O}(n^{2}) 的注意力步骤以及 O(n6)\mathcal{O}(n^{6}) 的计算复杂度。

    主要方法与贡献

    主要方法

    本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction

    image-20240711174347249

    自回归过程从分辨率为 1×11\times1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。

    通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 fRh×w×Cf \in \mathbb{R}^{h \times w \times C} 量化为 KK 个多尺度标记图 (r1,r2,,rK)(r_1, r_2, \ldots, r_K),每个图的分辨率 hk×wkh_k \times w_k 逐步增加,最终达到 rKr_K 与原始特征图的分辨率 h×wh \times w 匹配。自回归似然性公式为:

    p(r1,r2,,rK)=k=1Kp(rkr1,r2,,rk1)p(r_1, r_2, \ldots, r_K) = \prod_{k=1}^{K} p(r_k \mid r_1, r_2, \ldots, r_{k-1})

    其中每个自回归单元 rk[V]hk×wkr_k \in [V]^{h_k \times w_k} 是包含 hk×wkh_k \times w_k 个标记的第 kk 个尺度的标记图,而序列 (r1,r2,,rk1)(r_1, r_2, \ldots, r_{k-1}) 作为 rkr_k 的“前缀”。在第 kk 个自回归步骤中,所有 rkr_k 中的 h_k \times w_k 标记的分布将并行生成,并以 rkr_k 的前缀和关联的第 kk 个位置嵌入图为条件。如下图所示。

    请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_k 只能关注其前缀 rkr_{\leq k},从而满足 Autoregressive 模型的数学假设前提。

    image-20240711180036964

    本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。

    模型主要结构

    Multi-scale VQ quantizer

    首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。

    image-20240711182022796

    VAR Transformer

    作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。

    image-20240712091839372

    在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_k 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。

    单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KK

    总结

    本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。

    对文章开篇提出的问题的解决:

    1. 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。
    2. 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。
    3. 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\mathcal{O}(n^2) 次解码迭代和 O(n6)\mathcal{O}(n^6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\mathcal{O}(log(n)) 次迭代和 O(n4)\mathcal{O}(n^4)​ 次总计算量。

    文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力

    - + \ No newline at end of file diff --git "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" index b6b3b464c..e82524ec0 100644 --- "a/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" +++ "b/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" @@ -4,7 +4,7 @@ CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning

    相关链接

    摘要

    本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征适应目标域的prompt,从而指导目标域生成器的训练。

    This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility.

    训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。

    相关工作

    Generative Model Adaption

    Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。

    few-shot

    对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。

    然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。

    相关文献方法
    • 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019.
    • 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020.
    • 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021.
    • 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021.

    zero-shot

    对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。

    此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。

    然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。

    image-20231221214755712

    Prompt Learning

    Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。

    然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。

    Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。

    主要方法

    概述

    IPL方法分两个阶段。

    第一阶段:训练Latent Mapper

    第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。

    第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。

    第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。

    prompt产生策略

    第二阶段:将Latent Mapper插入目标域生成器的训练过程

    第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。

    image-20231221231045323

    Image-specific Prompt Learning

    - + \ No newline at end of file diff --git "a/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" "b/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" index 78bf33f6f..73f2bed73 100644 --- "a/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" +++ "b/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" @@ -4,7 +4,7 @@ 终端代理 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    终端代理

    通过编写脚本函数的方式,手动开启代理

    一、编写脚本

    新建脚本文件terminal_proxy.sh

    # 开启代理
    function proxy_on(){
    export ALL_PROXY=socks5://127.0.0.1:7890
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=https://127.0.0.1:7890
    echo -e "已开启代理"
    }

    # 关闭代理
    function proxy_off(){
    unset ALL_PROXY
    unset http_proxy
    unset https_proxy
    echo -e "已关闭代理"
    }

    二、关联终端配置文件

    fish的配置文件:~/.config/fish/config.fish

    zsh的配置文件:~/.zshrc

    bash的配置文件:~/.bashrc

    在配置文件末尾添加以下代码

    source /path/terminal_proxy.sh

    三、使用

    在终端中输入以下命令即可开启代理

    proxy_on

    在终端中输入以下命令即可关闭代理

    proxy_off
    - + \ No newline at end of file diff --git "a/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" "b/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" index 480442a8d..08b48073c 100644 --- "a/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" +++ "b/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" @@ -4,7 +4,7 @@ 如何让你的Kde Plasma看起来更像macOS | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    如何让你的Kde Plasma看起来更像macOS

    一、latte-dock

    1. dock显示的图标是全局图标,程序启动器的desktop文件位于/usr/share/applications中,全局主题中图标主题的程序logo位于~/.local/share/icons/Mkos-Big-Sur-Night/128x128/apps(deppending on specific situation)中。在logo文件夹中挑选想要的logo,在desktop中的icon位置修改即可
    2. 应用更新的时候会同时更新.desktop文件,因此在更换图标是最好直接更换在主题文件中替换icon,而不是更改desktop的icon路径
    3. Finder小组件中application title文字不能垂直居中,可以更换为Window title插件

    二、Kde Plasmoids

    Finder栏中Plasmoids左半部分从左至右依次为:

    • kpple menu
    • application title/window titile(if the text of application title can't be centered vertically)
    • global menu

    右半部分从左至右依次为:

    • resources monitor (fork)
    • mcOS BS Inline Battery
    • 网络
    • Control Center(replace the icon with search icon)
    • Control Center(replace the icom with menu icon)
    • Better Inline Clock

    安装方法:

    plasmpkg2 -u xxx.plasmoid
    - + \ No newline at end of file diff --git "a/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" "b/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" index f651ab764..2ed87eecd 100644 --- "a/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" +++ "b/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" @@ -4,7 +4,7 @@ 挂载Windows磁盘为只读文件 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    挂载Windows磁盘为只读文件

    一、发生原因

    未知,可能是由Windows休眠模式导致

    二、解决方案

    使用ntfsfix修复ntfs磁盘

    1. 安装ntfsfix

      yay -S ntfsfix
    2. 查看问题分区

      df -h
    3. 修复

      sudo ntfsfix /dev/your_partition
    4. 重启

      reboot
    - + \ No newline at end of file diff --git a/docs/Others/intro/index.html b/docs/Others/intro/index.html index 67ecce53f..b1e673be1 100644 --- a/docs/Others/intro/index.html +++ b/docs/Others/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    提示

    欢迎来到笔记本的其他部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git a/docs/Tui-Mian/Summary/index.html b/docs/Tui-Mian/Summary/index.html index 18872a88b..6e9216c27 100644 --- a/docs/Tui-Mian/Summary/index.html +++ b/docs/Tui-Mian/Summary/index.html @@ -4,7 +4,7 @@ 经验贴:2023年双非计算机保研经历 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    经验贴:2023年双非计算机保研经历

    前言

    自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。

    希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。

    文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。

    扫盲

    常见名词含义解释
    928/929每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。
    没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。
    优营优营就是夏令营的优秀营员。
    不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。
    wl/waiting listwl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。

    个人情况

    • 本科学校:理工类普通一本(四非)
    • 专业:计算机科学与技术CS
    • rank:前1%(非rank 1 or 2的top选手)
    • 英语:四级594 & 六级586
    • 竞赛:非ACMer,一个CV类比赛国一,其他都是不上台面的奖项了
    • 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金
    • 科研及论文:无正经科研经历,EI水会一篇

    从某种程度上来说,本科出身和rank基本上决定了上限。

    前期准备

    夏令营

    预推免

    后序

    - + \ No newline at end of file diff --git a/docs/Tui-Mian/intro/index.html b/docs/Tui-Mian/intro/index.html index 6029fc4da..6e725f913 100644 --- a/docs/Tui-Mian/intro/index.html +++ b/docs/Tui-Mian/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    提示

    欢迎来到笔记本的推免复习部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git "a/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" "b/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" index 4b5a1e461..85ea9a35c 100644 --- "a/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" +++ "b/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" @@ -4,7 +4,7 @@ 概率论 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    概率论

    面试常考问题

    1. 简述大数定理。

      大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。

    2. 简述中心极限定理。

      当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。

    3. 什么是全概率公式。

      对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。

    4. 什么是最大似然估计。

      基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。

      大致过程:

      1. 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率
      2. 取似然函数的对数,方便计算与优化
      3. 最大化似然函数,求解参数的最优值
    5. 简述贝叶斯定理。

      贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。

      P(AB)=P(BA)P(A)P(B)P(A|B) = \frac{P(B|A) * P(A)}{P(B)}

      其中:

      • P(AB)P(A|B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率
      • P(BA)P(B|A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然;
      • P(A)P(A)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。

      优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。

    6. P问题、NP问题以及NP完全问题

      提示

      P stands for Polynomial

      意为多项式

      P问题是可以在多项式时间内解决的问题

      NP问题是可以在多项式时间内验证解的正确性的问题

      NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题

    - + \ No newline at end of file diff --git "a/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" "b/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" index 8cc207780..f57cb4c2f 100644 --- "a/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" +++ "b/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" @@ -4,7 +4,7 @@ 线性代数 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    线性代数

    一、基础知识

    image-20230626214118462

    image-20230626214142283

    线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。

    矩阵转置:将矩阵的行和列互相交换

    矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A1A^{-1}

    二、面试常考问题

    1. 线性代数中的初等行变换。

      1. 交换两行
      2. 用非零常数乘以某一行
      3. 用一行的倍数加到另一行上
    2. 如何理解矩阵的秩。

      矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。

      提示

      宋浩八字:非零子式的最高阶数

      任意矩阵的行秩都等于列秩。

    3. 矩阵的秩与线性方程组解的关系。

      对于n元线性方程组而言:

      1. 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解

      2. 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解

      3. 当系数矩阵的秩不等于增广矩阵的秩时,无解

        提示

        当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息

    4. 简述向量组线性无关的含义。

      含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。

      意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。

      判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。

    5. 解释正定矩阵以及半正定矩阵。

    6. 简述特征值的含义。

      特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。

    7. 简述矩阵分解的物理意义。

      矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。

      矩阵分解的种类以及物理意义:

      • LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。
      • QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。
      • 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。
      • 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。
    - + \ No newline at end of file diff --git "a/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" "b/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" index 4e62c558a..d8843d6c9 100644 --- "a/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" +++ "b/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" @@ -4,7 +4,7 @@ 大数除法 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    大数除法

    提示

    大数除法是指被除数大小超出long long范围,而导致必须使用字符串存储的除法,属于简单模拟的范畴

    思路

    通过模拟列竖式手动计算除法,实现使用字符串存储被除数的大数除法

    参考代码

    string division(string s, int divisor) {
    /*
    * 通过模拟列竖式手算除法完成字符串存储的大数除法
    */
    string quotient; // 商
    int idx = 0; // 当前处理的数字在原始字符串中的位置
    int remainder = 0; // 余数
    int temp = 0;
    while (idx < s.size()) { // 一直循环处理到索引等于长度
    temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp
    if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数
    quotient.push_back(temp / divisor + '0');
    remainder = temp % divisor;
    } else { // 除不动时分两种情况
    if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环
    quotient.push_back('0');
    }
    remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空
    }
    idx++; // 更新索引位置
    }
    if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串
    quotient.assign("0");
    }
    return quotient; // 返回商字符串
    }

    扩展

    将大数除法与进制转换相结合。

    完整代码如下:

    #include <bits/stdc++.h>

    using namespace std;

    string division(string s, int divisor) {
    /*
    * 通过模拟列竖式手算除法完成字符串存储的大数除法
    */
    string quotient; // 商
    int idx = 0; // 当前处理的数字在原始字符串中的位置
    int remainder = 0; // 余数
    int temp = 0;
    while (idx < s.size()) { // 一直循环处理到索引等于长度
    temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp
    if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数
    quotient.push_back(temp / divisor + '0');
    remainder = temp % divisor;
    } else { // 除不动时分两种情况
    if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环
    quotient.push_back('0');
    }
    remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空
    }
    idx++; // 更新索引位置
    }
    if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串
    quotient.assign("0");
    }
    return quotient; // 返回商字符串
    }

    int main() {
    string s;
    while (cin >> s) {
    vector<int> vec;
    int len = s.size();
    while (s != "0") {
    int remainder = (s[len - 1] - '0') % 2;
    vec.push_back(remainder);
    s = division(s, 2);
    len = s.size();
    }
    if (vec.empty()) {
    cout << "0";
    } else {
    for (auto it = vec.rbegin(); it != vec.rend(); it++) {
    cout << *it;
    }
    }
    cout << endl;
    }
    return 0;
    }
    - + \ No newline at end of file diff --git "a/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" "b/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" index d4e90a4bf..f5a91ed4c 100644 --- "a/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" +++ "b/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" @@ -4,7 +4,7 @@ 简历面试准备 | 培洋的笔记本📒 - + @@ -18,7 +18,7 @@ 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂

    (三)YOLOv5

    1. 特征融合

    YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征

    主干通过卷积和池化提取特征,形成不同尺寸的特征图

    分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征

    主干特征图通过卷积对通道数降维之后与分支在通道维度上concat

    提示

    在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合

    2. 前处理

    对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度

    3. 特征金字塔FCN

    三、CBAM

    提示

    CBAM是通道+空间注意力机制(SENet是通道注意力机制)

    (一)总体结构

    image-20230710234929290

    通道注意力:原始特征图[b,c,h,w][b, c, h, w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘

    空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘

    (二)通道注意力

    image-20230710235658595

    原始特征图[b,c,h,w][b, c, h, w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图

    (三)空间注意力

    image-20230710235603737

    原始特征图[b,c,h,w][b, c, h, w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w]的tensor,再将二者concat后通过7×77 \times 7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图

    (四)其他注意事项

    1. 作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \times 7卷积与3×33 \times 3卷积的消融实验发现,7×77 \times 7卷积效果更好)
    2. 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好

    四、Focal Loss

    Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。

    image-20230618135151404

    YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失

    五、SENet

    image-20230711091505462

    Squeeze and Excitation

    Squeeze挤压操作就是将[b,c,h,w][b, c, h, w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构

    Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数

    六、自注意力机制

    自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。

    • 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量键(Key)向量值(Value)向量
    • 通过点积和缩放点积计算相似程度

    通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。

    七、自我介绍

    (一)英文自我介绍

    This content has been encrypted.

    (二)西电广研院自我介绍

    1. 英文自我介绍

    This content has been encrypted.

    2. 中文自我介绍

    This content has been encrypted.

    (三)电子科技大学自我介绍

    1. 英文自我介绍

    This content has been encrypted.

    2. 中文自我介绍

    This content has been encrypted.

    - + \ No newline at end of file diff --git "a/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" "b/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" index 7e8f97506..4c853b406 100644 --- "a/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" +++ "b/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" @@ -4,7 +4,7 @@ 数据结构 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    数据结构

    1. 树的性质:

      • 一棵 N 个结点的树有 N-1 条边
      • 树的总度数+1=树的结点数
      • 树的度=树中度最大结点的度数
    2. 二叉树的性质:

      • 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1

    3. 树转化为二叉树:

      参考资料:知乎

      1. 加线。在所有的兄弟结点之间加一条线。
      2. 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。
      3. 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子
    4. 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。

    5. 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。

    1. 图的表示:

      • 邻接矩阵

      • 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性

        邻接表的搜索

    2. 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。

      • Kruskal算法

      • Prim算法

    3. 最短路径

    - + \ No newline at end of file diff --git a/en/404.html b/en/404.html index 233e7310a..e4a53159d 100644 --- a/en/404.html +++ b/en/404.html @@ -4,7 +4,7 @@ Page Not Found | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Page Not Found

    We could not find what you were looking for.

    Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

    - + \ No newline at end of file diff --git a/img/Musk_1.jpg b/en/assets/images/intro-af0832b093767267dd137c4cc177c952.png similarity index 100% rename from img/Musk_1.jpg rename to en/assets/images/intro-af0832b093767267dd137c4cc177c952.png diff --git a/en/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png b/en/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png deleted file mode 100644 index 0c90cad0f..000000000 Binary files a/en/assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png and /dev/null differ diff --git a/en/assets/js/1331f6cd.a55aadc1.js b/en/assets/js/1331f6cd.350dbb10.js similarity index 98% rename from en/assets/js/1331f6cd.a55aadc1.js rename to en/assets/js/1331f6cd.350dbb10.js index 5863fa51a..a8265dd37 100644 --- a/en/assets/js/1331f6cd.a55aadc1.js +++ b/en/assets/js/1331f6cd.350dbb10.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7336],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,d=u["".concat(l,".").concat(f)]||u[f]||m[f]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Algorithms/intro",id:"Algorithms/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206",source:"@site/docs/Algorithms/1-intro.md",sourceDirName:"Algorithms",slug:"/Algorithms/intro",permalink:"/en/docs/Algorithms/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"algorithms",next:{title:"STL\u6a21\u677f",permalink:"/en/docs/Algorithms/STL\u6a21\u677f"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7336],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=o,d=u["".concat(l,".").concat(f)]||u[f]||m[f]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Algorithms/intro",id:"Algorithms/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206",source:"@site/docs/Algorithms/1-intro.md",sourceDirName:"Algorithms",slug:"/Algorithms/intro",permalink:"/en/docs/Algorithms/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"algorithms",next:{title:"STL\u6a21\u677f",permalink:"/en/docs/Algorithms/STL\u6a21\u677f"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u7b97\u6cd5\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/170d5aca.16ba5dd5.js b/en/assets/js/170d5aca.e704a30e.js similarity index 98% rename from en/assets/js/170d5aca.16ba5dd5.js rename to en/assets/js/170d5aca.e704a30e.js index 3efbcf798..5da6d98bf 100644 --- a/en/assets/js/170d5aca.16ba5dd5.js +++ b/en/assets/js/170d5aca.e704a30e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7122],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),s=l(n),f=o,d=s["".concat(c,".").concat(f)]||s[f]||m[f]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var p={};for(var c in t)hasOwnProperty.call(t,c)&&(p[c]=t[c]);p.originalType=e,p[s]="string"==typeof e?e:o,a[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",p={unversionedId:"Deep-Learning/intro",id:"Deep-Learning/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Deep-Learning/1-intro.md",sourceDirName:"Deep-Learning",slug:"/Deep-Learning/intro",permalink:"/en/docs/Deep-Learning/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"deep_learning",next:{title:"\u67e5\u6f0f\u8865\u7f3a",permalink:"/en/docs/Deep-Learning/Fill-The-Gaps"}},c={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{title:"\u4ecb\u7ecd",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206"),(0,o.kt)("p",{parentName:"admonition"},"\u82e5\u66f4\u65b0\u4e0d\u53ca\u65f6\uff0c\u6b22\u8fce\u901a\u8fc7 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bonjour-npy"},"GitHub")," \u8054\u7cfb\u4ea4\u6d41")),(0,o.kt)("admonition",{title:"\u6709\u5173\u8bba\u6587\u7b14\u8bb0\u7684\u8bf4\u660e",type:"important"},(0,o.kt)("p",{parentName:"admonition"},"\u4e3a\u4e86\u8282\u7701\u5199\u4f5c\u65f6\u95f4\uff0c\u8bba\u6587\u7b14\u8bb0\u90e8\u5206\u7684\u6587\u7ae0\u901a\u5e38\u53ea\u8bb2\u8ff0\u6587\u7ae0\u7684\u65b9\u6cd5\u8bba\uff0cIntroduction \u4ee5\u53ca Related Work \u8be6\u60c5\u53ef\u4ee5\u53c2\u8003\u8bba\u6587\u539f\u6587")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[7122],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),s=l(n),f=o,d=s["".concat(c,".").concat(f)]||s[f]||m[f]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var p={};for(var c in t)hasOwnProperty.call(t,c)&&(p[c]=t[c]);p.originalType=e,p[s]="string"==typeof e?e:o,a[1]=p;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",p={unversionedId:"Deep-Learning/intro",id:"Deep-Learning/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Deep-Learning/1-intro.md",sourceDirName:"Deep-Learning",slug:"/Deep-Learning/intro",permalink:"/en/docs/Deep-Learning/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"deep_learning",next:{title:"\u67e5\u6f0f\u8865\u7f3a",permalink:"/en/docs/Deep-Learning/Fill-The-Gaps"}},c={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{title:"\u4ecb\u7ecd",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u6df1\u5ea6\u5b66\u4e60\u90e8\u5206"),(0,o.kt)("p",{parentName:"admonition"},"\u82e5\u66f4\u65b0\u4e0d\u53ca\u65f6\uff0c\u6b22\u8fce\u901a\u8fc7 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/bonjour-npy"},"GitHub")," \u8054\u7cfb\u4ea4\u6d41")),(0,o.kt)("admonition",{title:"\u6709\u5173\u8bba\u6587\u7b14\u8bb0\u7684\u8bf4\u660e",type:"important"},(0,o.kt)("p",{parentName:"admonition"},"\u4e3a\u4e86\u8282\u7701\u5199\u4f5c\u65f6\u95f4\uff0c\u8bba\u6587\u7b14\u8bb0\u90e8\u5206\u7684\u6587\u7ae0\u901a\u5e38\u53ea\u8bb2\u8ff0\u6587\u7ae0\u7684\u65b9\u6cd5\u8bba\uff0cIntroduction \u4ee5\u53ca Related Work \u8be6\u60c5\u53ef\u4ee5\u53c2\u8003\u8bba\u6587\u539f\u6587")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/4557037c.80de8742.js b/en/assets/js/4557037c.1090fd0e.js similarity index 97% rename from en/assets/js/4557037c.80de8742.js rename to en/assets/js/4557037c.1090fd0e.js index 341d9260b..d39769a3c 100644 --- a/en/assets/js/4557037c.80de8742.js +++ b/en/assets/js/4557037c.1090fd0e.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[189],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,d=u["".concat(l,".").concat(m)]||u[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Others/intro",id:"Others/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206",source:"@site/docs/Others/1-intro.md",sourceDirName:"Others",slug:"/Others/intro",permalink:"/en/docs/Others/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"others",next:{title:"\u7ec8\u7aef\u4ee3\u7406",permalink:"/en/docs/Others/Linux/\u5b9e\u7528\u5de5\u5177/\u7ec8\u7aef\u4ee3\u7406"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[189],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,d=u["".concat(l,".").concat(m)]||u[m]||f[m]||i;return r?n.createElement(d,a(a({ref:t},s),{},{components:r})):n.createElement(d,a({ref:t},s))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Welcome",c={unversionedId:"Others/intro",id:"Others/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206",source:"@site/docs/Others/1-intro.md",sourceDirName:"Others",slug:"/Others/intro",permalink:"/en/docs/Others/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"others",next:{title:"\u7ec8\u7aef\u4ee3\u7406",permalink:"/en/docs/Others/Linux/\u5b9e\u7528\u5de5\u5177/\u7ec8\u7aef\u4ee3\u7406"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],s={toc:p},u="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(u,(0,n.Z)({},s,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u5176\u4ed6\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/7f328912.ffac57c5.js b/en/assets/js/7f328912.5f14ba4d.js similarity index 97% rename from en/assets/js/7f328912.ffac57c5.js rename to en/assets/js/7f328912.5f14ba4d.js index 5bdbfd44e..40a9f41ee 100644 --- a/en/assets/js/7f328912.ffac57c5.js +++ b/en/assets/js/7f328912.5f14ba4d.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[8975],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,d=s["".concat(l,".").concat(m)]||s[m]||f[m]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",c={unversionedId:"Tui-Mian/intro",id:"Tui-Mian/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206",source:"@site/docs/Tui-Mian/1-intro.md",sourceDirName:"Tui-Mian",slug:"/Tui-Mian/intro",permalink:"/en/docs/Tui-Mian/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tui_mian",next:{title:"\u7ecf\u9a8c\u8d34\uff1a2023\u5e74\u53cc\u975e\u8ba1\u7b97\u673a\u4fdd\u7814\u7ecf\u5386",permalink:"/en/docs/Tui-Mian/Summary"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:p},s="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[8975],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,d=s["".concat(l,".").concat(m)]||s[m]||f[m]||i;return n?r.createElement(d,a(a({ref:t},u),{},{components:n})):r.createElement(d,a({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome",c={unversionedId:"Tui-Mian/intro",id:"Tui-Mian/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206",source:"@site/docs/Tui-Mian/1-intro.md",sourceDirName:"Tui-Mian",slug:"/Tui-Mian/intro",permalink:"/en/docs/Tui-Mian/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tui_mian",next:{title:"\u7ecf\u9a8c\u8d34\uff1a2023\u5e74\u53cc\u975e\u8ba1\u7b97\u673a\u4fdd\u7814\u7ecf\u5386",permalink:"/en/docs/Tui-Mian/Summary"}},l={},p=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],u={toc:p},s="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,r.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u63a8\u514d\u590d\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}f.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/e5f716fd.f77c506b.js b/en/assets/js/e5f716fd.4c36c757.js similarity index 63% rename from en/assets/js/e5f716fd.f77c506b.js rename to en/assets/js/e5f716fd.4c36c757.js index eb8c0a02c..eb6bca153 100644 --- a/en/assets/js/e5f716fd.f77c506b.js +++ b/en/assets/js/e5f716fd.4c36c757.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[3033],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),l=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,d=s["".concat(u,".").concat(f)]||s[f]||m[f]||i;return r?n.createElement(d,c(c({ref:t},p),{},{components:r})):n.createElement(d,c({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,c=new Array(i);c[0]=f;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[s]="string"==typeof e?e:o,c[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>m,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={},c="Welcome",a={unversionedId:"Curriculum/intro",id:"Curriculum/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Curriculum/1-intro.md",sourceDirName:"Curriculum",slug:"/Curriculum/intro",permalink:"/en/docs/Curriculum/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"curriculum",next:{title:"\u6570\u5b57\u56fe\u50cf\u5904\u7406\u590d\u4e60\u7b14\u8bb0",permalink:"/en/docs/Curriculum/\u6570\u5b57\u56fe\u50cf\u5904\u7406/Note"}},u={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],p={toc:l},s="wrapper";function m(e){let{components:t,...i}=e;return(0,o.kt)(s,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[3033],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),l=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,c=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=l(r),f=o,d=s["".concat(u,".").concat(f)]||s[f]||m[f]||c;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=r.length,i=new Array(c);i[0]=f;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[s]="string"==typeof e?e:o,i[1]=a;for(var l=2;l{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>a,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const c={},i="Welcome",a={unversionedId:"Curriculum/intro",id:"Curriculum/intro",title:"Welcome",description:"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206",source:"@site/docs/Curriculum/1-intro.md",sourceDirName:"Curriculum",slug:"/Curriculum/intro",permalink:"/en/docs/Curriculum/intro",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"curriculum",next:{title:"\u6570\u5b57\u56fe\u50cf\u5904\u7406\u590d\u4e60\u7b14\u8bb0",permalink:"/en/docs/Curriculum/\u6570\u5b57\u56fe\u50cf\u5904\u7406/Note"}},u={},l=[{value:"\u652f\u6301\u6211\uff01",id:"\u652f\u6301\u6211",level:2}],p={toc:l},s="wrapper";function m(e){let{components:t,...c}=e;return(0,o.kt)(s,(0,n.Z)({},p,c,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome"},"Welcome"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u6b22\u8fce\u6765\u5230\u7b14\u8bb0\u672c\u7684\u8bfe\u7a0b\u5b66\u4e60\u90e8\u5206")),(0,o.kt)("h2",{id:"\u652f\u6301\u6211"},"\u652f\u6301\u6211\uff01"),(0,o.kt)("p",null,"\u5982\u679c\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u8bdd\u5c31\u7ed9\u4e2a\u514d\u8d39\u7684 Star \u5427\uff01"),(0,o.kt)("p",null,(0,o.kt)("img",{src:r(9163).Z,width:"1881",height:"1098"})))}m.isMDXComponent=!0},9163:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/f0ad40a3.ab5c711b.js b/en/assets/js/f0ad40a3.0add77a0.js similarity index 79% rename from en/assets/js/f0ad40a3.ab5c711b.js rename to en/assets/js/f0ad40a3.0add77a0.js index f59680836..0c0ed624c 100644 --- a/en/assets/js/f0ad40a3.ab5c711b.js +++ b/en/assets/js/f0ad40a3.0add77a0.js @@ -1 +1 @@ -"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[2296],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:o,i[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},i="\u9e23\u8c22",c={unversionedId:"Acknowledgement/intro",id:"Acknowledgement/intro",title:"\u9e23\u8c22",description:"\u996e\u6c34\u601d\u6e90",source:"@site/docs/Acknowledgement/intro.md",sourceDirName:"Acknowledgement",slug:"/Acknowledgement/intro",permalink:"/en/docs/Acknowledgement/intro",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"acknowledgement"},l={},p=[{value:"\u996e\u6c34\u601d\u6e90",id:"\u996e\u6c34\u601d\u6e90",level:2},{value:"Disclaimer",id:"disclaimer",level:2}],u={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,o.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"\u9e23\u8c22"},"\u9e23\u8c22"),(0,o.kt)("h2",{id:"\u996e\u6c34\u601d\u6e90"},"\u996e\u6c34\u601d\u6e90"),(0,o.kt)("p",null,"\u8be5\u7f51\u7ad9\u7684\u642d\u5efa\u79bb\u4e0d\u5f00 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/facebook/docusaurus"},"Docusaurus")," \u7684\u652f\u6301\u4ee5\u53ca\u5bf9 ",(0,o.kt)("a",{parentName:"p",href:"https://space.keter.top/"},"Sonder\u7684\u5b9d\u85cf\u7b14\u8bb0\u672c")," \u7684\u53c2\u8003\u3002"),(0,o.kt)("h2",{id:"disclaimer"},"Disclaimer"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u5c55\u793a\u7684\u6240\u6709\u6807\u8bc6\u548c\u94fe\u63a5\u4ec5\u5c5e\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e2a\u4eba\u559c\u597d"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u4ee3\u8868\u56fd\u5bb6\u7684\u7acb\u573a\u6216\u4f01\u4e1a\u3001\u7ec4\u7ec7\u7684\u884c\u4e3a"),"\u3002"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u7684\u6240\u6709\u4fe1\u606f",(0,o.kt)("inlineCode",{parentName:"p"},"\u4ec5\u4f9b\u53c2\u8003"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u6784\u6210\u6cd5\u5f8b\u6216\u5546\u4e1a\u5efa\u8bae"),"\u3002"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}d.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-bf78742425c23db8516d6482ea42e6b2.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunknpy_notebook=self.webpackChunknpy_notebook||[]).push([[2296],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,c(c({ref:t},u),{},{components:n})):r.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=n(7462),o=(n(7294),n(3905));const a={},c="\u9e23\u8c22",i={unversionedId:"Acknowledgement/intro",id:"Acknowledgement/intro",title:"\u9e23\u8c22",description:"\u996e\u6c34\u601d\u6e90",source:"@site/docs/Acknowledgement/intro.md",sourceDirName:"Acknowledgement",slug:"/Acknowledgement/intro",permalink:"/en/docs/Acknowledgement/intro",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"acknowledgement"},l={},p=[{value:"\u996e\u6c34\u601d\u6e90",id:"\u996e\u6c34\u601d\u6e90",level:2},{value:"Disclaimer",id:"disclaimer",level:2}],u={toc:p},s="wrapper";function d(e){let{components:t,...a}=e;return(0,o.kt)(s,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"\u9e23\u8c22"},"\u9e23\u8c22"),(0,o.kt)("h2",{id:"\u996e\u6c34\u601d\u6e90"},"\u996e\u6c34\u601d\u6e90"),(0,o.kt)("p",null,"\u8be5\u7f51\u7ad9\u7684\u642d\u5efa\u79bb\u4e0d\u5f00 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/facebook/docusaurus"},"Docusaurus")," \u7684\u652f\u6301\u4ee5\u53ca\u5bf9 ",(0,o.kt)("a",{parentName:"p",href:"https://space.keter.top/"},"Sonder\u7684\u5b9d\u85cf\u7b14\u8bb0\u672c")," \u7684\u53c2\u8003\u3002"),(0,o.kt)("h2",{id:"disclaimer"},"Disclaimer"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u5c55\u793a\u7684\u6240\u6709\u6807\u8bc6\u548c\u94fe\u63a5\u4ec5\u5c5e\u4e8e",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e2a\u4eba\u559c\u597d"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u4ee3\u8868\u56fd\u5bb6\u7684\u7acb\u573a\u6216\u4f01\u4e1a\u3001\u7ec4\u7ec7\u7684\u884c\u4e3a"),"\u3002"),(0,o.kt)("p",null,"\u672c\u7f51\u7ad9\u7684\u6240\u6709\u4fe1\u606f",(0,o.kt)("inlineCode",{parentName:"p"},"\u4ec5\u4f9b\u53c2\u8003"),"\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e0d\u6784\u6210\u6cd5\u5f8b\u6216\u5546\u4e1a\u5efa\u8bae"),"\u3002"),(0,o.kt)("p",null,(0,o.kt)("img",{src:n(9163).Z,width:"1881",height:"1098"})))}d.isMDXComponent=!0},9163:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/intro-af0832b093767267dd137c4cc177c952.png"}}]); \ No newline at end of file diff --git a/en/assets/js/runtime~main.876eaea4.js b/en/assets/js/runtime~main.20595ca0.js similarity index 71% rename from en/assets/js/runtime~main.876eaea4.js rename to en/assets/js/runtime~main.20595ca0.js index 1c04e799b..33e8a0fd3 100644 --- a/en/assets/js/runtime~main.876eaea4.js +++ b/en/assets/js/runtime~main.20595ca0.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return c[e].call(d.exports,d,d.exports,r),d.exports}r.m=c,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",189:"4557037c",198:"d839ba35",452:"5b87b98d",618:"b28e7af0",935:"74f56d44",962:"092909c8",1007:"a91af95f",1130:"a8fad2e4",1180:"11f7daa4",1196:"73a0803d",1222:"f208df04",1346:"4aee018e",1459:"446859ef",1496:"bf3e67e8",1646:"e106d379",1835:"b529c19d",2051:"e6c11ea8",2296:"f0ad40a3",2592:"198a413f",2615:"76f0dcb5",2913:"ba4dc759",2997:"12261a21",3033:"e5f716fd",3065:"2a59d8d4",3085:"1f391b9e",3094:"cf67a3ce",3320:"d5b726de",3328:"16ddbeca",3346:"cccb4b32",3389:"a0558625",3576:"86cc22d4",3977:"b4773f97",4195:"c4f5d8e4",4502:"806b030e",4574:"95d605be",4582:"f8771a92",4760:"f26368c4",5321:"74465ad7",5510:"7e742f3b",5736:"7ab2d319",5738:"73db2603",5742:"d1030cc9",5776:"a2a36db7",5901:"d6b41bcb",5923:"d594b08b",6003:"71d93f63",6178:"800ff996",6205:"e35c27ce",6237:"4e1def24",6674:"3c9ce1b2",6898:"7d51be72",7122:"170d5aca",7149:"937c0001",7336:"1331f6cd",7414:"393be207",7504:"66dcaab3",7698:"4fdf609a",7851:"360a53fd",7918:"17896441",7920:"1a4e3797",8213:"d57233e8",8347:"7daa201b",8404:"d9458a31",8614:"6204ac06",8975:"7f328912",9203:"73151820",9332:"b04816ae",9507:"c00822a0",9514:"1be78505",9562:"f37640e6",9615:"5960b9f1",9648:"284078e5",9674:"e8f11660"}[e]||e)+"."+{53:"b574f3f4",189:"80de8742",198:"4600c979",452:"095623b9",618:"bd2709b4",935:"3b686e7d",962:"fef9391a",1007:"f9e3bf24",1130:"d222e774",1180:"f6108978",1196:"50d6d298",1222:"3db0116c",1346:"3a02967d",1459:"634a6665",1496:"79b9b8db",1646:"ff6d17e0",1835:"8010c241",2051:"1e898afe",2296:"ab5c711b",2592:"8769abe9",2615:"1bb937cd",2913:"6b2e76f1",2997:"0987658b",3033:"f77c506b",3065:"3c319854",3085:"e222276a",3094:"7c486399",3320:"86bb97a8",3328:"9ff3c223",3346:"dd45b9ea",3389:"e5242f1d",3576:"aa8c1fa6",3977:"04efc985",4195:"2b5cd402",4502:"ef278419",4574:"e67e83ce",4582:"1e05a164",4760:"53e6a014",4972:"d1a5048e",5321:"29f082c4",5510:"cfd40a4a",5525:"db22dd4f",5736:"a7170132",5738:"3369aaa1",5742:"b55e3482",5776:"efe4cdcf",5901:"807376f3",5923:"b2ee120d",6003:"c7c3d833",6178:"659c0013",6205:"f688a4f4",6237:"32a199d0",6674:"60dafc4d",6898:"9622b692",7122:"16ba5dd5",7149:"e450176c",7336:"a55aadc1",7414:"b0fa9194",7504:"5b4a1a90",7698:"13f16d17",7851:"00f9e11d",7918:"077d419c",7920:"cd2275cc",8213:"b09130fe",8347:"7d2e8a69",8404:"5f64f6c1",8443:"ac831155",8605:"012e1e77",8614:"6fe52f39",8975:"ffac57c5",9203:"a7026186",9332:"015057b6",9507:"0051a2d1",9514:"94988c33",9562:"cbac35bc",9615:"062769fa",9648:"03fddbdb",9674:"1fbf1f76"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="npy-notebook:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/en/",r.gca=function(e){return e={17896441:"7918",73151820:"9203","935f2afb":"53","4557037c":"189",d839ba35:"198","5b87b98d":"452",b28e7af0:"618","74f56d44":"935","092909c8":"962",a91af95f:"1007",a8fad2e4:"1130","11f7daa4":"1180","73a0803d":"1196",f208df04:"1222","4aee018e":"1346","446859ef":"1459",bf3e67e8:"1496",e106d379:"1646",b529c19d:"1835",e6c11ea8:"2051",f0ad40a3:"2296","198a413f":"2592","76f0dcb5":"2615",ba4dc759:"2913","12261a21":"2997",e5f716fd:"3033","2a59d8d4":"3065","1f391b9e":"3085",cf67a3ce:"3094",d5b726de:"3320","16ddbeca":"3328",cccb4b32:"3346",a0558625:"3389","86cc22d4":"3576",b4773f97:"3977",c4f5d8e4:"4195","806b030e":"4502","95d605be":"4574",f8771a92:"4582",f26368c4:"4760","74465ad7":"5321","7e742f3b":"5510","7ab2d319":"5736","73db2603":"5738",d1030cc9:"5742",a2a36db7:"5776",d6b41bcb:"5901",d594b08b:"5923","71d93f63":"6003","800ff996":"6178",e35c27ce:"6205","4e1def24":"6237","3c9ce1b2":"6674","7d51be72":"6898","170d5aca":"7122","937c0001":"7149","1331f6cd":"7336","393be207":"7414","66dcaab3":"7504","4fdf609a":"7698","360a53fd":"7851","1a4e3797":"7920",d57233e8:"8213","7daa201b":"8347",d9458a31:"8404","6204ac06":"8614","7f328912":"8975",b04816ae:"9332",c00822a0:"9507","1be78505":"9514",f37640e6:"9562","5960b9f1":"9615","284078e5":"9648",e8f11660:"9674"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>f=e[a]=[d,b]));d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,c=d[0],t=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n{"use strict";var e,a,d,f,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return b[e].call(d.exports,d,d.exports,r),d.exports}r.m=b,e=[],r.O=(a,d,f,c)=>{if(!d){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,f,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",189:"4557037c",198:"d839ba35",452:"5b87b98d",618:"b28e7af0",935:"74f56d44",962:"092909c8",1007:"a91af95f",1130:"a8fad2e4",1180:"11f7daa4",1196:"73a0803d",1222:"f208df04",1346:"4aee018e",1459:"446859ef",1496:"bf3e67e8",1646:"e106d379",1835:"b529c19d",2051:"e6c11ea8",2296:"f0ad40a3",2592:"198a413f",2615:"76f0dcb5",2913:"ba4dc759",2997:"12261a21",3033:"e5f716fd",3065:"2a59d8d4",3085:"1f391b9e",3094:"cf67a3ce",3320:"d5b726de",3328:"16ddbeca",3346:"cccb4b32",3389:"a0558625",3576:"86cc22d4",3977:"b4773f97",4195:"c4f5d8e4",4502:"806b030e",4574:"95d605be",4582:"f8771a92",4760:"f26368c4",5321:"74465ad7",5510:"7e742f3b",5736:"7ab2d319",5738:"73db2603",5742:"d1030cc9",5776:"a2a36db7",5901:"d6b41bcb",5923:"d594b08b",6003:"71d93f63",6178:"800ff996",6205:"e35c27ce",6237:"4e1def24",6674:"3c9ce1b2",6898:"7d51be72",7122:"170d5aca",7149:"937c0001",7336:"1331f6cd",7414:"393be207",7504:"66dcaab3",7698:"4fdf609a",7851:"360a53fd",7918:"17896441",7920:"1a4e3797",8213:"d57233e8",8347:"7daa201b",8404:"d9458a31",8614:"6204ac06",8975:"7f328912",9203:"73151820",9332:"b04816ae",9507:"c00822a0",9514:"1be78505",9562:"f37640e6",9615:"5960b9f1",9648:"284078e5",9674:"e8f11660"}[e]||e)+"."+{53:"b574f3f4",189:"1090fd0e",198:"4600c979",452:"095623b9",618:"bd2709b4",935:"3b686e7d",962:"fef9391a",1007:"f9e3bf24",1130:"d222e774",1180:"f6108978",1196:"50d6d298",1222:"3db0116c",1346:"3a02967d",1459:"634a6665",1496:"79b9b8db",1646:"ff6d17e0",1835:"8010c241",2051:"1e898afe",2296:"0add77a0",2592:"8769abe9",2615:"1bb937cd",2913:"6b2e76f1",2997:"0987658b",3033:"4c36c757",3065:"3c319854",3085:"e222276a",3094:"7c486399",3320:"86bb97a8",3328:"9ff3c223",3346:"dd45b9ea",3389:"e5242f1d",3576:"aa8c1fa6",3977:"04efc985",4195:"2b5cd402",4502:"ef278419",4574:"e67e83ce",4582:"1e05a164",4760:"53e6a014",4972:"d1a5048e",5321:"29f082c4",5510:"cfd40a4a",5525:"db22dd4f",5736:"a7170132",5738:"3369aaa1",5742:"b55e3482",5776:"efe4cdcf",5901:"807376f3",5923:"b2ee120d",6003:"c7c3d833",6178:"659c0013",6205:"f688a4f4",6237:"32a199d0",6674:"60dafc4d",6898:"9622b692",7122:"e704a30e",7149:"e450176c",7336:"350dbb10",7414:"b0fa9194",7504:"5b4a1a90",7698:"13f16d17",7851:"00f9e11d",7918:"077d419c",7920:"cd2275cc",8213:"b09130fe",8347:"7d2e8a69",8404:"5f64f6c1",8443:"ac831155",8605:"012e1e77",8614:"6fe52f39",8975:"5f14ba4d",9203:"a7026186",9332:"015057b6",9507:"0051a2d1",9514:"94988c33",9562:"cbac35bc",9615:"062769fa",9648:"03fddbdb",9674:"1fbf1f76"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},c="npy-notebook:",r.l=(e,a,d,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/en/",r.gca=function(e){return e={17896441:"7918",73151820:"9203","935f2afb":"53","4557037c":"189",d839ba35:"198","5b87b98d":"452",b28e7af0:"618","74f56d44":"935","092909c8":"962",a91af95f:"1007",a8fad2e4:"1130","11f7daa4":"1180","73a0803d":"1196",f208df04:"1222","4aee018e":"1346","446859ef":"1459",bf3e67e8:"1496",e106d379:"1646",b529c19d:"1835",e6c11ea8:"2051",f0ad40a3:"2296","198a413f":"2592","76f0dcb5":"2615",ba4dc759:"2913","12261a21":"2997",e5f716fd:"3033","2a59d8d4":"3065","1f391b9e":"3085",cf67a3ce:"3094",d5b726de:"3320","16ddbeca":"3328",cccb4b32:"3346",a0558625:"3389","86cc22d4":"3576",b4773f97:"3977",c4f5d8e4:"4195","806b030e":"4502","95d605be":"4574",f8771a92:"4582",f26368c4:"4760","74465ad7":"5321","7e742f3b":"5510","7ab2d319":"5736","73db2603":"5738",d1030cc9:"5742",a2a36db7:"5776",d6b41bcb:"5901",d594b08b:"5923","71d93f63":"6003","800ff996":"6178",e35c27ce:"6205","4e1def24":"6237","3c9ce1b2":"6674","7d51be72":"6898","170d5aca":"7122","937c0001":"7149","1331f6cd":"7336","393be207":"7414","66dcaab3":"7504","4fdf609a":"7698","360a53fd":"7851","1a4e3797":"7920",d57233e8:"8213","7daa201b":"8347",d9458a31:"8404","6204ac06":"8614","7f328912":"8975",b04816ae:"9332",c00822a0:"9507","1be78505":"9514",f37640e6:"9562","5960b9f1":"9615","284078e5":"9648",e8f11660:"9674"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((d,c)=>f=e[a]=[d,c]));d.push(f[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var c=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,c,b=d[0],t=d[1],o=d[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n 鸣谢 | 培洋的笔记本📒 - +
    -

    鸣谢

    饮水思源

    该网站的搭建离不开 Docusaurus 的支持以及对 Sonder的宝藏笔记本 的参考。

    Disclaimer

    本网站展示的所有标识和链接仅属于个人喜好不代表国家的立场或企业、组织的行为

    本网站的所有信息仅供参考不构成法律或商业建议

    - + \ No newline at end of file diff --git a/en/docs/Algorithms/intro/index.html b/en/docs/Algorithms/intro/index.html index 0da9f4d9f..39f64fe20 100644 --- a/en/docs/Algorithms/intro/index.html +++ b/en/docs/Algorithms/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    tip

    欢迎来到笔记本的算法部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git "a/en/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" "b/en/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" index 7c70537ff..bc7da1c25 100644 --- "a/en/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" +++ "b/en/docs/Algorithms/\351\242\230\350\247\243/\344\270\200\347\273\264\345\211\215\347\274\200\345\222\214\357\274\210\345\210\267\345\207\272\344\270\200\351\201\223\345\242\231\357\274\211/index.html" @@ -4,7 +4,7 @@ 一维前缀和(刷出一道墙) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    一维前缀和(刷出一道墙)

    tip

    在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆,小诺很好奇那些地方被刷过多少种颜色的油漆。

    输入描述:

    若干行输入,每行两个数字B[i],E[i](0<=B[i]<=E[i]<=200000)表示这次刷的墙壁是哪一段
    (假设每次刷的时候油漆颜色都和之前的不同),以0 0结束
    又若干行输入,每行两个数字begin[i],end[i](0<=begin[i]<=end[i]<=200000)表示小诺询问的段,
    以0 0结束

    输出描述:

    对于每个小诺的询问输出(end[i]-begin[i]+1)行,表示对应询问段的每个点被多少种颜色的油漆覆盖过。

    参考代码

    #include <bits/stdc++.h>

    using namespace std;

    int main()
    {
    vector<int> colors(200001, 0);

    int B, E;
    while (scanf("%d %d", &B, &E))
    {
    if (B == 0 && E == 0)
    {
    break;
    }
    colors[B]++; // 刷墙起点标记
    colors[E + 1]--; // 刷墙终点标记
    }

    // 计算前缀和
    for (int i = 1; i < colors.size(); i++)
    {
    colors[i] += colors[i - 1];
    }

    int begin, end;
    while (scanf("%d %d", &begin, &end))
    {
    if (begin == 0 && end == 0)
    {
    break;
    }
    for (int i = begin; i <= end; i++)
    {
    printf("%d\n", colors[i]);
    }
    }

    return 0;
    }

    题解

    使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。

    首先初始化前缀和数组,使每一个元素等于为0。

    该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值1-1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,1)[1, -1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于1-1而抵消影响(自身值为1-1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。

    关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用"\n"代替endl。

    ios::sync_with_stdio(false);
    - + \ No newline at end of file diff --git "a/en/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" "b/en/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" index 34b8e4d5e..2eccd74f1 100644 --- "a/en/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" +++ "b/en/docs/Algorithms/\351\242\230\350\247\243/\345\217\215\345\272\217\350\276\223\345\207\272/index.html" @@ -4,7 +4,7 @@ 反序输出 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    反序输出

    tip

    设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值

    参考代码

    #include <bits/stdc++.h>

    using namespace std;

    int main() {
    for (int i = 1000; i <= 9999; i++) {
    int x = i * 9, y = 0;
    while (x > 0) {
    y = y * 10 + x % 10;
    x /= 10;
    }
    if (i == y) {
    cout << i << endl;
    }
    }
    return 0;
    }

    题解

    反序输出可以分为两部分:拆分以及反序拼接

    • 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分

      while (x > 0) {
      y = y * 10 + x % 10; // 拼接与拆分
      x /= 10;
      }
    • 拼接:将s中的数字拼接成整数

      int sum = 0;
      for (int i = 0; i < s.size(); i++) {
      sum = sum * 10 + s[i];
      }
    - + \ No newline at end of file diff --git "a/en/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" "b/en/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" index d853cff4e..7c3973987 100644 --- "a/en/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" +++ "b/en/docs/Algorithms/\351\242\230\350\247\243/\346\216\222\345\210\227\347\273\204\345\220\210\357\274\210\346\261\20230\347\232\204\345\200\215\346\225\260\357\274\211/index.html" @@ -4,7 +4,7 @@ 排列组合(求30的倍数) | 培洋的笔记本📒 - + @@ -13,7 +13,7 @@ 输出样例:210

    参考代码

    #include <bits/stdc++.h>

    using namespace std;

    int main() {
    string s;
    cin >> s;
    int maxx = 0, flag = 0;
    sort(s.begin(), s.end());
    do {
    int now = 0;
    for (int i = 0; i < s.size(); i++) {
    now = now * 10 + s[i] - '0';
    }
    if (now % 30 == 0) {
    flag = 1;
    maxx = max(maxx, now);
    }
    } while (next_permutation(s.begin(), s.end()));
    if (flag == 1) {
    cout << maxx << endl;
    return 0;
    }
    else {
    cout << -1 << endl;
    }
    }

    题解

    使用C++ STL提供的排列组合模版

    首先将代排列组合的字符串或数组进行排序

    sort(list.begin(), list.end());

    使用排列组合模版

    do {
    something();
    } while (next_permutation(list.begin(), list.end()));

    此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历

    - + \ No newline at end of file diff --git a/en/docs/Curriculum/intro/index.html b/en/docs/Curriculum/intro/index.html index 02924dd4e..a1afc7dcd 100644 --- a/en/docs/Curriculum/intro/index.html +++ b/en/docs/Curriculum/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    tip

    欢迎来到笔记本的课程学习部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git "a/en/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" "b/en/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" index 697d7a6bc..be84550ad 100644 --- "a/en/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" +++ "b/en/docs/Curriculum/\346\223\215\344\275\234\347\263\273\347\273\237\350\257\276\350\256\276/GeekOS-project-0/index.html" @@ -4,7 +4,7 @@ GeekOS project 0的实现 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    GeekOS project 0的实现

    在上一篇博客中我们完成了GeekOS环境的配置,下面我们来验证环境配置的成功与否以及project 0的实现。

    编写C语言代码

    编写geekos-version/src/projecti/src/geekos/main.c文件

    编写函数project0实现检测键盘输入Ctrl+d结束线程。

    void project0(){
    Print("To Exit hit Ctrl + d.\n");
    Keycode keycode;
    while(1)
    {
    if(Read_Key(&keycode))
    {
    if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起
    {
    int asciiCode = keycode & 0xff;//d
    if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d
    {
    Print("\n---------Adios!---------\n");
    # 这里需要注意素质
    Exit(1);
    }else
    {
    Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);
    }
    }
    }
    }
    }

    在main函数中添加以下代码,实现自定义函数的调用,创建线程。

        struct Kernel_Thread *thread;
    thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);

    总体代码

    /*
    * GeekOS C code entry point
    * Copyright (c) 2001,2003,2004 David H. Hovemeyer <daveho@cs.umd.edu>
    * Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
    * Copyright (c) 2004, Iulian Neamtiu <neamtiu@cs.umd.edu>
    * $Revision: 1.51 $
    *
    * This is free software. You are permitted to use,
    * redistribute, and modify it as specified in the file "COPYING".
    */

    #include <geekos/bootinfo.h>
    #include <geekos/string.h>
    #include <geekos/screen.h>
    #include <geekos/mem.h>
    #include <geekos/crc32.h>
    #include <geekos/tss.h>
    #include <geekos/int.h>
    #include <geekos/kthread.h>
    #include <geekos/trap.h>
    #include <geekos/timer.h>
    #include <geekos/keyboard.h>

    void project0(){
    Print("To Exit hit Ctrl + d.\n");
    Keycode keycode;
    while(1)
    {
    if(Read_Key(&keycode))
    {
    if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起
    {
    int asciiCode = keycode & 0xff;//d
    if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d
    {
    Print("\n---------Adios! Motherfucker!---------\n");
    Exit(1);
    }else
    {
    Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);
    }
    }
    }
    }
    }


    /*
    * Kernel C code entry point.
    * Initializes kernel subsystems, mounts filesystems,
    * and spawns init process.
    */
    void Main(struct Boot_Info* bootInfo)
    {
    Init_BSS();
    Init_Screen();
    Init_Mem(bootInfo);
    Init_CRC32();
    Init_TSS();
    Init_Interrupts();
    Init_Scheduler();
    Init_Traps();
    Init_Timer();
    Init_Keyboard();

    Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT));
    Print("Welcome to GeekOS!\n");
    Set_Current_Attr(ATTRIB(BLACK, GRAY));

    // TODO("Start a kernel thread to echo pressed keys and print counts");

    struct Kernel_Thread *thread;
    thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);

    /* Now this thread is done. */
    Exit(0);
    }

    使用Linux的编译系统对C语言代码进行编译

    每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。

    执行

    make depend
    make

    此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它!

    目录下的文件应该是这样的结构:

    下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。

    # An example .bochsrc file.
    # You will need to edit these lines to reflect your system.
    vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
    # 请根据自己的实际安装路径更改
    romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
    # 请根据自己的实际安装路径更改
    megs: 8
    boot: a
    floppya: 1_44=fd.img, status=inserted
    #floppya: 1_44=fd_aug.img, status=inserted
    log: ./bochs.out
    # keyboard_serial_delay: 200
    # vga_update_interval: 300000
    mouse: enabled=0
    private_colormap: enabled=0
    # i440fxsupport: enabled=0
    # Uncomment this to write all bochs debugging messages to
    # bochs.out. This produces a lot of output, but can be very
    # useful for debugging the kernel.
    #debug: action=report

    在这个目录下打开终端,执行

    bochs

    选择6,按下回车

    可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入

    c

    即可完成bochs的正式启动,最终的效果

    - + \ No newline at end of file diff --git "a/en/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" "b/en/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" index 6676d193e..a4a94c1fb 100644 --- "a/en/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" +++ "b/en/docs/Curriculum/\346\225\260\345\255\227\345\233\276\345\203\217\345\244\204\347\220\206/Note/index.html" @@ -4,7 +4,7 @@ 数字图像处理复习笔记 | 培洋的笔记本📒 - + @@ -54,7 +54,7 @@ M834 80h400000v40h-400000z">1)[D(u,v)D0]2n1(20)

    通常采取H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)作为截止频率,没有振铃效应

    指数高通滤波器(EHPF)

    H(u,v)=e[D0D(u,v)]n(21)H(u,v)=e^{-[\frac{D_0}{D(u,v)}]^n}\tag{21}

    梯形高通滤波器(THPF)

    H(u,v)={1D(u,v)>D0D(u,v)D1D0D1D1D(u,v)D00D(u,v)<D1(22)H(u,v)=\begin{cases}1&D(u,v)>D_0\\ \\ \frac{D(u,v)-D_1}{D_0-D_1}&D_1\leq D(u,v)\leq D_0\\ \\ 0&D(u,v)<D_1\end{cases}\tag{22}

    带通和带阻滤波

    带通滤波

    顾名思义,带通滤波就是允许某一特定频率的信号通过,而衰减频率范围之外的信号。

    理想带通滤波的传递函数为:

    H(u,v)={0D(u,v)<D0w21D0w2D(u,v)D0+w20D(u,v)D0+w2(23)H(u,v)=\begin{cases}0&D(u,v)<D_0-\frac{w}{2}\\1&D_0-\frac{w}{2}\leq D(u,v)\leq D_0+\frac{w}{2}\\0&D(u,v)\geq D_0+\frac{w}{2}\end{cases}\tag{23}

    其中,D0D_0是通带中心频率,ww是通带宽度。

    带阻滤波

    顾名思义,带阻滤波就是衰减某一特定频率范围的信号,而允许频率范围之外的信号通过。

    理想带阻滤波的传递函数为:

    H(u,v)={1D(u,v)<w10w1D(u,v)w21D(u,v)>w2(24)H(u,v)=\begin{cases}1&D(u,v)<w_1\\0&w_1\leqslant D(u,v)\leq w_2\\1&D(u,v)> w_2\end{cases}\tag{24}

    第7章 彩色图像处理

    伪彩色图像的处理

    伪彩色图像的增强一般用于B超、石油开采以及安检方面。

    全彩色图像的处理

    第8章 图像复原

    图像退化机理

    退化原因

    1. 成像系统镜头聚焦不准产生的散焦
    2. 相机与景物之间的相对运动
    3. 成像系统存在的各种非线性因素以及系统本身的性能
    4. 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节
    5. 成像系统中存在的各种随机噪声

    复原机理

    图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。

    图像复原与图像增强的区别和联系

    联系:二者从表面上看都是为了提高图像的质量。

    区别:二者在目的和过程上都有明显的区别。

    在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。

    在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。

    图像退化模型

    图像f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)

    退化系统的一般特性:

    1. 线性特性。
    2. 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。

    第11章 图像分割

    阈值分割法

    最佳阈值法

    假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\mu,背景像素的正态分布概率密度函数的均值为ν\nu,则最佳阈值法确定的阈值为

    t=μ+ν2(25)t=\frac{\mu +\nu}{2}\tag{25}

    判别分析法

    通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。

    边缘检测的基本原理

    1. 什么是图像的边缘?

      图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。

    2. 边缘信号的类型?

      1. 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。
      2. 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。
      3. 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。

    边缘检测算子

    Robert算子

    • 一阶导数算子。
    • 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。
    • 对噪声敏感,不能抑制噪声

    Sobel算子

    • 一阶导数算子。
    • 先进行加权平均,然后进行微分运算。
    • 对噪声具有一定的抑制能力。

    Prewitt算子

    • 一阶导数算子。
    • 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘
    • 对噪声具有一定的抑制能力。

    Laplace算子

    • 二阶导数算子。
    • 使噪声成分得到加强,对噪声更敏感。
    • 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。

    Canny边缘检测

    1. 使用高斯滤波平滑图像
    2. 计算梯度幅值和方向
    3. NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值
    4. 使用双阈值方法确定强边界和弱边界
    5. 滞后边界跟踪

    课后习题中的问答题

    1. 傅里叶频谱图的特征:

      • 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。
      • 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。
      • 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。
    2. 如何在频域实现图像平滑

      1. 利用傅里叶变换将图像从空域转换为频域;
      2. 将频域图像进行中心偏移,使得低频信息在频谱中央;
      3. 利用滤波函数生成一个与图像大小相同的二维频域矩阵;
      4. 将图像的频域与滤波器的频域相应相乘;
      5. 将相乘后的频域再次逆平移到频域的原始位置;
      6. 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。
    3. 一阶边缘检测算子与Laplace算子的异同。

      • 相同点:都可以检测边缘并且对噪声敏感
      • 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应
    4. 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。

      空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。

    5. 分析采样和量化的过程,以及它们对数字化图像质量的影响。

      采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。

      对数字化图像质量的影响:

      采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。

      量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。

    6. 图像噪声的特点。

      • 随机性
      • 叠加性
      • 噪声与图像之间具有相关性
    7. 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况?

      线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。

      线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。

    8. 伪彩色图像处理可以应用在哪些方面?

      • B超
      • 石油开采
      • 安检
    - + \ No newline at end of file diff --git "a/en/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" "b/en/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" index 2f98cd512..b4cc36409 100644 --- "a/en/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" +++ "b/en/docs/Curriculum/\347\274\226\350\257\221\345\216\237\347\220\206/Note/index.html" @@ -4,7 +4,7 @@ 编译原理笔记 | 培洋的笔记本📒 - + @@ -17,7 +17,7 @@ 目标代码生成:将中间代码转化成目标机上的机器指令代码或汇编代码(符号表是对符号分配地址的依据)

    2 语法分析方法的概念

    就产生语法树的方向而言,可大致分为自顶向下的语法分析和自底向上的语法分析两大类。

    自顶向下的语法分析方法:主流方法为递归下降分析法。根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导。

    自底向上的语法分析方法:将输入串w归约为文法开始符号S的过程

    tip

    LR(0), SLR(1), LR(1)

    LR(0)文法可能存在移进-归约冲突、归约-归约冲突

    SLR(1)文法在构造的过程中不存在归约-归约冲突,但有可能出现移进-归约冲突,可以由FOLLOW集解决的话则是SLR(1)文法

    3 翻译模式

    翻译模式是适合语法制导语义计算的另一种描述形式,可以体现一种合理调用语义动作的算法。

    • S-翻译模式:

      仅涉及综合属性的翻译模式,通常将语义动作集合置于产生式右端末尾。

    • L-翻译模式:

      既可以包含综合属性,也可以包含继承属性。

    4 属性文法

    在文法基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作,称之为属性文法。

    • S-属性文法:

      只包含综合属性的属性文法成为S-属性文法

    • L-属性文法:

      可以包含综合属性,也可以包含继承属性,但要求产生式右部的文法符号的继承属性的计算只取决于该符号左边符号的属性

    5 符号表

    符号表是编译程序中用于收集标识符的属性信息的数据结构。

    各阶段作用:

    • 语义分析阶段:语义合法性检查的依据
    • 目标代码生成阶段:对符号名进行地址分配的依据
    - + \ No newline at end of file diff --git a/en/docs/Deep-Learning/Fill-The-Gaps/index.html b/en/docs/Deep-Learning/Fill-The-Gaps/index.html index abc32bfd9..68ae5401c 100644 --- a/en/docs/Deep-Learning/Fill-The-Gaps/index.html +++ b/en/docs/Deep-Learning/Fill-The-Gaps/index.html @@ -4,7 +4,7 @@ 查漏补缺 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    查漏补缺

    info

    这里记录着在学习过程中发现的理解或操作方面出现的错误,温故知新。

    Python的广播机制

    1. 进行广播的条件:两个矩阵的后缘维度相同或其中一方的维度为1

      1. 后缘维度相同:A为(3,4,5)的三维数据,B为(4,5)的二维数组。由于A和B的后缘维度都为(4,5),所以可以进行广播。同理,当A为(3,4)的二维数组,B为(4,)的数组,他们的后缘维度都是4,所以可以进行广播。
      2. 后缘维度中有一方维度为1:A为(4,5)的二维数组,B为(4,1)的二维数组,其中一方维度为1,可以进行广播。
    2. 广播的原理:在运算过程中,Python逐步对数组进行广播,并不进行实际的复制操作,节省内存。

      以下是举出具体例子进行分析:

      import numpy as np
      import torch

      x = torch.tensor(np.arange(9), dtype=torch.float32)
      x = torch.reshape(x, (3, 3))
      print(x)

      x1 = x[:, :, None] # (3, 3, 1)
      print(x1)
      """
      tensor([[[0.],
      [1.],
      [2.]],
      [[3.],
      [4.],
      [5.]],
      [[6.],
      [7.],
      [8.]]])
      """

      x2 = x[:, None] # (3, 1, 3)
      print(x2)
      """
      tensor([[[0., 1., 2.]],
      [[3., 4., 5.]],
      [[6., 7., 8.]]])
      """

      output = x1 + x2
      print(output)
      """
      tensor([[[ 0., 1., 2.],
      [ 1., 2., 3.],
      [ 2., 3., 4.]],
      [[ 6., 7., 8.],
      [ 7., 8., 9.],
      [ 8., 9., 10.]],
      [[12., 13., 14.],
      [13., 14., 15.],
      [14., 15., 16.]]])
      """

      由于x1与x2在第0维度上维度相同,所以Python可以直接进行逐元素相加,即依次进行如下运算

      x1[0,:,:]+x2[0,:,:](1)x1[0, :, :] + x2[0, :, :] \tag{1}
      x1[1,:,:]+x2[1,:,:](2)x1[1, :, :] + x2[1, :, :] \tag{2}
      x1[2,:,:]+x2[2,:,:](3)x1[2, :, :] + x2[2, :, :] \tag{3}

    但在第0维度的相加过程中出现了shape为(3, 1)的矩阵与shape为(1, 3)的矩阵相加的情况,此时进行广播,将(3, 1)的每一列复制三次为(3, 3),将(1, 3)的每一行复制三次为(3, 3),再进行逐元素相加。

    其实,上述的过程还可以再细分为,x1[0, 0, :]与x2[0, 0, :]相加时出现了第一次广播,将x1[0, 0, :]复制了三次与x2[0,0, :]完成相加,这里不再赘述,最终想表达的原理是广播机制是在运算过程当中进行的,并非一次性将二者全部复制为对应的最小公倍数形状后再进行运算

    点积(dot product)与矩阵乘法(matmul product)

    1. 点积在Python中对应的运算符为*,进行矩阵之间的逐元素乘法。在点积运算中,运算矩阵二者形状不一样时可能涉及到广播机制;
    2. 矩阵乘法在Python中对应的运算符为@,进行常规矩阵乘法。遵守左矩阵的列数必须等于右矩阵的行数,且输出矩阵的行数等于左矩阵的行数、输出矩阵的列数等于右矩阵的列数的规则。

    zip函数与解压操作*

    当你有多个列表(或其他可迭代对象)时,zip函数可以将它们逐个配对成元组。而*操作符用于解压元组,将元组中的元素分别作为参数传递给函数。

    以下是一个简单的例子:

    # zip函数的例子
    list1 = [1, 2, 3]
    list2 = ['a', 'b', 'c']
    list3 = ['x', 'y', 'z']

    # 使用zip将多个列表配对成元组
    zipped_lists = zip(list1, list2, list3)

    # 打印配对后的元组
    for item in zipped_lists:
    print(item)

    输出:

    (1, 'a', 'x')
    (2, 'b', 'y')
    (3, 'c', 'z')

    在这个例子中,ziplist1list2list3中相同位置的元素组合成元组。

    接下来,我们可以使用 * 操作符解压这些元组:

    # *解压操作的例子
    unzipped_lists = zip(*zipped_lists)

    # 打印解压后的列表
    for item in unzipped_lists:
    print(item)

    输出:

    (1, 2, 3)
    ('a', 'b', 'c')
    ('x', 'y', 'z')

    在这个例子中,*操作符将先前由zip组合的元组解压,分别放回原始的列表。

    对batch_first参数的理解

    对于不同的网络层,输入的维度虽然不同,但是通常输入的第一个维度都是batch_size,比如torch.nn.Linear的输入(batch_size,in_features)torch.nn.Conv2d的输入(batch_size, C, H, W)

    RNN的输入是(seq_len, batch_size, input_size)batch_size位于第二维度!虽然可以将batch_size和序列长度seq_len对换位置,此时只需令batch_first=True

    但是为什么RNN输入默认不是batch first=True?这是为了便于并行计算

    因为cuDNN中RNN的API就是batch_size在第二维度。进一步讲,batch first意味着模型的输入(一个Tensor)在内存中存储时,先存储第一个sequence,再存储第二个,而如果是seq_len first,模型的输入在内存中,先存储每一个sequence的第一个元素,然后是第二个元素,两种区别如下图所示:

    img

    seq_len first意味着不同序列中同一个时刻对应的输入单元在内存中是毗邻的,这样才能做到真正的batch计算。

    - + \ No newline at end of file diff --git a/en/docs/Deep-Learning/intro/index.html b/en/docs/Deep-Learning/intro/index.html index c79134ada..2ee154b47 100644 --- a/en/docs/Deep-Learning/intro/index.html +++ b/en/docs/Deep-Learning/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    介绍

    欢迎来到笔记本的深度学习部分

    若更新不及时,欢迎通过 GitHub 联系交流

    有关论文笔记的说明

    为了节省写作时间,论文笔记部分的文章通常只讲述文章的方法论,Introduction 以及 Related Work 详情可以参考论文原文

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    这里 δ\delta 是从高斯分布 N(0,I)\mathcal{N}(0, I) 中采样的, σt\sigma_t 是时间步 tt 的噪声水平。以 xTN(0,I)x_T \sim \mathcal{N}(0, I) 开始,此过程生成一个样本 x0x_0 使得 x0p(xz)x_0 \sim p(x \mid z)​。

    双向注意力机制

    image-20240726151056117

    结合掩码生成模型的思想 MAR

    本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。

    掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。

    image-20240726151148969

    实验与结论

    对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测

    image-20240726152158539

    扩散过程 MLP 参数对性能的影响

    image-20240726152344064

    扩散过程采样步数对性能的影响

    image-20240726152515002

    温度对多样性和准确性的控制

    image-20240726152948583

    MAR 模型速度与效果的 trade-off

    对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。

    image-20240726152549655

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" index d1a3a102d..1ac036611 100644 --- "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" +++ "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" @@ -4,7 +4,7 @@ 自回归模型:LlamaGen | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">xg

    其中,xx 是输入向量,nn 是向量维度,gg​ 是可缩放的参数。

    RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。

  • 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。

    组成部分:

    • GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。
    • Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。
    SwiGLU(x)=σ(xW1+b1)(xW2+b2)\mathrm{SwiGLU}(x)=\sigma(xW_1+b_1)\odot(xW_2+b_2)

    其中,xx 是输入向量,W1,W2W_{1}, W_{2} 是权重矩阵,b1,b2b_1, b_2 是偏置向量,σ\sigma 是激活函数,通常为 GELU(高斯误差线性单元),\odot 表示逐元素乘法。

    SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。

  • 本文提出的 LlamaGen 模型的每一层都使用了 2D RoPE。

    RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。

    RoPE(xi)=xicos(θi)+xi+1sin(θi)\operatorname{RoPE}\left(x_i\right)=x_i \cdot \cos \left(\theta_i\right)+x_{i+1} \cdot \sin \left(\theta_i\right)
    • xix_i 是输入向量的第 ii 个元素。
    • θi\theta_i 是位置 ii 处的旋转角度,通常由固定的正弦和余弦函数生成。

    RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。

  • 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN

    AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。

    AdaLN(x)=xμ(x)σ(x)γ+β\operatorname{AdaLN}(x)=\frac{x-\mu(x)}{\sigma(x)} \cdot \gamma+\beta
    • xx 是输入向量。
    • μ(x)\mu(x)σ(x)\sigma(x) 分别是输入 xx 的均值和标准差。
    • γ\gammaβ\beta 是可训练的缩放和平移参数。

    在 AdaLN 中,均值 μ(x)\mu(x) 和标准差 σ(x)\sigma(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。

  • LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。

    • 训练阶段:

      在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。

    • 推理阶段:

      对于每个 token,其 logit g\ell_g 是通过以下方式形成的:

      g=u+s(cu)\ell_g = \ell_u + s(\ell_c - \ell_u)

      其中:

      • c\ell_c 表示条件logit,即基于输入文本提示的信息生成的logit。
      • u\ell_u 表示无条件logit,即不考虑任何条件信息时生成的logit。
      • ss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。

    通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。

    作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。

  • - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" index 2e1f03142..f37c7f914 100644 --- "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" +++ "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Autoregressive/index.html" @@ -4,7 +4,7 @@ 图像生成:自回归模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成:自回归模型

    自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。

    自回归模型的数学定义

    自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。

    假设有一个序列 x=(x1,x2,,xT)x=\left(x_1, x_2, \ldots, x_T\right) ,自回归模型的目标是学习条件概率分布 p(xtx<t)p\left(x_t \mid x_{<t}\right) , 即在给定序列前面部分 x<t=(x1,x2,,xt1)x_{<t}=\left(x_1, x_2, \ldots, x_{t-1}\right) 的情况下,预测当前值 xtx_t

    对于一个给定的序列 xx ,自回归模型的联合概率分布可以分解为以下形式:

    p(x)=t=1Tp(xtx<t)p(x)=\prod_{t=1}^T p\left(x_t \mid x_{<t}\right)

    在图像生成任务中,图像被看作是一个二维序列。在传统的自回归图像生成模型(VQVAE、VQGAN 等)将图像的像素视作一个一维序列,通过条件概率分布 p(xi,jx<i,j)p\left(x_{i, j} \mid x_{<i, j}\right) 来生成每个像素值 xi,jx_{i, j}

    Autoregressive 模型时间线

    PixelRNN(2016)

    PixelRNN 是早期的自回归模型之一,它使用循环神经网络(RNN)来建模条件概率分布。由于 RNN 能够捕捉长序列依赖性,PixelRNN 能够生成高质量的图像,但是计算效率较低,因为每次生成一个像素都需要遍历整个序列。

    PixelCNN(2016)

    为了克服 PixelRNN 的计算瓶颈,PixelCNN 使用卷积神经网络(CNN)并引入了遮罩技术,确保每个像素仅依赖于其上方和左侧的像素。

    VQ-VAE(2017)

    科学空间:VQ-VAE 的简明介绍中,提到了 VQ-VAE 与之前的 PixelCNN 和 PixelRNN 的关系。

    受 PixelCNN 和 PixelRNN 专注于像素级的生成的启发,VQ-VAE(Vector Quantized Variational Autoencoder)提出了另一种方法,通过离散的潜在空间来建模数据。VQ-VAE 的主要贡献在于引入了向量量化层,将连续的潜在变量映射到一组离散的嵌入向量上,从而能够更高效地学习复杂的数据分布。

    主要思想:VQ-VAE(Vector Quantized Variational AutoEncoder)通过将连续的图像表示量化为离散的代码来进行图像生成。它引入了一个离散的代码本,将连续的潜在向量映射到离散的代码上,进行编码和解码。

    主要贡献

    • 采用向量量化方法,使得生成模型能够高效地处理离散代码。
    • 在生成模型中,离散化的潜在空间简化了模型的训练和推理过程。

    与之前模型的关系

    • VQ-VAE 在 VAEs(Variational AutoEncoders)的基础上,引入了离散的潜在空间,使得生成效果更好,训练更稳定。

    VQVAE-2(2019)

    VQVAE-2 是 VQ-VAE 的一个扩展版本,它引入了层次化的结构,使用多个层次的量化向量来建模不同尺度的特征,从而提高了模型的灵活性和生成图像的质量。

    主要思想:VQ-VAE-2 引入了多层级的离散潜在变量,通过多层级的自回归模型进行生成。它使用了层次化的编码器和解码器结构,更好地捕捉图像中的复杂结构。

    主要贡献

    • 引入了层次化的离散潜在空间,提高了生成图像的质量和分辨率。
    • 在多个层级上进行自回归生成,提高了模型对图像全局和局部信息的捕捉能力。

    改进点

    • 相较于 VQ-VAE,VQ-VAE-2 通过层次化的设计,显著提升了生成图像的细节和清晰度。

    VQGAN(2021)

    VQGAN 结合了 VQ-VAE 的思想和生成对抗网络(GANs)的优点。它使用编码器和解码器之间的量化瓶颈,并利用 GAN 框架来优化图像质量。VQGAN 在高分辨率图像生成方面表现出了强大的能力。

    主要思想:VQGAN(Vector Quantized Generative Adversarial Networks)结合了 VQ-VAE 的离散潜在表示和 GAN(Generative Adversarial Networks)的对抗训练,提升了生成图像的质量。

    主要贡献

    • 利用对抗训练,生成的图像更加逼真和细腻。
    • 通过结合 VQ-VAE 和 GAN 的优势,解决了各自方法的一些固有缺陷。

    改进点

    • 相较于 VQ-VAE-2,VQGAN 通过对抗训练机制,进一步提升了生成图像的视觉质量。

    RQTransformer(2021)

    RQTransformer 是一种改进的自回归模型,它利用了自注意力机制,能够有效地处理序列数据。相比于传统的自回归模型,RQTransformer 在大规模数据集上展现了更好的性能,尤其是在自然语言处理和图像生成任务中。

    主要思想:RQ-Transformer(Residual Quantization Transformer)结合了残差量化和 Transformer 架构,通过对潜在空间进行分块量化来提高生成效率和质量。

    主要贡献

    • 引入残差量化方法,提高了潜在空间的表示能力。
    • 结合 Transformer 架构,增强了对复杂图像结构的建模能力。

    改进点

    • 相较于 VQ-VAE 和 VQGAN,RQ-Transformer 在潜在空间表示上更为灵活,提高了生成图像的分辨率和质量。

    DALL-E(2021)

    主要思想:DALL-E 是 OpenAI 提出的一个基于 Transformer 的图像生成模型,能够根据文本描述生成图像。它使用了大规模的文本-图像对数据进行训练,并采用了自回归生成策略。其创新之处在于如何将文本和图像模态融合在一起。

    主要贡献

    • 展示了基于文本描述生成图像的强大能力。
    • 引入了大规模数据和 Transformer 架构,使得生成效果更加多样化和逼真。

    改进点

    • 相较于之前的图像生成模型,DALL-E 在生成多样性和一致性上有了显著提升,特别是在文本到图像的生成任务中表现出色。

    Parti(2022)

    Parti 是谷歌研究团队提出的一种模型,专注于分层次的图像生成。它首先生成图像的组成部分(如物体或场景元素),然后将这些部分组合成完整的图像。Parti 在保持图像细节的同时,还能够控制图像的语义内容。

    主要思想:Parti 是一个基于 Transformer 的图像生成模型,能够通过部分图像生成剩余部分。它采用了多阶段生成策略,通过逐步细化生成图像,保证生成效果的一致性和逼真性。

    主要贡献

    • 引入了多阶段的生成策略,提高了生成图像的一致性。
    • 在部分图像生成任务中表现出色,能够根据现有图像生成补全部分。

    改进点

    • 相较于 DALL-E 和其他自回归模型,Parti 在生成图像的一致性和细节捕捉上有了显著改进。
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" index 86eaf2182..c448ccb6b 100644 --- "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" +++ "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Diffusion-Models/index.html" @@ -4,7 +4,7 @@ 扩散模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" index 415ce3cbc..75986fd1c 100644 --- "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" +++ "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Image-and-Video-Generative-Foundation-Model/index.html" @@ -4,7 +4,7 @@ 图像生成和视频生成基座模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成和视频生成基座模型

    图像生成基座模型

    四种生成范式

    GAN

    使用对抗生成策略,判别器根据真实图像判断生成器生成的图像是否逼真,二者交替训练。

    GAN

    Autoregressive(AR)

    自回归生成范式,利用输入自身之前各期 [x1,...,xt1][x_1,...,x_{t-1}] 来预测本期 xtx_t​​ 的表现。在图像生成中,自回归模型可以逐像素或逐块生成图像,每一步的生成基于之前已经生成的部分。自回归模型的优点在于能够捕捉图像中的复杂依赖关系,从而生成更加逼真的图像。

    代表模型:VAE、VQVAE(2017)

    VAE 和 VQ-VAE 都通过学习数据分布的潜在表示来生成新的样本。VAE 使用高斯分布来表示潜在空间,而 VQ-VAE 使用离散的代码簿来表示潜在空间。

    具体来说,VAE 的工作原理是通过一个编码器将输入数据映射到一个潜在空间,然后通过一个解码器将潜在空间中的向量重构为原始数据。在训练过程中,VAE 会学习到数据分布的潜在表示,并能够生成与训练数据类似的新样本。

    VQ-VAE 的工作原理与 VAE 类似,但它使用离散的代码簿来表示潜在空间。VQ-VAE 首先将编码器输出的向量进行量化,将其映射到代码簿中的最近向量。然后,解码器使用代码簿中的向量来重构原始数据。VQ-VAE 的优势在于,它可以学习到数据中的离散结构和语义信息,并可以避免过拟合。

    代表模型:VQGAN(2021)
    代表模型:ViT-VQGAN(2022)

    image-20240705102041673

    VQ (Vector Quantization) 的改进:在原有的 VQ-VAE 基础上进行了改进,通过引入更复杂的量化器和更强大的解码器,使得生成的图像质量得到了显著提升。

    GAN (Generative Adversarial Network) 的结合:将 VQ 和 GAN 结合,利用 Style-GAN 的判别器来提升生成图像的细节和逼真度。

    Transformer 的使用:将 VQ-VAE 和 VQGAN 的 Encoder、Decoder 中原来使用的 CNN 结构替换为 ViT。一是因为数据量丰富,二是 CNN 的归纳偏置对模型的约束是有限的,三是计算效率和重建质量更显著。

    代表模型:VAR

    image-20240705104016645

    上图展示了不同方式的自回归生成模型,VAR 方法在每个时间序列节点上都根据之前各时间步的输出预测出当前时间步的,且每个时间步均预测出完整的目标图像,且分辨率随时间推移逐步提升至高清图像,即 next-resolution prediction

    image-20240705103947258

    Masked-prediction model(Non-AR)

    代表模型:MaskGIT: Masked Generative Image Transformer

    image-20240705110446519

    这种生成模型依赖一个预训练好的 VQGAN,能将图片 tokenize 成一组量化后的 visual tokens。VQGAN 编码图片得到的 tokens 是离散的,所有可能的 tokens 构成一个 codebook,假设其中包含 KK 个 token 选项。MVTM 训练就是指给定 masked tokens,让网络预测这些被 masked 掉的 tokens。对于每个被 masked 掉的 token,网络给出一个 KK 维向量预测当前 token 属于 codebook 中每个 token 的可能性,类似于完成一个 KK 分类任务。

    image-20240705110625208

    上图展示了传统 AR 模型和 MaskGIT 在推理过程中的区别。与之前 SOTA 使用的 Autoregressive 方法——逐行再逐列依次生成 image token 不同,MaskGIT 在推理时的每次迭代从一组 masked tokens 中预测出每个位置出现 visual token 的可能性,然后仅保留那些置信度足够高的位置的 visual token,然后继续将当前预测结果再送入网络进行下一轮预测,直到所有位置的 visual token 都被预测出来。与之前常用的自回归方法不同,每轮预测都是基于对图片的全局感知,可以并行预测。这样网络仅需 8 次前向传播就能生成高质量的图片。

    顺序解码与 MaskGIT 计划并行解码的比较。第 1 行和第 3 行是每次迭代时的输入潜在掩码,第 2 行和第 4 行是每次迭代时每个模型生成的样本。MaskGIT 的解码从所有未知代码(浅灰色标记)开始,逐渐用更多更分散的预测并行填充潜表征(深灰色标记),预测标记的数量随着迭代急剧增加。MaskGIT 只用了 8 次迭代就完成了解码,而顺序法需要 256 轮。

    代表模型:MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis

    Diffusion Model

    如何训练优秀的生成基座模型?

    1. 数据:Re-caption 与 text encoder(T5)
    2. 结构:从 U-Net 到纯 Transformer,代表论文 Scalable Diffusion Models with Transformers
    3. 训练范式:使用 Rectified Flow 加速生成过程,参考链接 Diffusion学习笔记(十二)——Rectified Flow

    image-20240705151423108

    视频生成基座模型

    参考链接
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" index 05cf18689..6d3bfc2e3 100644 --- "a/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" +++ "b/en/docs/Deep-Learning/\345\233\276\345\203\217\347\224\237\346\210\220\344\270\216\350\247\206\351\242\221\347\224\237\346\210\220\345\244\247\346\250\241\345\236\213/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" @@ -4,7 +4,7 @@ 自回归模型:VAR | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    自回归模型:VAR

    原文链接:https://arxiv.org/pdf/2404.02905

    摘要

    We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.

    研究背景与动机

    通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。

    • 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证
    • 性能有待提升
    image-20240711163258584

    上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。

    问题发现与提出

    首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程:

    1. 输入 raw image,Encoder 得到对应的 feature map。

      f=E(im)f=\mathcal{E}(im)
    2. 输入feature map,Quantizer 得到对应的量化 image token。

      q=Q(f)q=\mathcal{Q}(f)

      在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZ 中的 code。

      q(i,j)=(argminv[V]lookup(Z,v)f(i,j)2)[V]q^{(i,j)}=\left(\arg\min_{v\in[V]}\|\text{lookup}(Z,v)-f^{(i,j)}\|_2\right)\in[V]
    3. Decoder 通过接收在 Codebook 中查找得到的 f^\hat{f} 生成重构的图像。

      f^=lookup(Z,q)\hat{f}=\operatorname{lookup}(Z,q)
      im^=D(f^)\hat{im}=\mathcal{D}(\hat{f})
      L=imim^2+ff^2+λPLP(im^)+λGLG(im^)\mathcal{L}=\|im-i\hat{m}\|_2+\|f-\hat{f}\|_2+\lambda_\text{P}\mathcal{L}_\text{P}(i\hat{m})+\lambda_\text{G}\mathcal{L}_\text{G}(i\hat{m})

    下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。

    image-20240711171834053

    文章发现了目前传统 VAR 模型存在的三个问题。

    1. VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_t 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt1)(x_1, x_2, ..., x_{t-1}),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。

      作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。

      image-20240711171636359

      作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。

      This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention.

    2. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。

    3. 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,,xn×n)x=(x_1,x_2,\ldots,x_{n\times n}) 的 token 序列,需要 O(n2)\mathcal{O}(n^{2}) 的注意力步骤以及 O(n6)\mathcal{O}(n^{6}) 的计算复杂度。

    主要方法与贡献

    主要方法

    本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction

    image-20240711174347249

    自回归过程从分辨率为 1×11\times1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。

    通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 fRh×w×Cf \in \mathbb{R}^{h \times w \times C} 量化为 KK 个多尺度标记图 (r1,r2,,rK)(r_1, r_2, \ldots, r_K),每个图的分辨率 hk×wkh_k \times w_k 逐步增加,最终达到 rKr_K 与原始特征图的分辨率 h×wh \times w 匹配。自回归似然性公式为:

    p(r1,r2,,rK)=k=1Kp(rkr1,r2,,rk1)p(r_1, r_2, \ldots, r_K) = \prod_{k=1}^{K} p(r_k \mid r_1, r_2, \ldots, r_{k-1})

    其中每个自回归单元 rk[V]hk×wkr_k \in [V]^{h_k \times w_k} 是包含 hk×wkh_k \times w_k 个标记的第 kk 个尺度的标记图,而序列 (r1,r2,,rk1)(r_1, r_2, \ldots, r_{k-1}) 作为 rkr_k 的“前缀”。在第 kk 个自回归步骤中,所有 rkr_k 中的 h_k \times w_k 标记的分布将并行生成,并以 rkr_k 的前缀和关联的第 kk 个位置嵌入图为条件。如下图所示。

    请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_k 只能关注其前缀 rkr_{\leq k},从而满足 Autoregressive 模型的数学假设前提。

    image-20240711180036964

    本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。

    模型主要结构

    Multi-scale VQ quantizer

    首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。

    image-20240711182022796

    VAR Transformer

    作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。

    image-20240712091839372

    在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_k 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。

    单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KK​。

    局限性与展望

    1. 期待更好的 VQVAE tokenizer 可以提升 VAR 模型的能力。

    2. 本文只实现了 class-conditional generation,可以继续扩展为多模态任务,text-prompt generation。目前我认为比较常见的一个想法就是结合 T5 text-encoder,将文字

    3. 视频生成。可以将视频看作是 3D pyramids,尝试 3D next-scale prediction

      作者表示,与 Diffusion Model-based 的视频生成模型 SORA 相比,由于 VAR 模型在结构与上与 LLMs 更相似,可以更好地与 LLMs 的技术相结合。

    总结

    本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。

    对文章开篇提出的问题的解决:

    1. 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。
    2. 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。
    3. 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\mathcal{O}(n^2) 次解码迭代和 O(n6)\mathcal{O}(n^6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\mathcal{O}(log(n)) 次迭代和 O(n4)\mathcal{O}(n^4)​ 次总计算量。

    文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" index f1fec4a2e..6b4dafbc2 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/AlexNet/index.html" @@ -4,7 +4,7 @@ AlexNet | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    AlexNet

    背景

    AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。

    标志着新的一轮神经网络热潮的开始

    image

    新的概念和技术

    • ReLU激活函数
    • Dropout正则化、丢弃法
    • 最大池化MaxPooling

    与LeNet比较

    1. 由于输入的图片更大,设置了更大的卷积核尺寸和步长
    2. 更大的池化窗口,使用最大池化
    3. 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式
    4. 激活函数从Sigmoid改成了ReLU,减缓梯度消失
    5. 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化
    6. 使用了数据增强data augmentation
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" index cba19888f..d30b743f7 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/ConvolutionalLayer/index.html" @@ -4,7 +4,7 @@ 卷积层 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    卷积层

    1x1 卷积

    kh=kw=1k_h=k_w=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道

    相当于输入形状为HW×ciHW \times c_i,权重形状为co×cic_o \times c_i的全连接层


    二维卷积层

    • 输入:ci×H×Wc_i \times H \times W

    • 核:co×ci×kh×kwc_o \times c_i \times k_h \times k_w

    • 偏差:co×cic_o \times c_i

    • 输出:co×H×Wc_o \times H' \times W'

    • 输出H以及WH'以及W'的计算:

      shapeoutput=shapeinputsizekernel+2paddingstride+1(1)shape_{output} = \frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \tag{1}
    • 计算复杂度:O(co×ci×H×W×H×W)O(c_o \times c_i \times H \times W \times H' \times W')

    • 总结:

      1. 输出的通道数是卷积层的超参数
      2. 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果
      3. 每个输出通道有独立的三维卷积核
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" index f97337028..1f6d50218 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/FromFullyConnectedLayerToConvolutionalLayer/index.html" @@ -4,7 +4,7 @@ 从全连接到卷积 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    从全连接到卷积

    卷积的诞生&核心特征

    1. 现代图片具有较大的像素,使用全连接层导致参数爆炸
    2. 针对图片的特征提取和模式识别,应具备以下原则:
      • 平移不变性
      • 局部性

    重新考察全连接层

    1. 将全连接层的一维输入和输出变换为二维的矩阵,公式如下

      其中i,ji,j代表输出神经元的二维索引坐标,h,wh,w代表输入神经元的二维索引坐标

    yi,j=h,wwi,j,h,wxh,w(1)y_{i,j}=\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \tag{1}
    1. 进一步将权重以及输入的索引变形,公式如下

      其中a,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接

    yi,j=h,wwi,j,h,wxh,w=a,bvi,j,a,bxi+a,j+b(2)y_{i,j}=\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \tag{2}
    1. 在公式(2)中,当i,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。

      为了解决这一问题,将公式(2)变形为如下

      此时参数权值共享,满足了平移不变性

      yi,j=a,bvi,j,a,bxi+a,j+b=a,bva,bxi+a,j+b(3)y_{i,j}=\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \tag{3}
    2. 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,b可缩小范围,并不用来实现全连接,此时a,ba,b代表着卷积核的感受野,即kernel size

    3. 此时完成了全连接层到卷积层的转换


    总结

    1. 对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接
    yi,j=a,bva,bxi+a,j+b=a=ΔΔb=ΔΔva,bxia,j+b(4)y_{i,j}=\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\sum_{a=-\Delta}^{\Delta}\sum_{b=-\Delta}^{\Delta}{v_{a,b}*x_{i_a,j+b}} \tag{4}
    1. 卷积层输出形状的计算
      shapeoutput=shapeinputsizekernel+2paddingstride+1(5)shape_{output} = \frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \tag{5}
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" index b42be1e75..fc9adc1b5 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/K-foldCross-validation/index.html" @@ -4,7 +4,7 @@ K-fold cross-validation | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    K-fold cross-validation

    What is k-fold cross-validation?

    K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kk partitions, or folds, and then train and test the model kk times, using a different fold for testing each time.


    How does k-fold cross-validation work?

    In each iteration of k-fold cross-validation, one of the kk folds is used as the test set, while the remaining k1k-1 folds are used as the training set. This process is repeated kk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.


    Summary

    • train set: to train the model and do parameter update
    • validation set: to choose hyperparameter
    • test set: the final test, only used once
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" index 528cf5dda..fcb625733 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LeNet/index.html" @@ -4,7 +4,7 @@ LeNet | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    LeNet

    背景

    LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。

    LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。


    代码实现

    import torch
    import numpy as np
    from torch import nn as nn
    from torch.nn import functional as F
    from d2l import torch as d2l
    from matplotlib import pyplot as plt
    import os

    os.environ['http_proxy'] = 'http://127.0.0.1:7890'
    os.environ['https_proxy'] = 'https://127.0.0.1:7890'


    class LeNetReshape(nn.Module):
    def __init__(self):
    super(LeNetReshape, self).__init__()

    def forward(self, x):
    return x.reshape(-1, 1, 28, 28)


    class LeNet5(nn.Module):
    def __init__(self):
    super(LeNet5, self).__init__()
    self.net = torch.nn.Sequential(
    LeNetReshape(),
    # 激活函数应为Sigmoid
    nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Flatten(),
    nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(),
    nn.Linear(120, 84), nn.Sigmoid(),
    nn.Linear(84, 10))

    def forward(self, x):
    return self.net(x)


    def evaluate_accuracy_gpu(net, data_iter, device=None):
    if isinstance(net, torch.nn.Module):
    net.eval()
    if not device:
    device = next(iter(net.parameters())).device
    metric = d2l.Accumulator(2)
    for X, y in data_iter:
    if isinstance(X, list):
    X = [x.to(device) for x in X]
    else:
    X = X.to(device)
    y = y.to(device)
    metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计
    return metric[0] / metric[1]


    def accuracy(y_hat, y):
    return torch.sum(y_hat.argmax(dim=1) == y)


    def train(net, train_iter, test_iter, num_epochs, lr, device):
    def init_weights(m):
    if type(m) == nn.Linear or type(m) == nn.Conv2d:
    nn.init.xavier_uniform_(m.weight)

    net.apply(init_weights)
    net.to(device)
    optimizer = torch.optim.SGD(net.parameters(), lr=lr)
    loss = torch.nn.CrossEntropyLoss()
    loss.to(device)
    animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs],
    legend=['train loss', 'train acc', 'test acc'])
    timer, num_batches = d2l.Timer(), len(train_iter)
    metric = d2l.Accumulator(3)
    net.train()
    for epoch in range(num_epochs):
    for batch, (X, y) in enumerate(train_iter):
    timer.start()
    optimizer.zero_grad()
    X, y = X.to(device), y.to(device)
    y_hat = net(X)
    l = loss(y_hat, y)
    l.backward()
    optimizer.step()
    metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel())
    timer.stop()
    train_l = metric[0] / metric[2]
    train_acc = metric[1] / metric[2]
    if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1:
    animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None))
    test_acc = evaluate_accuracy_gpu(net, test_iter)
    animator.add(epoch + 1, (None, None, test_acc))
    print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}')
    print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}')
    plt.show()

    batch_size = 256
    train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
    lr, num_epochs = 0.9, 10
    lenet = LeNet5()
    train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

    问题

    在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" index bb667dac9..8c15f75c6 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/LogisticRegression/index.html" @@ -4,7 +4,7 @@ 关于Logistic Regression | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    关于Logistic Regression

    什么是Logistic Regression

    Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。

    逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。


    逻辑回归(Logistic Regression)和线性回归(Linear Regression)

    • 线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。
    • 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。
    • 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。

    逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?

    从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。


    为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?

    逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。

    逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。

    acc=I(predi==yi)len(Y)(1)acc = \frac{\sum{I(pred_i==y_i)}}{len(Y)} \tag{1}

    如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况:

    1. gradient = 0 if accuracy unchanged but weights changed:

      xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5    print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15    print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python

    2. gradient not continuous since the number of correct is not continunous:

      当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" index d7ca8dd4c..42c4eba68 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/Perceptron/index.html" @@ -4,7 +4,7 @@ Perceptron | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Perceptron

    什么是感知机

    感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。


    详细原理

    1. 输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n),表示一个样本的各个特征值。

    2. 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n),表示每个特征对应的权重。

    3. 偏置项:偏置项bb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。

    4. 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=wx+bz=w*x+b

    5. 阈值函数:将输入信号zz带入阈值函数,如符号函数sign(z)sign(z),即可得到分类结果。

    6. 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即

      L(y,z)=max(0,yz)(1)L(y,z)=max(0,-y*z) \tag{1}

      其中yy是样本的真实标签,zz是预测值。

    7. 参数更新:根据当前样本误分类情况来对权值向量ww和偏置项bb进行迭代更新。

    8. 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。

    感知机训练流程伪代码如下所示:

    initialize w = 0 and b = 0
    repeat
    if yi * zi <= 0 then
    w = w + yi * xi and b = b + yi
    end if
    until all classified correctly

    总结

    • 感知机是一个二分类模型,最早的AI模型之一
    • 求解算法等价于使用批量大小为1的梯度下降
    • 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" index ed4e40c0b..42b8aab08 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PoolingLayer/index.html" @@ -4,7 +4,7 @@ 池化层 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    池化层

    卷积对像素位置信息是敏感的

    卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。

    假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。


    池化层的作用

    池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。

    但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。

    1. 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息
    2. 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。
    3. 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。

    池化的实现

    池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。

    最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" index b39953683..4ceb2895d 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/PytorchBasics/index.html" @@ -4,7 +4,7 @@ PyTorch基础 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    PyTorch基础

    常用函数部分

    1. concat与stack函数

      stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度

      concat函数对输入的张量在指定维度进行拼接,没有创建新的维度

      # stack和concat函数
      a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩
      b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩
      c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学)
      print(c.shape) # torch.Size([2, 4, 3])
      d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩
      print(d.shape) # torch.Size([4, 6])
    2. list和tensor乘法不同之处

      list的*乘法是复制元素,改变list的shape

      tensor的*乘法是对tensor中的元素进行点乘计算

      a = torch.tensor([[3, 3, 3, 3]])
      b = [3] # list的*乘是复制元素进行扩展
      print(a * 3) # tensor([[9, 9, 9, 9]])
      print(b * 3) # [3, 3, 3]
    3. 最大值 / 最小值索引:argmax / argmin

      需要通过参数dim指定操作的维度,dim的理解

      • 官方解释:The dimension to reduce

      • 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度

      # 最大值最小值索引
      a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3]
      print("argmax output: ", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0])
    4. Python zip函数

      zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素

      a = torch.tensor([1, 2, 3])
      b = torch.tensor([4, 5, 6])
      c = zip(a, b)
      for i in c:
      print(i)
      '''
      (tensor(1), tensor(4))
      (tensor(2), tensor(5))
      (tensor(3), tensor(6))
      '''
      a = torch.tensor([[1, 2, 3], [3, 2, 1]])
      b = torch.tensor([[4, 5, 6], [6, 5, 4]])
      c = zip(a, b)
      for i in c:
      print(i)
      '''
      (tensor([1, 2, 3]), tensor([4, 5, 6]))
      (tensor([3, 2, 1]), tensor([6, 5, 4]))
      '''
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" index 9bf04b11f..c5c305d2f 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\255\243\345\210\231\345\214\226\344\270\216\346\235\203\351\207\215\350\241\260\351\200\200/index.html" @@ -4,7 +4,7 @@ 正则化与权重衰退 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    正则化与权重衰退

    tip

    正则化与权重衰退

    什么是正则化

    正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。

    正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。

    常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。

    L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。

    L1正则化

    min l(w,b) subject to w12θ(1)min \space l(w, b) \space \text{subject to} \space \Vert w \Vert^2_1 \leq \theta \tag{1}
    • L1正则化限制权重参数的L1范数小于某一特定的超参数
    • 通常不限制偏移bb
    • 更小的超参数θ\theta意味着更强的正则项

    L2正则化与权重衰退

    L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示:

    l(w,b)+λ2w12(2)l(w, b) + \frac{\lambda}{2} \Vert w \Vert^2_1 \tag{2}

    其中,λ\lambda是一个正则化系数超参数

    此时在更新梯度时,具有如下公式

    w(l(w,b)+λ2w12)=l(w,b)w+λw(3)\frac{\partial}{\partial w} \big(l(w, b) + \frac{\lambda}{2} \Vert w \Vert^2_1 \big) = \frac{\partial l(w, b)}{\partial w} + \lambda w \tag{3}
    wt+1=(1ηλ)wt+ηl(wt,bt)wt(4)w_{t+1}=(1-\eta \lambda)w_t + \eta \frac{\partial l(w_t, b_t)}{\partial w_t} \tag{4}

    通常ηλ<1\eta \lambda < 1,因此又叫做权重衰退

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" index 1b4119e0e..01bf987b9 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\267\261\345\272\246\345\217\257\345\210\206\347\246\273\345\215\267\347\247\257/index.html" @@ -4,7 +4,7 @@ 深度可分离卷积 | 培洋的笔记本📒 - + @@ -14,7 +14,7 @@ 使用3×33 \times 3卷积核,padding=1,stride=1padding=1, stride=1

    常规卷积

    卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3)

    其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算

    img

    不考虑卷积偏置,参数量为

    3×3×3×4=108(1)3 \times 3 \times 3 \times 4 = 108 \tag{1}

    深度可分离卷积

    逐通道卷积-Depthwise Convolution

    img

    使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为

    3×3××3=27(2)3 \times 3 \times \times 3 = 27 \tag{2}

    代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可

    逐点卷积-Pointwise Convolution

    img

    使用1×11 \times 1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为

    1×1×3×4=12(3)1 \times 1 \times 3 \times 4 = 12 \tag{3}
    tip

    图片源自知乎

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" index eefc5e39a..4176d2076 100644 --- "a/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" +++ "b/en/docs/Deep-Learning/\345\237\272\347\241\200\347\237\245\350\257\206/\346\277\200\346\264\273\345\207\275\346\225\260\344\270\216Loss\347\232\204\346\242\257\345\272\246/index.html" @@ -4,7 +4,7 @@ 激活函数与Loss的梯度 | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">(6)

    Cross Entropy Loss 交叉熵损失

    信息熵

    Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。

    It's a measure of surprise, higher entrpoy means less information and higher uncertainty.

    假设一个离散型随机变量XX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_n,而取值事件xix_i发生的概率为PiP_i,则其信息熵的定义为

    H(P)=inPi log2(Pi)=inPi log2(1Pi)(7)\begin{align} H(P) &= -\sum_i^n{P_i}\space{log_2(P_i)} \\ &= \sum_i^n{P_i}\space{log_2({\frac{1}{P_i}}}) \tag{7} \end{align}

    KL散度

    在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。

    存在两个概率分布P和Q,其离散型随机变量XX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_n,而取值事件xix_i发生的概率分别为Pi,QiP_i,Q_i.

    KL散度是非对称的,即

    DKL(P  Q)DKL(Q  P)(8)D_{KL}(P \space || \space Q) \neq D_{KL}(Q \space || \space P)\tag{8}
    DKL(P  Q)=Pi [log2(Pi)log2(Qi)](9)D_{KL}(P \space || \space Q) = \sum{P_i\space [log_2(P_i)-log_2(Q_i)]}\tag{9}

    特别的,DKL(PLabel  QPred)D_{KL}(P_{Label} \space | \space Q_{Pred})表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布

    交叉熵

    衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为

    H(P, Q)=H(P)+DKL(P  Q)=Pi log2(Qi)(10)\begin{align} H(P, \space Q) &= H(P) + D_{KL}(P\space || \space Q) \\ &= - \sum{P_i}\space{log_2({Q_i})} \tag{10} \end{align}

    PyTorch中的CrossEntropyLoss

    torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss.

    import torch.nn as nn

    # 使用NLLLoss实现
    nllloss = nn.NLLLoss()
    predict = torch.Tensor([[2, 3, 1], [3, 7, 9]])
    predict = torch.log(torch.softmax(predict, dim=-1))
    label = torch.tensor([1, 2])
    nllloss(predict, label)
    # output: tensor(0.2684)

    # 使用CrossEntropyLoss实现
    cross_loss = nn.CrossEntropyLoss()
    predict = torch.Tensor([[2, 3, 1], [3, 7, 9]])
    label = torch.tensor([1, 2])
    cross_loss(predict, label)
    # output: tensor(0.2684)
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" index b793f5ac6..04c0f2ca1 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Attention-Is-All-You-Need/index.html" @@ -4,7 +4,7 @@ NeurIPS 2017: Attention Is All You Need | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2017: Attention Is All You Need

    Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。

    整体结构

    Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。

    image-20231119110150110

    Encoder

    整体结构

    Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。

    image-20231115164324713

    位置编码(Positional Encoding)

    对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。

    公式如下所示,其中pospos指的是该词汇在整个输入句子中的位置,2i2i以及2i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}次位置编码。

    PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{1}
    PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{2}

    根据三角函数的性质,对于pos+kpos+k位置的嵌入向量的某一维度(2i2i2i+12i+1)而言,可以表示为pospos位置与kk位置的嵌入向量的2i2i2i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。

    PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)(3)\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i+1)+PE(pos,2i+1)\times PE(k,2i)\\PE(pos+k,2i+1)=PE(pos,2i+1)\times PE(k,2i+1)-PE(pos,2i)\times PE(k,2i)\end{array} \tag{3}

    最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。

    InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \tag{4}

    具体结构

    image-20231115164324713

    输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。

    Decoder

    Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。

    自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。

    非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。

    Autoregressive Decoder(AT)

    整体结构

    image-20231119102540689

    词汇表(Vocabulary)

    词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。

    Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。

    image-20231119094748152

    Begin符号

    解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。

    特殊符号

    Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。

    Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。

    End符号

    在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。

    image-20231119102220262

    image-20231119102159884

    掩码多头自注意力机制(Masked Multi-Head Self-Attention)

    为什么使用掩码多头自注意力

    掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention

    观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示

    掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。

    具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^i在计算注意力分数时,只将aia^i的query向量与a1a^1aia^{i}ii个key向量做dot product,而不考虑aia^i之后的输入的key。

    tip

    对于第ss个时间步,Masked Mutil-Head Self-Attention的输入是时间步ss之前Decoder生成的所有输出单词的嵌入表示。

    image-20231119095632569

    交叉注意力(Cross-Attention)

    交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。

    image-20231119103201335

    交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。

    在交叉注意力中,每次计算注意力得分的query来自解码器key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。

    image-20231119142212757

    Non-Autoregressive Decoder(NAT)

    image-20231119103112168

    训练(Training)

    损失函数

    在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。

    Transformer 的整体训练过程一般分为以下几个步骤:

    1. 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。
    2. 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。
    3. 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。
    4. 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。

    整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。

    需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。

    Teacher Forcing

    在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。

    因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。

    image-20231119155803489

    但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第ii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。

    Teacher Forcing与Masked Multi-Head Self-Attention

    参考文献:MultiHead-Attention和Masked-Attention的机制和原理

    与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。

    具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1词汇向量输入时,在Decoder中,voc1voc_1与自身计算注意力分数,于是有

    [o1]=[α1,1][v1](5)\begin{bmatrix}o_1\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\end{bmatrix}\tag{5}

    我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc2voc_2的情况,于是有

    [o1o2]=[α1,1α2,1α1,2α2,2][v1v2](6)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&\alpha_{2,1}^{\prime}\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{6}

    然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是

    [o1o2]=[α1,10α1,2α2,2][v1v2](7)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&0\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{7}

    继续扩展,当有nn个输入词汇时,应该有

    [o1o2on]=[α1,100α1,2α20α1,nα2,nαn,n][v1v2vn](8)\begin{bmatrix}o_1\\o_2\\\vdots\\o_n\end{bmatrix}=\begin{bmatrix}\alpha'_{1,1}&0&\cdots&0\\\alpha'_{1,2}&\alpha'_2&\cdots&0\\\vdots&\vdots&&\vdots\\\alpha'_{1,n}&\alpha'_{2,n}&\cdots&\alpha'_{n,n}\end{bmatrix}\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}\tag{8}

    因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。

    在源码中,有如下片段实现掩码:

    if mask is not None:
    scores = scores.masked_fill(mask == 0, -1e9)

    p_attn = scores.softmax(dim=-1)

    在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" index 6d5b9e49a..fda789f5f 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Diffusion-Model/index.html" @@ -4,7 +4,7 @@ 扩散模型(Diffusion Model) | 培洋的笔记本📒 - + @@ -56,7 +56,7 @@ M834 80h400000v40h-400000z">1αtϵθ(xt,t))+σtz(2)

    其中,xt\mathbf{x}_t代表上一步骤中输出的降噪后的图像,xt1\mathbf{x}_{t-1}代表当前步骤即将输出的降噪后的图像,ϵθ\epsilon_\theta代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\bar{\alpha}_1,\bar{\alpha}_2,...\bar{\alpha}_T以及α1,α2,...αT\alpha_1,\alpha_2,...\alpha_T是两组权重序列;

  • 结束本次for循环;

  • t=1t=1时,得到x0\mathbf{x}_0,即最终降噪后的图像。

  • image-20231203133323788

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" index 3e5e9eb3f..7b85a4169 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/GAN/index.html" @@ -4,7 +4,7 @@ 生成式对抗网络(GAN) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    生成式对抗网络(GAN)

    正确发音

    How to pronounce Adversarial?

    /ˌædvərˈseriəl/

    引言

    将随机分布作为输入

    生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。

    image-20231122102402231

    为什么要添加分布

    当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。

    核心思想

    GAN的工作原理:

    1. 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。
    2. 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。
    3. 判别器训练: 判别器被训练来正确分类真实数据和生成数据。
    4. 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。
    5. 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。

    训练的目标:

    • 生成器目标: 生成更逼真的数据,以欺骗判别器。
    • 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。

    GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。

    具体结构与作用

    GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。

    1. 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。
    2. 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。

    GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。

    生成器(Generator)

    • 结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。
    • 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。

    Unconditional Generation

    Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。

    对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。

    image-20231122104717264

    Conditional Generation

    判别器(Discriminator)

    • 结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。
    • 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。

    image-20231122104853941

    训练算法

    首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。

    第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。

    为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数:

    Lossreal=Expdata(x)[logD(x)](1)Loss_{real}=-E_{x\sim p_\text{data}{(x)}}[\log D(x)]\tag{1}

    其中,D(x)D(x)是判别器的输出,xx是真实样本,EE是数学期望。

    Lossfake=Ezpz(z)[log(1D(G(z)))](2)Loss_{fake}=-E_{z\sim p_z(z)}[log(1-D(G(z)))]\tag{2}

    其中,G(z)G(z)是生成器的输出,zz是随机噪声,EE是数学期望。

    将真实样本和生成样本的损失相加,形成判别器的总体损失。

    Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\tag{3}

    最小化损失函数,更新判别器的参数。

    image-20231122110917135

    第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。

    LG=Ezpz(z)[logD(G(z))](4)L_G=-E_{z\sim p_z(z)}[\log D(G(z))]\tag{4}

    其中,G(z)G(z)是生成器的输出,D(G(z))D(G(z))是生成样本输入到判别器后的输出,zz是随机噪声,EE是数学期望。

    image-20231122142205471

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" index e85a0ff4d..0f2925cc0 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Image-Generation-Models/index.html" @@ -4,7 +4,7 @@ 图像生成模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    图像生成模型

    回顾文字生成的两种方法

    在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。

    自回归方法(AR)

    Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。

    什么是ARM

    ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。

    image-20231125212727371

    若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。

    非自回归方法(NAR)

    若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。

    image-20231127103421435

    目前图像生成模型的共同点

    VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。

    大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(xy)P(x|y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。

    info

    总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。

    image-20231127104041455

    生成模型的共同结构

    Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。

    通用框架概览

    目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。

    • Text Encoder:根据输入的text prompt进行嵌入表示
    • Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况:
      1. 具有视觉意义但经过压缩比较模糊的图像
      2. 不具备视觉特征的矩阵(Latent Representation)
    • Decoder:以上述的“中间产物”作为输入,生成出高清图像

    通用框架的三个组成部分如下图所示:

    image-20231127173905238

    再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。

    其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。

    image-20231127195336960

    image-20231127195527792

    img

    根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。

    Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size.

    Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding

    image-20231127201338956

    Benchmark

    下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。

    FID(Fréchet Inception Distance)

    FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。

    在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。

    FID=μ1μ222+tr(Σ1+Σ22(Σ1Σ2)12)(1)\mathrm{FID}=\left\|\mu_1-\mu_2\right\|_2^2+\mathrm{tr}\left(\Sigma_1+\Sigma_2-2\left(\Sigma_1\Sigma_2\right)^{\frac12}\right)\tag{1}

    其中,μ1\mu_1μ2\mu_2分别是第一个和第二个高斯分布的均值向量;Σ1\Sigma_1Σ2\Sigma_2则是它们的协方差矩阵;tr()\mathrm{tr}(\cdot)表示矩阵的迹运算。

    高斯分布的均值向量从观测到的数据中计算出来的。对于一个nn-维高斯分布,其均值向量可以表示为一个长度为nn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。

    值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。

    image-20231127202031894

    CLIP Score

    CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型

    具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。

    image-20231128143336879

    通用框架解析

    Generation Model

    Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor

    中间产物是压缩图像

    当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。

    中间产物是Latent Representation

    中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation

    这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。

    Decoder

    Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料

    中间产物是压缩图像

    当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。

    image-20231128145010346

    中间产物是Latent Representation

    当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。

    具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。

    image-20231128150641374

    常见图像生成模型速览

    在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。

    变分自编码器(VAE)

    变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。

    image-20231127104842038

    tip

    VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。

    基于流的生成模型(Flow-Based Generative Model)

    基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。

    注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。

    image-20231127111749208

    生成对抗网络(GAN)

    GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。

    image-20231127113242641

    扩散模型(Diffusion Model)

    扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。

    image-20231127112447752

    DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。

    Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" index 07d20cac6..0874b628f 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Prompt Learning/Undergraduate-Dissertation/index.html" @@ -4,7 +4,7 @@ 本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究

    本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。

    依赖

    创建 Anaconda 虚拟环境

    conda create -n ipl python=3.8
    conda activate ipl

    安装依赖

    请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。

    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    pip install ftfy regex tqdm ninja
    pip install git+https://github.com/openai/CLIP.git

    下载预训练生成器

    预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。

    概述

    技术细节

    prompts 的初始化

    ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a

    source_prompts = [prompt_prefix + " " + args.source_class]
    target_prompts = [prompt_prefix + " " + args.target_class]

    源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。

    prompts 的 tokenize 与 embedding

    源域以及目标域的初始提示词接下来会进行 tokenize:

    source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device)
    # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐
    target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device)
    # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐

    tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_promptstarget_tokenized_prompts 的形状均为 (1, 77)。

    在提示词标记化之后,将进行嵌入表示 embedding:

    source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度
    target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度

    compute_text_features 的实现细节

    在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。

    训练 stage 1

    Z空间与W空间

    # Z空间到W空间的变换
    sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device)
    # (batch_size, 512)
    sample_w = net.generator_frozen.style(sample_z)
    # (batch_size, 512)

    Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。

    1. Z 空间(Latent Space Z)

      • Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。
      • 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。
    2. W 空间(Style Space W)

      • W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。

      • 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py

        '''mapping network'''
        layers = [PixelNorm()]

        for i in range(n_mlp):
        layers.append(
        EqualLinear(
        style_dim, style_dim, lr_mul=lr_mlp, activation="fused_lrelu"
        )
        )

        self.style = nn.Sequential(*layers)
    3. Z 空间与 W 空间的关系

      • 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。
      • Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。

    损失函数

    在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成:

    1. 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失;
    2. 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l
    3. 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。

    训练 stage 2

    确定目标域生成域需要更新的层

    在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。

    if self.training and self.auto_layer_iters > 0:
    self.generator_trainable.unfreeze_layers() # unfreeze
    train_layers = self.determine_opt_layers() # layer to train

    if not isinstance(train_layers, list):
    train_layers = [train_layers]

    self.generator_trainable.freeze_layers()
    self.generator_trainable.unfreeze_layers(train_layers) # unfreeze

    具体选择带更新网络层的策略:

    将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。

    之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。

    损失函数

    stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成:

    1. edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。
    2. target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。

    定量分析指标

    测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models

    参考文献:GAN 的几种评价指标

    1. Inception Score(IS)

      评估图像的质量和多样性

      质量:把生成的图片 xx 输入 Inception V3 中,得到输出 1000 维的向量 yy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(yx)p(y|x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。

      多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y) 熵很大(均匀分布)。

      因此,对于 IS 我们需要求的两个量就是 p(yx)p(y|x)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)

      p^(y)=1Ni=1Np(yx(i))\hat{p}(y)=\frac{1}{N}\sum_{i=1}^{N}p(y|\mathbf{x}^{(i)})

      Inception Score 的完整公式如下:

      IS=exp(Ex[KL(p(yx)p(y))])IS=\exp\left(\mathbb{E}_x[KL(p(y|x)||p(y))]\right)

      其中 Ex\mathbb{E}_x 表示对所有图像的期望,KL(p(yx)p(y))KL(p(y|x)||p(y)) 表示每张图像的 KL 散度,exp\exp 表示取指数。

      通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)

    2. Fréchet Inception Distance(FID)

      评估目标域的风格

      计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。

      FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58

    3. Single Image Fréchet Inception Score(SIFID)

      FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。

    4. Structural Consistency Score(SCS)

      评估图像的结构保存能力

    5. Identity Similarity(ID)

      评估图像的特征保存能力

    定量分析结果

    IS(Inception Score)↑

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney2.2962.6422.701
    FFHQPhoto→Anime Painting2.3202.4642.578
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e2.4892.7152.851
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf2.1732.4822.517
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    SFID(Single Fréchet Inception Distance)↓

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney845854
    FFHQPhoto→Anime Painting
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    新增功能

    支持自定义图像的风格迁移

    新增了对自定义图像进行风格迁移的功能。

    HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。

    使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。

    修改日志

    1. 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。
    2. 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。
    3. 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。
    4. 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。

    Web UI

    参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。

    分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能:

    1. 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像)
    2. 直接使用随机数生成源域图像并进行零样本跨域适应

    UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。

    部分效果展示图

    主页:

    image-20240426191139926

    人物画像的零样本域适应(初始状态):

    image-20240426191201479

    人物画像的零样本域适应(使用参考图像生成状态):

    image-20240425222843497

    宠物画像的零样本域适应(初始状态):

    image-20240426191227686

    宠物画像的零样本域适应(使用随机数生成状态):

    image-20240425223227958

    问题提出与改进

    改进:Mapper 结构的设计

    Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。

    改进后的 Mapper 结构:

    class TransformerMapperV2(nn.Module):
    """
    改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合
    同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突
    并在transformer encoder之后加入Pixel Norm以及全连接层
    """
    def __init__(self, opts, n_dim):
    super(TransformerMapperV2, self).__init__()
    self.opts = opts
    self.n_dim = n_dim

    layers = [] # transformer中有layer normalization,不需要进行PixelNorm

    # 自定义Transformer编码器层配置
    transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1)

    # 构建Transformer编码器
    self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2)
    layers.append(self.transformer_encoder)

    # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性
    layers.append(PixelNorm())
    self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.linear)

    # 最后一个全连接层,输出维度保持不变
    self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.final_linear)

    self.mapping = nn.Sequential(*layers).to(device)

    问题:训练阶段人工 prompts 的作用是什么?

    在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 "a photo of a",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。

    ctx_init 的作用(与域标签拼接后的 ctx_init)

    1. ctx_initcompute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。

    2. 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算;

      同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。

    templates 的作用

    templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}.

    原始 hhfq 数据集的模板共有 79 个字符串。

    ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。

    思考

    IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。

    如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。

    改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐

    对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。

    经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。

    因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。

    用于生成 prompts 的 GPT、Claude prompts

    中文提示词:

    针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。
    将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。

    英文提示词:

    For the task of converting a {source class} photo into a {target_class} photo,
    provide some text prompts describing the distinctive features of Disney character portraits.
    Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list,
    and output the entire Python list.

    对 global_clip_loss 的改进

    IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。

    对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。

    对 clip_directional_loss 的改进

    IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" index 95f285f00..ba01aef17 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Sampling-for-Generation/index.html" @@ -4,7 +4,7 @@ 生成模型中的采样技巧 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    生成模型中的采样技巧

    参考资料:Sampling for Text Generation

    引言

    生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。

    没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。

    为什么需要采样?

    生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如:

    • 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。
    • 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。
    • 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。

    长尾效应

    概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。

    在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。

    当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。

    采样技巧

    为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。

    温度(Temperature)

    温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。

    假设模型的原始概率分布为 p(xi)p(x_i),那么通过温度调整后的概率分布可以表示为:

    p(xi)=exp(log(p(xi))T)jexp(log(p(xj))T)p'(x_i) = \frac{\exp\left(\frac{\log(p(x_i))}{T}\right)}{\sum_j \exp\left(\frac{\log(p(x_j))}{T}\right)}
    • p(xi)p(x_i):表示原始模型对第 ii 个选项的预测概率。
    • TT:温度参数,一般是一个正数。

    T>1T > 1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。

    Top-k 采样

    Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。

    Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下:

    1. 获取模型输出的概率分布 P={p1,p2,,pV}P=\left\{p_1, p_2, \ldots, p_V\right\} ,其中 VV 是词汇表的大小

    2. 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_k

    3. 对于 CkC_k 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1

    4. 从归一化后的概率分布中随机采样一个候选项。

    公式化表示如下:

    Ck={wipi is among the top k probabilities in P}C_k=\left\{w_i \mid p_i \text{ is among the top k probabilities in }P\right\}
    pi=piwjCkpj for wiCkp_i^{\prime}=\frac{p_i}{\sum_{w_j \in C_k} p_j} \text { for } w_i \in C_k

    其中, pip_i^{\prime}​ 是重新归一化后的概率。

    Top-p 采样(Nucleus Sampling)

    Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。

    1. 获取模型输出的概率分布 P={p1,p2,,pV}P=\left\{p_1, p_2, \ldots, p_V\right\} ,其中 VV 是词汇表的大小
    2. 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),,(wV,pV)}\left\{\left(w_1, p_1\right),\left(w_2, p_2\right), \ldots,\left(w_V, p_V\right)\right\} ,其中 p1p2pVp_1 \geq p_2 \geq \ldots \geq p_V
    3. 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 pp,设这些候选项的集合为 CpC_p
    4. 对于 CpC_p 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1
    5. 从归一化后的概率分布中随机采样一个候选项
    Cp={wij=1ipjp}C_p=\left\{w_i \mid \sum_{j=1}^i p_j \geq p\right\}
    pi=piwjCppj for wiCpp_i^{\prime}=\frac{p_i}{\sum_{w_j \in C_p} p_j} \text { for } w_i \in C_p

    其中,pip_i^{\prime} 是重新归一化后的概率。

    结论

    采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" index 9261ff0f4..b7e703bc9 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Attention/index.html" @@ -4,7 +4,7 @@ 自注意力(Self-Attention) | 培洋的笔记本📒 - + @@ -34,7 +34,7 @@ M834 80h400000v40h-400000z">,以避免过大的点积值导致 softmax 函数饱和。
  • 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。
  • 加权求和

    • 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。
  • 多头自注意力

    在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。

    示例

    假设输入的文本序列长度为 L=5L=5,每个词向量的维度为 D=512D=512dk=512d_k=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \times 512。在计算注意力权重时,得到的矩阵形状为 5×55 \times 5。最后的注意力输出形状同样为 5×5125 \times 512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。

    自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。

    自注意力中的掩码 Mask

    自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。

    • 防止注意力机制关注填充(padding)标记
    • 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中
    • 在特定任务中屏蔽某些不相关的输入
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" index 8328c893e..77caf0430 100644 --- "a/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" +++ "b/en/docs/Deep-Learning/\345\244\247\346\250\241\345\236\213\345\237\272\347\241\200/Self-Supervised-Learning/index.html" @@ -4,7 +4,7 @@ 自监督学习(Self-Supervised Learning) | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    自监督学习(Self-Supervised Learning)

    tip

    在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。

    image-20231121113727141

    介绍

    自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。

    自监督学习的基本原理是,通过对输入数据进行某种变换操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。

    image-20231121124909759

    BERT(Bidirectional Encoder Representation from Transformers)

    下面以BERT为例,介绍自监督模型。

    结构

    BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。

    BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。

    使用 BERT 的一般步骤包括:

    1. 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。
    2. 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。
    3. 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。

    Self-Supervised Pretraining

    Masking Input

    BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。

    BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。

    L=1Ni=1Nyilog(pi)(1)L=-\frac1N\sum_{i=1}^Ny_i\log(p_i)\tag{1}

    其中:

    • NN是输出的概率分布向量的维度。
    • yiy_{i}是概率分布向量标签。
    • pip_{i}是模型预测的概率分布向量。

    image-20231121134420134

    Next Sentence Prediction

    image-20231121171808764

    Fine-tuning

    在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。

    首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。

    Benchmark: GLUE

    GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。

    1. MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。
    2. QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。
    3. QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。
    4. RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。
    5. STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。
    6. CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。
    7. MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。
    8. SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。
    9. WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。

    GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。

    image-20231121172718354

    Downstream Tasks

    Sentiment Analysis

    image-20231121203549320

    BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。

    下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。

    image-20231121203701613

    立场分析

    image-20231121205359709

    Extraction-based Question Answering

    BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。

    image-20231121205619437

    具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。

    image-20231121211218801

    image-20231121210938519

    其他应用

    虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。

    Why does BERT work?

    BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding

    BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。

    ——来自讯飞星火大模型

    虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。

    在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。

    因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。

    总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。

    ——来自腾讯混元大模型

    GPT: Generative Pre-trained Transformer

    GPT的结构是Transformer的Decoder部分,可以承担生成的任务。

    GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。

    image-20231122093825510

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" index 04e44952b..01e45c8e2 100644 --- "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" +++ "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Speaker Classification/index.html" @@ -4,7 +4,7 @@ Speaker Classification | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Speaker Classification

    实战练习

    Transformer实战练习,代码见Github仓库

    This is a practice of Transformer, follow the guide of Github Repo.

    image-20240113175506430

    Overview

    Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.

    Dataset

    The original dataset is VoxCeleb1.

    We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive.

    Screenshot 2024-01-13 163041

    Arguments:

    • data_dir: The path to the data directory.

    • metadata_path: The path to the metadata.

    • segment_len: The length of audio segment for training.

    The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data.

    data directory/
    ├── mapping.json
    ├── metadata.json
    ├── testdata.json
    └── uttr-{random string}.pt

    This is also the assignment solution of ML2021Spring HW4.

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" index db01b82a6..9a4f04e8e 100644 --- "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" +++ "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Undergraduate-Dissertation/index.html" @@ -4,7 +4,7 @@ 本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究

    本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。

    依赖

    创建 Anaconda 虚拟环境

    conda create -n ipl python=3.8
    conda activate ipl

    安装依赖

    请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。

    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    pip install ftfy regex tqdm ninja
    pip install git+https://github.com/openai/CLIP.git

    下载预训练生成器

    预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。

    概述

    技术细节

    prompts 的初始化

    ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a

    source_prompts = [prompt_prefix + " " + args.source_class]
    target_prompts = [prompt_prefix + " " + args.target_class]

    源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。

    prompts 的 tokenize 与 embedding

    源域以及目标域的初始提示词接下来会进行 tokenize:

    source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device)
    # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐
    target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device)
    # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]]
    # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐

    tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_promptstarget_tokenized_prompts 的形状均为 (1, 77)。

    在提示词标记化之后,将进行嵌入表示 embedding:

    source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度
    target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype)
    # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度

    compute_text_features 的实现细节

    在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。

    训练 stage 1

    Z空间与W空间

    # Z空间到W空间的变换
    sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device)
    # (batch_size, 512)
    sample_w = net.generator_frozen.style(sample_z)
    # (batch_size, 512)

    Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。

    1. Z 空间(Latent Space Z)

      • Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。
      • 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。
    2. W 空间(Style Space W)

      • W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。

      • 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py

        '''mapping network'''
        layers = [PixelNorm()]

        for i in range(n_mlp):
        layers.append(
        EqualLinear(
        style_dim, style_dim, lr_mul=lr_mlp, activation="fused_lrelu"
        )
        )

        self.style = nn.Sequential(*layers)
    3. Z 空间与 W 空间的关系

      • 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。
      • Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。

    损失函数

    在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成:

    1. 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失;
    2. 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l
    3. 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。

    训练 stage 2

    确定目标域生成域需要更新的层

    在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。

    if self.training and self.auto_layer_iters > 0:
    self.generator_trainable.unfreeze_layers() # unfreeze
    train_layers = self.determine_opt_layers() # layer to train

    if not isinstance(train_layers, list):
    train_layers = [train_layers]

    self.generator_trainable.freeze_layers()
    self.generator_trainable.unfreeze_layers(train_layers) # unfreeze

    具体选择带更新网络层的策略:

    将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。

    之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。

    损失函数

    stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成:

    1. edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。
    2. target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。

    定量分析指标

    测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models

    参考文献:GAN 的几种评价指标

    1. Inception Score(IS)

      评估图像的质量和多样性

      质量:把生成的图片 xx 输入 Inception V3 中,得到输出 1000 维的向量 yy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(yx)p(y|x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。

      多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y) 熵很大(均匀分布)。

      因此,对于 IS 我们需要求的两个量就是 p(yx)p(y|x)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)

      p^(y)=1Ni=1Np(yx(i))\hat{p}(y)=\frac{1}{N}\sum_{i=1}^{N}p(y|\mathbf{x}^{(i)})

      Inception Score 的完整公式如下:

      IS=exp(Ex[KL(p(yx)p(y))])IS=\exp\left(\mathbb{E}_x[KL(p(y|x)||p(y))]\right)

      其中 Ex\mathbb{E}_x 表示对所有图像的期望,KL(p(yx)p(y))KL(p(y|x)||p(y)) 表示每张图像的 KL 散度,exp\exp 表示取指数。

      通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)

    2. Fréchet Inception Distance(FID)

      评估目标域的风格

      计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。

      FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。

      StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58

    3. Single Image Fréchet Inception Score(SIFID)

      FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。

    4. Structural Consistency Score(SCS)

      评估图像的结构保存能力

    5. Identity Similarity(ID)

      评估图像的特征保存能力

    定量分析结果

    IS(Inception Score)↑

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney2.2962.6422.701
    FFHQPhoto→Anime Painting2.3202.4642.578
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e2.4892.7152.851
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf2.1732.4822.517
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    SFID(Single Fréchet Inception Distance)↓

    数据集源域→目标域NADAIPLIPL*
    FFHQPhoto→Disney845854
    FFHQPhoto→Anime Painting
    FFHQPhoto→Wall painting
    FFHQPhoto→Ukiyo-e
    FFHQPhoto→Pixar character
    FFHQPhoto→Tolkien elf
    FFHQPhoto→Werewolf
    AFHQPhoto→Cartoon
    AFHQPhoto→Pointillism
    AFHQPhoto→Cubism

    新增功能

    支持自定义图像的风格迁移

    新增了对自定义图像进行风格迁移的功能。

    HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。

    使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。

    修改日志

    1. 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。
    2. 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。
    3. 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。
    4. 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。

    Web UI

    参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。

    分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能:

    1. 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像)
    2. 直接使用随机数生成源域图像并进行零样本跨域适应

    UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。

    部分效果展示图

    主页:

    image-20240426191139926

    人物画像的零样本域适应(初始状态):

    image-20240426191201479

    人物画像的零样本域适应(使用参考图像生成状态):

    image-20240425222843497

    宠物画像的零样本域适应(初始状态):

    image-20240426191227686

    宠物画像的零样本域适应(使用随机数生成状态):

    image-20240425223227958

    问题提出与改进

    改进:Mapper 结构的设计

    Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。

    改进后的 Mapper 结构:

    class TransformerMapperV2(nn.Module):
    """
    改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合
    同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突
    并在transformer encoder之后加入Pixel Norm以及全连接层
    """
    def __init__(self, opts, n_dim):
    super(TransformerMapperV2, self).__init__()
    self.opts = opts
    self.n_dim = n_dim

    layers = [] # transformer中有layer normalization,不需要进行PixelNorm

    # 自定义Transformer编码器层配置
    transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1)

    # 构建Transformer编码器
    self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2)
    layers.append(self.transformer_encoder)

    # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性
    layers.append(PixelNorm())
    self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.linear)

    # 最后一个全连接层,输出维度保持不变
    self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu')
    layers.append(self.final_linear)

    self.mapping = nn.Sequential(*layers).to(device)

    问题:训练阶段人工 prompts 的作用是什么?

    在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 "a photo of a",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。

    ctx_init 的作用(与域标签拼接后的 ctx_init)

    1. ctx_initcompute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。

    2. 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算;

      同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。

    templates 的作用

    templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}.

    原始 hhfq 数据集的模板共有 79 个字符串。

    ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。

    思考

    IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。

    如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。

    改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐

    对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。

    经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。

    因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。

    用于生成 prompts 的 GPT、Claude prompts

    中文提示词:

    针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。
    将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。

    英文提示词:

    For the task of converting a {source class} photo into a {target_class} photo,
    provide some text prompts describing the distinctive features of Disney character portraits.
    Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list,
    and output the entire Python list.

    对 global_clip_loss 的改进

    IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。

    对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。

    对 clip_directional_loss 的改进

    IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" index c7bd314c1..3c97f1ebe 100644 --- "a/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" +++ "b/en/docs/Deep-Learning/\345\256\236\346\210\230\347\273\203\344\271\240/Visdom Visualization/index.html" @@ -4,7 +4,7 @@ Visdom可视化 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Visdom可视化

    tip

    对于TensorFlow框架,可以使用TensorBoard实现可视化。

    对于PyTorch框架,可以使用Visdom或TensorBoardX实现可视化,本篇主要讲述Visdom。

    安装Visdom

    pip install visdom

    Visdom的使用

    Visdom的启动

    首先要通过终端启动Visdom,使用本机端口运行服务器。

    以下二者均可。

    visdom
    python -m visdom.server

    单窗口单曲线的可视化

    from visdom import Visdom

    vis = Visdom() # 实例化
    # 创建一条曲线,前两个参数分别为y轴数据、x轴数据,win参数是窗口的唯一标识,opt可选字典中可以给出窗口的title和legend
    vis.line([0.], [0.], win='win_id', opts=dict(title="win_title"))

    # 在训练过程中的合适位置向初始化的曲线中喂数据
    # viz.line([real_y_data], [global_step], win='win_id', update='append')
    # 查看训练loss
    vis.line([loss.item()], [epoch], win='win_id', update='append')
    # 对于非image数据,在传入visdom时仍需要先转化为numpy类型

    单窗口多曲线的可视化

    from visdom import Visdom

    vis = Visdom()
    vis.line([[0., 0.]], [0.], win='win_id', opts=dic(title="win_title", legend=["curve_name_1", "curve_name_2"]))

    # 在训练过程中的合适位置向初始化的曲线中喂数据
    viz.line([[y1, y2]], [global_step], win='win_id', update='append')
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" "b/en/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" index 5361b8866..4059cee4e 100644 --- "a/en/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" +++ "b/en/docs/Deep-Learning/\347\273\204\344\274\232\350\256\260\345\275\225/1-20240705/index.html" @@ -4,7 +4,7 @@ 20240705 @ 图像生成与视频生成基座模型 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    20240705 @ 图像生成与视频生成基座模型

    还得梳理清楚文生图模型这块的脉络,建立自己的知识结构和时间线,把 related work 里提到的工作也加到时间线里,尽量做到拿到一篇新的 paper 就可以做到能插入到自己的知识结构里,知道这篇工作是对以前的哪个点进行的改进,是递进还是平行。

    一个月完成知识储备和体系搭建,之后开始 trace 最新进展,想 idea 做实验。

    组会记录

    后期工作

    import torch

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" index 8daece764..ed9cbf7cd 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Attention-Is-All-You-Need/index.html" @@ -4,7 +4,7 @@ NeurIPS 2017: Attention Is All You Need | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2017: Attention Is All You Need

    Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。

    整体结构

    Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。

    image-20231119110150110

    Encoder

    整体结构

    Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。

    image-20231115164324713

    位置编码(Positional Encoding)

    对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。

    公式如下所示,其中pospos指的是该词汇在整个输入句子中的位置,2i2i以及2i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}次位置编码。

    PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{1}
    PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}) \tag{2}

    根据三角函数的性质,对于pos+kpos+k位置的嵌入向量的某一维度(2i2i2i+12i+1)而言,可以表示为pospos位置与kk位置的嵌入向量的2i2i2i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。

    PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)(3)\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i+1)+PE(pos,2i+1)\times PE(k,2i)\\PE(pos+k,2i+1)=PE(pos,2i+1)\times PE(k,2i+1)-PE(pos,2i)\times PE(k,2i)\end{array} \tag{3}

    最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。

    InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \tag{4}

    具体结构

    image-20231115164324713

    输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。

    Decoder

    Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。

    自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。

    非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。

    Autoregressive Decoder(AT)

    整体结构

    image-20231119102540689

    词汇表(Vocabulary)

    词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。

    Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。

    image-20231119094748152

    Begin符号

    解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。

    特殊符号

    Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。

    Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。

    End符号

    在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。

    image-20231119102220262

    image-20231119102159884

    掩码多头自注意力机制(Masked Multi-Head Self-Attention)

    为什么使用掩码多头自注意力

    掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention

    观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示

    掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。

    具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^i在计算注意力分数时,只将aia^i的query向量与a1a^1aia^{i}ii个key向量做dot product,而不考虑aia^i之后的输入的key。

    tip

    对于第ss个时间步,Masked Mutil-Head Self-Attention的输入是时间步ss之前Decoder生成的所有输出单词的嵌入表示。

    image-20231119095632569

    交叉注意力(Cross-Attention)

    交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。

    image-20231119103201335

    交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。

    在交叉注意力中,每次计算注意力得分的query来自解码器key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。

    image-20231119142212757

    Non-Autoregressive Decoder(NAT)

    image-20231119103112168

    训练(Training)

    损失函数

    在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。

    Transformer 的整体训练过程一般分为以下几个步骤:

    1. 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。
    2. 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。
    3. 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。
    4. 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。

    整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。

    需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。

    Teacher Forcing

    在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。

    因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。

    image-20231119155803489

    但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第ii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。

    Teacher Forcing与Masked Multi-Head Self-Attention

    参考文献:MultiHead-Attention和Masked-Attention的机制和原理

    与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。

    具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1词汇向量输入时,在Decoder中,voc1voc_1与自身计算注意力分数,于是有

    [o1]=[α1,1][v1](5)\begin{bmatrix}o_1\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\end{bmatrix}\tag{5}

    我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc2voc_2的情况,于是有

    [o1o2]=[α1,1α2,1α1,2α2,2][v1v2](6)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&\alpha_{2,1}^{\prime}\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{6}

    然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是

    [o1o2]=[α1,10α1,2α2,2][v1v2](7)\begin{bmatrix}o_1\\o_2\end{bmatrix}=\begin{bmatrix}\alpha_{1,1}^{\prime}&0\\\alpha_{1,2}^{\prime}&\alpha_{2,2}^{\prime}\end{bmatrix}\begin{bmatrix}v_1\\v_2\end{bmatrix} \tag{7}

    继续扩展,当有nn个输入词汇时,应该有

    [o1o2on]=[α1,100α1,2α20α1,nα2,nαn,n][v1v2vn](8)\begin{bmatrix}o_1\\o_2\\\vdots\\o_n\end{bmatrix}=\begin{bmatrix}\alpha'_{1,1}&0&\cdots&0\\\alpha'_{1,2}&\alpha'_2&\cdots&0\\\vdots&\vdots&&\vdots\\\alpha'_{1,n}&\alpha'_{2,n}&\cdots&\alpha'_{n,n}\end{bmatrix}\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}\tag{8}

    因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。

    在源码中,有如下片段实现掩码:

    if mask is not None:
    scores = scores.masked_fill(mask == 0, -1e9)

    p_attn = scores.softmax(dim=-1)

    在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" index 73618458c..5d57cb992 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Image-Generation-without-Vector-Quantization/index.html" @@ -4,7 +4,7 @@ Autoregressive Image Generation without Vector Quantization | 培洋的笔记本📒 - + @@ -56,7 +56,7 @@ M834 80h400000v40h-400000z">1αtϵθ(xtt,z))+σtδ

    这里 δ\delta 是从高斯分布 N(0,I)\mathcal{N}(0, I) 中采样的, σt\sigma_t 是时间步 tt 的噪声水平。以 xTN(0,I)x_T \sim \mathcal{N}(0, I) 开始,此过程生成一个样本 x0x_0 使得 x0p(xz)x_0 \sim p(x \mid z)​。

    双向注意力机制

    image-20240726151056117

    结合掩码生成模型的思想 MAR

    本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。

    掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。

    image-20240726151148969

    实验与结论

    对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测

    image-20240726152158539

    扩散过程 MLP 参数对性能的影响

    image-20240726152344064

    扩散过程采样步数对性能的影响

    image-20240726152515002

    温度对多样性和准确性的控制

    image-20240726152948583

    MAR 模型速度与效果的 trade-off

    对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。

    image-20240726152549655

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" index 299e4ff57..9f4b05af2 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation/index.html" @@ -4,7 +4,7 @@ Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation | 培洋的笔记本📒 - + @@ -21,7 +21,7 @@ M1001 80h400000v40h-400000z">xg

    其中,xx 是输入向量,nn 是向量维度,gg​ 是可缩放的参数。

    RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。

  • 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。

    组成部分:

    • GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。
    • Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。
    SwiGLU(x)=σ(xW1+b1)(xW2+b2)\mathrm{SwiGLU}(x)=\sigma(xW_1+b_1)\odot(xW_2+b_2)

    其中,xx 是输入向量,W1,W2W_{1}, W_{2} 是权重矩阵,b1,b2b_1, b_2 是偏置向量,σ\sigma 是激活函数,通常为 GELU(高斯误差线性单元),\odot 表示逐元素乘法。

    SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。

  • 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。

    RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。

    RoPE(xi)=xicos(θi)+xi+1sin(θi)\operatorname{RoPE}\left(x_i\right)=x_i \cdot \cos \left(\theta_i\right)+x_{i+1} \cdot \sin \left(\theta_i\right)
    • xix_i 是输入向量的第 ii 个元素。
    • θi\theta_i 是位置 ii 处的旋转角度,通常由固定的正弦和余弦函数生成。

    RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。

  • 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN

    AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。

    AdaLN(x)=xμ(x)σ(x)γ+β\operatorname{AdaLN}(x)=\frac{x-\mu(x)}{\sigma(x)} \cdot \gamma+\beta
    • xx 是输入向量。
    • μ(x)\mu(x)σ(x)\sigma(x) 分别是输入 xx 的均值和标准差。
    • γ\gammaβ\beta 是可训练的缩放和平移参数。

    在 AdaLN 中,均值 μ(x)\mu(x) 和标准差 σ(x)\sigma(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。

  • LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。

    • 训练阶段:

      在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。

    • 推理阶段:

      对于每个 token,其 logit g\ell_g 是通过以下方式形成的:

      g=u+s(cu)\ell_g = \ell_u + s(\ell_c - \ell_u)

      其中:

      • c\ell_c 表示条件logit,即基于输入文本提示的信息生成的logit。
      • u\ell_u 表示无条件logit,即不考虑任何条件信息时生成的logit。
      • ss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。

    通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。

    作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。

  • - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" index 5ed5d2c4d..510cdbd7a 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Denoising-Diffusion-Probabilistic-Models/index.html" @@ -4,7 +4,7 @@ NeurIPS 2020: Denoising Diffusion Probabilistic Models | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    NeurIPS 2020: Denoising Diffusion Probabilistic Models

    数学原理(Mathematical Preliminary)

    先验概率与后验概率

    条件概率的定义

    条件概率是指在给定另一个事件发生的条件下,某一事件发生的概率。条件概率通常用符号P(AB)P(A\mid B)表示,读作“在 B 发生的条件下 A 发生的概率”。

    条件概率的计算公式为:

    P(AB)=P(A,B)P(B)P(A\mid B)=\frac{P(A,B)}{P(B)}

    其中:

    • P(A,B)P(A,B)是事件AABB同时发生的概率,也叫联合概率
    • P(B)P(B)是事件BB独立发生的概率

    全概率公式

    对于事件AA而言,假设有一组互斥且穷尽的条件事件B1,B2,BnB_{1},B_{2},\ldots B_{n}构成一个完备事件组,则事件AA的概率等于事件AA在每个条件事件BiB_i下发生的概率与该条件事件发生概率的乘积和。

    P(A)=i=1nP(ABi)P(Bi)P(A)=\sum_{i=1}^nP(A\mid B_i)\cdot P(B_i)

    可以看出,全概率公式是由“因”(条件事件BiB_i)推“果”(结果事件AA)的过程,即当知道某结果事件的原因后,推断由该原因导致这件事发生的概率是多少。

    贝叶斯公式

    贝叶斯公式在观测到结果事件AA发生后,计算其条件事件BiB_i在事件AA已经发生的条件下而发生的后验概率。

    继续沿用上述全概率公式的符号定义,则有:

    P(BiA)=P(ABi)P(Bi)P(A)P(B_i\mid A)=\frac{P(A\mid B_i)\cdot P(B_i)}{P(A)}

    其中:

    • P(Bi)P(B_i)以及P(A)P(A)称为先验概率
    • P(BiA)P(B_i\mid A)称为后验概率
    • P(ABi)P(A\mid B_i)称为似然

    条件概率与高斯分布的KL散度

    条件概率的一般形式

    P(A,B,C)=P(CA,B)P(A,B)=P(CA,B)P(BA)P(A)P(A,B,C)=P(C\mid A,B)\cdot P(A,B)=P(C\mid A,B)\cdot P(B\mid A)\cdot P(A)
    P(B,CA)=P(BA)P(CA,B)P(B,C\mid A)=P(B\mid A)\cdot P(C\mid A,B)

    其中,第二行公式的推导如下:

    P(B,CA)=P(A,B,C)P(A)=P(A,B,C)P(A,B,C)P(CA,B)P(BA)=P(BA)P(CA,B)\begin{align*} P(B,C \mid A) &= \frac{P(A,B,C)}{P(A)} \\ &= \frac{P(A,B,C)}{\frac{P(A,B,C)}{P(C \mid A,B) \cdot P(B \mid A)}} \\ &= P(B \mid A) \cdot P(C \mid A,B) \end{align*}

    高斯分布的KL散度

    对于两个单一变量的高斯分布pN(μ1,σ12)p\sim \mathcal{N}(\mu_1,\sigma_1^2)qN(μ2,σ22)q\sim \mathcal{N}(\mu_2,\sigma_2^2)而言,它们的KL散度定义为:

    DKL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212D_{KL}(p,q)=\log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac12

    马尔科夫链条件概率形式

    马尔科夫链指当前状态的概率只与上一时刻有关,例如若满足马尔科夫关系ABCA\to B\to C,则有:

    P(A,B,C)=P(CA,B)P(A,B)=P(CB)P(BA)P(A)P(A,B,C) =P(C\mid A,B)\cdot P(A,B)=P(C\mid B)\cdot P(B\mid A)\cdot P(A)
    P(B,CA)=P(BA)P(CB)P(B,C\mid A)=P(B\mid A)\cdot P(C\mid B)

    参数重整化技巧

    从任意高斯分布N(μ,σ2)\mathcal{N}(\mu,\sigma^2)采样xx时,可以先从标准高斯分布N(0,1)\mathcal{N}(0,1)中sample出zz,再令

    x=σz+μx=\sigma * z + \mu

    优势:

    1. 由于线性变化,采样过程中对其他参数都有明确的导数,可以进行反向传播
    2. 可以通过线性变换控制参数化的采样
    3. 标准正态分布具有易采样的性质
    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" index 6f4015a8e..3cbf6e7d6 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models/index.html" @@ -4,7 +4,7 @@ CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" index f2655da44..048830f37 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction/index.html" @@ -4,7 +4,7 @@ Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction

    摘要

    We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.

    研究背景与动机

    通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。

    • 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证
    • 性能有待提升
    image-20240711163258584

    上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。

    问题发现与提出

    首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程:

    1. 输入 raw image,Encoder 得到对应的 feature map。

      f=E(im)f=\mathcal{E}(im)
    2. 输入feature map,Quantizer 得到对应的量化 image token。

      q=Q(f)q=\mathcal{Q}(f)

      在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZ 中的 code。

      q(i,j)=(argminv[V]lookup(Z,v)f(i,j)2)[V]q^{(i,j)}=\left(\arg\min_{v\in[V]}\|\text{lookup}(Z,v)-f^{(i,j)}\|_2\right)\in[V]
    3. Decoder 通过接收在 Codebook 中查找得到的 f^\hat{f} 生成重构的图像。

      f^=lookup(Z,q)\hat{f}=\operatorname{lookup}(Z,q)
      im^=D(f^)\hat{im}=\mathcal{D}(\hat{f})
      L=imim^2+ff^2+λPLP(im^)+λGLG(im^)\mathcal{L}=\|im-i\hat{m}\|_2+\|f-\hat{f}\|_2+\lambda_\text{P}\mathcal{L}_\text{P}(i\hat{m})+\lambda_\text{G}\mathcal{L}_\text{G}(i\hat{m})

    下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。

    image-20240711171834053

    文章发现了目前传统 VAR 模型存在的三个问题。

    1. VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_t 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt1)(x_1, x_2, ..., x_{t-1}),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。

      作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。

      image-20240711171636359

      作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。

      This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention.

    2. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。

    3. 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,,xn×n)x=(x_1,x_2,\ldots,x_{n\times n}) 的 token 序列,需要 O(n2)\mathcal{O}(n^{2}) 的注意力步骤以及 O(n6)\mathcal{O}(n^{6}) 的计算复杂度。

    主要方法与贡献

    主要方法

    本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction

    image-20240711174347249

    自回归过程从分辨率为 1×11\times1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。

    通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 fRh×w×Cf \in \mathbb{R}^{h \times w \times C} 量化为 KK 个多尺度标记图 (r1,r2,,rK)(r_1, r_2, \ldots, r_K),每个图的分辨率 hk×wkh_k \times w_k 逐步增加,最终达到 rKr_K 与原始特征图的分辨率 h×wh \times w 匹配。自回归似然性公式为:

    p(r1,r2,,rK)=k=1Kp(rkr1,r2,,rk1)p(r_1, r_2, \ldots, r_K) = \prod_{k=1}^{K} p(r_k \mid r_1, r_2, \ldots, r_{k-1})

    其中每个自回归单元 rk[V]hk×wkr_k \in [V]^{h_k \times w_k} 是包含 hk×wkh_k \times w_k 个标记的第 kk 个尺度的标记图,而序列 (r1,r2,,rk1)(r_1, r_2, \ldots, r_{k-1}) 作为 rkr_k 的“前缀”。在第 kk 个自回归步骤中,所有 rkr_k 中的 h_k \times w_k 标记的分布将并行生成,并以 rkr_k 的前缀和关联的第 kk 个位置嵌入图为条件。如下图所示。

    请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_k 只能关注其前缀 rkr_{\leq k},从而满足 Autoregressive 模型的数学假设前提。

    image-20240711180036964

    本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。

    模型主要结构

    Multi-scale VQ quantizer

    首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。

    image-20240711182022796

    VAR Transformer

    作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。

    image-20240712091839372

    在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_k 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。

    单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KK

    总结

    本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。

    对文章开篇提出的问题的解决:

    1. 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。
    2. 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。
    3. 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\mathcal{O}(n^2) 次解码迭代和 O(n6)\mathcal{O}(n^6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\mathcal{O}(log(n)) 次迭代和 O(n4)\mathcal{O}(n^4)​ 次总计算量。

    文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力

    - + \ No newline at end of file diff --git "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" index f7673002c..36c70c80e 100644 --- "a/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" +++ "b/en/docs/Deep-Learning/\350\256\272\346\226\207\347\254\224\350\256\260/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning/index.html" @@ -4,7 +4,7 @@ CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning

    相关链接

    摘要

    本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征适应目标域的prompt,从而指导目标域生成器的训练。

    This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility.

    训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。

    相关工作

    Generative Model Adaption

    Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。

    few-shot

    对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。

    然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。

    相关文献方法
    • 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019.
    • 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020.
    • 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021.
    • 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021.

    zero-shot

    对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。

    此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。

    然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。

    image-20231221214755712

    Prompt Learning

    Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。

    然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。

    Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。

    主要方法

    概述

    IPL方法分两个阶段。

    第一阶段:训练Latent Mapper

    第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。

    第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。

    第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。

    prompt产生策略

    第二阶段:将Latent Mapper插入目标域生成器的训练过程

    第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。

    image-20231221231045323

    Image-specific Prompt Learning

    - + \ No newline at end of file diff --git "a/en/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" "b/en/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" index 0d74d4452..8dc412f1e 100644 --- "a/en/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" +++ "b/en/docs/Others/Linux/\345\256\236\347\224\250\345\267\245\345\205\267/\347\273\210\347\253\257\344\273\243\347\220\206/index.html" @@ -4,7 +4,7 @@ 终端代理 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    终端代理

    通过编写脚本函数的方式,手动开启代理

    一、编写脚本

    新建脚本文件terminal_proxy.sh

    # 开启代理
    function proxy_on(){
    export ALL_PROXY=socks5://127.0.0.1:7890
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=https://127.0.0.1:7890
    echo -e "已开启代理"
    }

    # 关闭代理
    function proxy_off(){
    unset ALL_PROXY
    unset http_proxy
    unset https_proxy
    echo -e "已关闭代理"
    }

    二、关联终端配置文件

    fish的配置文件:~/.config/fish/config.fish

    zsh的配置文件:~/.zshrc

    bash的配置文件:~/.bashrc

    在配置文件末尾添加以下代码

    source /path/terminal_proxy.sh

    三、使用

    在终端中输入以下命令即可开启代理

    proxy_on

    在终端中输入以下命令即可关闭代理

    proxy_off
    - + \ No newline at end of file diff --git "a/en/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" "b/en/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" index 5dbe414e2..f9d49db98 100644 --- "a/en/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" +++ "b/en/docs/Others/Linux/\345\256\242\345\210\266\345\214\226/\345\246\202\344\275\225\350\256\251\344\275\240\347\232\204KDE\347\234\213\350\265\267\346\235\245\346\233\264\345\203\217macOS/index.html" @@ -4,7 +4,7 @@ 如何让你的Kde Plasma看起来更像macOS | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    如何让你的Kde Plasma看起来更像macOS

    一、latte-dock

    1. dock显示的图标是全局图标,程序启动器的desktop文件位于/usr/share/applications中,全局主题中图标主题的程序logo位于~/.local/share/icons/Mkos-Big-Sur-Night/128x128/apps(deppending on specific situation)中。在logo文件夹中挑选想要的logo,在desktop中的icon位置修改即可
    2. 应用更新的时候会同时更新.desktop文件,因此在更换图标是最好直接更换在主题文件中替换icon,而不是更改desktop的icon路径
    3. Finder小组件中application title文字不能垂直居中,可以更换为Window title插件

    二、Kde Plasmoids

    Finder栏中Plasmoids左半部分从左至右依次为:

    • kpple menu
    • application title/window titile(if the text of application title can't be centered vertically)
    • global menu

    右半部分从左至右依次为:

    • resources monitor (fork)
    • mcOS BS Inline Battery
    • 网络
    • Control Center(replace the icon with search icon)
    • Control Center(replace the icom with menu icon)
    • Better Inline Clock

    安装方法:

    plasmpkg2 -u xxx.plasmoid
    - + \ No newline at end of file diff --git "a/en/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" "b/en/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" index 0fbcb8be2..e71b4b738 100644 --- "a/en/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" +++ "b/en/docs/Others/Linux/\351\227\256\351\242\230\350\247\243\345\206\263/\345\217\214\347\263\273\347\273\237\346\214\202\350\275\275Windows\347\243\201\347\233\230\344\270\272\345\217\252\350\257\273\346\226\207\344\273\266/index.html" @@ -4,7 +4,7 @@ 挂载Windows磁盘为只读文件 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    挂载Windows磁盘为只读文件

    一、发生原因

    未知,可能是由Windows休眠模式导致

    二、解决方案

    使用ntfsfix修复ntfs磁盘

    1. 安装ntfsfix

      yay -S ntfsfix
    2. 查看问题分区

      df -h
    3. 修复

      sudo ntfsfix /dev/your_partition
    4. 重启

      reboot
    - + \ No newline at end of file diff --git a/en/docs/Others/intro/index.html b/en/docs/Others/intro/index.html index 7ed0385e2..9d40ebcaf 100644 --- a/en/docs/Others/intro/index.html +++ b/en/docs/Others/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    tip

    欢迎来到笔记本的其他部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git a/en/docs/Tui-Mian/Summary/index.html b/en/docs/Tui-Mian/Summary/index.html index aa9b4a7a6..6603d30cd 100644 --- a/en/docs/Tui-Mian/Summary/index.html +++ b/en/docs/Tui-Mian/Summary/index.html @@ -4,7 +4,7 @@ 经验贴:2023年双非计算机保研经历 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    经验贴:2023年双非计算机保研经历

    前言

    自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。

    希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。

    文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。

    扫盲

    常见名词含义解释
    928/929每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。
    没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。
    优营优营就是夏令营的优秀营员。
    不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。
    wl/waiting listwl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。

    个人情况

    • 本科学校:理工类普通一本(四非)
    • 专业:计算机科学与技术CS
    • rank:前1%(非rank 1 or 2的top选手)
    • 英语:四级594 & 六级586
    • 竞赛:非ACMer,一个CV类比赛国一,其他都是不上台面的奖项了
    • 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金
    • 科研及论文:无正经科研经历,EI水会一篇

    从某种程度上来说,本科出身和rank基本上决定了上限。

    前期准备

    夏令营

    预推免

    后序

    - + \ No newline at end of file diff --git a/en/docs/Tui-Mian/intro/index.html b/en/docs/Tui-Mian/intro/index.html index 9488931ef..f9e6df530 100644 --- a/en/docs/Tui-Mian/intro/index.html +++ b/en/docs/Tui-Mian/intro/index.html @@ -4,15 +4,15 @@ Welcome | 培洋的笔记本📒 - +
    -

    Welcome

    tip

    欢迎来到笔记本的推免复习部分

    支持我!

    如果可以帮到你的话就给个免费的 Star 吧!

    - + \ No newline at end of file diff --git "a/en/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" "b/en/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" index c922b79a4..daaa0e1c7 100644 --- "a/en/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" +++ "b/en/docs/Tui-Mian/\346\225\260\345\255\246/\346\246\202\347\216\207\350\256\272/index.html" @@ -4,7 +4,7 @@ 概率论 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    概率论

    面试常考问题

    1. 简述大数定理。

      大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。

    2. 简述中心极限定理。

      当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。

    3. 什么是全概率公式。

      对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。

    4. 什么是最大似然估计。

      基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。

      大致过程:

      1. 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率
      2. 取似然函数的对数,方便计算与优化
      3. 最大化似然函数,求解参数的最优值
    5. 简述贝叶斯定理。

      贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。

      P(AB)=P(BA)P(A)P(B)P(A|B) = \frac{P(B|A) * P(A)}{P(B)}

      其中:

      • P(AB)P(A|B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率
      • P(BA)P(B|A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然;
      • P(A)P(A)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。

      优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。

    6. P问题、NP问题以及NP完全问题

      tip

      P stands for Polynomial

      意为多项式

      P问题是可以在多项式时间内解决的问题

      NP问题是可以在多项式时间内验证解的正确性的问题

      NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题

    - + \ No newline at end of file diff --git "a/en/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" "b/en/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" index 6c5cffa41..9fa5fdb55 100644 --- "a/en/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" +++ "b/en/docs/Tui-Mian/\346\225\260\345\255\246/\347\272\277\346\200\247\344\273\243\346\225\260/index.html" @@ -4,7 +4,7 @@ 线性代数 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    线性代数

    一、基础知识

    image-20230626214118462

    image-20230626214142283

    线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。

    矩阵转置:将矩阵的行和列互相交换

    矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A1A^{-1}

    二、面试常考问题

    1. 线性代数中的初等行变换。

      1. 交换两行
      2. 用非零常数乘以某一行
      3. 用一行的倍数加到另一行上
    2. 如何理解矩阵的秩。

      矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。

      tip

      宋浩八字:非零子式的最高阶数

      任意矩阵的行秩都等于列秩。

    3. 矩阵的秩与线性方程组解的关系。

      对于n元线性方程组而言:

      1. 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解

      2. 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解

      3. 当系数矩阵的秩不等于增广矩阵的秩时,无解

        tip

        当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息

    4. 简述向量组线性无关的含义。

      含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。

      意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。

      判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。

    5. 解释正定矩阵以及半正定矩阵。

    6. 简述特征值的含义。

      特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。

    7. 简述矩阵分解的物理意义。

      矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。

      矩阵分解的种类以及物理意义:

      • LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。
      • QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。
      • 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。
      • 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。
    - + \ No newline at end of file diff --git "a/en/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" "b/en/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" index deff45d9e..8a25e7972 100644 --- "a/en/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" +++ "b/en/docs/Tui-Mian/\346\234\272\350\257\225/\345\244\247\346\225\260\351\231\244\346\263\225/index.html" @@ -4,7 +4,7 @@ 大数除法 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    大数除法

    tip

    大数除法是指被除数大小超出long long范围,而导致必须使用字符串存储的除法,属于简单模拟的范畴

    思路

    通过模拟列竖式手动计算除法,实现使用字符串存储被除数的大数除法

    参考代码

    string division(string s, int divisor) {
    /*
    * 通过模拟列竖式手算除法完成字符串存储的大数除法
    */
    string quotient; // 商
    int idx = 0; // 当前处理的数字在原始字符串中的位置
    int remainder = 0; // 余数
    int temp = 0;
    while (idx < s.size()) { // 一直循环处理到索引等于长度
    temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp
    if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数
    quotient.push_back(temp / divisor + '0');
    remainder = temp % divisor;
    } else { // 除不动时分两种情况
    if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环
    quotient.push_back('0');
    }
    remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空
    }
    idx++; // 更新索引位置
    }
    if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串
    quotient.assign("0");
    }
    return quotient; // 返回商字符串
    }

    扩展

    将大数除法与进制转换相结合。

    完整代码如下:

    #include <bits/stdc++.h>

    using namespace std;

    string division(string s, int divisor) {
    /*
    * 通过模拟列竖式手算除法完成字符串存储的大数除法
    */
    string quotient; // 商
    int idx = 0; // 当前处理的数字在原始字符串中的位置
    int remainder = 0; // 余数
    int temp = 0;
    while (idx < s.size()) { // 一直循环处理到索引等于长度
    temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp
    if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数
    quotient.push_back(temp / divisor + '0');
    remainder = temp % divisor;
    } else { // 除不动时分两种情况
    if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环
    quotient.push_back('0');
    }
    remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空
    }
    idx++; // 更新索引位置
    }
    if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串
    quotient.assign("0");
    }
    return quotient; // 返回商字符串
    }

    int main() {
    string s;
    while (cin >> s) {
    vector<int> vec;
    int len = s.size();
    while (s != "0") {
    int remainder = (s[len - 1] - '0') % 2;
    vec.push_back(remainder);
    s = division(s, 2);
    len = s.size();
    }
    if (vec.empty()) {
    cout << "0";
    } else {
    for (auto it = vec.rbegin(); it != vec.rend(); it++) {
    cout << *it;
    }
    }
    cout << endl;
    }
    return 0;
    }
    - + \ No newline at end of file diff --git "a/en/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" "b/en/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" index 001309a8c..1f52dd3bb 100644 --- "a/en/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" +++ "b/en/docs/Tui-Mian/\347\256\200\345\216\206/\347\256\200\345\216\206\351\235\242\350\257\225\345\207\206\345\244\207/index.html" @@ -4,7 +4,7 @@ 简历面试准备 | 培洋的笔记本📒 - + @@ -18,7 +18,7 @@ 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂

    (三)YOLOv5

    1. 特征融合

    YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征

    主干通过卷积和池化提取特征,形成不同尺寸的特征图

    分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征

    主干特征图通过卷积对通道数降维之后与分支在通道维度上concat

    tip

    在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合

    2. 前处理

    对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度

    3. 特征金字塔FCN

    三、CBAM

    CBAM是通道+空间注意力机制(SENet是通道注意力机制)

    (一)总体结构

    image-20230710234929290

    通道注意力:原始特征图[b,c,h,w][b, c, h, w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘

    空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘

    (二)通道注意力

    image-20230710235658595

    原始特征图[b,c,h,w][b, c, h, w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图

    (三)空间注意力

    image-20230710235603737

    原始特征图[b,c,h,w][b, c, h, w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w]的tensor,再将二者concat后通过7×77 \times 7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图

    (四)其他注意事项

    1. 作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \times 7卷积与3×33 \times 3卷积的消融实验发现,7×77 \times 7卷积效果更好)
    2. 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好

    四、Focal Loss

    Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。

    image-20230618135151404

    YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失

    五、SENet

    image-20230711091505462

    Squeeze and Excitation

    Squeeze挤压操作就是将[b,c,h,w][b, c, h, w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构

    Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数

    六、自注意力机制

    自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。

    • 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量键(Key)向量值(Value)向量
    • 通过点积和缩放点积计算相似程度

    通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。

    七、自我介绍

    (一)英文自我介绍

    This content has been encrypted.

    (二)西电广研院自我介绍

    1. 英文自我介绍

    This content has been encrypted.

    2. 中文自我介绍

    This content has been encrypted.

    (三)电子科技大学自我介绍

    1. 英文自我介绍

    This content has been encrypted.

    2. 中文自我介绍

    This content has been encrypted.

    - + \ No newline at end of file diff --git "a/en/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" "b/en/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" index ac46f7823..b5d5a3cdb 100644 --- "a/en/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" +++ "b/en/docs/Tui-Mian/\350\256\241\347\256\227\346\234\272\345\237\272\347\241\200\347\273\274\345\220\210/\346\225\260\346\215\256\347\273\223\346\236\204/index.html" @@ -4,7 +4,7 @@ 数据结构 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    数据结构

    1. 树的性质:

      • 一棵 N 个结点的树有 N-1 条边
      • 树的总度数+1=树的结点数
      • 树的度=树中度最大结点的度数
    2. 二叉树的性质:

      • 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1

    3. 树转化为二叉树:

      参考资料:知乎

      1. 加线。在所有的兄弟结点之间加一条线。
      2. 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。
      3. 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子
    4. 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。

    5. 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。

    1. 图的表示:

      • 邻接矩阵

      • 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性

        邻接表的搜索

    2. 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。

      • Kruskal算法

      • Prim算法

    3. 最短路径

    - + \ No newline at end of file diff --git a/en/img/Musk_0.jpg b/en/img/Musk_0.jpg deleted file mode 100644 index 0f07f3128..000000000 Binary files a/en/img/Musk_0.jpg and /dev/null differ diff --git a/en/img/intro.png b/en/img/intro.png index 0c90cad0f..84fb34a84 100644 Binary files a/en/img/intro.png and b/en/img/intro.png differ diff --git a/en/img/intro2.png b/en/img/intro2.png deleted file mode 100644 index 0cf66dc8e..000000000 Binary files a/en/img/intro2.png and /dev/null differ diff --git a/en/index.html b/en/index.html index b1de3437c..3e90fc56f 100644 --- a/en/index.html +++ b/en/index.html @@ -4,7 +4,7 @@ 培洋的笔记本📒 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@
    Image

    求实求真,大气大为

    Image

    CENTER FOR FUTURE MEDIA

    Image

    正德厚学,笃行致新

    Image

    木起青绿,梦绘初蓝

    - + \ No newline at end of file diff --git a/en/markdown-page/index.html b/en/markdown-page/index.html index b8c9a9951..d9af45756 100644 --- a/en/markdown-page/index.html +++ b/en/markdown-page/index.html @@ -4,7 +4,7 @@ Markdown page example | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Markdown page example

    You don't need React to write simple standalone pages.

    - + \ No newline at end of file diff --git a/en/search-index.json b/en/search-index.json index f66f05bc6..e18ed4b97 100644 --- a/en/search-index.json +++ b/en/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":872,"t":"排列组合(求30的倍数)","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","b":["题解"]},{"i":878,"t":"反序输出","u":"/en/docs/Algorithms/题解/反序输出","b":["题解"]},{"i":884,"t":"鸣谢","u":"/en/docs/Acknowledgement/intro","b":["🍺 饮水思源"]},{"i":889,"t":"Welcome","u":"/en/docs/Algorithms/intro","b":["🎰 算法"]},{"i":893,"t":"机试技巧与STL","u":"/en/docs/Algorithms/机试技巧与STL","b":[]},{"i":960,"t":"一维前缀和(刷出一道墙)","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","b":["题解"]},{"i":966,"t":"Linux 系统下 GeekOS 的环境配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","b":["操作系统课设"]},{"i":980,"t":"STL模板","u":"/en/docs/Algorithms/STL模板","b":[]},{"i":1002,"t":"编译原理笔记","u":"/en/docs/Curriculum/编译原理/Note","b":["编译原理"]},{"i":1060,"t":"GeekOS project 0的实现","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","b":["操作系统课设"]},{"i":1066,"t":"Welcome","u":"/en/docs/Curriculum/intro","b":["📖 课程学习"]},{"i":1070,"t":"生成式对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/GAN","b":["大模型基础"]},{"i":1087,"t":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","b":["大模型基础"]},{"i":1095,"t":"数字图像处理复习笔记","u":"/en/docs/Curriculum/数字图像处理/Note","b":["数字图像处理"]},{"i":1148,"t":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","b":["大模型基础"]},{"i":1171,"t":"图像生成模型","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","b":["大模型基础"]},{"i":1198,"t":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","b":["大模型基础","Prompt Learning"]},{"i":1233,"t":"自监督学习(Self-Supervised Learning)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","b":["大模型基础"]},{"i":1249,"t":"生成模型中的采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","b":["大模型基础"]},{"i":1267,"t":"自注意力(Self-Attention)","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","b":["大模型基础"]},{"i":1297,"t":"深度可分离卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","b":["基础知识"]},{"i":1305,"t":"AlexNet","u":"/en/docs/Deep-Learning/基础知识/AlexNet","b":["基础知识"]},{"i":1312,"t":"激活函数与Loss的梯度","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","b":["基础知识"]},{"i":1323,"t":"K-fold cross-validation","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","b":["基础知识"]},{"i":1330,"t":"正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","b":["基础知识"]},{"i":1338,"t":"关于Logistic Regression","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","b":["基础知识"]},{"i":1347,"t":"卷积层","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","b":["基础知识"]},{"i":1352,"t":"从全连接到卷积","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","b":["基础知识"]},{"i":1359,"t":"池化层","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","b":["基础知识"]},{"i":1366,"t":"Perceptron","u":"/en/docs/Deep-Learning/基础知识/Perceptron","b":["基础知识"]},{"i":1373,"t":"LeNet","u":"/en/docs/Deep-Learning/基础知识/LeNet","b":["基础知识"]},{"i":1380,"t":"PyTorch基础","u":"/en/docs/Deep-Learning/基础知识/PytorchBasics","b":["基础知识"]},{"i":1383,"t":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/en/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","b":["论文笔记"]},{"i":1386,"t":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","b":["论文笔记"]},{"i":1409,"t":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","b":["论文笔记"]},{"i":1420,"t":"NeurIPS 2020: Denoising Diffusion Probabilistic Models","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","b":["论文笔记"]},{"i":1431,"t":"Autoregressive Image Generation without Vector Quantization","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","b":["论文笔记"]},{"i":1453,"t":"Speaker Classification","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","b":["实战练习"]},{"i":1461,"t":"Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","b":["论文笔记"]},{"i":1475,"t":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","b":["论文笔记"]},{"i":1488,"t":"图像生成:自回归模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","b":["图像生成与视频生成大模型"]},{"i":1509,"t":"扩散模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Diffusion-Models","b":["图像生成与视频生成大模型"]},{"i":1511,"t":"Visdom可视化","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","b":["实战练习"]},{"i":1522,"t":"自回归模型:MAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","b":["图像生成与视频生成大模型"]},{"i":1544,"t":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","b":["实战练习"]},{"i":1579,"t":"20240705 @ 图像生成与视频生成基座模型","u":"/en/docs/Deep-Learning/组会记录/1-20240705","b":["组会记录"]},{"i":1584,"t":"图像生成和视频生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","b":["图像生成与视频生成大模型"]},{"i":1593,"t":"Welcome","u":"/en/docs/Deep-Learning/intro","b":["🤖 深度学习"]},{"i":1597,"t":"Welcome","u":"/en/docs/Others/intro","b":["☃️ 其他"]},{"i":1601,"t":"告示栏","u":"/en/docs/Others/博客搭建/告示栏","b":["博客搭建"]},{"i":1603,"t":"查漏补缺","u":"/en/docs/Deep-Learning/Fill-The-Gaps","b":[]},{"i":1613,"t":"自回归模型:LlamaGen","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","b":["图像生成与视频生成大模型"]},{"i":1624,"t":"自回归模型:VAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","b":["图像生成与视频生成大模型"]},{"i":1641,"t":"如何让你的Kde Plasma看起来更像macOS","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","b":["Linux","客制化"]},{"i":1646,"t":"挂载Windows磁盘为只读文件","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","b":["Linux","问题解决"]},{"i":1651,"t":"终端代理","u":"/en/docs/Others/Linux/实用工具/终端代理","b":["Linux","实用工具"]},{"i":1659,"t":"数据结构","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","b":["计算机基础综合"]},{"i":1664,"t":"大数除法","u":"/en/docs/Tui-Mian/机试/大数除法","b":["机试"]},{"i":1672,"t":"概率论","u":"/en/docs/Tui-Mian/数学/概率论","b":["数学"]},{"i":1675,"t":"夏令营面试数学部分复习","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","b":["数学"]},{"i":1680,"t":"线性代数","u":"/en/docs/Tui-Mian/数学/线性代数","b":["数学"]},{"i":1686,"t":"Welcome","u":"/en/docs/Tui-Mian/intro","b":["🤡 推免"]},{"i":1690,"t":"简历面试准备","u":"/en/docs/Tui-Mian/简历/简历面试准备","b":["简历"]},{"i":1732,"t":"经验贴:2023年双非计算机保研经历","u":"/en/docs/Tui-Mian/Summary","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/872",[0,4.845]],["t/878",[1,1.06]],["t/884",[1,1.06]],["t/889",[2,3.175]],["t/893",[3,4.188]],["t/960",[1,1.06]],["t/966",[1,0.919,4,2.815,5,2.433]],["t/980",[3,4.188]],["t/1002",[1,1.06]],["t/1060",[5,2.828,6,3.272,7,3.272]],["t/1066",[2,3.175]],["t/1070",[8,4.845]],["t/1087",[9,2.767,10,2.386]],["t/1095",[1,1.06]],["t/1148",[11,2.182,12,2.433,13,2.182,14,2.433]],["t/1171",[1,1.06]],["t/1198",[1,1.016,15,1.915,16,1.75]],["t/1233",[16,2.318,17,2.828,18,3.272]],["t/1249",[1,1.06]],["t/1267",[13,3.028,17,3.376]],["t/1297",[1,1.06]],["t/1305",[19,4.845]],["t/1312",[20,4.845]],["t/1323",[21,2.815,22,2.815,23,2.815,24,2.815]],["t/1330",[1,1.06]],["t/1338",[25,3.906,26,3.906]],["t/1347",[1,1.06]],["t/1352",[1,1.06]],["t/1359",[1,1.06]],["t/1366",[27,4.845]],["t/1373",[28,4.845]],["t/1380",[29,4.845]],["t/1383",[9,1.174,10,1.013,30,1.433,31,1.657,32,1.657,33,1.657,34,1.086,35,1.657,36,1.657]],["t/1386",[11,2.182,12,2.433,13,2.182,14,2.433]],["t/1409",[9,1.279,10,1.103,34,1.183,37,1.4,38,1.806,39,1.806,40,1.561,41,1.279]],["t/1420",[9,1.559,10,1.344,11,1.706,42,2.2,43,2.2,44,2.2]],["t/1431",[34,1.442,37,1.706,41,1.559,45,2.2,46,2.2,47,2.2]],["t/1453",[48,3.906,49,3.906]],["t/1461",[10,0.936,34,1.003,37,1.187,40,1.324,41,1.085,50,1.531,51,1.324,52,1.531,53,1.531,54,1.531]],["t/1475",[10,0.812,15,1.031,16,0.942,30,1.149,34,0.871,41,0.942,51,1.149,55,1.149,56,1.329,57,1.329,58,1.329,59,1.329]],["t/1488",[1,1.06]],["t/1509",[1,1.06]],["t/1511",[60,4.845]],["t/1522",[61,4.845]],["t/1544",[1,1.016,15,1.915,16,1.75]],["t/1579",[1,1.026,62,3.272]],["t/1584",[1,1.06]],["t/1593",[2,3.175]],["t/1597",[2,3.175]],["t/1601",[1,1.06]],["t/1603",[1,1.06]],["t/1613",[63,4.845]],["t/1624",[64,4.845]],["t/1641",[65,3.906,66,3.906]],["t/1646",[67,4.845]],["t/1651",[1,1.06]],["t/1659",[1,1.06]],["t/1664",[1,1.06]],["t/1672",[1,1.06]],["t/1675",[1,1.06]],["t/1680",[1,1.06]],["t/1686",[2,3.175]],["t/1690",[1,1.06]],["t/1732",[55,4.188]]],"invertedIndex":[["",{"_index":1,"t":{"878":{"position":[[0,4]]},"884":{"position":[[0,2]]},"960":{"position":[[0,12]]},"966":{"position":[[6,3],[17,5]]},"1002":{"position":[[0,6]]},"1095":{"position":[[0,10]]},"1171":{"position":[[0,6]]},"1198":{"position":[[0,9],[26,3],[30,17]]},"1249":{"position":[[0,10]]},"1297":{"position":[[0,7]]},"1330":{"position":[[0,8]]},"1347":{"position":[[0,3]]},"1352":{"position":[[0,7]]},"1359":{"position":[[0,3]]},"1488":{"position":[[0,10]]},"1509":{"position":[[0,4]]},"1544":{"position":[[0,9],[26,3],[30,17]]},"1579":{"position":[[9,1],[11,13]]},"1584":{"position":[[0,13]]},"1601":{"position":[[0,3]]},"1603":{"position":[[0,4]]},"1651":{"position":[[0,4]]},"1659":{"position":[[0,4]]},"1664":{"position":[[0,4]]},"1672":{"position":[[0,3]]},"1675":{"position":[[0,11]]},"1680":{"position":[[0,4]]},"1690":{"position":[[0,6]]}}}],["0",{"_index":7,"t":{"1060":{"position":[[15,4]]}}}],["2017",{"_index":12,"t":{"1148":{"position":[[8,5]]},"1386":{"position":[[8,5]]}}}],["2020",{"_index":42,"t":{"1420":{"position":[[8,5]]}}}],["2022",{"_index":31,"t":{"1383":{"position":[[5,5]]}}}],["2023",{"_index":55,"t":{"1475":{"position":[[5,5]]},"1732":{"position":[[0,18]]}}}],["20240705",{"_index":62,"t":{"1579":{"position":[[0,8]]}}}],["30",{"_index":0,"t":{"872":{"position":[[0,12]]}}}],["adapt",{"_index":58,"t":{"1475":{"position":[[38,10]]}}}],["alexnet",{"_index":19,"t":{"1305":{"position":[[0,7]]}}}],["attent",{"_index":13,"t":{"1148":{"position":[[14,9]]},"1267":{"position":[[10,10]]},"1386":{"position":[[14,9]]}}}],["autoregress",{"_index":37,"t":{"1409":{"position":[[0,14]]},"1431":{"position":[[0,14]]},"1461":{"position":[[7,14]]}}}],["beat",{"_index":38,"t":{"1409":{"position":[[21,5]]}}}],["classif",{"_index":49,"t":{"1453":{"position":[[8,14]]}}}],["cross",{"_index":23,"t":{"1323":{"position":[[7,5]]}}}],["cvpr",{"_index":30,"t":{"1383":{"position":[[0,4]]},"1475":{"position":[[0,4]]}}}],["denois",{"_index":43,"t":{"1420":{"position":[[14,9]]}}}],["diffus",{"_index":9,"t":{"1087":{"position":[[0,14]]},"1383":{"position":[[55,9]]},"1409":{"position":[[27,10]]},"1420":{"position":[[24,9]]}}}],["fold",{"_index":22,"t":{"1323":{"position":[[2,4]]}}}],["gan",{"_index":8,"t":{"1070":{"position":[[0,12]]}}}],["geeko",{"_index":5,"t":{"966":{"position":[[10,6]]},"1060":{"position":[[0,6]]}}}],["gener",{"_index":41,"t":{"1409":{"position":[[63,10]]},"1431":{"position":[[21,10]]},"1461":{"position":[[47,10]]},"1475":{"position":[[21,10]]}}}],["high",{"_index":32,"t":{"1383":{"position":[[11,4]]}}}],["imag",{"_index":34,"t":{"1383":{"position":[[27,5]]},"1409":{"position":[[57,5]]},"1431":{"position":[[15,5]]},"1461":{"position":[[41,5]]},"1475":{"position":[[53,5]]}}}],["k",{"_index":21,"t":{"1323":{"position":[[0,1]]}}}],["kde",{"_index":65,"t":{"1641":{"position":[[0,8]]}}}],["latent",{"_index":36,"t":{"1383":{"position":[[48,6]]}}}],["learn",{"_index":16,"t":{"1198":{"position":[[17,8]]},"1233":{"position":[[22,9]]},"1475":{"position":[[75,8]]},"1544":{"position":[[17,8]]}}}],["lenet",{"_index":28,"t":{"1373":{"position":[[0,5]]}}}],["linux",{"_index":4,"t":{"966":{"position":[[0,5]]}}}],["llama",{"_index":39,"t":{"1409":{"position":[[38,5]]}}}],["llamagen",{"_index":63,"t":{"1613":{"position":[[0,14]]}}}],["logist",{"_index":25,"t":{"1338":{"position":[[0,10]]}}}],["loss",{"_index":20,"t":{"1312":{"position":[[0,12]]}}}],["mar",{"_index":61,"t":{"1522":{"position":[[0,9]]}}}],["model",{"_index":10,"t":{"1087":{"position":[[15,6]]},"1383":{"position":[[65,6]]},"1409":{"position":[[15,5]]},"1420":{"position":[[48,6]]},"1461":{"position":[[22,9]]},"1475":{"position":[[32,5]]}}}],["need",{"_index":14,"t":{"1148":{"position":[[35,4]]},"1386":{"position":[[35,4]]}}}],["neurip",{"_index":11,"t":{"1148":{"position":[[0,7]]},"1386":{"position":[[0,7]]},"1420":{"position":[[0,7]]}}}],["next",{"_index":52,"t":{"1461":{"position":[[62,4]]}}}],["perceptron",{"_index":27,"t":{"1366":{"position":[[0,10]]}}}],["plasma看起来更像maco",{"_index":66,"t":{"1641":{"position":[[9,16]]}}}],["predict",{"_index":54,"t":{"1461":{"position":[[73,10]]}}}],["probabilist",{"_index":44,"t":{"1420":{"position":[[34,13]]}}}],["project",{"_index":6,"t":{"1060":{"position":[[7,7]]}}}],["prompt",{"_index":15,"t":{"1198":{"position":[[10,6]]},"1475":{"position":[[68,6]]},"1544":{"position":[[10,6]]}}}],["pytorch",{"_index":29,"t":{"1380":{"position":[[0,9]]}}}],["quantiz",{"_index":47,"t":{"1431":{"position":[[47,12]]}}}],["regress",{"_index":26,"t":{"1338":{"position":[[11,10]]}}}],["resolut",{"_index":33,"t":{"1383":{"position":[[16,10]]}}}],["scalabl",{"_index":40,"t":{"1409":{"position":[[48,8]]},"1461":{"position":[[32,8]]}}}],["scale",{"_index":53,"t":{"1461":{"position":[[67,5]]}}}],["self",{"_index":17,"t":{"1233":{"position":[[0,10]]},"1267":{"position":[[0,9]]}}}],["shot",{"_index":57,"t":{"1475":{"position":[[16,4]]}}}],["speaker",{"_index":48,"t":{"1453":{"position":[[0,7]]}}}],["specif",{"_index":59,"t":{"1475":{"position":[[59,8]]}}}],["stl",{"_index":3,"t":{"893":{"position":[[0,8]]},"980":{"position":[[0,5]]}}}],["supervis",{"_index":18,"t":{"1233":{"position":[[11,10]]}}}],["synthesi",{"_index":35,"t":{"1383":{"position":[[33,9]]}}}],["valid",{"_index":24,"t":{"1323":{"position":[[13,10]]}}}],["var",{"_index":64,"t":{"1624":{"position":[[0,9]]}}}],["vector",{"_index":46,"t":{"1431":{"position":[[40,6]]}}}],["via",{"_index":51,"t":{"1461":{"position":[[58,3]]},"1475":{"position":[[49,3]]}}}],["visdom",{"_index":60,"t":{"1511":{"position":[[0,9]]}}}],["visual",{"_index":50,"t":{"1461":{"position":[[0,6]]}}}],["welcom",{"_index":2,"t":{"889":{"position":[[0,7]]},"1066":{"position":[[0,7]]},"1593":{"position":[[0,7]]},"1597":{"position":[[0,7]]},"1686":{"position":[[0,7]]}}}],["window",{"_index":67,"t":{"1646":{"position":[[0,16]]}}}],["without",{"_index":45,"t":{"1431":{"position":[[32,7]]}}}],["zero",{"_index":56,"t":{"1475":{"position":[[11,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":874,"t":"参考代码","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":872},{"i":876,"t":"题解","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":872},{"i":880,"t":"参考代码","u":"/en/docs/Algorithms/题解/反序输出","h":"#参考代码","p":878},{"i":882,"t":"题解","u":"/en/docs/Algorithms/题解/反序输出","h":"#题解","p":878},{"i":885,"t":"饮水思源","u":"/en/docs/Acknowledgement/intro","h":"#饮水思源","p":884},{"i":887,"t":"Disclaimer","u":"/en/docs/Acknowledgement/intro","h":"#disclaimer","p":884},{"i":891,"t":"支持我!","u":"/en/docs/Algorithms/intro","h":"#支持我","p":889},{"i":895,"t":"vs2018 快捷键","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":893},{"i":897,"t":"头文件","u":"/en/docs/Algorithms/机试技巧与STL","h":"#头文件","p":893},{"i":898,"t":"标准c库","u":"/en/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":893},{"i":900,"t":"c++ STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":893},{"i":902,"t":"常用头","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用头","p":893},{"i":904,"t":"常用宏定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":893},{"i":906,"t":"结构体","u":"/en/docs/Algorithms/机试技巧与STL","h":"#结构体","p":893},{"i":907,"t":"定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#定义","p":893},{"i":909,"t":"初始化","u":"/en/docs/Algorithms/机试技巧与STL","h":"#初始化","p":893},{"i":911,"t":"运算符重载","u":"/en/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":893},{"i":913,"t":"c++new的使用","u":"/en/docs/Algorithms/机试技巧与STL","h":"#cnew的使用","p":893},{"i":914,"t":"常规","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常规","p":893},{"i":916,"t":"动态申请列大小固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":893},{"i":918,"t":"动态申请大小不固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":893},{"i":920,"t":"常用STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":893},{"i":922,"t":"简述","u":"/en/docs/Algorithms/机试技巧与STL","h":"#简述","p":893},{"i":924,"t":"algorithm","u":"/en/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":893},{"i":926,"t":"vector","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vector","p":893},{"i":928,"t":"list","u":"/en/docs/Algorithms/机试技巧与STL","h":"#list","p":893},{"i":930,"t":"string","u":"/en/docs/Algorithms/机试技巧与STL","h":"#string","p":893},{"i":932,"t":"pair","u":"/en/docs/Algorithms/机试技巧与STL","h":"#pair","p":893},{"i":934,"t":"map","u":"/en/docs/Algorithms/机试技巧与STL","h":"#map","p":893},{"i":936,"t":"stack","u":"/en/docs/Algorithms/机试技巧与STL","h":"#stack","p":893},{"i":938,"t":"queue","u":"/en/docs/Algorithms/机试技巧与STL","h":"#queue","p":893},{"i":940,"t":"set","u":"/en/docs/Algorithms/机试技巧与STL","h":"#set","p":893},{"i":942,"t":"multiset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#multiset","p":893},{"i":944,"t":"bitset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#bitset","p":893},{"i":946,"t":"图模板","u":"/en/docs/Algorithms/机试技巧与STL","h":"#图模板","p":893},{"i":947,"t":"不带出入度的最简模板","u":"/en/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":893},{"i":949,"t":"带出入度的 (2019推免试题)","u":"/en/docs/Algorithms/机试技巧与STL","h":"#带出入度的-2019推免试题","p":893},{"i":951,"t":"图算法:找出u到v的所有路径-邻接表","u":"/en/docs/Algorithms/机试技巧与STL","h":"#图算法找出u到v的所有路径-邻接表","p":893},{"i":953,"t":"树模板","u":"/en/docs/Algorithms/机试技巧与STL","h":"#树模板","p":893},{"i":954,"t":"注释版","u":"/en/docs/Algorithms/机试技巧与STL","h":"#注释版","p":893},{"i":956,"t":"简化版(Val As Index,若数据不在1~N内,则可能越界)","u":"/en/docs/Algorithms/机试技巧与STL","h":"#简化版val-as-index若数据不在1n内则可能越界","p":893},{"i":958,"t":"简化版(Val Not As Index,可以存任意的 Val)","u":"/en/docs/Algorithms/机试技巧与STL","h":"#简化版val-not-as-index可以存任意的-val","p":893},{"i":962,"t":"参考代码","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":960},{"i":964,"t":"题解","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":960},{"i":967,"t":"必须要知道的原理","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#必须要知道的原理","p":966},{"i":968,"t":"GeekOS:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#geekos","p":966},{"i":970,"t":"bochs:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#bochs","p":966},{"i":972,"t":"二者之间的关系","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#二者之间的关系","p":966},{"i":974,"t":"安装与配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装与配置","p":966},{"i":976,"t":"安装","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装","p":966},{"i":978,"t":"配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#配置","p":966},{"i":982,"t":"vector","u":"/en/docs/Algorithms/STL模板","h":"#vector","p":980},{"i":984,"t":"pair","u":"/en/docs/Algorithms/STL模板","h":"#pair","p":980},{"i":986,"t":"string","u":"/en/docs/Algorithms/STL模板","h":"#string","p":980},{"i":988,"t":"query","u":"/en/docs/Algorithms/STL模板","h":"#query","p":980},{"i":990,"t":"priority_queue","u":"/en/docs/Algorithms/STL模板","h":"#priority_queue","p":980},{"i":992,"t":"stack","u":"/en/docs/Algorithms/STL模板","h":"#stack","p":980},{"i":994,"t":"deque","u":"/en/docs/Algorithms/STL模板","h":"#deque","p":980},{"i":996,"t":"set/multiset","u":"/en/docs/Algorithms/STL模板","h":"#setmultiset","p":980},{"i":998,"t":"map/multimap","u":"/en/docs/Algorithms/STL模板","h":"#mapmultimap","p":980},{"i":1000,"t":"biset","u":"/en/docs/Algorithms/STL模板","h":"#biset","p":980},{"i":1003,"t":"第一章:前言","u":"/en/docs/Curriculum/编译原理/Note","h":"#第一章前言","p":1002},{"i":1004,"t":"1.1 编译程序的逻辑结构","u":"/en/docs/Curriculum/编译原理/Note","h":"#11-编译程序的逻辑结构","p":1002},{"i":1006,"t":"1.2 前端和后端","u":"/en/docs/Curriculum/编译原理/Note","h":"#12-前端和后端","p":1002},{"i":1008,"t":"1.3 遍的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#13-遍的概念","p":1002},{"i":1010,"t":"第二章:文法和语言","u":"/en/docs/Curriculum/编译原理/Note","h":"#第二章文法和语言","p":1002},{"i":1011,"t":"2.1 句型","u":"/en/docs/Curriculum/编译原理/Note","h":"#21-句型","p":1002},{"i":1013,"t":"2.2 句子:","u":"/en/docs/Curriculum/编译原理/Note","h":"#22-句子","p":1002},{"i":1015,"t":"2.3 文法的分类:","u":"/en/docs/Curriculum/编译原理/Note","h":"#23-文法的分类","p":1002},{"i":1017,"t":"2.4 最左/右推导:","u":"/en/docs/Curriculum/编译原理/Note","h":"#24-最左右推导","p":1002},{"i":1019,"t":"第三章:词法分析","u":"/en/docs/Curriculum/编译原理/Note","h":"#第三章词法分析","p":1002},{"i":1020,"t":"3.1 正规文法转换成正规式","u":"/en/docs/Curriculum/编译原理/Note","h":"#31-正规文法转换成正规式","p":1002},{"i":1021,"t":"3.2 有穷自动机(FA)","u":"/en/docs/Curriculum/编译原理/Note","h":"#32-有穷自动机fa","p":1002},{"i":1023,"t":"3.3 正规式RE与有穷自动机FA的互相转化","u":"/en/docs/Curriculum/编译原理/Note","h":"#33-正规式re与有穷自动机fa的互相转化","p":1002},{"i":1024,"t":"3.4 正规文法RM与有穷自动机FA的互相转化","u":"/en/docs/Curriculum/编译原理/Note","h":"#34-正规文法rm与有穷自动机fa的互相转化","p":1002},{"i":1025,"t":"第四章:自顶向下语法分析方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#第四章自顶向下语法分析方法","p":1002},{"i":1027,"t":"1. FIRST集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#1-first集的定义","p":1002},{"i":1028,"t":"2. Follow集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-follow集的定义","p":1002},{"i":1030,"t":"3. SELECT集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-select集的定义","p":1002},{"i":1032,"t":"4. LL(1)文法的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#4-ll1文法的定义","p":1002},{"i":1033,"t":"5. LL(1)文法的判别","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-ll1文法的判别","p":1002},{"i":1035,"t":"6. 预测分析表","u":"/en/docs/Curriculum/编译原理/Note","h":"#6-预测分析表","p":1002},{"i":1037,"t":"7. 非LL(1)文法到LL(1)文法的等价变换","u":"/en/docs/Curriculum/编译原理/Note","h":"#7-非ll1文法到ll1文法的等价变换","p":1002},{"i":1039,"t":"第五章:自底向上语法分析方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#第五章自底向上语法分析方法","p":1002},{"i":1040,"t":"5.1 概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#51-概念","p":1002},{"i":1042,"t":"5.2 方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#52-方法","p":1002},{"i":1044,"t":"5.3 工作过程","u":"/en/docs/Curriculum/编译原理/Note","h":"#53-工作过程","p":1002},{"i":1045,"t":"5.4 移入-归约分析器的4种动作","u":"/en/docs/Curriculum/编译原理/Note","h":"#54-移入-归约分析器的4种动作","p":1002},{"i":1047,"t":"5.5 重要题型","u":"/en/docs/Curriculum/编译原理/Note","h":"#55-重要题型","p":1002},{"i":1049,"t":"概念总结","u":"/en/docs/Curriculum/编译原理/Note","h":"#概念总结","p":1002},{"i":1050,"t":"1 编译程序各阶段功能","u":"/en/docs/Curriculum/编译原理/Note","h":"#1-编译程序各阶段功能","p":1002},{"i":1052,"t":"2 语法分析方法的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-语法分析方法的概念","p":1002},{"i":1054,"t":"3 翻译模式","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-翻译模式","p":1002},{"i":1056,"t":"4 属性文法","u":"/en/docs/Curriculum/编译原理/Note","h":"#4-属性文法","p":1002},{"i":1058,"t":"5 符号表","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-符号表","p":1002},{"i":1062,"t":"编写C语言代码","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":1060},{"i":1064,"t":"使用Linux的编译系统对C语言代码进行编译","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":1060},{"i":1068,"t":"支持我!","u":"/en/docs/Curriculum/intro","h":"#支持我","p":1066},{"i":1072,"t":"引言","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#引言","p":1070},{"i":1073,"t":"将随机分布作为输入","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":1070},{"i":1075,"t":"为什么要添加分布","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":1070},{"i":1077,"t":"核心思想","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":1070},{"i":1079,"t":"具体结构与作用","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":1070},{"i":1081,"t":"生成器(Generator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":1070},{"i":1083,"t":"判别器(Discriminator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":1070},{"i":1085,"t":"训练算法","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":1070},{"i":1089,"t":"基本概念","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":1087},{"i":1091,"t":"训练过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":1087},{"i":1093,"t":"推理过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":1087},{"i":1097,"t":"第2章 数字图像处理基础","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第2章-数字图像处理基础","p":1095},{"i":1098,"t":"图像的采样与量化","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":1095},{"i":1100,"t":"距离度量","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":1095},{"i":1102,"t":"图像质量评价","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":1095},{"i":1104,"t":"灰度直方图","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#灰度直方图","p":1095},{"i":1105,"t":"第3章 图像变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第3章-图像变换","p":1095},{"i":1106,"t":"傅里叶变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":1095},{"i":1108,"t":"第4章 图像处理的基本运算","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第4章-图像处理的基本运算","p":1095},{"i":1109,"t":"点运算","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":1095},{"i":1111,"t":"比例缩放","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":1095},{"i":1113,"t":"灰度级插值","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":1095},{"i":1115,"t":"第5章 图像空域增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第5章-图像空域增强","p":1095},{"i":1116,"t":"直接灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":1095},{"i":1118,"t":"直方图灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":1095},{"i":1120,"t":"空域滤波增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":1095},{"i":1122,"t":"第6章 图像频域增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":1095},{"i":1124,"t":"低通滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":1095},{"i":1126,"t":"高通滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#高通滤波","p":1095},{"i":1128,"t":"带通和带阻滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":1095},{"i":1130,"t":"第7章 彩色图像处理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第7章-彩色图像处理","p":1095},{"i":1131,"t":"伪彩色图像的处理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":1095},{"i":1133,"t":"全彩色图像的处理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#全彩色图像的处理","p":1095},{"i":1134,"t":"第8章 图像复原","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第8章-图像复原","p":1095},{"i":1135,"t":"图像退化机理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":1095},{"i":1137,"t":"图像退化模型","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":1095},{"i":1139,"t":"第11章 图像分割","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第11章-图像分割","p":1095},{"i":1140,"t":"阈值分割法","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":1095},{"i":1142,"t":"边缘检测的基本原理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":1095},{"i":1144,"t":"边缘检测算子","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":1095},{"i":1146,"t":"课后习题中的问答题","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":1095},{"i":1150,"t":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":1148},{"i":1152,"t":"Encoder","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#encoder","p":1148},{"i":1153,"t":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":1148},{"i":1155,"t":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1148},{"i":1157,"t":"具体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":1148},{"i":1159,"t":"Decoder","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":1148},{"i":1161,"t":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1148},{"i":1163,"t":"Non-Autoregressive Decoder(NAT)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#non-autoregressive-decodernat","p":1148},{"i":1164,"t":"训练(Training)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#训练training","p":1148},{"i":1165,"t":"损失函数","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":1148},{"i":1167,"t":"Teacher Forcing","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1148},{"i":1169,"t":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1148},{"i":1172,"t":"回顾文字生成的两种方法","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":1171},{"i":1174,"t":"自回归方法(AR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":1171},{"i":1176,"t":"非自回归方法(NAR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":1171},{"i":1178,"t":"目前图像生成模型的共同点","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":1171},{"i":1180,"t":"生成模型的共同结构","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":1171},{"i":1182,"t":"通用框架概览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":1171},{"i":1184,"t":"Benchmark","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":1171},{"i":1186,"t":"通用框架解析","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":1171},{"i":1188,"t":"常见图像生成模型速览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":1171},{"i":1190,"t":"变分自编码器(VAE)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":1171},{"i":1192,"t":"基于流的生成模型(Flow-Based Generative Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":1171},{"i":1194,"t":"生成对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":1171},{"i":1196,"t":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":1171},{"i":1200,"t":"依赖","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#依赖","p":1198},{"i":1201,"t":"创建 Anaconda 虚拟环境","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":1198},{"i":1203,"t":"安装依赖","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":1198},{"i":1205,"t":"下载预训练生成器","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":1198},{"i":1207,"t":"概述","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#概述","p":1198},{"i":1208,"t":"技术细节","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#技术细节","p":1198},{"i":1209,"t":"prompts 的初始化","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":1198},{"i":1211,"t":"prompts 的 tokenize 与 embedding","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":1198},{"i":1213,"t":"compute_text_features 的实现细节","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":1198},{"i":1215,"t":"训练 stage 1","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":1198},{"i":1217,"t":"训练 stage 2","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":1198},{"i":1219,"t":"定量分析指标","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":1198},{"i":1221,"t":"新增功能","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#新增功能","p":1198},{"i":1222,"t":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1198},{"i":1224,"t":"Web UI","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":1198},{"i":1226,"t":"问题提出与改进","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题提出与改进","p":1198},{"i":1227,"t":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1198},{"i":1229,"t":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1198},{"i":1231,"t":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1198},{"i":1235,"t":"介绍","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":1233},{"i":1237,"t":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":1233},{"i":1239,"t":"结构","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":1233},{"i":1241,"t":"Self-Supervised Pretraining","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":1233},{"i":1243,"t":"Fine-tuning","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":1233},{"i":1245,"t":"Why does BERT work?","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":1233},{"i":1247,"t":"GPT: Generative Pre-trained Transformer","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":1233},{"i":1251,"t":"引言","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":1249},{"i":1253,"t":"为什么需要采样?","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":1249},{"i":1255,"t":"长尾效应","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":1249},{"i":1257,"t":"采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":1249},{"i":1259,"t":"温度(Temperature)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":1249},{"i":1261,"t":"Top-k 采样","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":1249},{"i":1263,"t":"Top-p 采样(Nucleus Sampling)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":1249},{"i":1265,"t":"结论","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":1249},{"i":1269,"t":"认识CNN的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#认识cnn的局限性","p":1267},{"i":1270,"t":"输入与输出的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":1267},{"i":1272,"t":"关联上下文信息的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":1267},{"i":1274,"t":"Self-Attention的原理","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的原理","p":1267},{"i":1275,"t":"什么是Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":1267},{"i":1277,"t":"Self-Attention的核心思想","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":1267},{"i":1279,"t":"Self-Attention的实现","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":1267},{"i":1281,"t":"Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":1267},{"i":1283,"t":"Self-Attention与CNN的对比","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":1267},{"i":1285,"t":"Self Attention 的计算","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":1267},{"i":1287,"t":"输入形状","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":1267},{"i":1289,"t":"自注意力机制的计算步骤","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":1267},{"i":1291,"t":"多头自注意力","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":1267},{"i":1293,"t":"示例","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":1267},{"i":1295,"t":"自注意力中的掩码 Mask","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":1267},{"i":1299,"t":"常规卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":1297},{"i":1301,"t":"逐通道卷积-Depthwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":1297},{"i":1303,"t":"逐点卷积-Pointwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":1297},{"i":1306,"t":"背景","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":1305},{"i":1308,"t":"新的概念和技术","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":1305},{"i":1310,"t":"与LeNet比较","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":1305},{"i":1313,"t":"激活函数","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#激活函数","p":1312},{"i":1314,"t":"Sigmoid函数 / Logistic函数","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":1312},{"i":1316,"t":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":1312},{"i":1318,"t":"损失函数","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#损失函数","p":1312},{"i":1319,"t":"Mean Squared Error 均方误差","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":1312},{"i":1321,"t":"Cross Entropy Loss 交叉熵损失","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":1312},{"i":1324,"t":"What is k-fold cross-validation?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":1323},{"i":1326,"t":"How does k-fold cross-validation work?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":1323},{"i":1328,"t":"Summary","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":1323},{"i":1332,"t":"什么是正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":1330},{"i":1334,"t":"L1正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":1330},{"i":1336,"t":"L2正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":1330},{"i":1339,"t":"什么是Logistic Regression","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":1338},{"i":1341,"t":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":1338},{"i":1343,"t":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":1338},{"i":1345,"t":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":1338},{"i":1348,"t":"1x1 卷积","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":1347},{"i":1350,"t":"二维卷积层","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":1347},{"i":1353,"t":"卷积的诞生&核心特征","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":1352},{"i":1355,"t":"重新考察全连接层","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":1352},{"i":1357,"t":"总结","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":1352},{"i":1360,"t":"卷积对像素位置信息是敏感的","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":1359},{"i":1362,"t":"池化层的作用","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":1359},{"i":1364,"t":"池化的实现","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":1359},{"i":1367,"t":"什么是感知机","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":1366},{"i":1369,"t":"详细原理","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":1366},{"i":1371,"t":"总结","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":1366},{"i":1374,"t":"背景","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":1373},{"i":1376,"t":"代码实现","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":1373},{"i":1378,"t":"问题","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":1373},{"i":1381,"t":"常用函数部分","u":"/en/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":1380},{"i":1385,"t":"摘要与主要贡献","u":"/en/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"#摘要与主要贡献","p":1383},{"i":1388,"t":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":1386},{"i":1390,"t":"Encoder","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#encoder","p":1386},{"i":1391,"t":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":1386},{"i":1393,"t":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1386},{"i":1395,"t":"具体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":1386},{"i":1397,"t":"Decoder","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":1386},{"i":1399,"t":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1386},{"i":1401,"t":"Non-Autoregressive Decoder(NAT)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#non-autoregressive-decodernat","p":1386},{"i":1402,"t":"训练(Training)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#训练training","p":1386},{"i":1403,"t":"损失函数","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":1386},{"i":1405,"t":"Teacher Forcing","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1386},{"i":1407,"t":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1386},{"i":1411,"t":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1409},{"i":1413,"t":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1409},{"i":1415,"t":"模型结构","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#模型结构","p":1409},{"i":1416,"t":"Image Tokenizer","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1409},{"i":1418,"t":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1409},{"i":1422,"t":"数学原理(Mathematical Preliminary)","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#数学原理mathematical-preliminary","p":1420},{"i":1423,"t":"先验概率与后验概率","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#先验概率与后验概率","p":1420},{"i":1425,"t":"条件概率与高斯分布的KL散度","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#条件概率与高斯分布的kl散度","p":1420},{"i":1427,"t":"马尔科夫链条件概率形式","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#马尔科夫链条件概率形式","p":1420},{"i":1429,"t":"参数重整化技巧","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#参数重整化技巧","p":1420},{"i":1433,"t":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":1431},{"i":1435,"t":"研究动机","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":1431},{"i":1437,"t":"主要方法与实现","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":1431},{"i":1439,"t":"Diffusion Loss","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":1431},{"i":1441,"t":"采样","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":1431},{"i":1443,"t":"双向注意力机制","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#双向注意力机制","p":1431},{"i":1444,"t":"结合掩码生成模型的思想 MAR","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":1431},{"i":1446,"t":"实验与结论","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#实验与结论","p":1431},{"i":1447,"t":"对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#对比离散与连续单向与双向注意力逐-token-或逐-patch-预测","p":1431},{"i":1448,"t":"扩散过程 MLP 参数对性能的影响","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程-mlp-参数对性能的影响","p":1431},{"i":1449,"t":"扩散过程采样步数对性能的影响","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程采样步数对性能的影响","p":1431},{"i":1450,"t":"温度对多样性和准确性的控制","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#温度对多样性和准确性的控制","p":1431},{"i":1451,"t":"MAR 模型速度与效果的 trade-off","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":1431},{"i":1455,"t":"Overview","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":1453},{"i":1457,"t":"Dataset","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":1453},{"i":1459,"t":"Related","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":1453},{"i":1462,"t":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":1461},{"i":1464,"t":"研究背景与动机","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":1461},{"i":1466,"t":"问题发现与提出","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":1461},{"i":1468,"t":"主要方法与贡献","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法与贡献","p":1461},{"i":1469,"t":"主要方法","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":1461},{"i":1471,"t":"模型主要结构","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":1461},{"i":1473,"t":"总结","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":1461},{"i":1477,"t":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":1475},{"i":1479,"t":"相关工作","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#相关工作","p":1475},{"i":1480,"t":"Generative Model Adaption","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":1475},{"i":1482,"t":"Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":1475},{"i":1484,"t":"主要方法","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#主要方法","p":1475},{"i":1485,"t":"概述","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":1475},{"i":1487,"t":"Image-specific Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#image-specific-prompt-learning","p":1475},{"i":1490,"t":"自回归模型的数学定义","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#自回归模型的数学定义","p":1488},{"i":1492,"t":"Autoregressive 模型时间线","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#autoregressive-模型时间线","p":1488},{"i":1493,"t":"PixelRNN(2016)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#pixelrnn2016","p":1488},{"i":1495,"t":"PixelCNN(2016)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#pixelcnn2016","p":1488},{"i":1497,"t":"VQ-VAE(2017)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vq-vae2017","p":1488},{"i":1499,"t":"VQVAE-2(2019)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vqvae-22019","p":1488},{"i":1501,"t":"VQGAN(2021)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vqgan2021","p":1488},{"i":1503,"t":"RQTransformer(2021)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#rqtransformer2021","p":1488},{"i":1505,"t":"DALL-E(2021)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#dall-e2021","p":1488},{"i":1507,"t":"Parti(2022)","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#parti2022","p":1488},{"i":1513,"t":"安装Visdom","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#安装visdom","p":1511},{"i":1515,"t":"Visdom的使用","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#visdom的使用","p":1511},{"i":1516,"t":"Visdom的启动","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#visdom的启动","p":1511},{"i":1518,"t":"单窗口单曲线的可视化","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口单曲线的可视化","p":1511},{"i":1520,"t":"单窗口多曲线的可视化","u":"/en/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口多曲线的可视化","p":1511},{"i":1524,"t":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":1522},{"i":1526,"t":"研究动机","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":1522},{"i":1528,"t":"主要方法与实现","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":1522},{"i":1530,"t":"Diffusion Loss","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":1522},{"i":1532,"t":"采样","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":1522},{"i":1534,"t":"双向注意力机制","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#双向注意力机制","p":1522},{"i":1535,"t":"结合掩码生成模型的思想 MAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":1522},{"i":1537,"t":"实验与结论","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#实验与结论","p":1522},{"i":1538,"t":"对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#对比离散与连续单向与双向注意力逐-token-或逐-patch-预测","p":1522},{"i":1539,"t":"扩散过程 MLP 参数对性能的影响","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程-mlp-参数对性能的影响","p":1522},{"i":1540,"t":"扩散过程采样步数对性能的影响","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程采样步数对性能的影响","p":1522},{"i":1541,"t":"温度对多样性和准确性的控制","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#温度对多样性和准确性的控制","p":1522},{"i":1542,"t":"MAR 模型速度与效果的 trade-off","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":1522},{"i":1546,"t":"依赖","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#依赖","p":1544},{"i":1547,"t":"创建 Anaconda 虚拟环境","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":1544},{"i":1549,"t":"安装依赖","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#安装依赖","p":1544},{"i":1551,"t":"下载预训练生成器","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#下载预训练生成器","p":1544},{"i":1553,"t":"概述","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#概述","p":1544},{"i":1554,"t":"技术细节","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#技术细节","p":1544},{"i":1555,"t":"prompts 的初始化","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的初始化","p":1544},{"i":1557,"t":"prompts 的 tokenize 与 embedding","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":1544},{"i":1559,"t":"compute_text_features 的实现细节","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":1544},{"i":1561,"t":"训练 stage 1","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-1","p":1544},{"i":1563,"t":"训练 stage 2","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":1544},{"i":1565,"t":"定量分析指标","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":1544},{"i":1567,"t":"新增功能","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#新增功能","p":1544},{"i":1568,"t":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1544},{"i":1570,"t":"Web UI","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":1544},{"i":1572,"t":"问题提出与改进","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题提出与改进","p":1544},{"i":1573,"t":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1544},{"i":1575,"t":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1544},{"i":1577,"t":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1544},{"i":1581,"t":"组会记录","u":"/en/docs/Deep-Learning/组会记录/1-20240705","h":"#组会记录","p":1579},{"i":1582,"t":"后期工作","u":"/en/docs/Deep-Learning/组会记录/1-20240705","h":"#后期工作","p":1579},{"i":1585,"t":"图像生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#图像生成基座模型","p":1584},{"i":1587,"t":"四种生成范式","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#四种生成范式","p":1584},{"i":1589,"t":"如何训练优秀的生成基座模型?","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#如何训练优秀的生成基座模型","p":1584},{"i":1591,"t":"视频生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#视频生成基座模型","p":1584},{"i":1595,"t":"支持我!","u":"/en/docs/Deep-Learning/intro","h":"#支持我","p":1593},{"i":1599,"t":"支持我!","u":"/en/docs/Others/intro","h":"#支持我","p":1597},{"i":1605,"t":"Python的广播机制","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#python的广播机制","p":1603},{"i":1607,"t":"点积(dot product)与矩阵乘法(matmul product)","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#点积dot-product与矩阵乘法matmul-product","p":1603},{"i":1609,"t":"zip函数与解压操作*","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#zip函数与解压操作","p":1603},{"i":1611,"t":"对batch_first参数的理解","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#对batch_first参数的理解","p":1603},{"i":1615,"t":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1613},{"i":1617,"t":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1613},{"i":1619,"t":"模型结构","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#模型结构","p":1613},{"i":1620,"t":"Image Tokenizer","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1613},{"i":1622,"t":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1613},{"i":1626,"t":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":1624},{"i":1628,"t":"研究背景与动机","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":1624},{"i":1630,"t":"问题发现与提出","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":1624},{"i":1632,"t":"主要方法与贡献","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法与贡献","p":1624},{"i":1633,"t":"主要方法","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":1624},{"i":1635,"t":"模型主要结构","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":1624},{"i":1637,"t":"局限性与展望","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#局限性与展望","p":1624},{"i":1639,"t":"总结","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":1624},{"i":1642,"t":"一、latte-dock","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#一latte-dock","p":1641},{"i":1644,"t":"二、Kde Plasmoids","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#二kde-plasmoids","p":1641},{"i":1647,"t":"一、发生原因","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#一发生原因","p":1646},{"i":1649,"t":"二、解决方案","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#二解决方案","p":1646},{"i":1653,"t":"一、编写脚本","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#一编写脚本","p":1651},{"i":1655,"t":"二、关联终端配置文件","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#二关联终端配置文件","p":1651},{"i":1657,"t":"三、使用","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#三使用","p":1651},{"i":1660,"t":"树","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":1659},{"i":1662,"t":"图","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":1659},{"i":1666,"t":"思路","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#思路","p":1664},{"i":1668,"t":"参考代码","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":1664},{"i":1670,"t":"扩展","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":1664},{"i":1673,"t":"面试常考问题","u":"/en/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":1672},{"i":1676,"t":"一、线性代数","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":1675},{"i":1678,"t":"二、概率论","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":1675},{"i":1682,"t":"一、基础知识","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":1680},{"i":1684,"t":"二、面试常考问题","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":1680},{"i":1688,"t":"支持我!","u":"/en/docs/Tui-Mian/intro","h":"#支持我","p":1686},{"i":1691,"t":"一、U-2-Net","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一u-2-net","p":1690},{"i":1692,"t":"(一)SOD任务","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":1690},{"i":1694,"t":"(二)网络结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":1690},{"i":1696,"t":"(三)损失函数","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":1690},{"i":1698,"t":"(四)深度可分离卷积","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":1690},{"i":1700,"t":"二、YOLO","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolo","p":1690},{"i":1701,"t":"(一)mAP","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":1690},{"i":1703,"t":"(二)YOLOv1","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":1690},{"i":1705,"t":"(二)YOLOv2","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":1690},{"i":1707,"t":"(三)YOLOv5","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":1690},{"i":1709,"t":"三、CBAM","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":1690},{"i":1711,"t":"(一)总体结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":1690},{"i":1713,"t":"(二)通道注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":1690},{"i":1715,"t":"(三)空间注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":1690},{"i":1717,"t":"(四)其他注意事项","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":1690},{"i":1719,"t":"四、Focal Loss","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":1690},{"i":1721,"t":"五、SENet","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":1690},{"i":1723,"t":"六、自注意力机制","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":1690},{"i":1725,"t":"七、自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#七自我介绍","p":1690},{"i":1726,"t":"(一)英文自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":1690},{"i":1728,"t":"(二)西电广研院自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":1690},{"i":1730,"t":"(三)电子科技大学自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":1690},{"i":1733,"t":"前言","u":"/en/docs/Tui-Mian/Summary","h":"#前言","p":1732},{"i":1735,"t":"扫盲","u":"/en/docs/Tui-Mian/Summary","h":"#扫盲","p":1732},{"i":1737,"t":"个人情况","u":"/en/docs/Tui-Mian/Summary","h":"#个人情况","p":1732},{"i":1739,"t":"前期准备","u":"/en/docs/Tui-Mian/Summary","h":"#前期准备","p":1732},{"i":1740,"t":"夏令营","u":"/en/docs/Tui-Mian/Summary","h":"#夏令营","p":1732},{"i":1741,"t":"预推免","u":"/en/docs/Tui-Mian/Summary","h":"#预推免","p":1732},{"i":1742,"t":"后序","u":"/en/docs/Tui-Mian/Summary","h":"#后序","p":1732}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/874",[0,0.439]],["t/876",[0,0.439]],["t/880",[0,0.439]],["t/882",[0,0.439]],["t/885",[0,0.439]],["t/887",[1,6.526]],["t/891",[0,0.439]],["t/895",[0,0.333,2,4.957]],["t/897",[0,0.439]],["t/898",[3,5.546]],["t/900",[3,4.213,4,4.508]],["t/902",[0,0.439]],["t/904",[0,0.439]],["t/906",[0,0.439]],["t/907",[0,0.439]],["t/909",[0,0.439]],["t/911",[0,0.439]],["t/913",[5,6.526]],["t/914",[0,0.439]],["t/916",[0,0.439]],["t/918",[0,0.439]],["t/920",[4,5.935]],["t/922",[0,0.439]],["t/924",[6,6.526]],["t/926",[7,5.935]],["t/928",[8,6.526]],["t/930",[9,5.935]],["t/932",[10,5.935]],["t/934",[11,5.935]],["t/936",[12,5.935]],["t/938",[13,6.526]],["t/940",[14,6.526]],["t/942",[15,6.526]],["t/944",[16,6.526]],["t/946",[0,0.439]],["t/947",[0,0.439]],["t/949",[0,0.333,17,4.957]],["t/951",[0,0.333,18,4.957]],["t/953",[0,0.439]],["t/954",[0,0.439]],["t/956",[19,4.508,20,4.957]],["t/958",[19,5.499,21,3.997]],["t/962",[0,0.439]],["t/964",[0,0.439]],["t/967",[0,0.439]],["t/968",[22,6.526]],["t/970",[23,6.526]],["t/972",[0,0.439]],["t/974",[0,0.439]],["t/976",[0,0.439]],["t/978",[0,0.439]],["t/982",[7,5.935]],["t/984",[10,5.935]],["t/986",[9,5.935]],["t/988",[24,6.526]],["t/990",[25,6.526]],["t/992",[12,5.935]],["t/994",[26,6.526]],["t/996",[27,6.526]],["t/998",[28,6.526]],["t/1000",[29,6.526]],["t/1003",[0,0.439]],["t/1004",[0,0.333,30,4.957]],["t/1006",[0,0.333,31,4.957]],["t/1008",[0,0.333,32,4.957]],["t/1010",[0,0.439]],["t/1011",[0,0.333,33,4.957]],["t/1013",[0,0.333,34,4.957]],["t/1015",[0,0.333,35,4.957]],["t/1017",[0,0.333,36,4.957]],["t/1019",[0,0.439]],["t/1020",[0,0.333,37,4.957]],["t/1021",[38,4.957,39,4.957]],["t/1023",[40,4.957,41,4.957]],["t/1024",[42,4.957,43,4.957]],["t/1025",[0,0.439]],["t/1027",[44,3.992,45,4.957]],["t/1028",[46,3.669,47,4.957]],["t/1030",[48,4.213,49,4.957]],["t/1032",[50,3.992,51,4.508]],["t/1033",[51,4.508,52,4.213]],["t/1035",[0,0.333,53,4.508]],["t/1037",[54,4.508,55,4.957]],["t/1039",[0,0.439]],["t/1040",[0,0.333,56,4.957]],["t/1042",[0,0.333,57,4.957]],["t/1044",[0,0.333,58,4.957]],["t/1045",[0,0.269,50,3.218,59,3.997]],["t/1047",[0,0.333,60,4.957]],["t/1049",[0,0.439]],["t/1050",[0,0.333,44,3.992]],["t/1052",[0,0.333,46,3.669]],["t/1054",[0,0.333,48,4.213]],["t/1056",[0,0.333,50,3.992]],["t/1058",[0,0.333,52,4.213]],["t/1062",[3,5.546]],["t/1064",[61,6.526]],["t/1068",[0,0.439]],["t/1072",[0,0.439]],["t/1073",[0,0.439]],["t/1075",[0,0.439]],["t/1077",[0,0.439]],["t/1079",[0,0.439]],["t/1081",[62,4.83]],["t/1083",[63,6.526]],["t/1085",[0,0.439]],["t/1089",[0,0.439]],["t/1091",[0,0.439]],["t/1093",[0,0.439]],["t/1097",[0,0.333,46,3.669]],["t/1098",[0,0.439]],["t/1100",[0,0.439]],["t/1102",[0,0.439]],["t/1104",[0,0.439]],["t/1105",[0,0.333,48,4.213]],["t/1106",[0,0.439]],["t/1108",[0,0.333,50,3.992]],["t/1109",[0,0.439]],["t/1111",[0,0.439]],["t/1113",[0,0.439]],["t/1115",[0,0.333,52,4.213]],["t/1116",[0,0.439]],["t/1118",[0,0.439]],["t/1120",[0,0.439]],["t/1122",[0,0.333,53,4.508]],["t/1124",[0,0.439]],["t/1126",[0,0.439]],["t/1128",[0,0.439]],["t/1130",[0,0.333,54,4.508]],["t/1131",[0,0.439]],["t/1133",[0,0.439]],["t/1134",[0,0.333,64,4.957]],["t/1135",[0,0.439]],["t/1137",[0,0.439]],["t/1139",[0,0.333,65,4.957]],["t/1140",[0,0.439]],["t/1142",[0,0.439]],["t/1144",[0,0.439]],["t/1146",[0,0.439]],["t/1150",[0,0.439]],["t/1152",[66,5.023]],["t/1153",[0,0.439]],["t/1155",[66,3.816,67,4.508]],["t/1157",[0,0.439]],["t/1159",[68,5.935]],["t/1161",[69,3.543,70,4.508]],["t/1163",[69,2.856,71,3.635,72,3.635]],["t/1164",[73,5.546]],["t/1165",[0,0.439]],["t/1167",[74,3.992,75,4.508]],["t/1169",[74,2.035,76,2.298,77,2.148,78,2.148,79,1.656,80,1.75]],["t/1172",[0,0.439]],["t/1174",[81,6.526]],["t/1176",[82,6.526]],["t/1178",[0,0.439]],["t/1180",[0,0.439]],["t/1182",[0,0.439]],["t/1184",[83,6.526]],["t/1186",[0,0.439]],["t/1188",[0,0.439]],["t/1190",[84,6.526]],["t/1192",[62,2.478,85,3.348,86,3.348,87,2.577]],["t/1194",[88,6.526]],["t/1196",[87,3.816,89,4.213]],["t/1200",[0,0.439]],["t/1201",[0,0.406,90,3.635]],["t/1203",[0,0.439]],["t/1205",[0,0.439]],["t/1207",[0,0.439]],["t/1208",[0,0.439]],["t/1209",[0,0.333,91,3.248]],["t/1211",[0,0.314,91,1.887,92,2.132,93,2.619]],["t/1213",[0,0.333,94,4.508]],["t/1215",[0,0.269,44,3.218,95,3.218]],["t/1217",[0,0.269,46,2.958,95,3.218]],["t/1219",[0,0.439]],["t/1221",[0,0.439]],["t/1222",[0,0.439]],["t/1224",[96,4.508,97,4.508]],["t/1226",[0,0.439]],["t/1227",[0,0.333,98,4.508]],["t/1229",[0,0.406,91,2.618]],["t/1231",[0,0.397,91,3.063]],["t/1235",[0,0.439]],["t/1237",[66,2.577,99,3.348,100,3.348,101,3.045]],["t/1239",[0,0.439]],["t/1241",[79,2.618,102,3.997,103,3.997]],["t/1243",[104,4.957,105,4.957]],["t/1245",[106,4.957,107,4.508]],["t/1247",[62,2.132,73,2.448,101,2.619,108,2.88,109,2.88]],["t/1251",[0,0.439]],["t/1253",[0,0.439]],["t/1255",[0,0.439]],["t/1257",[0,0.439]],["t/1259",[110,6.526]],["t/1261",[0,0.269,111,3.635,112,3.396]],["t/1263",[111,3.045,113,3.348,114,3.348,115,3.348]],["t/1265",[0,0.439]],["t/1269",[116,6.526]],["t/1270",[0,0.439]],["t/1272",[0,0.439]],["t/1274",[79,3.248,80,3.433]],["t/1275",[79,3.248,80,3.433]],["t/1277",[79,3.248,80,3.433]],["t/1279",[79,3.248,80,3.433]],["t/1281",[77,2.845,78,2.845,79,2.193,80,2.318]],["t/1283",[79,3.248,117,4.957]],["t/1285",[0,0.269,79,2.618,80,2.768]],["t/1287",[0,0.439]],["t/1289",[0,0.439]],["t/1291",[0,0.439]],["t/1293",[0,0.439]],["t/1295",[0,0.333,118,4.957]],["t/1299",[0,0.439]],["t/1301",[0,0.269,119,3.997,120,3.635]],["t/1303",[0,0.269,120,3.635,121,3.997]],["t/1306",[0,0.439]],["t/1308",[0,0.439]],["t/1310",[122,6.526]],["t/1313",[0,0.439]],["t/1314",[0,0.269,123,3.997,124,3.396]],["t/1316",[125,3.348,126,3.348,127,3.348,128,3.348]],["t/1318",[0,0.439]],["t/1319",[0,0.225,129,3.348,130,3.348,131,3.348]],["t/1321",[0,0.225,132,2.845,133,3.348,134,2.696]],["t/1324",[112,2.845,132,2.845,135,3.045,136,3.045]],["t/1326",[107,2.619,112,2.448,132,2.448,135,2.619,136,2.619]],["t/1328",[137,6.526]],["t/1332",[0,0.439]],["t/1334",[138,6.526]],["t/1336",[139,6.526]],["t/1339",[124,4.213,140,4.508]],["t/1341",[124,3.396,140,3.635,141,3.997]],["t/1343",[142,6.526]],["t/1345",[0,0.439]],["t/1348",[0,0.333,143,4.957]],["t/1350",[0,0.439]],["t/1353",[0,0.439]],["t/1355",[0,0.439]],["t/1357",[0,0.439]],["t/1360",[0,0.439]],["t/1362",[0,0.439]],["t/1364",[0,0.439]],["t/1367",[0,0.439]],["t/1369",[0,0.439]],["t/1371",[0,0.439]],["t/1374",[0,0.439]],["t/1376",[0,0.439]],["t/1378",[0,0.439]],["t/1381",[0,0.439]],["t/1385",[0,0.439]],["t/1388",[0,0.439]],["t/1390",[66,5.023]],["t/1391",[0,0.439]],["t/1393",[66,3.816,67,4.508]],["t/1395",[0,0.439]],["t/1397",[68,5.935]],["t/1399",[69,3.543,70,4.508]],["t/1401",[69,2.856,71,3.635,72,3.635]],["t/1402",[73,5.546]],["t/1403",[0,0.439]],["t/1405",[74,3.992,75,4.508]],["t/1407",[74,2.035,76,2.298,77,2.148,78,2.148,79,1.656,80,1.75]],["t/1411",[0,0.439]],["t/1413",[0,0.333,144,4.508]],["t/1415",[0,0.439]],["t/1416",[92,3.669,145,3.816]],["t/1418",[62,2.478,69,2.393,87,2.577,145,2.577]],["t/1422",[146,4.957,147,4.957]],["t/1423",[0,0.439]],["t/1425",[148,6.526]],["t/1427",[0,0.439]],["t/1429",[0,0.439]],["t/1433",[0,0.439]],["t/1435",[0,0.439]],["t/1437",[0,0.439]],["t/1439",[89,4.213,134,3.992]],["t/1441",[0,0.439]],["t/1443",[0,0.439]],["t/1444",[0,0.333,149,3.992]],["t/1446",[0,0.439]],["t/1447",[0,0.397,92,2.132,150,2.619]],["t/1448",[0,0.406,151,3.635]],["t/1449",[0,0.439]],["t/1450",[0,0.439]],["t/1451",[0,0.269,149,3.218,152,3.635]],["t/1455",[153,6.526]],["t/1457",[154,6.526]],["t/1459",[155,6.526]],["t/1462",[0,0.439]],["t/1464",[0,0.439]],["t/1466",[0,0.439]],["t/1468",[0,0.439]],["t/1469",[0,0.439]],["t/1471",[0,0.439]],["t/1473",[0,0.439]],["t/1477",[0,0.439]],["t/1479",[0,0.439]],["t/1480",[62,2.958,87,3.076,156,3.997]],["t/1482",[91,3.248,157,4.508]],["t/1484",[0,0.439]],["t/1485",[0,0.439]],["t/1487",[91,2.193,145,2.577,157,3.045,158,3.348]],["t/1490",[0,0.439]],["t/1492",[0,0.333,69,3.543]],["t/1493",[159,6.526]],["t/1495",[160,6.526]],["t/1497",[161,4.957,162,4.957]],["t/1499",[163,4.957,164,4.957]],["t/1501",[165,6.526]],["t/1503",[166,6.526]],["t/1505",[167,4.957,168,4.957]],["t/1507",[169,6.526]],["t/1513",[170,5.546]],["t/1515",[170,5.546]],["t/1516",[170,5.546]],["t/1518",[0,0.439]],["t/1520",[0,0.439]],["t/1524",[0,0.439]],["t/1526",[0,0.439]],["t/1528",[0,0.439]],["t/1530",[89,4.213,134,3.992]],["t/1532",[0,0.439]],["t/1534",[0,0.439]],["t/1535",[0,0.333,149,3.992]],["t/1537",[0,0.439]],["t/1538",[0,0.397,92,2.132,150,2.619]],["t/1539",[0,0.406,151,3.635]],["t/1540",[0,0.439]],["t/1541",[0,0.439]],["t/1542",[0,0.269,149,3.218,152,3.635]],["t/1546",[0,0.439]],["t/1547",[0,0.406,90,3.635]],["t/1549",[0,0.439]],["t/1551",[0,0.439]],["t/1553",[0,0.439]],["t/1554",[0,0.439]],["t/1555",[0,0.333,91,3.248]],["t/1557",[0,0.314,91,1.887,92,2.132,93,2.619]],["t/1559",[0,0.333,94,4.508]],["t/1561",[0,0.269,44,3.218,95,3.218]],["t/1563",[0,0.269,46,2.958,95,3.218]],["t/1565",[0,0.439]],["t/1567",[0,0.439]],["t/1568",[0,0.439]],["t/1570",[96,4.508,97,4.508]],["t/1572",[0,0.439]],["t/1573",[0,0.333,98,4.508]],["t/1575",[0,0.406,91,2.618]],["t/1577",[0,0.397,91,3.063]],["t/1581",[0,0.439]],["t/1582",[0,0.439]],["t/1585",[0,0.439]],["t/1587",[0,0.439]],["t/1589",[0,0.439]],["t/1591",[0,0.439]],["t/1595",[0,0.439]],["t/1599",[0,0.439]],["t/1605",[171,6.526]],["t/1607",[172,3.997,173,3.997,174,3.997]],["t/1609",[175,6.526]],["t/1611",[176,6.526]],["t/1615",[0,0.439]],["t/1617",[0,0.333,144,4.508]],["t/1619",[0,0.439]],["t/1620",[92,3.669,145,3.816]],["t/1622",[62,2.478,69,2.393,87,2.577,145,2.577]],["t/1626",[0,0.439]],["t/1628",[0,0.439]],["t/1630",[0,0.439]],["t/1632",[0,0.439]],["t/1633",[0,0.439]],["t/1635",[0,0.439]],["t/1637",[0,0.439]],["t/1639",[0,0.439]],["t/1642",[177,4.957,178,4.957]],["t/1644",[179,4.957,180,4.957]],["t/1647",[0,0.439]],["t/1649",[0,0.439]],["t/1653",[0,0.439]],["t/1655",[0,0.439]],["t/1657",[0,0.439]],["t/1660",[0,0.439]],["t/1662",[0,0.439]],["t/1666",[0,0.439]],["t/1668",[0,0.439]],["t/1670",[0,0.439]],["t/1673",[0,0.439]],["t/1676",[0,0.439]],["t/1678",[0,0.439]],["t/1682",[0,0.439]],["t/1684",[0,0.439]],["t/1688",[0,0.439]],["t/1691",[46,2.958,181,3.997,182,3.997]],["t/1692",[183,6.526]],["t/1694",[0,0.439]],["t/1696",[0,0.439]],["t/1698",[0,0.439]],["t/1700",[184,6.526]],["t/1701",[11,5.935]],["t/1703",[185,6.526]],["t/1705",[186,6.526]],["t/1707",[187,6.526]],["t/1709",[188,6.526]],["t/1711",[0,0.439]],["t/1713",[0,0.439]],["t/1715",[0,0.439]],["t/1717",[0,0.439]],["t/1719",[134,3.992,189,4.957]],["t/1721",[190,6.526]],["t/1723",[0,0.439]],["t/1725",[0,0.439]],["t/1726",[0,0.439]],["t/1728",[0,0.439]],["t/1730",[0,0.439]],["t/1733",[0,0.439]],["t/1735",[0,0.439]],["t/1737",[0,0.439]],["t/1739",[0,0.439]],["t/1740",[0,0.439]],["t/1741",[0,0.439]],["t/1742",[0,0.439]]],"invertedIndex":[["",{"_index":0,"t":{"874":{"position":[[0,4]]},"876":{"position":[[0,2]]},"880":{"position":[[0,4]]},"882":{"position":[[0,2]]},"885":{"position":[[0,4]]},"891":{"position":[[0,4]]},"895":{"position":[[7,3]]},"897":{"position":[[0,3]]},"902":{"position":[[0,3]]},"904":{"position":[[0,5]]},"906":{"position":[[0,3]]},"907":{"position":[[0,2]]},"909":{"position":[[0,3]]},"911":{"position":[[0,5]]},"914":{"position":[[0,2]]},"916":{"position":[[0,14]]},"918":{"position":[[0,14]]},"922":{"position":[[0,2]]},"946":{"position":[[0,3]]},"947":{"position":[[0,10]]},"949":{"position":[[0,5]]},"951":{"position":[[15,3]]},"953":{"position":[[0,3]]},"954":{"position":[[0,3]]},"962":{"position":[[0,4]]},"964":{"position":[[0,2]]},"967":{"position":[[0,8]]},"972":{"position":[[0,7]]},"974":{"position":[[0,5]]},"976":{"position":[[0,2]]},"978":{"position":[[0,2]]},"1003":{"position":[[0,6]]},"1004":{"position":[[4,9]]},"1006":{"position":[[4,5]]},"1008":{"position":[[4,4]]},"1010":{"position":[[0,9]]},"1011":{"position":[[4,2]]},"1013":{"position":[[4,3]]},"1015":{"position":[[4,6]]},"1017":{"position":[[4,7]]},"1019":{"position":[[0,8]]},"1020":{"position":[[4,10]]},"1025":{"position":[[0,14]]},"1035":{"position":[[3,5]]},"1039":{"position":[[0,14]]},"1040":{"position":[[4,2]]},"1042":{"position":[[4,2]]},"1044":{"position":[[4,4]]},"1045":{"position":[[4,2]]},"1047":{"position":[[4,4]]},"1049":{"position":[[0,4]]},"1050":{"position":[[2,9]]},"1052":{"position":[[2,9]]},"1054":{"position":[[2,4]]},"1056":{"position":[[2,4]]},"1058":{"position":[[2,3]]},"1068":{"position":[[0,4]]},"1072":{"position":[[0,2]]},"1073":{"position":[[0,9]]},"1075":{"position":[[0,8]]},"1077":{"position":[[0,4]]},"1079":{"position":[[0,7]]},"1085":{"position":[[0,4]]},"1089":{"position":[[0,4]]},"1091":{"position":[[0,4]]},"1093":{"position":[[0,4]]},"1097":{"position":[[4,8]]},"1098":{"position":[[0,8]]},"1100":{"position":[[0,4]]},"1102":{"position":[[0,6]]},"1104":{"position":[[0,5]]},"1105":{"position":[[4,4]]},"1106":{"position":[[0,5]]},"1108":{"position":[[4,9]]},"1109":{"position":[[0,3]]},"1111":{"position":[[0,4]]},"1113":{"position":[[0,5]]},"1115":{"position":[[4,6]]},"1116":{"position":[[0,6]]},"1118":{"position":[[0,7]]},"1120":{"position":[[0,6]]},"1122":{"position":[[4,6]]},"1124":{"position":[[0,4]]},"1126":{"position":[[0,4]]},"1128":{"position":[[0,7]]},"1130":{"position":[[4,6]]},"1131":{"position":[[0,8]]},"1133":{"position":[[0,8]]},"1134":{"position":[[4,4]]},"1135":{"position":[[0,6]]},"1137":{"position":[[0,6]]},"1139":{"position":[[5,4]]},"1140":{"position":[[0,5]]},"1142":{"position":[[0,9]]},"1144":{"position":[[0,6]]},"1146":{"position":[[0,9]]},"1150":{"position":[[0,4]]},"1153":{"position":[[0,4]]},"1157":{"position":[[0,4]]},"1165":{"position":[[0,4]]},"1172":{"position":[[0,11]]},"1178":{"position":[[0,12]]},"1180":{"position":[[0,9]]},"1182":{"position":[[0,6]]},"1186":{"position":[[0,6]]},"1188":{"position":[[0,10]]},"1200":{"position":[[0,2]]},"1201":{"position":[[0,2],[12,4]]},"1203":{"position":[[0,4]]},"1205":{"position":[[0,8]]},"1207":{"position":[[0,2]]},"1208":{"position":[[0,4]]},"1209":{"position":[[8,4]]},"1211":{"position":[[8,1],[19,1]]},"1213":{"position":[[22,5]]},"1215":{"position":[[0,2]]},"1217":{"position":[[0,2]]},"1219":{"position":[[0,6]]},"1221":{"position":[[0,4]]},"1222":{"position":[[0,12]]},"1226":{"position":[[0,7]]},"1227":{"position":[[10,5]]},"1229":{"position":[[0,9],[18,7]]},"1231":{"position":[[0,8],[17,8],[34,4]]},"1235":{"position":[[0,2]]},"1239":{"position":[[0,2]]},"1251":{"position":[[0,2]]},"1253":{"position":[[0,8]]},"1255":{"position":[[0,4]]},"1257":{"position":[[0,4]]},"1261":{"position":[[6,2]]},"1265":{"position":[[0,2]]},"1270":{"position":[[0,9]]},"1272":{"position":[[0,11]]},"1285":{"position":[[15,3]]},"1287":{"position":[[0,4]]},"1289":{"position":[[0,11]]},"1291":{"position":[[0,6]]},"1293":{"position":[[0,2]]},"1295":{"position":[[0,8]]},"1299":{"position":[[0,4]]},"1301":{"position":[[0,5]]},"1303":{"position":[[0,4]]},"1306":{"position":[[0,2]]},"1308":{"position":[[0,7]]},"1313":{"position":[[0,4]]},"1314":{"position":[[10,1]]},"1318":{"position":[[0,4]]},"1319":{"position":[[19,4]]},"1321":{"position":[[19,5]]},"1332":{"position":[[0,6]]},"1345":{"position":[[0,29]]},"1348":{"position":[[4,2]]},"1350":{"position":[[0,5]]},"1353":{"position":[[0,10]]},"1355":{"position":[[0,8]]},"1357":{"position":[[0,2]]},"1360":{"position":[[0,13]]},"1362":{"position":[[0,6]]},"1364":{"position":[[0,5]]},"1367":{"position":[[0,6]]},"1369":{"position":[[0,4]]},"1371":{"position":[[0,2]]},"1374":{"position":[[0,2]]},"1376":{"position":[[0,4]]},"1378":{"position":[[0,2]]},"1381":{"position":[[0,6]]},"1385":{"position":[[0,7]]},"1388":{"position":[[0,4]]},"1391":{"position":[[0,4]]},"1395":{"position":[[0,4]]},"1403":{"position":[[0,4]]},"1411":{"position":[[0,2]]},"1413":{"position":[[11,5]]},"1415":{"position":[[0,4]]},"1423":{"position":[[0,9]]},"1427":{"position":[[0,11]]},"1429":{"position":[[0,7]]},"1433":{"position":[[0,2]]},"1435":{"position":[[0,4]]},"1437":{"position":[[0,7]]},"1441":{"position":[[0,2]]},"1443":{"position":[[0,7]]},"1444":{"position":[[0,11]]},"1446":{"position":[[0,5]]},"1447":{"position":[[0,18],[25,2],[34,2]]},"1448":{"position":[[0,4],[9,8]]},"1449":{"position":[[0,14]]},"1450":{"position":[[0,13]]},"1451":{"position":[[4,8]]},"1462":{"position":[[0,2]]},"1464":{"position":[[0,7]]},"1466":{"position":[[0,7]]},"1468":{"position":[[0,7]]},"1469":{"position":[[0,4]]},"1471":{"position":[[0,6]]},"1473":{"position":[[0,2]]},"1477":{"position":[[0,2]]},"1479":{"position":[[0,4]]},"1484":{"position":[[0,4]]},"1485":{"position":[[0,2]]},"1490":{"position":[[0,10]]},"1492":{"position":[[15,5]]},"1518":{"position":[[0,10]]},"1520":{"position":[[0,10]]},"1524":{"position":[[0,2]]},"1526":{"position":[[0,4]]},"1528":{"position":[[0,7]]},"1532":{"position":[[0,2]]},"1534":{"position":[[0,7]]},"1535":{"position":[[0,11]]},"1537":{"position":[[0,5]]},"1538":{"position":[[0,18],[25,2],[34,2]]},"1539":{"position":[[0,4],[9,8]]},"1540":{"position":[[0,14]]},"1541":{"position":[[0,13]]},"1542":{"position":[[4,8]]},"1546":{"position":[[0,2]]},"1547":{"position":[[0,2],[12,4]]},"1549":{"position":[[0,4]]},"1551":{"position":[[0,8]]},"1553":{"position":[[0,2]]},"1554":{"position":[[0,4]]},"1555":{"position":[[8,4]]},"1557":{"position":[[8,1],[19,1]]},"1559":{"position":[[22,5]]},"1561":{"position":[[0,2]]},"1563":{"position":[[0,2]]},"1565":{"position":[[0,6]]},"1567":{"position":[[0,4]]},"1568":{"position":[[0,12]]},"1572":{"position":[[0,7]]},"1573":{"position":[[10,5]]},"1575":{"position":[[0,9],[18,7]]},"1577":{"position":[[0,8],[17,8],[34,4]]},"1581":{"position":[[0,4]]},"1582":{"position":[[0,4]]},"1585":{"position":[[0,8]]},"1587":{"position":[[0,6]]},"1589":{"position":[[0,14]]},"1591":{"position":[[0,8]]},"1595":{"position":[[0,4]]},"1599":{"position":[[0,4]]},"1615":{"position":[[0,2]]},"1617":{"position":[[11,5]]},"1619":{"position":[[0,4]]},"1626":{"position":[[0,2]]},"1628":{"position":[[0,7]]},"1630":{"position":[[0,7]]},"1632":{"position":[[0,7]]},"1633":{"position":[[0,4]]},"1635":{"position":[[0,6]]},"1637":{"position":[[0,6]]},"1639":{"position":[[0,2]]},"1647":{"position":[[0,6]]},"1649":{"position":[[0,6]]},"1653":{"position":[[0,6]]},"1655":{"position":[[0,10]]},"1657":{"position":[[0,4]]},"1660":{"position":[[0,1]]},"1662":{"position":[[0,1]]},"1666":{"position":[[0,2]]},"1668":{"position":[[0,4]]},"1670":{"position":[[0,2]]},"1673":{"position":[[0,6]]},"1676":{"position":[[0,6]]},"1678":{"position":[[0,5]]},"1682":{"position":[[0,6]]},"1684":{"position":[[0,8]]},"1688":{"position":[[0,4]]},"1694":{"position":[[0,7]]},"1696":{"position":[[0,7]]},"1698":{"position":[[0,10]]},"1711":{"position":[[0,7]]},"1713":{"position":[[0,8]]},"1715":{"position":[[0,8]]},"1717":{"position":[[0,9]]},"1723":{"position":[[0,8]]},"1725":{"position":[[0,6]]},"1726":{"position":[[0,9]]},"1728":{"position":[[0,12]]},"1730":{"position":[[0,13]]},"1733":{"position":[[0,2]]},"1735":{"position":[[0,2]]},"1737":{"position":[[0,4]]},"1739":{"position":[[0,4]]},"1740":{"position":[[0,3]]},"1741":{"position":[[0,3]]},"1742":{"position":[[0,2]]}}}],["1",{"_index":44,"t":{"1027":{"position":[[0,2]]},"1050":{"position":[[0,1]]},"1215":{"position":[[9,1]]},"1561":{"position":[[9,1]]}}}],["1.1",{"_index":30,"t":{"1004":{"position":[[0,3]]}}}],["1.2",{"_index":31,"t":{"1006":{"position":[[0,3]]}}}],["1.3",{"_index":32,"t":{"1008":{"position":[[0,3]]}}}],["11",{"_index":65,"t":{"1139":{"position":[[0,4]]}}}],["1x1",{"_index":143,"t":{"1348":{"position":[[0,3]]}}}],["2",{"_index":46,"t":{"1028":{"position":[[0,2]]},"1052":{"position":[[0,1]]},"1097":{"position":[[0,3]]},"1217":{"position":[[9,1]]},"1563":{"position":[[9,1]]},"1691":{"position":[[4,1]]}}}],["2.1",{"_index":33,"t":{"1011":{"position":[[0,3]]}}}],["2.2",{"_index":34,"t":{"1013":{"position":[[0,3]]}}}],["2.3",{"_index":35,"t":{"1015":{"position":[[0,3]]}}}],["2.4",{"_index":36,"t":{"1017":{"position":[[0,3]]}}}],["2019",{"_index":17,"t":{"949":{"position":[[6,10]]}}}],["2(2019",{"_index":164,"t":{"1499":{"position":[[6,7]]}}}],["3",{"_index":48,"t":{"1030":{"position":[[0,2]]},"1054":{"position":[[0,1]]},"1105":{"position":[[0,3]]}}}],["3.1",{"_index":37,"t":{"1020":{"position":[[0,3]]}}}],["3.2",{"_index":38,"t":{"1021":{"position":[[0,3]]}}}],["3.3",{"_index":40,"t":{"1023":{"position":[[0,3]]}}}],["3.4",{"_index":42,"t":{"1024":{"position":[[0,3]]}}}],["4",{"_index":50,"t":{"1032":{"position":[[0,2]]},"1045":{"position":[[7,10]]},"1056":{"position":[[0,1]]},"1108":{"position":[[0,3]]}}}],["5",{"_index":52,"t":{"1033":{"position":[[0,2]]},"1058":{"position":[[0,1]]},"1115":{"position":[[0,3]]}}}],["5.1",{"_index":56,"t":{"1040":{"position":[[0,3]]}}}],["5.2",{"_index":57,"t":{"1042":{"position":[[0,3]]}}}],["5.3",{"_index":58,"t":{"1044":{"position":[[0,3]]}}}],["5.4",{"_index":59,"t":{"1045":{"position":[[0,3]]}}}],["5.5",{"_index":60,"t":{"1047":{"position":[[0,3]]}}}],["6",{"_index":53,"t":{"1035":{"position":[[0,2]]},"1122":{"position":[[0,3]]}}}],["7",{"_index":54,"t":{"1037":{"position":[[0,2]]},"1130":{"position":[[0,3]]}}}],["8",{"_index":64,"t":{"1134":{"position":[[0,3]]}}}],["adapt",{"_index":156,"t":{"1480":{"position":[[17,8]]}}}],["algorithm",{"_index":6,"t":{"924":{"position":[[0,9]]}}}],["anaconda",{"_index":90,"t":{"1201":{"position":[[3,8]]},"1547":{"position":[[3,8]]}}}],["ar",{"_index":81,"t":{"1174":{"position":[[0,9]]}}}],["attent",{"_index":80,"t":{"1169":{"position":[[39,9]]},"1274":{"position":[[5,12]]},"1275":{"position":[[8,9]]},"1277":{"position":[[5,14]]},"1279":{"position":[[5,12]]},"1281":{"position":[[16,9]]},"1285":{"position":[[5,9]]},"1407":{"position":[[39,9]]}}}],["attention与cnn",{"_index":117,"t":{"1283":{"position":[[5,16]]}}}],["autoregress",{"_index":69,"t":{"1161":{"position":[[0,14]]},"1163":{"position":[[4,14]]},"1399":{"position":[[0,14]]},"1401":{"position":[[4,14]]},"1418":{"position":[[17,14]]},"1492":{"position":[[0,14]]},"1622":{"position":[[17,14]]}}}],["base",{"_index":86,"t":{"1192":{"position":[[14,5]]}}}],["batch_first",{"_index":176,"t":{"1611":{"position":[[0,17]]}}}],["benchmark",{"_index":83,"t":{"1184":{"position":[[0,9]]}}}],["bert",{"_index":106,"t":{"1245":{"position":[[9,4]]}}}],["bert(bidirect",{"_index":99,"t":{"1237":{"position":[[0,18]]}}}],["biset",{"_index":29,"t":{"1000":{"position":[[0,5]]}}}],["bitset",{"_index":16,"t":{"944":{"position":[[0,6]]}}}],["boch",{"_index":23,"t":{"970":{"position":[[0,6]]}}}],["c",{"_index":3,"t":{"898":{"position":[[0,4]]},"900":{"position":[[0,3]]},"1062":{"position":[[0,7]]}}}],["c++new",{"_index":5,"t":{"913":{"position":[[0,9]]}}}],["cbam",{"_index":188,"t":{"1709":{"position":[[0,6]]}}}],["cnn",{"_index":116,"t":{"1269":{"position":[[0,9]]}}}],["compute_text_featur",{"_index":94,"t":{"1213":{"position":[[0,21]]},"1559":{"position":[[0,21]]}}}],["convolut",{"_index":120,"t":{"1301":{"position":[[16,11]]},"1303":{"position":[[15,11]]}}}],["cross",{"_index":132,"t":{"1321":{"position":[[0,5]]},"1324":{"position":[[15,5]]},"1326":{"position":[[16,5]]}}}],["dall",{"_index":167,"t":{"1505":{"position":[[0,4]]}}}],["dataset",{"_index":154,"t":{"1457":{"position":[[0,7]]}}}],["decod",{"_index":68,"t":{"1159":{"position":[[0,7]]},"1397":{"position":[[0,7]]}}}],["decoder(at",{"_index":70,"t":{"1161":{"position":[[15,11]]},"1399":{"position":[[15,11]]}}}],["decoder(nat",{"_index":72,"t":{"1163":{"position":[[19,12]]},"1401":{"position":[[19,12]]}}}],["depthwis",{"_index":119,"t":{"1301":{"position":[[6,9]]}}}],["dequ",{"_index":26,"t":{"994":{"position":[[0,5]]}}}],["diffus",{"_index":89,"t":{"1196":{"position":[[0,14]]},"1439":{"position":[[0,9]]},"1530":{"position":[[0,9]]}}}],["disclaim",{"_index":1,"t":{"887":{"position":[[0,10]]}}}],["discrimin",{"_index":63,"t":{"1083":{"position":[[0,18]]}}}],["dock",{"_index":178,"t":{"1642":{"position":[[8,4]]}}}],["dot",{"_index":172,"t":{"1607":{"position":[[0,6]]}}}],["embed",{"_index":93,"t":{"1211":{"position":[[21,9]]},"1557":{"position":[[21,9]]}}}],["encod",{"_index":66,"t":{"1152":{"position":[[0,7]]},"1155":{"position":[[16,9]]},"1237":{"position":[[19,7]]},"1390":{"position":[[0,7]]},"1393":{"position":[[16,9]]}}}],["entropi",{"_index":133,"t":{"1321":{"position":[[6,7]]}}}],["error",{"_index":131,"t":{"1319":{"position":[[13,5]]}}}],["e(2021",{"_index":168,"t":{"1505":{"position":[[5,7]]}}}],["fa",{"_index":39,"t":{"1021":{"position":[[4,9]]}}}],["fine",{"_index":104,"t":{"1243":{"position":[[0,4]]}}}],["first",{"_index":45,"t":{"1027":{"position":[[3,9]]}}}],["flow",{"_index":85,"t":{"1192":{"position":[[0,13]]}}}],["focal",{"_index":189,"t":{"1719":{"position":[[0,7]]}}}],["fold",{"_index":135,"t":{"1324":{"position":[[10,4]]},"1326":{"position":[[11,4]]}}}],["follow",{"_index":47,"t":{"1028":{"position":[[3,10]]}}}],["forc",{"_index":75,"t":{"1167":{"position":[[8,7]]},"1405":{"position":[[8,7]]}}}],["forcing与mask",{"_index":76,"t":{"1169":{"position":[[8,14]]},"1407":{"position":[[8,14]]}}}],["gan",{"_index":88,"t":{"1194":{"position":[[0,11]]}}}],["geeko",{"_index":22,"t":{"968":{"position":[[0,7]]}}}],["gener",{"_index":62,"t":{"1081":{"position":[[0,14]]},"1192":{"position":[[20,10]]},"1247":{"position":[[5,10]]},"1418":{"position":[[6,10]]},"1480":{"position":[[0,10]]},"1622":{"position":[[6,10]]}}}],["gpt",{"_index":108,"t":{"1247":{"position":[[0,4]]}}}],["head",{"_index":78,"t":{"1169":{"position":[[29,4]]},"1281":{"position":[[6,4]]},"1407":{"position":[[29,4]]}}}],["imag",{"_index":145,"t":{"1416":{"position":[[0,5]]},"1418":{"position":[[0,5]]},"1487":{"position":[[0,5]]},"1620":{"position":[[0,5]]},"1622":{"position":[[0,5]]}}}],["index",{"_index":21,"t":{"958":{"position":[[15,12]]}}}],["index,若数据不在1~n",{"_index":20,"t":{"956":{"position":[[11,22]]}}}],["k",{"_index":112,"t":{"1261":{"position":[[4,1]]},"1324":{"position":[[8,1]]},"1326":{"position":[[9,1]]}}}],["kde",{"_index":179,"t":{"1644":{"position":[[0,5]]}}}],["kl",{"_index":148,"t":{"1425":{"position":[[0,14]]}}}],["l1",{"_index":138,"t":{"1334":{"position":[[0,5]]}}}],["l2",{"_index":139,"t":{"1336":{"position":[[0,10]]}}}],["latt",{"_index":177,"t":{"1642":{"position":[[0,7]]}}}],["learn",{"_index":157,"t":{"1482":{"position":[[7,8]]},"1487":{"position":[[22,8]]}}}],["lenet",{"_index":122,"t":{"1310":{"position":[[0,8]]}}}],["linear",{"_index":126,"t":{"1316":{"position":[[17,6]]}}}],["linux的编译系统对c",{"_index":61,"t":{"1064":{"position":[[0,22]]}}}],["list",{"_index":8,"t":{"928":{"position":[[0,4]]}}}],["ll(1",{"_index":51,"t":{"1032":{"position":[[3,10]]},"1033":{"position":[[3,10]]}}}],["ll(1)文法到ll(1",{"_index":55,"t":{"1037":{"position":[[3,21]]}}}],["logist",{"_index":124,"t":{"1314":{"position":[[12,10]]},"1339":{"position":[[0,11]]},"1341":{"position":[[0,13]]}}}],["loss",{"_index":134,"t":{"1321":{"position":[[14,4]]},"1439":{"position":[[10,4]]},"1530":{"position":[[10,4]]},"1719":{"position":[[8,4]]}}}],["map",{"_index":11,"t":{"934":{"position":[[0,3]]},"1701":{"position":[[0,6]]}}}],["map/multimap",{"_index":28,"t":{"998":{"position":[[0,12]]}}}],["mapper",{"_index":98,"t":{"1227":{"position":[[0,9]]},"1573":{"position":[[0,9]]}}}],["mar",{"_index":149,"t":{"1444":{"position":[[12,3]]},"1451":{"position":[[0,3]]},"1535":{"position":[[12,3]]},"1542":{"position":[[0,3]]}}}],["mask",{"_index":118,"t":{"1295":{"position":[[9,4]]}}}],["mathemat",{"_index":146,"t":{"1422":{"position":[[0,17]]}}}],["mean",{"_index":129,"t":{"1319":{"position":[[0,4]]}}}],["mlp",{"_index":151,"t":{"1448":{"position":[[5,3]]},"1539":{"position":[[5,3]]}}}],["model",{"_index":87,"t":{"1192":{"position":[[31,6]]},"1196":{"position":[[15,6]]},"1418":{"position":[[32,5]]},"1480":{"position":[[11,5]]},"1622":{"position":[[32,5]]}}}],["motiv",{"_index":144,"t":{"1413":{"position":[[0,10]]},"1617":{"position":[[0,10]]}}}],["multi",{"_index":77,"t":{"1169":{"position":[[23,5]]},"1281":{"position":[[0,5]]},"1407":{"position":[[23,5]]}}}],["multiset",{"_index":15,"t":{"942":{"position":[[0,8]]}}}],["nar",{"_index":82,"t":{"1176":{"position":[[0,11]]}}}],["net",{"_index":182,"t":{"1691":{"position":[[6,3]]}}}],["non",{"_index":71,"t":{"1163":{"position":[[0,3]]},"1401":{"position":[[0,3]]}}}],["nucleu",{"_index":114,"t":{"1263":{"position":[[6,10]]}}}],["overview",{"_index":153,"t":{"1455":{"position":[[0,8]]}}}],["p",{"_index":113,"t":{"1263":{"position":[[4,1]]}}}],["pair",{"_index":10,"t":{"932":{"position":[[0,4]]},"984":{"position":[[0,4]]}}}],["parti(2022",{"_index":169,"t":{"1507":{"position":[[0,11]]}}}],["patch",{"_index":150,"t":{"1447":{"position":[[28,5]]},"1538":{"position":[[28,5]]}}}],["pixelcnn(2016",{"_index":160,"t":{"1495":{"position":[[0,14]]}}}],["pixelrnn(2016",{"_index":159,"t":{"1493":{"position":[[0,14]]}}}],["plasmoid",{"_index":180,"t":{"1644":{"position":[[6,9]]}}}],["pointwis",{"_index":121,"t":{"1303":{"position":[[5,9]]}}}],["posit",{"_index":67,"t":{"1155":{"position":[[0,15]]},"1393":{"position":[[0,15]]}}}],["pre",{"_index":109,"t":{"1247":{"position":[[16,3]]}}}],["preliminari",{"_index":147,"t":{"1422":{"position":[[18,12]]}}}],["pretrain",{"_index":103,"t":{"1241":{"position":[[16,11]]}}}],["priority_queu",{"_index":25,"t":{"990":{"position":[[0,14]]}}}],["product",{"_index":174,"t":{"1607":{"position":[[28,8]]}}}],["product)与矩阵乘法(matmul",{"_index":173,"t":{"1607":{"position":[[7,20]]}}}],["prompt",{"_index":91,"t":{"1209":{"position":[[0,7]]},"1211":{"position":[[0,7]]},"1229":{"position":[[10,7]]},"1231":{"position":[[9,7],[26,7]]},"1482":{"position":[[0,6]]},"1487":{"position":[[15,6]]},"1555":{"position":[[0,7]]},"1557":{"position":[[0,7]]},"1575":{"position":[[10,7]]},"1577":{"position":[[9,7],[26,7]]}}}],["python",{"_index":171,"t":{"1605":{"position":[[0,11]]}}}],["queri",{"_index":24,"t":{"988":{"position":[[0,5]]}}}],["queue",{"_index":13,"t":{"938":{"position":[[0,5]]}}}],["rectifi",{"_index":125,"t":{"1316":{"position":[[0,16]]}}}],["regress",{"_index":140,"t":{"1339":{"position":[[12,10]]},"1341":{"position":[[38,11]]}}}],["regression)和线性回归(linear",{"_index":141,"t":{"1341":{"position":[[14,23]]}}}],["regression)还是分类任务(classif",{"_index":142,"t":{"1343":{"position":[[0,46]]}}}],["relat",{"_index":155,"t":{"1459":{"position":[[0,7]]}}}],["relu",{"_index":128,"t":{"1316":{"position":[[30,5]]}}}],["represent",{"_index":100,"t":{"1237":{"position":[[27,14]]}}}],["re与有穷自动机fa",{"_index":41,"t":{"1023":{"position":[[4,18]]}}}],["rm与有穷自动机fa",{"_index":43,"t":{"1024":{"position":[[4,19]]}}}],["rqtransformer(2021",{"_index":166,"t":{"1503":{"position":[[0,19]]}}}],["sampl",{"_index":115,"t":{"1263":{"position":[[17,9]]}}}],["select",{"_index":49,"t":{"1030":{"position":[[3,10]]}}}],["self",{"_index":79,"t":{"1169":{"position":[[34,4]]},"1241":{"position":[[0,4]]},"1274":{"position":[[0,4]]},"1275":{"position":[[0,7]]},"1277":{"position":[[0,4]]},"1279":{"position":[[0,4]]},"1281":{"position":[[11,4]]},"1283":{"position":[[0,4]]},"1285":{"position":[[0,4]]},"1407":{"position":[[34,4]]}}}],["senet",{"_index":190,"t":{"1721":{"position":[[0,7]]}}}],["set",{"_index":14,"t":{"940":{"position":[[0,3]]}}}],["set/multiset",{"_index":27,"t":{"996":{"position":[[0,12]]}}}],["sigmoid",{"_index":123,"t":{"1314":{"position":[[0,9]]}}}],["sod",{"_index":183,"t":{"1692":{"position":[[0,8]]}}}],["specif",{"_index":158,"t":{"1487":{"position":[[6,8]]}}}],["squar",{"_index":130,"t":{"1319":{"position":[[5,7]]}}}],["stack",{"_index":12,"t":{"936":{"position":[[0,5]]},"992":{"position":[[0,5]]}}}],["stage",{"_index":95,"t":{"1215":{"position":[[3,5]]},"1217":{"position":[[3,5]]},"1561":{"position":[[3,5]]},"1563":{"position":[[3,5]]}}}],["stl",{"_index":4,"t":{"900":{"position":[[4,3]]},"920":{"position":[[0,5]]}}}],["string",{"_index":9,"t":{"930":{"position":[[0,6]]},"986":{"position":[[0,6]]}}}],["summari",{"_index":137,"t":{"1328":{"position":[[0,7]]}}}],["supervis",{"_index":102,"t":{"1241":{"position":[[5,10]]}}}],["teacher",{"_index":74,"t":{"1167":{"position":[[0,7]]},"1169":{"position":[[0,7]]},"1405":{"position":[[0,7]]},"1407":{"position":[[0,7]]}}}],["temperatur",{"_index":110,"t":{"1259":{"position":[[0,15]]}}}],["token",{"_index":92,"t":{"1211":{"position":[[10,8]]},"1416":{"position":[[6,9]]},"1447":{"position":[[19,5]]},"1538":{"position":[[19,5]]},"1557":{"position":[[10,8]]},"1620":{"position":[[6,9]]}}}],["top",{"_index":111,"t":{"1261":{"position":[[0,3]]},"1263":{"position":[[0,3]]}}}],["trade",{"_index":152,"t":{"1451":{"position":[[13,5]]},"1542":{"position":[[13,5]]}}}],["train",{"_index":73,"t":{"1164":{"position":[[0,12]]},"1247":{"position":[[20,7]]},"1402":{"position":[[0,12]]}}}],["transform",{"_index":101,"t":{"1237":{"position":[[47,13]]},"1247":{"position":[[28,11]]}}}],["tune",{"_index":105,"t":{"1243":{"position":[[5,6]]}}}],["u",{"_index":181,"t":{"1691":{"position":[[0,3]]}}}],["ui",{"_index":97,"t":{"1224":{"position":[[4,2]]},"1570":{"position":[[4,2]]}}}],["unit",{"_index":127,"t":{"1316":{"position":[[24,5]]}}}],["u到v",{"_index":18,"t":{"951":{"position":[[0,14]]}}}],["vae",{"_index":84,"t":{"1190":{"position":[[0,11]]}}}],["vae(2017",{"_index":162,"t":{"1497":{"position":[[3,9]]}}}],["val",{"_index":19,"t":{"956":{"position":[[0,7]]},"958":{"position":[[0,7],[28,4]]}}}],["valid",{"_index":136,"t":{"1324":{"position":[[21,11]]},"1326":{"position":[[22,10]]}}}],["vector",{"_index":7,"t":{"926":{"position":[[0,6]]},"982":{"position":[[0,6]]}}}],["visdom",{"_index":170,"t":{"1513":{"position":[[0,8]]},"1515":{"position":[[0,9]]},"1516":{"position":[[0,9]]}}}],["vq",{"_index":161,"t":{"1497":{"position":[[0,2]]}}}],["vqgan(2021",{"_index":165,"t":{"1501":{"position":[[0,11]]}}}],["vqvae",{"_index":163,"t":{"1499":{"position":[[0,5]]}}}],["vs2018",{"_index":2,"t":{"895":{"position":[[0,6]]}}}],["web",{"_index":96,"t":{"1224":{"position":[[0,3]]},"1570":{"position":[[0,3]]}}}],["work",{"_index":107,"t":{"1245":{"position":[[14,5]]},"1326":{"position":[[33,5]]}}}],["yolo",{"_index":184,"t":{"1700":{"position":[[0,6]]}}}],["yolov1",{"_index":185,"t":{"1703":{"position":[[0,9]]}}}],["yolov2",{"_index":186,"t":{"1705":{"position":[[0,9]]}}}],["yolov5",{"_index":187,"t":{"1707":{"position":[[0,9]]}}}],["zip",{"_index":175,"t":{"1609":{"position":[[0,11]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":873,"t":"tip 输入一个数,比如201,让数字随意组合,是否能组合出30的倍数,如果能够组合成30的倍数,就输出最大的倍数,不能就输出-1 例如输入201可以随意组合成 201,210,012,021,102,120等数字 其中120,210都是30的倍数,由于要找最大的,所以答案是210 输入样例:201 输出样例:210","s":"排列组合(求30的倍数)","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"","p":872},{"i":875,"t":"#include using namespace std; int main() { string s; cin >> s; int maxx = 0, flag = 0; sort(s.begin(), s.end()); do { int now = 0; for (int i = 0; i < s.size(); i++) { now = now * 10 + s[i] - '0'; } if (now % 30 == 0) { flag = 1; maxx = max(maxx, now); } } while (next_permutation(s.begin(), s.end())); if (flag == 1) { cout << maxx << endl; return 0; } else { cout << -1 << endl; } }","s":"参考代码","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":872},{"i":877,"t":"使用C++ STL提供的排列组合模版 首先将代排列组合的字符串或数组进行排序 sort(list.begin(), list.end()); 使用排列组合模版 do { something(); } while (next_permutation(list.begin(), list.end())); 此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历","s":"题解","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":872},{"i":879,"t":"tip 设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值","s":"反序输出","u":"/en/docs/Algorithms/题解/反序输出","h":"","p":878},{"i":881,"t":"#include using namespace std; int main() { for (int i = 1000; i <= 9999; i++) { int x = i * 9, y = 0; while (x > 0) { y = y * 10 + x % 10; x /= 10; } if (i == y) { cout << i << endl; } } return 0; }","s":"参考代码","u":"/en/docs/Algorithms/题解/反序输出","h":"#参考代码","p":878},{"i":883,"t":"反序输出可以分为两部分:拆分以及反序拼接 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分 while (x > 0) { y = y * 10 + x % 10; // 拼接与拆分 x /= 10; } 拼接:将s中的数字拼接成整数 int sum = 0; for (int i = 0; i < s.size(); i++) { sum = sum * 10 + s[i]; }","s":"题解","u":"/en/docs/Algorithms/题解/反序输出","h":"#题解","p":878},{"i":886,"t":"该网站的搭建离不开 Docusaurus 的支持以及对 Sonder的宝藏笔记本 的参考。","s":"饮水思源","u":"/en/docs/Acknowledgement/intro","h":"#饮水思源","p":884},{"i":888,"t":"本网站展示的所有标识和链接仅属于个人喜好,不代表国家的立场或企业、组织的行为。 本网站的所有信息仅供参考,不构成法律或商业建议。","s":"Disclaimer","u":"/en/docs/Acknowledgement/intro","h":"#disclaimer","p":884},{"i":890,"t":"tip 欢迎来到笔记本的算法部分","s":"Welcome","u":"/en/docs/Algorithms/intro","h":"","p":889},{"i":892,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Algorithms/intro","h":"#支持我","p":889},{"i":894,"t":"info 转载自Sonder的笔记本 [TOC]","s":"机试技巧与STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"","p":893},{"i":896,"t":"CTRL + J 列出成员 Ctrl+E,D 格式化全部代码 Ctrl+K,F 格式化选中的代码 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTRL + F12 转到声明 CTRL + ALT + J 对象浏览 CTRL + ALT + F1 帮助目录 CTRL + F1 动态帮助 CTRL + K, CTRL + C 注释选择的代码 CTRL + K, CTRL + U 取消对选择代码的注释 CTRL + U 转小写 CTRL + SHIFT + U 转大写 F5 运行调试 CTRL + F5 运行不调试 F10 跨过程序执行 F11 单步逐句执行","s":"vs2018 快捷键","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":893},{"i":899,"t":"头文件 说明 头文件 说明 头文件 说明 assert.h 断言相关 ctype.h 字符类型判断 errno.h 标准错误机制 float.h 浮点限制 limits.h 整形限制 locale.h 本地化接口 math.h 数学函数 setjmp.h 非本地跳转 signal.h 信号相关 stdarg.h 可变参数处理 stddef.h 宏和类型定义 stdio.h 标准I/O stdlib.h 标准工具库 string.h 字符串和内存处理 time.h 时间相关","s":"标准c库","u":"/en/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":893},{"i":901,"t":"using namespace std; 头文件 说明 头文件 说明 头文件 说明 algorithm 通用算法 deque 双端队列 vector 向量 iterator 迭代器 stack 栈 map 图(键值对) list 列表 string 字符串 set 集合 queue 队列 bitset bit类 numeric 数值算法","s":"c++ STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":893},{"i":903,"t":"#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;","s":"常用头","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用头","p":893},{"i":905,"t":"//求最大值和最小值 #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) //取余 #define mod(x) ((x)%MOD) //for循环 #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i) //返回数组元素的个数 #define ARR_SIZE(a) (sizeof((a))/sizeof((a[0]))) //初始化数组 #define MT(x,i) memset(x,i,sizeof(x)) #define MEM(a,b) memset((a),(b),sizeof(a)) //符号重定义 #define LL long long #define ull unsigned long long #define pii pair //常见常数 #define PI acos(-1.0) #define eps 1e-12 #define INF 0x3f3f3f3f //int最大值 const int INF_INT = 2147483647; const ll INF_LL = 9223372036854775807LL; const ull INF_ULL = 18446744073709551615Ull; const ll P = 92540646808111039LL; const ll maxn = 1e5 + 10, MOD = 1e9 + 7; const int Move[4][2] = {-1,0,1,0,0,1,0,-1}; const int Move_[8][2] = {-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};","s":"常用宏定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":893},{"i":908,"t":"struct InitMember { int first; double second; char* third; float four; };","s":"定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#定义","p":893},{"i":910,"t":"方法一:定义时赋值​ struct InitMember test = {-10,3.141590,\"method one\",0.25}; 方法二:定义后逐个赋值​ struct InitMember test; test.first = -10; test.second = 3.141590; test.third = \"method two\"; test.four = 0.25; 方法三:定义时乱序赋值(C++风格)​ struct InitMember test = { second:3.141590, third:\"method three\", first:-10, four:0.25 }; 方法四:构造函数​ //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { ... ... ... return true; } } Graph; Graph g(8, false);","s":"初始化","u":"/en/docs/Algorithms/机试技巧与STL","h":"#初始化","p":893},{"i":912,"t":"typedef struct{int id;int h;} node; bool operator <(const node& a,const node & b){return (a.h)<(b.h);}","s":"运算符重载","u":"/en/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":893},{"i":915,"t":"int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) int *a = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 char *b = new char[10]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p","s":"常规","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常规","p":893},{"i":917,"t":"//列值固定 const int MAXCOL = 3; cin>>row; //申请一维数据并将其转成二维数组指针 int *pp_arr = new int[nRow * MAXCOL]; int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr; //此时p[i][j]就可正常使用","s":"动态申请列大小固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":893},{"i":919,"t":"cin>>row>>col; int **p = new int*[row]; for (int i = 0; i < row; i ++) { p[i] = new int[col]; }","s":"动态申请大小不固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":893},{"i":921,"t":"参考: https://blog.csdn.net/f_zyj/article/details/51594851 https://download.csdn.net/download/f_zyj/9988653","s":"常用STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":893},{"i":923,"t":"STL底层说明​ C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> ... 每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品. 4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 (stack和queue其实是适配器,而不叫容器,因为是对容器的再封装) 6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现 7.set 底层数据结构为红黑树,有序,不重复 8.multiset 底层数据结构为红黑树,有序,可重复 9.map 底层数据结构为红黑树,有序,不重复 10.multimap 底层数据结构为红黑树,有序,可重复 11.hash_set 底层数据结构为hash表,无序,不重复 12.hash_multiset 底层数据结构为hash表,无序,可重复 13.hash_map 底层数据结构为hash表,无序,不重复 14.hash_multimap 底层数据结构为hash表,无序,可重复 CCF 编译出错原因: 不允许C++STL容器嵌套(需要满足相应的格式)​ 就是要在后面的“>”之间,必须得有一个空格,如果有多层,那每层都得有一个空格。 map > user;","s":"简述","u":"/en/docs/Algorithms/机试技巧与STL","h":"#简述","p":893},{"i":925,"t":"头文件:lgorithm 函数参数,返回值以及具体的使用方法请自行去头文件找定义!!! 不修改内容的序列操作​ 函数 说明 adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素 all_ofC++11 检测在给定范围中是否所有元素都满足给定的条件 any_ofC++11 检测在给定范围中是否存在元素满足给定条件 count 返回值等价于给定值的元素的个数 count_if 返回值满足给定条件的元素的个数 equal 返回两个范围是否相等 find 返回第一个值等价于给定值的元素 find_end 查找范围A中与范围B等价的子范围最后出现的位置 find_first_of 查找范围A中第一个与范围B中任一元素等价的元素的位置 find_if 返回第一个值满足给定条件的元素 find_if_notC++11 返回第一个值不满足给定条件的元素 for_each 对范围中的每个元素调用指定函数 mismatch 返回两个范围中第一个元素不等价的位置 none_ofC++11 检测在给定范围中是否不存在元素满足给定的条件 search 在范围A中查找第一个与范围B等价的子范围的位置 search_n 在给定范围中查找第一个连续n个元素都等价于给定值的子范围的位置 修改内容的序列操作​ 函数 说明 copy 将一个范围中的元素拷贝到新的位置处 copy_backward 将一个范围中的元素按逆序拷贝到新的位置处 copy_ifC++11 将一个范围中满足给定条件的元素拷贝到新的位置处 copy_nC++11 拷贝 n 个元素到新的位置处 fill 将一个范围的元素赋值为给定值 fill_n 将某个位置开始的 n 个元素赋值为给定值 generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素 generate_n 将一个函数的执行结果保存到指定位置开始的 n 个元素中 iter_swap 交换两个迭代器(Iterator)指向的元素 moveC++11 将一个范围中的元素移动到新的位置处 move_backwardC++11 将一个范围中的元素按逆序移动到新的位置处 random_shuffle 随机打乱指定范围中的元素的位置 remove 将一个范围中值等价于给定值的元素删除 remove_if 将一个范围中值满足给定条件的元素删除 remove_copy 拷贝一个范围的元素,将其中值等价于给定值的元素删除 remove_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素删除 replace 将一个范围中值等价于给定值的元素赋值为新的值 replace_copy 拷贝一个范围的元素,将其中值等价于给定值的元素赋值为新的值 replace_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素赋值为新的值 replace_if 将一个范围中值满足给定条件的元素赋值为新的值 reverse 反转排序指定范围中的元素 reverse_copy 拷贝指定范围的反转排序结果 rotate 循环移动指定范围中的元素 rotate_copy 拷贝指定范围的循环移动结果 shuffleC++11 用指定的随机数引擎随机打乱指定范围中的元素的位置 swap 交换两个对象的值 swap_ranges 交换两个范围的元素 transform 对指定范围中的每个元素调用某个函数以改变元素的值 unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。 unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果 划分操作​ 函数 说明 is_partitionedC++11 检测某个范围是否按指定谓词(Predicate)划分过 partition 将某个范围划分为两组 partition_copyC++11 拷贝指定范围的划分结果 partition_pointC++11 返回被划分范围的划分点 stable_partition 稳定划分,两组元素各维持相对顺序 排序操作​ 函数 说明 is_sortedC++11 检测指定范围是否已排序 is_sorted_untilC++11 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序 partial_sort_copy 拷贝部分排序的结果 sort 排序 stable_sort 稳定排序 二分法查找操作​ 函数 说明 binary_search 判断范围中是否存在值等价于给定值的元素 equal_range 返回范围中值等于给定值的元素组成的子范围 lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器 upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器 集合操作​ 函数 说明 includes 判断一个集合是否是另一个集合的子集 inplace_merge 就绪合并 merge 合并 set_difference 获得两个集合的差集 set_intersection 获得两个集合的交集 set_symmetric_difference 获得两个集合的对称差 set_union 获得两个集合的并集 堆操作​ 函数 说明 is_heap 检测给定范围是否满足堆结构 is_heap_untilC++11 检测给定范围中满足堆结构的最大子范围 make_heap 用给定范围构造出一个堆 pop_heap 从一个堆中删除最大的元素 push_heap 向堆中增加一个元素 sort_heap 将满足堆结构的范围排序 最大/最小操作​ 函数 说明 is_permutationC++11 判断一个序列是否是另一个序列的一种排序 lexicographical_compare 比较两个序列的字典序 max 返回两个元素中值最大的元素 max_element 返回给定范围中值最大的元素 min 返回两个元素中值最小的元素 min_element 返回给定范围中值最小的元素 minmaxC++11 返回两个元素中值最大及最小的元素 minmax_elementC++11 返回给定范围中值最大及最小的元素 next_permutation 返回给定范围中的元素组成的下一个按字典序的排列 prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列","s":"algorithm","u":"/en/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":893},{"i":927,"t":"头文件:vector 在STL的vector头文件中定义了vector(向量容器模版类),vector容器以连续数组的方式存储元素序列,可以将vector看作是以顺序结构实现的线性表。当我们在程序中需要使用动态数组时,vector将会是理想的选择,vector可以在使用过程中动态地增长存储空间。 vector模版类需要两个模版参数,第一个参数是存储元素的数据类型,第二个参数是存储分配器的类型,其中第二个参数是可选的,如果不给出第二个参数,将使用默认的分配器 下面给出几个常用的定义vector向量对象的方法示例: vector s; // 定义一个空的vector对象,存储的是int类型的元素 vector s(n); // 定义一个含有n个int元素的vector对象 vector s(first, last); // 定义一个vector对象,并从由迭代器first和last定义的序列[first, last)中复制初值 vector的基本操作: s[i] // 直接以下标方式访问容器中的元素 s.front() // 返回首元素 s.back() // 返回尾元素 s.push_back(x) // 向表尾插入元素x s.size() // 返回表长 s.empty() // 表为空时,返回真,否则返回假 s.pop_back() // 删除表尾元素 s.begin() // 返回指向首元素的随机存取迭代器 s.end() // 返回指向尾元素的下一个位置的随机存取迭代器 s.insert(it, val) // 向迭代器it指向的元素前插入新元素val s.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val s.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 s.erase(it) // 删除由迭代器it所指向的元素 s.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) s.reserve(n) // 预分配缓冲空间,使存储空间至少可容纳n个元素 s.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 s.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 s.clear() // 删除容器中的所有元素 s.swap(v) // 将s与另一个vector对象进行交换 s.assign(first, last) // 将序列替换成由迭代器first和last所指定的序列[first, last),[first, last)不能是原序列中的一部分 // 要注意的是,resize操作和clear操作都是对表的有效元素进行的操作,但并不一定会改变缓冲空间的大小 // 另外,vector还有其他的一些操作,如反转、取反等,不再一一列举 // vector上还定义了序列之间的比较操作运算符(>、<、>=、<=、==、!=),可以按照字典序比较两个序列。 // 还是来看一些示例代码吧…… /* * 输入个数不定的一组整数,再将这组整数按倒序输出 */ #include #include using namespace std; int main() { vector L; int x; while(cin >> x) { L.push_back(x); } for (int i = L.size() - 1; i >= 0; i--) { cout << L[i] << \" \"; } cout << endl; return 0; }","s":"vector","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vector","p":893},{"i":929,"t":"头文件:list 下面给出几个常用的定义list对象的方法示例: lista{1,2,3} lista(n) //声明一个n个元素的列表,每个元素都是0 lista(n, m) //声明一个n个元素的列表,每个元素都是m lista(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器 list的基本操作: a.begin() // 返回指向首元素的随机存取迭代器 a.end() // 返回指向尾元素的下一个位置的随机存取迭代器 a.push_front(x) // 向表头插入元素x a.push_back(x) // 向表尾插入元素x a.pop_back() // 删除表尾元素 a.pop_front() // 删除表头元素 a.size() // 返回表长 a.empty() // 表为空时,返回真,否则返回假 a.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 a.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 a.clear() // 删除容器中的所有元素 a.front() // 返回首元素 a.back() // 返回尾元素 a.swap(v) // 将a与另一个list对象进行交换 a.merge(b) // 调用结束后b变为空,a中元素包含原来a和b的元素 a.insert(it, val) // 向迭代器it指向的元素前插入新元素val a.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val a.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 a.erase(it) // 删除由迭代器it所指向的元素 a.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) a.remove(x) // 删除了a中所有值为x的元素 a.assign(n, val) // 将a中的所有元素替换成n个val元素 a.assign(b.begin(), b.end()) //将a变成b","s":"list","u":"/en/docs/Algorithms/机试技巧与STL","h":"#list","p":893},{"i":931,"t":"头文件:string string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。 string封装了char*,管理这个字符串,是一个char*型的容器。也就是说string是一个容器,里面元素的数据类型是char*。 string不用考虑内存释放和越界。 string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。 string提供了一系列的字符串操作函数 查找find,拷贝copy,删除erase,替换replace,插入insert. 构造和析构函数: 表达式 效果 string s 生成一个空字符串 string s(str) copy构造函数,生成一个str的复制品 string s(str,idx) 将string内始于位置idx的部分当作字符串s的初值 string s(str,idx,len) 将string内始于位置idx且长度最多为len的部分当作字符串s的初值 string s(cstr) 以C-string字符串cstr作为字符串s的初值 string s(cstr,len) 以C-string字符串cstr的前len个字符作为字符串s的初值 string s(num,c) 生成一个字符串,包含num个字符c string s(beg,end) 以区间[beg,end]内所有字符作为字符串s的初值 操作函数: 操作函数 效果 =,assign() 赋以新值 swap() 交换两个字符串的内容 +=, append(),push_back() 添加字符 insert() 插入字符 erase() 删除字符 clear() 移除全部字符 resize() 改变字符数量 replace() 替换字符 + 串联字符串 ==,!=,<,<=,>,>=,compare() 比较字符串内容 size(),length() 返回字符数量,等效函数 max_size() 返回字符的最大可能个数 empty() 判断字符串是否为空 capacity() 返回重新分配之前的字符容量 reserve() 保留一定量内存以容纳一定数量的字符 [ ],at() 存取单一字符 >>,getline() 从stream中读取某值 << 将某值写入stream copy() 将内容复制为一个C-string c_str() 将内容以C-string形式返回 data() 将内容以字符数组形式返回 substr() 返回某个子字符串 begin(),end() 提供正常的迭代器支持 rbegin(),rend() 提供逆向迭代器支持","s":"string","u":"/en/docs/Algorithms/机试技巧与STL","h":"#string","p":893},{"i":933,"t":"头文件:utility STL的utility头文件中描述了一个看上去非常简单的模版类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较运算符模版函数。 Example,想要定义一个对象表示一个平面坐标点,则可以: pair p; cin >> p.first >> p.second; pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second,分别表示首元素和尾元素。 在其中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。当然,也可以通过重载这几个运算符来重新指定自己的比较逻辑。 除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair需要两个参数,分别为元素对的首元素和尾元素。","s":"pair","u":"/en/docs/Algorithms/机试技巧与STL","h":"#pair","p":893},{"i":935,"t":"头文件:map 在STL的头文件中map中定义了模版类map和multimap,用有序二叉树表存储类型为pair的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key值必须是唯一的,multimap则允许有重复的Key值。 可以将map看作是由Key标识元素的元素集合,这类容器也被称为“关联容器”,可以通过一个Key值来快速决定一个元素,因此非常适合于需要按照Key值查找元素的容器。 map模版类需要四个模版参数,第一个是键值类型,第二个是元素类型,第三个是比较算子,第四个是分配器类型。其中键值类型和元素类型是必要的。 定义map对象的代码示例: map m; map的基本操作: /* 向map中插入元素 */ m[key] = value; // [key]操作是map很有特色的操作,如果在map中存在键值为key的元素对, 则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map中插入元素对或修改已经存在的元素对的值域部分。 m.insert(make_pair(key, value)); // 也可以直接调用insert方法插入元素对,insert操作会返回一个pair,当map中没有与key相匹配的键值时,其first是指向插入元素对的迭代器,其second为true;若map中已经存在与key相等的键值时,其first是指向该元素对的迭代器,second为false。 /* 查找元素 */ int i = m[key]; // 要注意的是,当与该键值相匹配的元素对不存在时,会创建键值为key(当另一个元素是整形时,m[key]=0)的元素对。 map::iterator it = m.find(key); // 如果map中存在与key相匹配的键值时,find操作将返回指向该元素对的迭代器,否则,返回的迭代器等于map的end()(参见vector中提到的begin()和end()操作)。 /* 删除元素 */ m.erase(key); // 删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。 m.erase(it); // 删除由迭代器it所指定的元素对,并返回指向下一个元素对的迭代器。 /* 其他操作 */ m.size(); // 返回元素个数 m.empty(); // 判断是否为空 m.clear(); // 清空所有元素","s":"map","u":"/en/docs/Algorithms/机试技巧与STL","h":"#map","p":893},{"i":937,"t":"头文件:stack stack模版类的定义在stack头文件中。 stack模版类需要两个模版参数,一个是元素类型,另一个是容器类型,但是只有元素类型是必要的,在不指定容器类型时,默认容器的类型为deque。 定义stack对象的示例代码如下: stack s; stack ss; stack的基本操作有: s.push(x); // 入栈 s.pop(); // 出栈 s.top(); // 访问栈顶 s.empty(); // 当栈空时,返回true s.size(); // 访问栈中元素个数","s":"stack","u":"/en/docs/Algorithms/机试技巧与STL","h":"#stack","p":893},{"i":939,"t":"头文件:queue queue模版类的定义在queue头文件中。 queue与stack相似,queue模版类也需要两个模版参数,一个元素类型,一个容器类型,元素类型时必须的,容器类型时可选的,默认为deque类型。 定义queue对象的示例代码必须如下: queue q; queue qq; queue的基本操作: q.push(x); // 入队列 q.pop(); // 出队列 q.front(); // 访问队首元素 q.back(); // 访问队尾元素 q.empty(); // 判断队列是否为空 q.size(); // 访问队列中的元素个数","s":"queue","u":"/en/docs/Algorithms/机试技巧与STL","h":"#queue","p":893},{"i":941,"t":"头文件:set set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。 定义set对象的示例代码如下: set s; set ss; set的基本操作: s.begin() // 返回指向第一个元素的迭代器 s.clear() // 清除所有元素 s.count() // 返回某个值元素的个数 s.empty() // 如果集合为空,返回true(真) s.end() // 返回指向最后一个元素之后的迭代器,不是最后一个元素 s.equal_range() // 返回集合中与给定值相等的上下限的两个迭代器 s.erase() // 删除集合中的元素 s.find() // 返回一个指向被查找到元素的迭代器 s.get_allocator() // 返回集合的分配器 s.insert() // 在集合中插入元素 s.lower_bound() // 返回指向大于(或等于)某值的第一个元素的迭代器 s.key_comp() // 返回一个用于元素间值比较的函数 s.max_size() // 返回集合能容纳的元素的最大限值 s.rbegin() // 返回指向集合中最后一个元素的反向迭代器 s.rend() // 返回指向集合中第一个元素的反向迭代器 s.size() // 集合中元素的数目 s.swap() // 交换两个集合变量 s.upper_bound() // 返回大于某个值元素的迭代器 s.value_comp() // 返回一个用于比较元素间的值的函数","s":"set","u":"/en/docs/Algorithms/机试技巧与STL","h":"#set","p":893},{"i":943,"t":"头文件:set 在set头文件中,还定义了另一个非常实用的模版类multiset(多重集合)。多重集合与集合的区别在于集合中不能存在相同元素,而多重集合中可以存在。 定义multiset对象的示例代码如下: multiset s; multiset ss; multiset和set的基本操作相似,需要注意的是,集合的count()能返回0(无)或者1(有),而多重集合是有多少个返回多少个。","s":"multiset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#multiset","p":893},{"i":945,"t":"头文件:bitset 在 STLSTL 的头文件中 bitset中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。 bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。 定义 bitsetbitset 对象的示例代码: const int MAXN = 32; bitset bt; // bt 包括 MAXN 位,下标 0 ~ MAXN - 1,默认初始化为 0 bitset bt1(0xf); // 0xf 表示十六进制数 f,对应二进制 1111,将 bt1 低 4 位初始化为 1 bitset bt2(012); // 012 表示八进制数 12,对应二进制 1010,即将 bt2 低 4 位初始化为 1010 bitset bt3(\"1010\"); // 将 bt3 低 4 位初始化为 1010 bitset bt4(s, pos, n);// 将 01 字符串 s 的 pos 位开始的 n 位初始化 bt4 bitsetbitset 基本操作: bt.any() // bt 中是否存在置为 1 的二进制位? bt.none() // bt 中不存在置为 1 的二进制位吗? bt.count() // bt 中置为 1 的二进制位的个数 bt.size() // bt 中二进制位的个数 bt[pos] // 访问 bt 中在 pos 处的二进制位 bt.test(pos) // bt 中在 pos 处的二进制位是否为 1 bt.set() // 把 bt 中所有二进制位都置为 1 bt.set(pos) // 把 bt 中在 pos 处的二进制位置为 1 bt.reset() // 把 bt 中所有二进制位都置为 0 bt.reset(pos) // 把 bt 中在pos处的二进制位置为0 bt.flip() // 把 bt 中所有二进制位逐位取反 bt.flip(pos) // 把 bt 中在 pos 处的二进制位取反 bt[pos].flip() // 同上 bt.to_ulong() // 用 bt 中同样的二进制位返回一个 unsigned long 值 os << bt // 把 bt 中的位集输出到 os 流","s":"bitset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#bitset","p":893},{"i":948,"t":"#include #include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b) ) //定义图的定点 typedef struct Vertex { int id; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1) {} Vertex(int nid) : id(nid) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); } return true; } //广度优先搜索 vector BFS(int start) { set visited; vector g, rst; g.push_back(start); visited.insert(start); while(g.size() > 0) { int id = g[0]; g.erase(g.begin()); rst.push_back(id); for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); visited.insert(id1); } } } return rst; } //深度优先搜索 vector DFS(int start) { set visited; vector g, rst; g.push_back(start); //cout << \"push \" << start << \" \"; visited.insert(start); rst.push_back(start); bool found; while(g.size() > 0) { int id = g[g.size()-1]; found = false; for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); rst.push_back(id1); visited.insert(id1); //cout << \"push \" << id1 << \" \"; found = true; break; } } if (!found) { int id2 = g[g.size()-1]; rst.push_back(-1 * id2); //cout << \"pop \" << id2 << \" \"; g.pop_back(); } } //cout << endl; return rst; } } Graph; int main() { Graph g(8, false); g.addEdge(0, 1); g.addEdge(0, 3); g.addEdge(1, 2); g.addEdge(3, 4); g.addEdge(3, 5); g.addEdge(4, 5); g.addEdge(4, 6); g.addEdge(5, 6); g.addEdge(5, 7); g.addEdge(6, 7); vector bv = g.BFS(0); cout << \"宽度优先搜索节点顺序:\"; for(int j = 0; j < bv.size(); j++) cout << bv[j] << \" \"; cout << endl; cout << \"深度优先搜索节点顺序:\"; Graph g1(6, false); g1.addEdge(0, 1); g1.addEdge(0, 4); g1.addEdge(0, 5); g1.addEdge(1, 5); g1.addEdge(4, 5); g1.addEdge(5, 2); g1.addEdge(5, 3); g1.addEdge(2, 3); vector route = g1.DFS(0); for(int i = 0; i < route.size(); i++) cout << route[i] << \" \"; cout << endl; char ch; cin >> ch; return 0; }","s":"不带出入度的最简模板","u":"/en/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":893},{"i":950,"t":"#include #include #include #include #define MAX(a, b) ((a) > (b) ? (a) : (b) ) using namespace std; int n,m; vector inDegreelist,outDegreelist; //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); vertexs[id1].outDegree++; vertexs[id2].inDegree++; } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); vertexs[id1].outDegree++; vertexs[id1].inDegree++; vertexs[id2].outDegree++; vertexs[id2].inDegree++; } return true; } } Graph; Graph g; void init(){ cin>>n>>m; g=Graph(n, true); int src,dst; while(m--){ cin>>src>>dst; g.addEdge(src,dst); } vector::iterator it = g.vertexs.begin(); while(it!=g.vertexs.end()){ inDegreelist.push_back(it->inDegree); outDegreelist.push_back(it->outDegree); it++; } } int countin(int n){ return count(inDegreelist.begin(),inDegreelist.end(),n); } int countout(int n){ return count(outDegreelist.begin(),outDegreelist.end(),n); } bool Is_List(){ //有一个inDegree为0的头和一个outDegree为0的尾,且其余节点入度与出度都为1; return (countin(0)==1)&&(countout(0)==1)&&(countin(1)==n-1)&&(countout(1)==n-1); } bool Is_Tree(){ //有一个inDegree为0的头且其余节点inDegree均为1,且不是链表; return (countin(0)==1)&&(countin(1)==n-1); } bool topologicalSort(){//拓扑排序判断有环无环 int num=0;//记录加入拓扑排序的顶点数 queue q; for(int i=0;i #include #ifndef BASE #define BASE #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int bool; #endif #define VertexType char //点类型 #define VRType int //边类型 #define maxSize 100 void Visit(VertexType e) { printf(\"%c\", e); } #define MAX_VERTEX_NUM 20 typedef enum{DG, UDG} GraphKind; typedef struct ArcNode{ int adjV; //边指向的顶点 VRType weight; //权重 struct ArcNode *next; }ArcNode; //边 typedef struct VNode{ VertexType data; ArcNode *firstarc; }VNode, AdjList[MAX_VERTEX_NUM]; //顶点 typedef struct{ GraphKind kind; int vernum,arcnum; AdjList vers; }ALGraph; /*------------------------ |7.14 创建有向图的邻接表| ------------------------*/ Status InitGraph_AL(ALGraph *pG) { //初始化 int i; pG->arcnum = 0; pG->vernum = 0; for (i=0; ivers[i].firstarc = NULL; //VC++6.0中指针初始化为0xcccccccc return OK; } int LocateVex_AL(ALGraph G, VertexType e) { //定位值为e的元素下标 int i; for (i=0; i弧的数目->各顶点的信息->各条弧的信息 int i,a,b; char tmp[MAX_VERTEX_NUM]; char h,t; ArcNode *p, *q; InitGraph_AL(pG); //VC++6.0中指针初始化为0xcccccccc,如果不将指针初始化为NULL,会出错 //图的类型 pG->kind = DG; //顶点数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->vernum = i; //弧的数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->arcnum = i; //各顶点信息 scanf(\"%s\", tmp); for (i=0; ivernum; ++i) pG->vers[i].data=tmp[i]; //弧的信息 for (i=0; iarcnum; ++i) { scanf(\"%s\", tmp); h = tmp[0]; t = tmp[2]; a = LocateVex_AL(*pG, h); b = LocateVex_AL(*pG, t); if (a<0 || b<0) return ERROR; p = (ArcNode *)malloc(sizeof(ArcNode)); if (!p) exit(OVERFLOW); p->adjV=b;p->next=NULL; if (pG->vers[a].firstarc) { //已经有边了 for (q = pG->vers[a].firstarc; q->next; q=q->next) ; //找到最后一条 q->next = p; } else { //第一条边 pG->vers[a].firstarc = p; } } return OK; } /*---------------------------------------------------------------- |7.28 有向图-从u-v的所有简单路径 | ----------------------------------------------------------------*/ int visit[MAX_VERTEX_NUM]; //前面定义了 VertexType paths[maxSize][MAX_VERTEX_NUM]; //存放路径 int path[MAX_VERTEX_NUM]; //路径 int pathnum=0; //当前是第几条路径 void FindAllPath(ALGraph G, int u,int v,int k) { //u->v当前是第k个位置 int i; ArcNode *p; visit[u]=1; //走到了u path[k]=u; //添加到路径->下标位置为k的结点是u(第k+1个是u) if (u==v) { //找到了 for (i=0; i<=k; i++) {//复制到paths paths[pathnum][i] = G.vers[path[i]].data; } paths[pathnum][i]='\\0'; //结束符 pathnum++; //找下一条路径 } else { //u的邻边开始找 for (p=G.vers[u].firstarc; p; p=p->next) { if (visit[p->adjV]==0) FindAllPath(G, p->adjV, v, k+1); //去这个邻接点找 } } // 回溯到上一个结点 // 注意:回溯应该写在外面-->也就是不管有没有找到都要回溯 visit[u]=0; path[k]=0; } int main() { /*7.28 6 11 ABCDEF B,A B,D C,B C,F D,C D,E D,F E,A F,A F,B F,E B->A A->B D->A */ int i,j; int cnt; ALGraph G; char tmp[20]; CreateDG_AL(&G); while (1) { scanf(\"%s\", tmp); //A->B i = LocateVex_AL(G, tmp[0]); j = LocateVex_AL(G, tmp[3]); for (cnt=0; cnt #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; // 中序+先序=>二叉树 int mid_pr_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示先序遍历 { // 这里不能等于,因为假设:len==1,则la==ra,直接返回,但是实际上是有一个 rt 的,却没被建立 if(la>ra) return 0; int rt=pr[lb]; // 因为先序遍历第一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); // 左子树(锁定左子树范围的下标) T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); // 右子树(锁定右子树范围的下标) return rt; } // 中序+后序=>二叉树 int mid_po_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示后序遍历 { if(la>ra) return 0; int rt=po[rb]; // 因为后序遍历最后一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); // 左子树(锁定左子树范围的下标) T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); // 右子树(锁定右子树范围的下标) return rt; } // 求树高 int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } // 层序遍历 void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; int mid_pr_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=pr[lb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); return rt; } int mid_po_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=po[rb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); return rt; } int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a) #define ssclr(ss) ss.clear(), ss.str(\"\") #define INF 0x3f3f3f3f #define MOD 1000000007 using namespace std; typedef long long ll; const int maxn=5e4+1000; int f; int pre[maxn], in[maxn]; struct node { int l,r,d; }T[maxn]; int create(int l1,int r1,int l2,int r2) // in pre { if(l2>r2) return -1; int rt=l2; int p1=l1,p2; while(in[p1]!=pre[rt]) p1++; p2=p1-l1; T[rt].d=pre[rt]; T[rt].l=create(l1,p1-1,l2+1,l2+p2); T[rt].r=create(p1+1,r1,l2+p2+1,r2); return rt; } void postT(int rt) { if(rt==-1 || !f) return; postT(T[rt].l); postT(T[rt].r); if(f) f=0, printf(\"%d\\n\",T[rt].d); } int main() { int n; scanf(\"%d\",&n); for(int i=0;i using namespace std; int main() { vector colors(200001, 0); int B, E; while (scanf(\"%d %d\", &B, &E)) { if (B == 0 && E == 0) { break; } colors[B]++; // 刷墙起点标记 colors[E + 1]--; // 刷墙终点标记 } // 计算前缀和 for (int i = 1; i < colors.size(); i++) { colors[i] += colors[i - 1]; } int begin, end; while (scanf(\"%d %d\", &begin, &end)) { if (begin == 0 && end == 0) { break; } for (int i = begin; i <= end; i++) { printf(\"%d\\n\", colors[i]); } } return 0; }","s":"参考代码","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":960},{"i":965,"t":"使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。 首先初始化前缀和数组,使每一个元素等于为0。 该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值−1-1−1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,−1)[1, -1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于−1-1−1而抵消影响(自身值为−1-1−1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。 关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用\"\\n\"代替endl。 ios::sync_with_stdio(false);","s":"题解","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":960},{"i":969,"t":"GeekOS是一个基于x86体系结构的微操作系统内核. 由美国马理兰大学的教师开发, 主要用于操作系统课程设计的教育. 出于教学目的, 这个系统内核设计简单, 却又兼备实用性, 它可以运行在真正的X86 PC硬件平台. 在下载好GeekOS后, 在geekos-version/src/目录下会存在project0-project6这7个文件夹, 分别代表GeekOS设计的7个学习任务. 在环境搭建完成之后, 我们进行的每一个项目的代码编写几乎都在geekos-version/src/projecti/src/geekos/文件夹下, 每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行, 即要在终端中通过cd进入该目录, 再执行make depend和make命令.","s":"GeekOS:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#geekos","p":966},{"i":971,"t":"bochs是一个x86硬件平台的模拟器. GeekOS运行依托于bochs. 在安装好Linux操作系统后需要安装bochs以及nasm, 以完成GeekOS环境的搭建.","s":"bochs:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#bochs","p":966},{"i":973,"t":"GeekOS的开发环境可分为两部分, 一部分是编译环境, 一部分是运行环境. 在编译过程中, 使用Linux自带的编译环境以及编译命令对特定的GeekOS project进行编译即可. 首先在终端中通过cd命令进入geekos-version/src/projecti/build目录, 再执行make depend和make命令. 编译后生成bochs的镜像文件fd.img, 这是bochs运行所必须的文件,也是GeekOS运行环境的前置配置.","s":"二者之间的关系","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#二者之间的关系","p":966},{"i":975,"t":"安装其实非常简单, 这里主要花篇幅介绍安装后解决报错的配置.","s":"安装与配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装与配置","p":966},{"i":977,"t":"需要下载GeekOS Files, 安装bochs, nasm等. GeekOS直接下载压缩包, 解压即可. arch系用户通过以下命令即可完成bochs和nasm的安装. yay -S bochs nasm 其他发行版的安装方法这里不再赘述, 可选择从群文件里下载源文件并编译安装, 师兄师姐也在群文件里给了一些教程指导.","s":"安装","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装","p":966},{"i":979,"t":"完成安装后, 我们就可以开始对project0中的代码进行完善了, 并在geekos-version/src/project0/build目录下执行make depend以及make命令, 目的是编译project0的代码, 生成bochs的镜像文件fd.img以构建GeekOS的运行环境. 但很多报错就是在make这一步产生的, 因此在安装完成后还需要进行配置. 配置分为两部分, 一个是对GeekOS中makefile的修改, 另一部分是对bochs的配置文件的修改. GeekOS中makefile的配置​ 综合网上很多师兄师姐的博客,这三个错误应该是每个人都会遇到的,所以当你不确定自己能不能运行时,请全部完成这三个步骤. 问题: warnings being treated as errors 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefile文件, 所以在每个项目编译前都要修改一次) // 修改第149行: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror // 修改后: CC_GENERAL_OPTS := $(GENERAL_OPTS) 问题: X86_64与i386输出不兼容 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Target C compiler. gcc 2.95.2 or later should work. 100行 TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32 # Host C compiler. This is used to compile programs to execute on # the host platform, not the target (x86) platform. On x86/ELF # systems, such as Linux and FreeBSD, it can generally be the same # as the target C compiler. 106行 HOST_CC := gcc -m32 # Target linker. GNU ld is probably to only one that will work.109行 TARGET_LD := $(TARGET_CC_PREFIX)ld -m elf_i386 问题: undefined reference to '__stack_chk_fail' 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Flags used for all C source files // 修改前:148行 GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) // 修改后: GENERAL_OPTS := -O -Wall -fno-stack-protector $(EXTRA_C_OPTS) bochs配置文件的修改​ 在geekos-version/src/projecti/build目录下创建.bochsrc文件 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 到此为止, 所有的配置工作已经完成, 可以正常的进行下一步的代码完善. 如果需要验证自己是否配置成功, 可以参照下一篇博客GeekOS project 0的实现, 在本篇博客中会有完整的C语言代码编写以及编译、使用bochs执行的过程.","s":"配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#配置","p":966},{"i":981,"t":"info 转载自Sonder的笔记本 vector:变长数组,倍增的思想 pair:存储一对数 string:字符串,substr(), c_str() queue:push(), front(), pop() priority_queue:优先队列,push(), top(), pop() stack:栈,push(), top(), pop() deque:双端队列 set, map, multiset, multimap:基于红黑树来实现,本质上是动态维护一个有序序列 unordered_set, unordered_map, unordered_multiset, unordered_multimap:哈希表 bitset:压位","s":"STL模板","u":"/en/docs/Algorithms/STL模板","h":"","p":980},{"i":983,"t":"vector a(10,3); // 定义一个长度为10的vector,初始化为3; a.size(); // vector的size,所有容器都有 a.empty(); // 范围vector是否为空,所有容器都有 a.clear(); // 清空 a.front(); // 第一个数 a.back(); // 最后一个数 a.push_back(); // 在最后插入一个数 a.pop_back(); // 删除最后一个数 // vector支持比较运算 vector a(4,3),b(3,4); if(a > b) cout << \"Yes\"; else cout << \"No\"","s":"vector","u":"/en/docs/Algorithms/STL模板","h":"#vector","p":980},{"i":985,"t":"pair a; a = {20,\"abc\"}; a.first(); // 获取第一个元素 a.second(); // 获取第二个元素 // pair也能进行sort","s":"pair","u":"/en/docs/Algorithms/STL模板","h":"#pair","p":980},{"i":987,"t":"string a = \"Acwing\"; a.size(); // 获取string的大小 a.empty(); // 判断是否为空 a.clear(); // 清空 a += \"def\"; cout << a. substr(1,2) << endl; // 第一个参数起始位置,第二个参数是字符串长度","s":"string","u":"/en/docs/Algorithms/STL模板","h":"#string","p":980},{"i":989,"t":"query a; a.size(); a.empty(); a.push(1); // 队尾插入元素 a.front(); // 返回队头元素 a.back(); // 返回队尾元素 a.pop(); // 删除队头元素","s":"query","u":"/en/docs/Algorithms/STL模板","h":"#query","p":980},{"i":991,"t":"// 默认是大根堆 priority_queue heap; heap.clear(); heap.size(); heap.empty(); // 如何定义一个小根堆: 1. 插入负数 2. 直接定义 heap.push(-x); // 黑科技方法 priority_queue,greater> q;","s":"priority_queue","u":"/en/docs/Algorithms/STL模板","h":"#priority_queue","p":980},{"i":993,"t":"stack s; s.size(); s.empty(); s.push(); s.top(); s.pop();","s":"stack","u":"/en/docs/Algorithms/STL模板","h":"#stack","p":980},{"i":995,"t":"deque a; a.size(); a.empty(); a.clear(); a.front(); a.back(); a.push_back(); a.pop_back();","s":"deque","u":"/en/docs/Algorithms/STL模板","h":"#deque","p":980},{"i":997,"t":"set s; // 不能有重复元素 // s.begin()/end() multiset MS; // 可以有重复元素 s.insert(1); 插入一个数 s.size(); s.empty(); s.clear(); s.find(1); // 查找一个元素,如果不存在的话返回end迭代器 s.erase(1); // 输入是一个数x,输出所有x (2)输入一个迭代器,删除这个迭代器 // set 最核心的操作 s.lower_bound(); // 范围大于等于x的最小的数 s.upper_bound(); // 返回大于x的最小的数","s":"set/multiset","u":"/en/docs/Algorithms/STL模板","h":"#setmultiset","p":980},{"i":999,"t":"#include // 和python里面的字典非常的相似 map a; a[\"2\"] = 3; a.insert({\"1\",1}); a.erase({\"1\",1}); a.find({\"1\",1}); unordered_set, unordered_map, unordered_multiset, unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound()这样的操作 (哈希表的内部是无序的)","s":"map/multimap","u":"/en/docs/Algorithms/STL模板","h":"#mapmultimap","p":980},{"i":1001,"t":"可以省下来8位的空间 bitset<10000> s; // 支持所有的基本操作: // 移位操作:<< >> // == != // count() 返回有多少个1 // any() 判断是否至少有一个1 // none() 判断是否全为0 // set(),把所有为置为1 // set(k,v), 将第k个变为v // reset(), 把所有位变成0 // flip(), 把所有位取反","s":"biset","u":"/en/docs/Algorithms/STL模板","h":"#biset","p":980},{"i":1005,"t":"词法分析:分析输入串如何构成句子,得到单词序列 语法分析:分析单词序列如何构成程序,构造语法分析树 语义分析:审查语义错误,为代码生成收集类型信息 中间代码生成 代码优化 目标代码生成 表管理、错误检查和处理贯穿整个过程","s":"1.1 编译程序的逻辑结构","u":"/en/docs/Curriculum/编译原理/Note","h":"#11-编译程序的逻辑结构","p":1002},{"i":1007,"t":"前端是指与源语言有关、与目标机无关的部分 如词法分析、语法分析、语义分析、中间代码生成、代码优化中与机器无关的部分 后端是指与目标机有关的部分 如代码优化中与机器有关的部分、目标代码的生成","s":"1.2 前端和后端","u":"/en/docs/Curriculum/编译原理/Note","h":"#12-前端和后端","p":1002},{"i":1009,"t":"遍是指从头到尾扫描一遍源程序","s":"1.3 遍的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#13-遍的概念","p":1002},{"i":1012,"t":"若从文法的开始符号开始存在以下推导,则称α\\alphaα为该文法的一个句型,句型中既可以包含终结符,也可以包含非终结符,也可以是空串 S⇒∗α, α∈(VT∪VN)∗(1)S \\Rightarrow^* \\alpha,\\space \\alpha \\in (V_T \\cup V_N)^* \\tag{1}S⇒∗α, α∈(VT​∪VN​)∗(1)","s":"2.1 句型","u":"/en/docs/Curriculum/编译原理/Note","h":"#21-句型","p":1002},{"i":1014,"t":"S⇒∗β, β∈VT∗(2)S \\Rightarrow^* \\beta,\\space \\beta \\in V_T^* \\tag{2}S⇒∗β, β∈VT∗​(2) 则称β\\betaβ是该文法的句子","s":"2.2 句子:","u":"/en/docs/Curriculum/编译原理/Note","h":"#22-句子","p":1002},{"i":1016,"t":"0型文法,又称无限制文法、短语文法 1型文法,又称文有关文法 2型文法,又称上下文无关文法(Context-Free Grammar,CFG) 可用来构建语法树,语法树是上下文无关文法推导和规约的图形化表示 A→β, A∈VN, β∈(VT∪VN)∗(3)\\Alpha \\rightarrow \\beta,\\space \\Alpha \\in V_N, \\space \\beta \\in (V_T \\cup V_N)^* \\tag{3}A→β, A∈VN​, β∈(VT​∪VN​)∗(3) 3型文法,又称正规文法(Regular Grammar,RG) 左线性文法 右线性文法","s":"2.3 文法的分类:","u":"/en/docs/Curriculum/编译原理/Note","h":"#23-文法的分类","p":1002},{"i":1018,"t":"如果在推导的任何一步都是对产生式左部中的最左/右非终结符进行替换,则称为最左/右推导,其中最右推导也被成为规范推导","s":"2.4 最左/右推导:","u":"/en/docs/Curriculum/编译原理/Note","h":"#24-最左右推导","p":1002},{"i":1022,"t":"确定的有穷自动机(DFA) DFA的定义及组成 确定的含义:在状态转换的每一步,FA根据当前的状态及扫描的输入字符,便能唯一地知道FA的下一状态。 tip 在状态转换图中的直观体现就是,在确定行表示的当前状态以及列确定的路径后,得到的目的状态不会是元素个数大于1的集合。 DFA的可接受以及接受集的定义:从开始状态开始,经过该符号串表示的路径,若能到达终态则称该符号串可被改DFA接受。 不确定的有穷自动机(NFA) NFA的确定化,即将NFA转换为DFA(子集法) 步骤: 画出DFA转换表 tip 转换表中在状态一列中,状态包含原NFA终态的集合要标*,代表其为等价DFA的终态 计算move(T,a)move(T, a)move(T,a) 计算ϵ−closure(T)\\epsilon -closure(T)ϵ−closure(T) 为转换表中的状态重命名 确定初态和终态 DFA的最小化(分割法) 步骤如下: tip 考试时注意过程怎么写,下面使用需要三轮分割的列子演示步骤 在分割完成后,对可以化简的集合选出一个状态作为代表,删除其他多余状态,重新画图","s":"3.2 有穷自动机(FA)","u":"/en/docs/Curriculum/编译原理/Note","h":"#32-有穷自动机fa","p":1002},{"i":1026,"t":"描述程序语法结构的规则可以使用2型文法(上下文无关语法,CFG) 语法分析方法包含确定的和不确定的分析方法,确定的语法分析方法根据输入符号,唯一选择产生式 确定的自顶向下分析方法:根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导","s":"第四章:自顶向下语法分析方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#第四章自顶向下语法分析方法","p":1002},{"i":1029,"t":"tip FOLLOW集的求法可以按照下图技巧进行 若要求的非终结符是开始符号,则直接将#插入FOLLOW集中 在所有产生式的右部中找到要求的非终结符 看非终结符的右侧是什么元素 若无元素,则直接将该产生式左部的FOLLOW集加入到该非终结符的FOLLOW集中 若为终结符,直接将该终结符加入到FOLLOW集中 若为非终结符,将FIRST(该非终结符)减去ϵ\\epsilonϵ的所有终结符元素都加入至FOLLOW集中","s":"2. Follow集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-follow集的定义","p":1002},{"i":1031,"t":"tip 需要注意的是FIRST集、FOLLOW集是针对于符号串而言的,而SELECT集是针对于产生式而言的","s":"3. SELECT集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-select集的定义","p":1002},{"i":1034,"t":"tip 考试时注意书写过程,需要画出以下两张表","s":"5. LL(1)文法的判别","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-ll1文法的判别","p":1002},{"i":1036,"t":"预测分析表通过计算SELECT集得到,形如下表 行标为各非终结符,列标为输入符号,若从某一非终结符开始的产生式的SELECT集包含某一输入符号,则对应产生式就是行列确定的元素值。","s":"6. 预测分析表","u":"/en/docs/Curriculum/编译原理/Note","h":"#6-预测分析表","p":1002},{"i":1038,"t":"消除左公因子(回溯) caution 同一非终结符的多个产生式存在共同前缀,会导致回溯现象,需要消除 消除左递归 caution 左递归文法会使递归下降分析器陷入无限循环 消除直接左递归 消除间接左递归 通过代入法变成直接左递归再消除","s":"7. 非LL(1)文法到LL(1)文法的等价变换","u":"/en/docs/Curriculum/编译原理/Note","h":"#7-非ll1文法到ll1文法的等价变换","p":1002},{"i":1041,"t":"从的底部向顶部的方向构造语法分析树,采用最左归约的方式,即最右推导的逆过程 tip 注意辨别:自顶向下的语法分析采用最左推导的方式 最右推导是规范推导,最左归约是最右推导的逆过程,又称规范归约","s":"5.1 概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#51-概念","p":1002},{"i":1043,"t":"算符优先分析法 按照算符的优先关系和结合性质进行语法分析 LR分析法(重点) 规范规约:句柄作为可归约串","s":"5.2 方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#52-方法","p":1002},{"i":1046,"t":"移入:将下一个输入符号移到栈顶 归约:被归约的符号串的右端处于栈顶,语法分析器在栈中确定这个串的左端非终结符来替换该串 接受:宣布语法分析过程成功完成 报错:发现一个语法错误,并调用错误恢复子程序","s":"5.4 移入-归约分析器的4种动作","u":"/en/docs/Curriculum/编译原理/Note","h":"#54-移入-归约分析器的4种动作","p":1002},{"i":1048,"t":"前导知识:4种项目状态 归约项目:·在最后 接受项目:拓广文法的开始符号的产生式,且·在最后 移进项目:·后面是终结符VTV_TVT​ 待约项目:·后面是非终结符VNV_NVN​ 移入-归约分析 LR(0)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1pL4y1E7RE/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,action的每一列都要写 SLR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV12u411S7Us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,只写产生式左部的FOLLOW集对应的action列 LR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1Vm4y1Q7XB/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在构造项目集时,要加入前向搜索符;并且,在写预测分析表的reduce项时只写前向搜索符对应的action列 LALR(1)分析表 / 构造其识别活前缀DFA 在构造项目集时,要加入前向搜索符,但是要合并同心集,把相同表达式但是不同前向搜索符的前向搜索符合并,并且在写预测分析表的reduce项时只写前向搜索符集对应的action列 https://www.bilibili.com/video/BV13r4y1m7sQ/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533","s":"5.5 重要题型","u":"/en/docs/Curriculum/编译原理/Note","h":"#55-重要题型","p":1002},{"i":1051,"t":"词法分析:从左到右扫描源程序,识别出各个单词,确定单词类型并形成单词序列,进行词法错误检查,对标识符进行登记,即符号表管理 语法分析:从词法分析输出的单词序列识别出各类短语,构造语法分析树,并进行语法错误检查 语义分析:审查程序是否具有语义错误,为代码生成阶段收集类型信息,不符合规范时报错(符号表是语义正确性检查的依据) 中间代码生成:生成中间代码,如三地址指令、四元式、波兰式、逆波兰式、树形结构等 代码优化:对代码进行等价变换以求提高执行效率,提高速度或节省空间 目标代码生成:将中间代码转化成目标机上的机器指令代码或汇编代码(符号表是对符号分配地址的依据)","s":"1 编译程序各阶段功能","u":"/en/docs/Curriculum/编译原理/Note","h":"#1-编译程序各阶段功能","p":1002},{"i":1053,"t":"就产生语法树的方向而言,可大致分为自顶向下的语法分析和自底向上的语法分析两大类。 自顶向下的语法分析方法:主流方法为递归下降分析法。根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导。 自底向上的语法分析方法:将输入串w归约为文法开始符号S的过程。 tip LR(0), SLR(1), LR(1) LR(0)文法可能存在移进-归约冲突、归约-归约冲突 SLR(1)文法在构造的过程中不存在归约-归约冲突,但有可能出现移进-归约冲突,可以由FOLLOW集解决的话则是SLR(1)文法","s":"2 语法分析方法的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-语法分析方法的概念","p":1002},{"i":1055,"t":"翻译模式是适合语法制导语义计算的另一种描述形式,可以体现一种合理调用语义动作的算法。 S-翻译模式: 仅涉及综合属性的翻译模式,通常将语义动作集合置于产生式右端末尾。 L-翻译模式: 既可以包含综合属性,也可以包含继承属性。","s":"3 翻译模式","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-翻译模式","p":1002},{"i":1057,"t":"在文法基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作,称之为属性文法。 S-属性文法: 只包含综合属性的属性文法成为S-属性文法 L-属性文法: 可以包含综合属性,也可以包含继承属性,但要求产生式右部的文法符号的继承属性的计算只取决于该符号左边符号的属性","s":"4 属性文法","u":"/en/docs/Curriculum/编译原理/Note","h":"#4-属性文法","p":1002},{"i":1059,"t":"符号表是编译程序中用于收集标识符的属性信息的数据结构。 各阶段作用: 语义分析阶段:语义合法性检查的依据 目标代码生成阶段:对符号名进行地址分配的依据","s":"5 符号表","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-符号表","p":1002},{"i":1061,"t":"在上一篇博客中我们完成了GeekOS环境的配置,下面我们来验证环境配置的成功与否以及project 0的实现。","s":"GeekOS project 0的实现","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"","p":1060},{"i":1063,"t":"编写geekos-version/src/projecti/src/geekos/main.c文件 编写函数project0实现检测键盘输入Ctrl+d结束线程。 void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios!---------\\n\"); # 这里需要注意素质 Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } 在main函数中添加以下代码,实现自定义函数的调用,创建线程。 struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); 总体代码 /* * GeekOS C code entry point * Copyright (c) 2001,2003,2004 David H. Hovemeyer * Copyright (c) 2003, Jeffrey K. Hollingsworth * Copyright (c) 2004, Iulian Neamtiu * $Revision: 1.51 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file \"COPYING\". */ #include #include #include #include #include #include #include #include #include #include #include void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios! Motherfucker!---------\\n\"); Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } /* * Kernel C code entry point. * Initializes kernel subsystems, mounts filesystems, * and spawns init process. */ void Main(struct Boot_Info* bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); Init_TSS(); Init_Interrupts(); Init_Scheduler(); Init_Traps(); Init_Timer(); Init_Keyboard(); Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT)); Print(\"Welcome to GeekOS!\\n\"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); // TODO(\"Start a kernel thread to echo pressed keys and print counts\"); struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); /* Now this thread is done. */ Exit(0); }","s":"编写C语言代码","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":1060},{"i":1065,"t":"每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。 执行 make depend make 此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它! 目录下的文件应该是这样的结构: 下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 在这个目录下打开终端,执行 bochs 选择6,按下回车 可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入 c 即可完成bochs的正式启动,最终的效果","s":"使用Linux的编译系统对C语言代码进行编译","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":1060},{"i":1067,"t":"tip 欢迎来到笔记本的课程学习部分","s":"Welcome","u":"/en/docs/Curriculum/intro","h":"","p":1066},{"i":1069,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Curriculum/intro","h":"#支持我","p":1066},{"i":1071,"t":"正确发音 How to pronounce Adversarial? /ˌædvərˈseriəl/","s":"生成式对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"","p":1070},{"i":1074,"t":"生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。","s":"将随机分布作为输入","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":1070},{"i":1076,"t":"当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。","s":"为什么要添加分布","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":1070},{"i":1078,"t":"GAN的工作原理: 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。 判别器训练: 判别器被训练来正确分类真实数据和生成数据。 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。 训练的目标: 生成器目标: 生成更逼真的数据,以欺骗判别器。 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。 GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。","s":"核心思想","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":1070},{"i":1080,"t":"GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。 GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。","s":"具体结构与作用","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":1070},{"i":1082,"t":"结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。 Unconditional Generation​ Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。 对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。 Conditional Generation​","s":"生成器(Generator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":1070},{"i":1084,"t":"结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。","s":"判别器(Discriminator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":1070},{"i":1086,"t":"首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。 第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。 为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数: Lossreal=−Ex∼pdata(x)[log⁡D(x)](1)Loss_{real}=-E_{x\\sim p_\\text{data}{(x)}}[\\log D(x)]\\tag{1}Lossreal​=−Ex∼pdata​(x)​[logD(x)](1) 其中,D(x)D(x)D(x)是判别器的输出,xxx是真实样本,EEE是数学期望。 Lossfake=−Ez∼pz(z)[log(1−D(G(z)))](2)Loss_{fake}=-E_{z\\sim p_z(z)}[log(1-D(G(z)))]\\tag{2}Lossfake​=−Ez∼pz​(z)​[log(1−D(G(z)))](2) 其中,G(z)G(z)G(z)是生成器的输出,zzz是随机噪声,EEE是数学期望。 将真实样本和生成样本的损失相加,形成判别器的总体损失。 Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\\tag{3}Lossdiscriminator​=Lossreal​+Lossfake​(3) 最小化损失函数,更新判别器的参数。 第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。 LG=−Ez∼pz(z)[log⁡D(G(z))](4)L_G=-E_{z\\sim p_z(z)}[\\log D(G(z))]\\tag{4}LG​=−Ez∼pz​(z)​[logD(G(z))](4) 其中,G(z)G(z)G(z)是生成器的输出,D(G(z))D(G(z))D(G(z))是生成样本输入到判别器后的输出,zzz是随机噪声,EEE是数学期望。","s":"训练算法","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":1070},{"i":1088,"t":"tip 在以前的文章图像生成模型中已经大概介绍了目前SOTA的图像生成模型的共同点,并初步了解了Diffusion Model,在这篇文章中将详细讲解扩散模型的数学原理等。","s":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"","p":1087},{"i":1090,"t":"首先回顾一下扩散模型的基本概念和生成过程,可以大概分为两步: Forward Process:对训练集中的图片不断加入与图片shape相同的、从某随机分布中sample出的噪声,直至图片可以被认为是从该随机分布中sample出的矩阵。 Forward Process又叫做Diffusion Process,在这一步中产生的噪声-加入噪声的图像对可以用来训练Noise Predictor,即从有噪声的图像中预测出其中的噪声,再从输入中减去噪声得到降噪后的图片。 图像生成的原理 这一步的目的也同样在之前的文章图像生成模型中提到过:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。 Reverse Process:使用Diffusion Process训练的Noise Predictor,根据文字Prompt对从随机分布中sample出的图片大小的噪声图片进行降噪,得到原图。 值得注意的是,变分自编码器(Variational Auto-Encoder, abbr. VAE)与Diffusion Model非常相似:VAE对训练集中的原始图像使用Encoder将其变换为某种Latent Representation,这种Latent Representation的分布也是符合某种随机分布的,VAE再通过Decoder将期待生成的目标域图像还原出来。 在下面的文章中我们也会学习一下VAE的数学原理,从VAE到Diffusion Model的具体数学推导,可以参考胡老师推荐的论文Understanding Diffusion Models: A Unified Perspective。 下面我们以DDPM论文中的原图来分析DDPM的训练与推理过程。","s":"基本概念","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":1087},{"i":1092,"t":"循环开始,重复以下步骤; 首先从数据集中sample出原始图像x0\\mathbf{x}_0x0​; ttt是从1,…,T1,\\ldots,T1,…,T范围中sample出的一个integer; ϵ\\epsilonϵ是从Normal Distribution中sample出的与x0\\mathbf{x}_0x0​相同大小的噪声; 根据如下规则进行梯度下降,训练Noise Predictor: ∇θ∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon}-\\boldsymbol{\\epsilon}_{\\theta}(\\sqrt{\\bar{\\alpha}_{t}}\\mathbf{x}_{0}+\\sqrt{1-\\bar{\\alpha}_{t}}\\boldsymbol{\\epsilon},t)\\right\\|^{2}\\tag{1}∇θ​∥∥​ϵ−ϵθ​(αˉt​​x0​+1−αˉt​​ϵ,t)∥∥​2(1) 首先对x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​做weighted sum产生加入噪声后的图像。通常来说,αˉ1\\bar{\\alpha}_1αˉ1​至αˉT\\bar{\\alpha}_TαˉT​是递减的,当在第2步中sample到的ttt越大,则原始图像x0\\mathbf{x}_0x0​对新图像的贡献越大。 ϵθ\\epsilon_{\\theta}ϵθ​是Noise Predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的Ground Truth就是第3步中sample出的噪声ϵ\\epsilonϵ; 直至噪声预测模型ϵθ\\epsilon_\\thetaϵθ​训练至收敛。","s":"训练过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":1087},{"i":1094,"t":"从Normal Distribution中sample出图片大小的噪声xT\\mathbf{x}_TxT​; ttt从T,…,1T,\\ldots,1T,…,1范围循环TTT次; 对与每一次以ttt计数的循环,若t>1t>1t>1,则从Normal Distribution中sample出z\\mathbf{z}z,否则z=0\\mathbf{z}=\\mathbf{0}z=0; 根据如下公式得到降噪后的图像: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtz(2)\\mathbf{x}_{t-1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t}-\\frac{1-\\alpha_{t}}{\\sqrt{1-\\bar{\\alpha}_{t}}}\\boldsymbol{\\epsilon}_{\\theta}(\\mathbf{x}_{t},t)\\right)+\\sigma_{t}\\mathbf{z}\\tag{2}xt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​,t))+σt​z(2) 其中,xt\\mathbf{x}_txt​代表上一步骤中输出的降噪后的图像,xt−1\\mathbf{x}_{t-1}xt−1​代表当前步骤即将输出的降噪后的图像,ϵθ\\epsilon_\\thetaϵθ​代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​以及α1,α2,...αT\\alpha_1,\\alpha_2,...\\alpha_Tα1​,α2​,...αT​是两组权重序列; 结束本次for循环; 当t=1t=1t=1时,得到x0\\mathbf{x}_0x0​,即最终降噪后的图像。","s":"推理过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":1087},{"i":1096,"t":"tip 本笔记使用的教材是陈天华所著、清华大学出版社的《数字图像处理及应用:使用MATLAB分析与实现》。 Take me to church, I'll worship like a dog at the shrine of your lies. I'll tell you my sins, and you can sharpen your knife. Offer me that deathless death, good god, let me give you my life.","s":"数字图像处理复习笔记","u":"/en/docs/Curriculum/数字图像处理/Note","h":"","p":1095},{"i":1099,"t":"为了从模拟图像产生数字图像,需要进行采样与量化,即对模拟图像在空间(x,y)(x, y)(x,y)方向上以及亮度函数f(x,y)f(x, y)f(x,y)进行离散化处理。 采样: 模拟图像在空间(x,y)(x, y)(x,y)上的离散化称为采样。 若在x和y方向上均进行等间距的采样,则称为均匀采样。 采样点的多少以及采样的间隔直接影响着图像的质量。 量化: 模拟图像经过采样后,在时间和空间上被离散化为像素,但采样所得的像素点的像素值依然是连续量。量化过程就是以离散的灰度值信息代替连续的模拟量灰度信息的过程,是一对多的过程。 量化可以分为线性量化以及非线性量化。 灰度级一般以2的整数次幂表示,如大多图像为彩色RGB图像,256个灰度级,位深度为8(28=2562^8=25628=256),则对于分辨率为256×256的图像来说,需要256×256×3×8位表示,即每一个像素实际上使用24位表示。","s":"图像的采样与量化","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":1095},{"i":1101,"t":"4邻域N4(p)N_4(p)N4​(p)即该像素上下左右的四个点,8邻域N8(p)N_8(p)N8​(p),对角邻域ND(p)N_D(p)ND​(p)。 像素之间的距离度量必须满足三种关系: 非负性 对称性 三角不等式 三种距离度量: 已知,点ppp的坐标为(x,y)(x, y)(x,y),点qqq的坐标为(s,t)(s,t)(s,t)。 欧氏距离: De(p,q)=(x−s)2+(y−t)2(1)D_e(p,q)=\\sqrt{(x-s)^2+(y-t)^2}\\tag{1}De​(p,q)=(x−s)2+(y−t)2​(1) 城市距离 D4(p,q)=∣x−s∣+∣y−t∣(2)D_4(p,q)=\\vert x-s\\vert+\\vert y-t\\vert \\tag{2}D4​(p,q)=∣x−s∣+∣y−t∣(2) 棋盘距离 D8(p,q)=max(∣x−s∣,∣y−t∣)(3)D_8(p,q)=max(\\vert x-s\\vert,\\vert y-t\\vert)\\tag{3}D8​(p,q)=max(∣x−s∣,∣y−t∣)(3)","s":"距离度量","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":1095},{"i":1103,"t":"MSE越小代表待测图像与参考图像越接近,均方误差公式如下: MSE=1MN∑x=1M∑y=1N[f(x,y)−g(x,y)]2(4)MSE=\\frac{1}{MN}\\sum_{x=1}^{M}\\sum_{y=1}^{N}[f(x,y)-g(x,y)]^2\\tag{4}MSE=MN1​x=1∑M​y=1∑N​[f(x,y)−g(x,y)]2(4) SNR:参考图像像素值的平方均值与均方误差的比值的对数的10倍。越大代表图像质量越好 PSNR:峰值信噪比,图像所允许的最大像素值的平方与均方误差的比值的对数的10倍,这是信噪比的改良版本,消除了图像自身像素值对评价指标的影响。越大代表图像质量越好 SSIM为结构相似系数,越大代表图像质量越好","s":"图像质量评价","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":1095},{"i":1107,"t":"可以使用傅里叶变换的函数需要满足狄利克莱条件(Dirichlet Condition): 具有有限个间断点 具有有限个极值点 绝对可积 傅里叶变换的特性: info 傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 连续傅里叶变换​ 一维连续傅里叶变换 F(u)=∫−∞+∞f(x)e−j2πuxdx(5)F(u)=\\int_{-\\infty}^{+\\infty}f(x)e^{-j2\\pi ux}dx\\tag{5}F(u)=∫−∞+∞​f(x)e−j2πuxdx(5) 一维连续傅里叶逆变换 f(x)=∫−∞∞F(u)ej2πuxdu(6)f(x)=\\int_{-\\infty}^{\\infty}F(u)e^{j2\\pi ux}du\\tag{6}f(x)=∫−∞∞​F(u)ej2πuxdu(6) 二维连续傅里叶变换 F(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy)dxdy(7)F(u,v)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}f(x,y)e^{-j2\\pi (ux+vy)}dxdy\\tag{7}F(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7) 二维连续傅里叶逆变换 f(x,y)=∫−∞∞∫−∞∞F(u,v)ej2π(ux+vy)dudv(8)f(x,y)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}F(u,v)e^{j2\\pi (ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​F(u,v)ej2π(ux+vy)dudv(8) 离散傅里叶变换​ 一维离散傅里叶变换 F(u)=∑x=0N−1f(x)e−j2πuxN(9)F(u)=\\sum_{x=0}^{N-1}f(x)e^{-j\\frac{2\\pi ux}{N}}\\tag{9}F(u)=x=0∑N−1​f(x)e−jN2πux​(9) 一维离散傅里叶逆变换 f(x)=1N∑u=0N−1F(u)ej2πuxN(10)f(x)=\\frac{1}{N}\\sum_{u=0}^{N-1}F(u)e^{j\\frac{2\\pi ux}{N}}\\tag{10}f(x)=N1​u=0∑N−1​F(u)ejN2πux​(10) 二维离散傅里叶变换 F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−j2π(uxM+vyN)(11)F(u,v)=\\sum_{x=0}^{M-1}\\sum_{y=0}^{N-1}f(x,y)e^{-j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{11}F(u,v)=x=0∑M−1​y=0∑N−1​f(x,y)e−j2π(Mux​+Nvy​)(11) 二维离散傅里叶逆变换 f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(uxM+vyN)(12)f(x,y)=\\frac{1}{MN}\\sum_{u=0}^{M-1}\\sum_{v=0}^{N-1}F(u,v)e^{j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{12}f(x,y)=MN1​u=0∑M−1​v=0∑N−1​F(u,v)ej2π(Mux​+Nvy​)(12)","s":"傅里叶变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":1095},{"i":1110,"t":"下图展示了点运算的主要应用:对比度拉伸 主要应用: 对比度拉伸 光度学标定 显示标定 轮廓线 裁剪","s":"点运算","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":1095},{"i":1112,"t":"使用齐次坐标对图像进行比例缩放。 全比例缩放是指x方向和y方向使用相同的比例系数。 当对图像进行放大时,会产生之前没有的像素,此时需要使用插值来解决。","s":"比例缩放","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":1095},{"i":1114,"t":"最近邻法插值​ 双线性插值(Bilinear)​ 例题:","s":"灰度级插值","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":1095},{"i":1117,"t":"线性变换​ 是指将输入图像的灰度值的动态范围按线性关系变换至指定范围或灰度的整个动态范围。 按比例线性变换 均匀线性变换 限幅线性变换 分段线性拉伸 非线性变换​ 对数拉伸可以拉伸低亮度区域,压缩高亮度区域。 指数拉伸可以拉伸高亮度区域,压缩低亮度区域。 注意,上述的拉伸是指新的图像在该灰度范围内分布的更均匀,即出现的灰度级更多;压缩的意义是指新的图像在该灰度范围内分布的更狭窄,即出现的灰度级更少。 例题: 答:该图像存在较亮的问题,灰度直方图分布在较高的区域。从直接灰度变换增强法的角度,我们可以采用指数函数变换,对高灰度区进行扩展。 tip 分析:该图像中没有低灰度的像素,全部集中在高灰度部分,因此使用指数函数变换将原来的集中的高灰度区域进行拉伸,扩展其灰度分布的范围,从而起到增强效果。","s":"直接灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":1095},{"i":1119,"t":"直方图均衡化​ 目的: 将一非均匀灰度概率密度分布的图像,通过某种灰度变换,将其变成一幅具有均匀灰度概率密度分布的目的图像。 步骤: 根据原始图像计算原始灰度密度分布函数rkr_krk​ 计算变换函数,即累积密度分布函数sks_ksk​ 计算均衡化后的灰度级s(k)s(k)s(k),即使用以下公式进行均衡化映射: s(k)=ceil(sk×L−1)(13)s(k)=\\mathbf{ceil}(s_k\\times L-1)\\tag{13}s(k)=ceil(sk​×L−1)(13) 其中,LLL是原直方图中灰度级数。 画出最终均衡化后的直方图 例题: 直方图规定化​ 目的: 调整原始图像的直方图使其符合某一规定的直方图的要求。 思想: 将原始图像和规定图像进行均衡化后,二者的灰度概率密度分布相同,进行对应映射即可。 步骤: 对原始图像进行均衡化,得到映射后的s(k)s(k)s(k) 对规定的图像直方图进行均衡化,得到映射后的z(k)z(k)z(k) 由于s(k)s(k)s(k)和z(k)z(k)z(k)都是归一化后的均匀分布,使用二者之间的就近原则将s(k)s(k)s(k)对应到给出的规定直方图的灰度级 画出规定化后的直方图 例题: 此时已经获得了原始图像均衡化后的灰度级与目标规定化输出的图像的灰度级之间的映射关系,最后一步按照rkr_krk​画出目标规定化输出的图像直方图即可。","s":"直方图灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":1095},{"i":1121,"t":"空域滤波可以根据作用分为平滑滤波以及锐化滤波。 平滑滤波​ info 噪声的特点: 随机性 叠加性 噪声与图像之间具有相关性 线性平滑滤波​ 邻域平均滤波 加权平均滤波 高斯滤波 非线性平滑滤波​ 中值滤波 最大值滤波 最小值滤波 锐化滤波​ 锐化滤波消除或减弱图像的低频分量从而增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。 梯度法 拉普拉斯算子,非线性滤波 定向滤波:检测特定方向边缘的滤波,通常在模板上表现为在该特定方向上模板值较大。 下面的表格展示了水平方向的定向锐化模板 -1 -1 -1 2 2 2 -1 -1 -1 下面的表格展示了对角方向的定向锐化模板 -1 2 -1 -1 2 -1 -1 2 -1","s":"空域滤波增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":1095},{"i":1123,"t":"图像从空域变换到频域后,低频分量对应图像中灰度值变化缓慢的区域,可能是图像的背景;高频分量表示图像中灰度值变化迅速的区域,可能是图像的噪声或物体的边缘。 在图像频谱(经过中心偏移的)中,中心代表低频信息,四周代表高频信息。","s":"第6章 图像频域增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":1095},{"i":1125,"t":"抑制、衰减高频分量,保留低频分量。 理想低通滤波器(ILPF)​ tip ILPF means Ideal Low Pass Filter. H(u,v)={1D(u,v)≤D00D(u,v)>D0(14)H(u,v)=\\begin{cases}1&D(u,v)\\leq D_0\\\\ 0&D(u,v)>D_0\\end{cases}\\tag{14}H(u,v)={10​D(u,v)≤D0​D(u,v)>D0​​(14) D(u,v)=u2+v2(15)D(u,v)=\\sqrt{u^2+v^2}\\tag{15}D(u,v)=u2+v2​(15) 在截止频率D0D_0D0​处垂直截止,通过频率和截止频率在D0D_0D0​处具有不连续性,通带和阻带之间没有过渡,会产生无限的振铃效应。 巴特沃斯低通滤波器(BLPF)​ 通带与阻带之间过度平坦,通过频率和截止频率之间没有明显的不连续性,不会出现振铃效应。 H(u,v)=11+(2−1)[D(u,v)D0]2n(16)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D(u,v)}{D_0}]^{2n}}\\tag{16}H(u,v)=1+(2​−1)[D0​D(u,v)​]2n1​(16) 其中,取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率D0D_0D0​。 即当D(u,v)D(u,v)D(u,v)达到截止频率时,D(u,v)D0=1\\frac{D(u,v)}{D_0}=1D0​D(u,v)​=1,此时H(u,v)=0.707H(u,v)=0.707H(u,v)=0.707。 指数低通滤波器(ELPF)​ 一般情况下,取H(u,v)H(u,v)H(u,v)下降到最大值的1/2时的D(u,v)D(u,v)D(u,v)作为截止频率。 H(u,v)=e−[D(u,v)D0]n(17)H(u,v)=e^{-[\\frac{D(u,v)}{D_0}]^n}\\tag{17}H(u,v)=e−[D0​D(u,v)​]n(17) 截止频率和通过频率之间具有更光滑的过渡,没有振铃现象。且指数低通滤波器比巴特沃斯低通滤波器衰减更快,处理后的图像更模糊。 梯形低通滤波器(TLPF)​ 由于在D0D_0D0​尾部包含高频分量D1D_1D1​,处理后图像的清晰度较理想低通滤波器有所改善,但会出现振铃效应, H(u,v)={1D(u,v)D1(18)H(u,v)=\\begin{cases}1&D(u,v)D_1\\end{cases}\\tag{18}H(u,v)=⎩⎨⎧​1D0​−D1​D(u,v)−D1​​0​D(u,v)D1​​(18)","s":"低通滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":1095},{"i":1127,"t":"抑制低频分量,保留高频分量。 理想高通滤波器(IHPF)​ H(u,v)={1D(u,v)>D00D(u,v)≤D0(19)H(u,v)=\\begin{cases}1&D(u,v)>D_0\\\\ 0&D(u,v)\\leq D_0\\end{cases}\\tag{19}H(u,v)={10​D(u,v)>D0​D(u,v)≤D0​​(19) 性质与理想低通滤波器一样,垂直截断,具有无限振铃效应。 巴特沃斯高通滤波器(BHPF)​ H(u,v)=11+(2−1)[D0D(u,v)]2n(20)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D_0}{D(u,v)}]^{2n}}\\tag{20}H(u,v)=1+(2​−1)[D(u,v)D0​​]2n1​(20) 通常采取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率,没有振铃效应。 指数高通滤波器(EHPF)​ H(u,v)=e−[D0D(u,v)]n(21)H(u,v)=e^{-[\\frac{D_0}{D(u,v)}]^n}\\tag{21}H(u,v)=e−[D(u,v)D0​​]n(21) 梯形高通滤波器(THPF)​ H(u,v)={1D(u,v)>D0D(u,v)−D1D0−D1D1≤D(u,v)≤D00D(u,v)D_0\\\\ \\\\ \\frac{D(u,v)-D_1}{D_0-D_1}&D_1\\leq D(u,v)\\leq D_0\\\\ \\\\ 0&D(u,v)D0​D1​≤D(u,v)≤D0​D(u,v)w2(24)H(u,v)=\\begin{cases}1&D(u,v) w_2\\end{cases}\\tag{24}H(u,v)=⎩⎨⎧​101​D(u,v)w2​​(24)","s":"带通和带阻滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":1095},{"i":1132,"t":"伪彩色图像的增强一般用于B超、石油开采以及安检方面。","s":"伪彩色图像的处理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":1095},{"i":1136,"t":"退化原因​ 成像系统镜头聚焦不准产生的散焦 相机与景物之间的相对运动 成像系统存在的各种非线性因素以及系统本身的性能 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节 成像系统中存在的各种随机噪声 复原机理​ 图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。 图像复原与图像增强的区别和联系​ 联系:二者从表面上看都是为了提高图像的质量。 区别:二者在目的和过程上都有明显的区别。 在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。 在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。","s":"图像退化机理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":1095},{"i":1138,"t":"图像f(x,y)f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)g(x,y)。 退化系统的一般特性: 线性特性。 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。","s":"图像退化模型","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":1095},{"i":1141,"t":"最佳阈值法​ 假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\\muμ,背景像素的正态分布概率密度函数的均值为ν\\nuν,则最佳阈值法确定的阈值为 t=μ+ν2(25)t=\\frac{\\mu +\\nu}{2}\\tag{25}t=2μ+ν​(25) 判别分析法​ 通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。","s":"阈值分割法","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":1095},{"i":1143,"t":"什么是图像的边缘? 图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。 边缘信号的类型? 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。","s":"边缘检测的基本原理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":1095},{"i":1145,"t":"Robert算子​ 一阶导数算子。 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。 对噪声敏感,不能抑制噪声。 Sobel算子​ 一阶导数算子。 先进行加权平均,然后进行微分运算。 对噪声具有一定的抑制能力。 Prewitt算子​ 一阶导数算子。 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘。 对噪声具有一定的抑制能力。 Laplace算子​ 二阶导数算子。 使噪声成分得到加强,对噪声更敏感。 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。 Canny边缘检测​ 使用高斯滤波平滑图像 计算梯度幅值和方向 NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值 使用双阈值方法确定强边界和弱边界 滞后边界跟踪","s":"边缘检测算子","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":1095},{"i":1147,"t":"傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 如何在频域实现图像平滑 利用傅里叶变换将图像从空域转换为频域; 将频域图像进行中心偏移,使得低频信息在频谱中央; 利用滤波函数生成一个与图像大小相同的二维频域矩阵; 将图像的频域与滤波器的频域相应相乘; 将相乘后的频域再次逆平移到频域的原始位置; 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。 一阶边缘检测算子与Laplace算子的异同。 相同点:都可以检测边缘并且对噪声敏感 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。 空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。 分析采样和量化的过程,以及它们对数字化图像质量的影响。 采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。 对数字化图像质量的影响: 采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。 量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。 图像噪声的特点。 随机性 叠加性 噪声与图像之间具有相关性 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况? 线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。 线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。 伪彩色图像处理可以应用在哪些方面? B超 石油开采 安检","s":"课后习题中的问答题","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":1095},{"i":1149,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"","p":1148},{"i":1151,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":1148},{"i":1154,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":1148},{"i":1156,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1148},{"i":1158,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":1148},{"i":1160,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":1148},{"i":1162,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 tip 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1148},{"i":1166,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":1148},{"i":1168,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1148},{"i":1170,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1148},{"i":1173,"t":"在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。","s":"回顾文字生成的两种方法","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":1171},{"i":1175,"t":"Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。 什么是ARM ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。 若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。","s":"自回归方法(AR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":1171},{"i":1177,"t":"若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。","s":"非自回归方法(NAR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":1171},{"i":1179,"t":"VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。 大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(x∣y)P(x|y)P(x∣y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。 info 总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。","s":"目前图像生成模型的共同点","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":1171},{"i":1181,"t":"Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。","s":"生成模型的共同结构","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":1171},{"i":1183,"t":"目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。 Text Encoder:根据输入的text prompt进行嵌入表示 Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况: 具有视觉意义但经过压缩比较模糊的图像 不具备视觉特征的矩阵(Latent Representation) Decoder:以上述的“中间产物”作为输入,生成出高清图像 通用框架的三个组成部分如下图所示: 再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。 其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。 根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。 Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding","s":"通用框架概览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":1171},{"i":1185,"t":"下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。 FID(Fréchet Inception Distance)​ FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。 在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。 FID=∥μ1−μ2∥22+tr(Σ1+Σ2−2(Σ1Σ2)12)(1)\\mathrm{FID}=\\left\\|\\mu_1-\\mu_2\\right\\|_2^2+\\mathrm{tr}\\left(\\Sigma_1+\\Sigma_2-2\\left(\\Sigma_1\\Sigma_2\\right)^{\\frac12}\\right)\\tag{1}FID=∥μ1​−μ2​∥22​+tr(Σ1​+Σ2​−2(Σ1​Σ2​)21​)(1) 其中,μ1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;Σ1\\Sigma_1Σ1​和Σ2\\Sigma_2Σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr(⋅)表示矩阵的迹运算。 高斯分布的均值向量从观测到的数据中计算出来的。对于一个nnn-维高斯分布,其均值向量可以表示为一个长度为nnn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。 值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。 CLIP Score​ CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型。 具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。","s":"Benchmark","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":1171},{"i":1187,"t":"Generation Model​ Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor。 中间产物是压缩图像​ 当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。 中间产物是Latent Representation​ 中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation。 这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。 Decoder​ Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料。 中间产物是压缩图像​ 当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。 中间产物是Latent Representation​ 当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。 具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。","s":"通用框架解析","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":1171},{"i":1189,"t":"在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。","s":"常见图像生成模型速览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":1171},{"i":1191,"t":"变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。 tip VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。","s":"变分自编码器(VAE)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":1171},{"i":1193,"t":"基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。 注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。","s":"基于流的生成模型(Flow-Based Generative Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":1171},{"i":1195,"t":"GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。","s":"生成对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":1171},{"i":1197,"t":"扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。 以DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。 Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。","s":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":1171},{"i":1199,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"","p":1198},{"i":1202,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":1198},{"i":1204,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":1198},{"i":1206,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":1198},{"i":1210,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":1198},{"i":1212,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":1198},{"i":1214,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":1198},{"i":1216,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":1198},{"i":1218,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":1198},{"i":1220,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":1198},{"i":1223,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1198},{"i":1225,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":1198},{"i":1228,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1198},{"i":1230,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1198},{"i":1232,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1198},{"i":1234,"t":"tip 在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。","s":"自监督学习(Self-Supervised Learning)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"","p":1233},{"i":1236,"t":"自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。 自监督学习的基本原理是,通过对输入数据进行某种变换或操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。","s":"介绍","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":1233},{"i":1238,"t":"下面以BERT为例,介绍自监督模型。","s":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":1233},{"i":1240,"t":"BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。 BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。 使用 BERT 的一般步骤包括: 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。","s":"结构","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":1233},{"i":1242,"t":"Masking Input​ BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。 BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。 L=−1N∑i=1Nyilog⁡(pi)(1)L=-\\frac1N\\sum_{i=1}^Ny_i\\log(p_i)\\tag{1}L=−N1​i=1∑N​yi​log(pi​)(1) 其中: NNN是输出的概率分布向量的维度。 yiy_{i}yi​是概率分布向量标签。 pip_{i}pi​是模型预测的概率分布向量。 Next Sentence Prediction​","s":"Self-Supervised Pretraining","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":1233},{"i":1244,"t":"在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。 首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。 Benchmark: GLUE​ GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。 MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。 QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。 QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。 RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。 STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。 CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。 MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。 SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。 WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。 GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。 Downstream Tasks​ Sentiment Analysis​ BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。 下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。 立场分析​ Extraction-based Question Answering​ BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。 具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。 其他应用​ 虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。","s":"Fine-tuning","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":1233},{"i":1246,"t":"BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding。 BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。 ——来自讯飞星火大模型 虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。 在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。 因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。 总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。 ——来自腾讯混元大模型","s":"Why does BERT work?","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":1233},{"i":1248,"t":"GPT的结构是Transformer的Decoder部分,可以承担生成的任务。 GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。","s":"GPT: Generative Pre-trained Transformer","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":1233},{"i":1250,"t":"参考资料:Sampling for Text Generation","s":"生成模型中的采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"","p":1249},{"i":1252,"t":"生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。 没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。","s":"引言","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":1249},{"i":1254,"t":"生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如: 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。","s":"为什么需要采样?","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":1249},{"i":1256,"t":"概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。 在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。 当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。","s":"长尾效应","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":1249},{"i":1258,"t":"为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。","s":"采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":1249},{"i":1260,"t":"温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。 假设模型的原始概率分布为 p(xi)p(x_i)p(xi​),那么通过温度调整后的概率分布可以表示为: p′(xi)=exp⁡(log⁡(p(xi))T)∑jexp⁡(log⁡(p(xj))T)p'(x_i) = \\frac{\\exp\\left(\\frac{\\log(p(x_i))}{T}\\right)}{\\sum_j \\exp\\left(\\frac{\\log(p(x_j))}{T}\\right)}p′(xi​)=∑j​exp(Tlog(p(xj​))​)exp(Tlog(p(xi​))​)​ p(xi)p(x_i)p(xi​):表示原始模型对第 iii 个选项的预测概率。 TTT:温度参数,一般是一个正数。 当 T>1T > 1T>1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1T<1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。","s":"温度(Temperature)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":1249},{"i":1262,"t":"Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。 Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下: 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_kCk​ 对于 CkC_kCk​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项。 公式化表示如下: Ck={wi∣pi is among the top k probabilities in P}C_k=\\left\\{w_i \\mid p_i \\text{ is among the top k probabilities in }P\\right\\}Ck​={wi​∣pi​ is among the top k probabilities in P} pi′=pi∑wj∈Ckpj for wi∈Ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_k} p_j} \\text { for } w_i \\in C_kpi′​=∑wj​∈Ck​​pj​pi​​ for wi​∈Ck​ 其中, pi′p_i^{\\prime}pi′​​ 是重新归一化后的概率。","s":"Top-k 采样","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":1249},{"i":1264,"t":"Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),…,(wV,pV)}\\left\\{\\left(w_1, p_1\\right),\\left(w_2, p_2\\right), \\ldots,\\left(w_V, p_V\\right)\\right\\}{(w1​,p1​),(w2​,p2​),…,(wV​,pV​)} ,其中 p1≥p2≥…≥pVp_1 \\geq p_2 \\geq \\ldots \\geq p_Vp1​≥p2​≥…≥pV​ 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 ppp,设这些候选项的集合为 CpC_pCp​ 对于 CpC_pCp​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项 Cp={wi∣∑j=1ipj≥p}C_p=\\left\\{w_i \\mid \\sum_{j=1}^i p_j \\geq p\\right\\}Cp​={wi​∣j=1∑i​pj​≥p} pi′=pi∑wj∈Cppj for wi∈Cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_p} p_j} \\text { for } w_i \\in C_ppi′​=∑wj​∈Cp​​pj​pi​​ for wi​∈Cp​ 其中,pi′p_i^{\\prime}pi′​ 是重新归一化后的概率。","s":"Top-p 采样(Nucleus Sampling)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":1249},{"i":1266,"t":"采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。","s":"结论","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":1249},{"i":1268,"t":"info 参考链接: Illustrated: Self-Attention 动图轻松理解Self-Attention(自注意力机制)","s":"自注意力(Self-Attention)","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"","p":1267},{"i":1271,"t":"CNN模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个CNN模型的架构,具有较强的固定性。 info 在视觉中,输入大多为数字图像,其形状可以大致分为由尺寸和通道数来决定。 从输入图像的尺寸看,当CNN中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如FCN(Fully Convolution Network),FCN通过最后通过反卷积将tensor还原到原始图像尺寸,即在CNN中,输入与输出(下游任务的要求)都影响着CNN网络的结构。 从通道数看,CNN本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的CNN模型,但在测试阶段分别使用通道数为 1 和 6 的数据进行推理的情形为例,进行分析: 通道数为1的测试集: 情况: 如果使用通道数为 1 的数据进行推理,即灰度图像,而模型在训练时是使用 RGB 数据集训练的,模型可能会受到一些影响。 解释: 模型可能在训练时学到了关于颜色的特定信息,而在测试时,如果输入是灰度图像,那些颜色信息将不可用。 建议: 在这种情况下,模型可能会失去对颜色信息的敏感性,可能需要进行进一步的调整或微调,以适应灰度图像的特性。 通道数为6的测试集: 情况: 如果使用通道数为 6 的数据进行推理,模型可能会面临额外的挑战,因为它在训练时只见过 3 个通道的数据。 解释: 模型在训练时学到的权重是基于 3 个通道的数据的,对于额外的通道,模型可能无法有效利用这些信息。 建议: 对于通道数不匹配的情况,可以考虑进行通道的适当组合或调整。这可能包括降低通道数(例如,只使用前 3 个通道),或者通过某种方式将 6 个通道映射到 3 个通道,例如通过某种特定的数据预处理。 当模型的输入更复杂(sophisticated),是长度不定的向量序列(sequence)时,CNN不能很好地处理,且不能解决输出由输入和模型自行决定的下游任务,如生成类任务。","s":"输入与输出的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":1267},{"i":1273,"t":"CNN中存在局部连接和权值共享的归纳偏置: 局部连接:CNN使用卷积层通过滑动卷积核在输入上进行局部感受野的操作。每个神经元只与输入的一小部分区域相连,这意味着每个神经元只能接触到局部的上下文信息。 权值共享: 权值共享的主要思想是,对于输入图像的不同位置使用相同的权重参数进行卷积操作。这意味着,无论卷积操作发生在图像的左上角、右下角,或者其他任何位置,都使用相同的卷积核进行权值计算。CNN的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得CNN具有更强的归纳偏置。 tip 在多通道卷积中,卷积核不同通道之间的权重参数是独立的。这使得网络能够学习不同通道之间的特征组合。这种设计有效地捕捉了输入数据中的多通道信息,提高了网络的表达能力。 CNN的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得CNN更适用于图像处理等任务。但也正是这种设计理念,使得CNN在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此Self-Attention应运而生,允许每个位置关注到序列中地所有其他位置。这种全局关联性质使得Transformer能够捕捉序列中的长距离依赖关系。","s":"关联上下文信息的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":1267},{"i":1276,"t":"A self-attention module takes in nnn inputs and returns nnn outputs. What happens in this module? In layman’s terms, the self-attention mechanism allows the inputs to interact with each other (“self”) and find out who they should pay more attention to (“attention”). The outputs are aggregates of these interactions and attention scores. Self-Attention接受任意向量数量的向量序列的输入,输出每一个向量所有向量(包括自身)的注意力分数。这使得Self-Attention在捕捉长距离依赖和处理序列中的全局关系时非常有效。","s":"什么是Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":1267},{"i":1278,"t":"自注意力机制的核心思想是为序列中的每个向量分配一个权重(即注意力分数),该权重表示该元素与其他元素的关联强度。这个权重是通过计算输入序列中所有元素与当前元素之间的关系来确定的。通常,这个计算过程使用一个可学习的权重矩阵来完成,即用来生成Key,Query以及Value的权重矩阵。","s":"Self-Attention的核心思想","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":1267},{"i":1280,"t":"info 定性分析详见文末。 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。 定义输入​ Self-Attention的输入是向量序列,其向量数量是任意的,计算每个输入向量之间的注意力分数。在本例中输入向量个数为3,同时为了统一性分析,计输入向量个数为batchbatchbatch个。 # define the input, which has a shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) 初始化权重矩阵​ 每个输入向量都会与3个权重向量做乘法得到3个新的向量,分别为key,query以及value。在本例中将新的向量维度设为3,由于输出的k、q、v矩阵大小均为(3,3)(3, 3)(3,3),因此每个权重矩阵的形状应该是(4,3)(4, 3)(4,3)。为了统一性分析,计key,query以及value各向量维度为numnumnum。 In a neural network setting, these weights are usually small numbers, initialised randomly using an appropriate random distribution like Gaussian, Xavier and Kaiming distributions. This initialisation is done once before training. 在实际应用中,权重通常是较小的数字,通过适当的随机分布(比如高斯、Xavier和Kaiming分布)进行随机初始化。 # define the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) 计算key,query以及value​ # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) 计算原始的注意力分数​ 我们要为每一个输入向量计算它对所有向量的注意力分数,包括对自身的。 原始注意力分数的计算方式为,使用自身的query分别与所有向量的key做内积(dot product),得到的scalar数量与输入向量个数相同,都为batchbatchbatch,即scores矩阵的形状应为(batch,batch)(batch, batch)(batch,batch)。 # compute raw self-attention scores scores = queries @ keys.T print(\"attention scores:\\n\", scores) 注意,代码中提供的是计算所有向量的注意力分数,而图中演示的只是计算input #1的注意力分数。 对每一个向量计算出的注意力分数做softmax​ # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) 将注意力分数与对应的value相乘​ 每一个输入向量对所有batchbatchbatch个向量计算得到的注意力分数,都要与其对应的value向量相乘,计算加权的注意力分数。最终的注意力分数矩阵的形状应为(batch,num)(batch, num)(batch,num)。 # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) 加权注意力分数求和​ 最后一步,对于每个向量得到的加权注意力分数进行求和,得到维度为numnumnum的注意力分数向量,考虑到有batchbatchbatch个输入向量,因此最终的注意力分数矩阵的形状为(batch,num)(batch, num)(batch,num)。 根据推导,显然,最终Self-Attention的输出向量维度与value向量的维度相同,输出向量的数量与输入向量的数量相同。 # compute outputs outputs = weighted_values.sum(dim=0) 总结​ As mentioned in the above paragraph, we don’t only use dot product to find relevance. But we scale it as well by a factor of the square root of key dimension dk. This helps in making sure that the dot-products between query and key don’t grow too large for dk. If the dot product becomes too large then the softmax output will be very small. To avoid this, we scale the dot product. 在计算dot product后,为了避免点积运算经过softmax后的输出太小,在点积后除以key向量维度的平方根来进行缩放。 Attention(Q,K,V)=softmax(QKTdk)V(1)Attention(Q,K,V)=\\textit{softmax}(\\frac{QK^T}{\\sqrt{d_k}})V \\tag{1}Attention(Q,K,V)=softmax(dk​​QKT​)V(1) 完整代码​ # simple code for Self-Attention import torch import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plot # define the input, which has the shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) # initialize the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) # compute raw self-attention score scores = queries @ keys.T print(\"attention scores:\\n\", scores) # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) # compute outputs outputs = weighted_values.sum(dim=0)","s":"Self-Attention的实现","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":1267},{"i":1282,"t":"多头自注意力机制是对自注意力机制的扩展,假设扩展成为nnn -head self-attention,则对每个输入向量生成对应的key,query和value后,再次使用nnn个可学习的权重矩阵生成nnn个不同的key0,...,keyn−1key^{0}, ..., key^{n-1}key0,...,keyn−1,query0,...,queryn−1query^{0}, ..., query^{n-1}query0,...,queryn−1以及value0,...,valuen−1value^{0}, ..., value^{n-1}value0,...,valuen−1。 在计算attention score时,使用每一个query查询对应的key,即query0query^{0}query0只与其他每一个输入向量的key0key^{0}key0做dot product。","s":"Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":1267},{"i":1284,"t":"Self-Attention可以看作是复杂化的CNN,CNN只能在感受野范围内考虑上下文信息,而Self-Attention可以自己学习感受野。","s":"Self-Attention与CNN的对比","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":1267},{"i":1286,"t":"自注意力机制(Self-Attention Mechanism)是深度学习领域中的一种重要机制,尤其在处理序列数据和图像特征时展现出了强大能力。下面将以一个典型的自注意力机制为例,使用 Transformer 架构中的多头自注意力(Multi-Head Self-Attention)来说明其计算过程,以帮助理解其工作原理。假设我们的输入是一个序列,比如文本序列,其长度为 LLL,每个词向量的维度为 DDD​。 info 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。","s":"Self Attention 的计算","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":1267},{"i":1288,"t":"假设我们有一个文本序列,长度为 LLL,每个词表示为一个 DDD 维的向量。那么,整个输入的形状可以表示为 L×DL \\times DL×D 的矩阵。","s":"输入形状","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":1267},{"i":1290,"t":"自注意力机制的核心思想是让序列中的每个元素(词向量)能够关注到序列中的其他元素,从而更好地理解它们之间的关系。具体来说,它通过计算三个向量——查询(Query,Q)、键(Key,K)和值(Value,V)来进行。 Query、Key、Value的生成: 首先,通过矩阵乘法,将输入的词向量矩阵分别与三个不同的权重矩阵相乘,生成 Q、K、V 三个矩阵。假设权重矩阵的维度均为 D×dkD \\times d_kD×dk​(其中 dkd_kdk​ 是查询和键的维度),那么 Q、K、V 的形状均为 L×dkL \\times d_kL×dk​。 计算注意力权重: 接下来,计算 Q 与 K 之间的相似度,通常使用点积(Dot Product)的方式,即每个查询向量 Q 与所有键向量 K 进行点积。点积的结果是一个 L×LL \\times LL×L 的矩阵,其中的每个元素表示查询向量与键向量之间的相似度。为了使这个矩阵中的元素处于同一尺度,通常会除以 dk\\sqrt{d_k}dk​​,以避免过大的点积值导致 softmax 函数饱和。 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。 加权求和: 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。","s":"自注意力机制的计算步骤","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":1267},{"i":1292,"t":"在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。","s":"多头自注意力","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":1267},{"i":1294,"t":"假设输入的文本序列长度为 L=5L=5L=5,每个词向量的维度为 D=512D=512D=512,dk=512d_k=512dk​=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \\times 5125×512。在计算注意力权重时,得到的矩阵形状为 5×55 \\times 55×5。最后的注意力输出形状同样为 5×5125 \\times 5125×512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。 自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。","s":"示例","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":1267},{"i":1296,"t":"tip 参考资料:https://blog.csdn.net/yeziyezi210/article/details/103864518 自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。 防止注意力机制关注填充(padding)标记 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中 在特定任务中屏蔽某些不相关的输入","s":"自注意力中的掩码 Mask","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":1267},{"i":1298,"t":"tip 输入:shape为[5,5,3][5, 5, 3][5,5,3]的图像 输出要求:shape为[5,5,4][5, 5, 4][5,5,4]的feature map 使用3×33 \\times 33×3卷积核,padding=1,stride=1padding=1, stride=1padding=1,stride=1","s":"深度可分离卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"","p":1297},{"i":1300,"t":"卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3) 其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算 不考虑卷积偏置,参数量为 3×3×3×4=108(1)3 \\times 3 \\times 3 \\times 4 = 108 \\tag{1}3×3×3×4=108(1)","s":"常规卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":1297},{"i":1302,"t":"使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为 3×3××3=27(2)3 \\times 3 \\times \\times 3 = 27 \\tag{2}3×3××3=27(2) 代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可","s":"逐通道卷积-Depthwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":1297},{"i":1304,"t":"使用1×11 \\times 11×1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为 1×1×3×4=12(3)1 \\times 1 \\times 3 \\times 4 = 12 \\tag{3}1×1×3×4=12(3) tip 图片源自知乎","s":"逐点卷积-Pointwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":1297},{"i":1307,"t":"AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。 标志着新的一轮神经网络热潮的开始","s":"背景","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":1305},{"i":1309,"t":"ReLU激活函数 Dropout正则化、丢弃法 最大池化MaxPooling","s":"新的概念和技术","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":1305},{"i":1311,"t":"由于输入的图片更大,设置了更大的卷积核尺寸和步长 更大的池化窗口,使用最大池化 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式 激活函数从Sigmoid改成了ReLU,减缓梯度消失 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化 使用了数据增强data augmentation","s":"与LeNet比较","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":1305},{"i":1315,"t":"σ(x)=11+e−x(1)\\sigma(x) = \\frac{1}{1 + e^{-x}} \\tag{1}σ(x)=1+e−x1​(1) dσdx=σ (1−σ)(2)\\frac{{\\rm d}\\sigma}{{\\rm d}x} = \\sigma \\space (1 - \\sigma) \\tag{2}dxdσ​=σ (1−σ)(2) 优点:可以将数据压缩至[0, 1)区间内,有较大实用意义 致命问题:在输入值较小或较大时,Sigmoid函数的梯度趋近于零,会导致网络参数长时间得不到更新,即梯度弥散问题 from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.sigmoid(x) # 当x为100时,sigmoid(x)就接近于0了","s":"Sigmoid函数 / Logistic函数","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":1312},{"i":1317,"t":"f(x)={0x<0xx≥0(3)f(x) = \\begin{cases} 0 & x < 0\\\\ x & x \\geq 0\\\\ \\end{cases} \\tag{3}f(x)={0x​x<0x≥0​(3) df(x)dx={0x<01x≥0(4)\\frac {{\\text d}f(x)}{{\\text d}x} = \\begin{cases} 0 & x < 0\\\\ 1 & x \\geq 0\\\\ \\end{cases} \\tag{4}dxdf(x)​={01​x<0x≥0​(4) from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.relu(x)","s":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":1312},{"i":1320,"t":"L2范数是对元素求平方和后再开根号,需要.pow(2)后才可作为损失函数 微小的误差可能对网络性能带来极大的影响 LossMSE=∑[y−f(x)]2(5)Loss_{MSE} = \\sum{[{y - f(x)]^2}} \\tag{5}LossMSE​=∑[y−f(x)]2(5) ∥y−f(x)∥2=∑[y−f(x)]22(6)\\Vert y - f(x) \\Vert_2 = \\sqrt[2]{\\sum{[y - f(x)]^2}} \\tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6)","s":"Mean Squared Error 均方误差","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":1312},{"i":1322,"t":"信息熵​ Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。 It's a measure of surprise, higher entrpoy means less information and higher uncertainty. 假设一个离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率为PiP_iPi​,则其信息熵的定义为 H(P)=−∑inPi log2(Pi)=∑inPi log2(1Pi)(7)\\begin{align} H(P) &= -\\sum_i^n{P_i}\\space{log_2(P_i)} \\\\ &= \\sum_i^n{P_i}\\space{log_2({\\frac{1}{P_i}}}) \\tag{7} \\end{align}H(P)​=−i∑n​Pi​ log2​(Pi​)=i∑n​Pi​ log2​(Pi​1​)​(7) KL散度​ 在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。 存在两个概率分布P和Q,其离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率分别为Pi,QiP_i,Q_iPi​,Qi​. KL散度是非对称的,即 DKL(P ∣∣ Q)≠DKL(Q ∣∣ P)(8)D_{KL}(P \\space || \\space Q) \\neq D_{KL}(Q \\space || \\space P)\\tag{8}DKL​(P ∣∣ Q)=DKL​(Q ∣∣ P)(8) DKL(P ∣∣ Q)=∑Pi [log2(Pi)−log2(Qi)](9)D_{KL}(P \\space || \\space Q) = \\sum{P_i\\space [log_2(P_i)-log_2(Q_i)]}\\tag{9}DKL​(P ∣∣ Q)=∑Pi​ [log2​(Pi​)−log2​(Qi​)](9) 特别的,DKL(PLabel ∣ QPred)D_{KL}(P_{Label} \\space | \\space Q_{Pred})DKL​(PLabel​ ∣ QPred​)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 交叉熵​ 衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为 H(P, Q)=H(P)+DKL(P ∣∣ Q)=−∑Pi log2(Qi)(10)\\begin{align} H(P, \\space Q) &= H(P) + D_{KL}(P\\space || \\space Q) \\\\ &= - \\sum{P_i}\\space{log_2({Q_i})} \\tag{10} \\end{align}H(P, Q)​=H(P)+DKL​(P ∣∣ Q)=−∑Pi​ log2​(Qi​)​(10) PyTorch中的CrossEntropyLoss​ torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss. import torch.nn as nn # 使用NLLLoss实现 nllloss = nn.NLLLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) predict = torch.log(torch.softmax(predict, dim=-1)) label = torch.tensor([1, 2]) nllloss(predict, label) # output: tensor(0.2684) # 使用CrossEntropyLoss实现 cross_loss = nn.CrossEntropyLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) label = torch.tensor([1, 2]) cross_loss(predict, label) # output: tensor(0.2684)","s":"Cross Entropy Loss 交叉熵损失","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":1312},{"i":1325,"t":"K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kkk partitions, or folds, and then train and test the model kkk times, using a different fold for testing each time.","s":"What is k-fold cross-validation?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":1323},{"i":1327,"t":"In each iteration of k-fold cross-validation, one of the kkk folds is used as the test set, while the remaining k−1k-1k−1 folds are used as the training set. This process is repeated kkk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.","s":"How does k-fold cross-validation work?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":1323},{"i":1329,"t":"train set: to train the model and do parameter update validation set: to choose hyperparameter test set: the final test, only used once","s":"Summary","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":1323},{"i":1331,"t":"tip 正则化与权重衰退","s":"正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"","p":1330},{"i":1333,"t":"正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。 正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。 常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。 L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。","s":"什么是正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":1330},{"i":1335,"t":"min l(w,b) subject to ∥w∥12≤θ(1)min \\space l(w, b) \\space \\text{subject to} \\space \\Vert w \\Vert^2_1 \\leq \\theta \\tag{1}min l(w,b) subject to ∥w∥12​≤θ(1) L1正则化限制权重参数的L1范数小于某一特定的超参数 通常不限制偏移bbb 更小的超参数θ\\thetaθ意味着更强的正则项","s":"L1正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":1330},{"i":1337,"t":"L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示: l(w,b)+λ2∥w∥12(2)l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\tag{2}l(w,b)+2λ​∥w∥12​(2) 其中,λ\\lambdaλ是一个正则化系数超参数 此时在更新梯度时,具有如下公式 ∂∂w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\partial w} \\big(l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\big) = \\frac{\\partial l(w, b)}{\\partial w} + \\lambda w \\tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3) wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1-\\eta \\lambda)w_t + \\eta \\frac{\\partial l(w_t, b_t)}{\\partial w_t} \\tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4) 通常ηλ<1\\eta \\lambda < 1ηλ<1,因此又叫做权重衰退","s":"L2正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":1330},{"i":1340,"t":"Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。 逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。","s":"什么是Logistic Regression","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":1338},{"i":1342,"t":"线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。","s":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":1338},{"i":1344,"t":"从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。","s":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":1338},{"i":1346,"t":"逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。 逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。 acc=∑I(predi==yi)len(Y)(1)acc = \\frac{\\sum{I(pred_i==y_i)}}{len(Y)} \\tag{1}acc=len(Y)∑I(predi​==yi​)​(1) 如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况: gradient = 0 if accuracy unchanged but weights changed: xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5 print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15 print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python gradient not continuous since the number of correct is not continunous: 当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。","s":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":1338},{"i":1349,"t":"kh=kw=1k_h=k_w=1kh​=kw​=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道 相当于输入形状为HW×ciHW \\times c_iHW×ci​,权重形状为co×cic_o \\times c_ico​×ci​的全连接层","s":"1x1 卷积","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":1347},{"i":1351,"t":"输入:ci×H×Wc_i \\times H \\times Wci​×H×W 核:co×ci×kh×kwc_o \\times c_i \\times k_h \\times k_wco​×ci​×kh​×kw​ 偏差:co×cic_o \\times c_ico​×ci​ 输出:co×H′×W′c_o \\times H' \\times W'co​×H′×W′ 输出H′以及W′H'以及W'H′以及W′的计算: shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(1)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1) 计算复杂度:O(co×ci×H×W×H′×W′)O(c_o \\times c_i \\times H \\times W \\times H' \\times W')O(co​×ci​×H×W×H′×W′) 总结: 输出的通道数是卷积层的超参数 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果 每个输出通道有独立的三维卷积核","s":"二维卷积层","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":1347},{"i":1354,"t":"现代图片具有较大的像素,使用全连接层导致参数爆炸 针对图片的特征提取和模式识别,应具备以下原则: 平移不变性 局部性","s":"卷积的诞生&核心特征","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":1352},{"i":1356,"t":"将全连接层的一维输入和输出变换为二维的矩阵,公式如下 其中i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w代表输入神经元的二维索引坐标 yi,j=∑h,wwi,j,h,w∗xh,w(1)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \\tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1) 进一步将权重以及输入的索引变形,公式如下 其中a,ba,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接 yi,j=∑h,wwi,j,h,w∗xh,w=∑a,bvi,j,a,b∗xi+a,j+b(2)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \\tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2) 在公式(2)中,当i,ji,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。 为了解决这一问题,将公式(2)变形为如下 此时参数权值共享,满足了平移不变性 yi,j=∑a,bvi,j,a,b∗xi+a,j+b=∑a,bva,b∗xi+a,j+b(3)y_{i,j}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \\tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3) 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,ba,b可缩小范围,并不用来实现全连接,此时a,ba,ba,b代表着卷积核的感受野,即kernel size 此时完成了全连接层到卷积层的转换","s":"重新考察全连接层","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":1352},{"i":1358,"t":"对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接 yi,j=∑a,bva,b∗xi+a,j+b=∑a=−ΔΔ∑b=−ΔΔva,b∗xia,j+b(4)y_{i,j}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\\sum_{a=-\\Delta}^{\\Delta}\\sum_{b=-\\Delta}^{\\Delta}{v_{a,b}*x_{i_a,j+b}} \\tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−Δ∑Δ​b=−Δ∑Δ​va,b​∗xia​,j+b​(4) 卷积层输出形状的计算 shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(5)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5)","s":"总结","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":1352},{"i":1361,"t":"卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。 假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。","s":"卷积对像素位置信息是敏感的","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":1359},{"i":1363,"t":"池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。 但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。","s":"池化层的作用","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":1359},{"i":1365,"t":"池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。 最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。","s":"池化的实现","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":1359},{"i":1368,"t":"感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。","s":"什么是感知机","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":1366},{"i":1370,"t":"输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n)x=(x1​,x2​,...,xn​),表示一个样本的各个特征值。 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n)w=(w1​,w2​,...,wn​),表示每个特征对应的权重。 偏置项:偏置项bbb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=w∗x+bz=w*x+bz=w∗x+b。 阈值函数:将输入信号zzz带入阈值函数,如符号函数sign(z)sign(z)sign(z),即可得到分类结果。 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即 L(y,z)=max(0,−y∗z)(1)L(y,z)=max(0,-y*z) \\tag{1}L(y,z)=max(0,−y∗z)(1) 其中yyy是样本的真实标签,zzz是预测值。 参数更新:根据当前样本误分类情况来对权值向量www和偏置项bbb进行迭代更新。 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。 感知机训练流程伪代码如下所示: initialize w = 0 and b = 0 repeat if yi * zi <= 0 then w = w + yi * xi and b = b + yi end if until all classified correctly","s":"详细原理","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":1366},{"i":1372,"t":"感知机是一个二分类模型,最早的AI模型之一 求解算法等价于使用批量大小为1的梯度下降 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬","s":"总结","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":1366},{"i":1375,"t":"LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。 LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。","s":"背景","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":1373},{"i":1377,"t":"import torch import numpy as np from torch import nn as nn from torch.nn import functional as F from d2l import torch as d2l from matplotlib import pyplot as plt import os os.environ['http_proxy'] = 'http://127.0.0.1:7890' os.environ['https_proxy'] = 'https://127.0.0.1:7890' class LeNetReshape(nn.Module): def __init__(self): super(LeNetReshape, self).__init__() def forward(self, x): return x.reshape(-1, 1, 28, 28) class LeNet5(nn.Module): def __init__(self): super(LeNet5, self).__init__() self.net = torch.nn.Sequential( LeNetReshape(), # 激活函数应为Sigmoid nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(), nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(), nn.Linear(120, 84), nn.Sigmoid(), nn.Linear(84, 10)) def forward(self, x): return self.net(x) def evaluate_accuracy_gpu(net, data_iter, device=None): if isinstance(net, torch.nn.Module): net.eval() if not device: device = next(iter(net.parameters())).device metric = d2l.Accumulator(2) for X, y in data_iter: if isinstance(X, list): X = [x.to(device) for x in X] else: X = X.to(device) y = y.to(device) metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计 return metric[0] / metric[1] def accuracy(y_hat, y): return torch.sum(y_hat.argmax(dim=1) == y) def train(net, train_iter, test_iter, num_epochs, lr, device): def init_weights(m): if type(m) == nn.Linear or type(m) == nn.Conv2d: nn.init.xavier_uniform_(m.weight) net.apply(init_weights) net.to(device) optimizer = torch.optim.SGD(net.parameters(), lr=lr) loss = torch.nn.CrossEntropyLoss() loss.to(device) animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], legend=['train loss', 'train acc', 'test acc']) timer, num_batches = d2l.Timer(), len(train_iter) metric = d2l.Accumulator(3) net.train() for epoch in range(num_epochs): for batch, (X, y) in enumerate(train_iter): timer.start() optimizer.zero_grad() X, y = X.to(device), y.to(device) y_hat = net(X) l = loss(y_hat, y) l.backward() optimizer.step() metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel()) timer.stop() train_l = metric[0] / metric[2] train_acc = metric[1] / metric[2] if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1: animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None)) test_acc = evaluate_accuracy_gpu(net, test_iter) animator.add(epoch + 1, (None, None, test_acc)) print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}') print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}') plt.show() batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) lr, num_epochs = 0.9, 10 lenet = LeNet5() train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())","s":"代码实现","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":1373},{"i":1379,"t":"在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。","s":"问题","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":1373},{"i":1382,"t":"concat与stack函数 stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度 concat函数对输入的张量在指定维度进行拼接,没有创建新的维度 # stack和concat函数 a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩 b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩 c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学) print(c.shape) # torch.Size([2, 4, 3]) d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩 print(d.shape) # torch.Size([4, 6]) list和tensor乘法不同之处 list的*乘法是复制元素,改变list的shape tensor的*乘法是对tensor中的元素进行点乘计算 a = torch.tensor([[3, 3, 3, 3]]) b = [3] # list的*乘是复制元素进行扩展 print(a * 3) # tensor([[9, 9, 9, 9]]) print(b * 3) # [3, 3, 3] 最大值 / 最小值索引:argmax / argmin 需要通过参数dim指定操作的维度,dim的理解 官方解释:The dimension to reduce 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度 # 最大值最小值索引 a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3] print(\"argmax output: \", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0]) Python zip函数 zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) c = zip(a, b) for i in c: print(i) ''' (tensor(1), tensor(4)) (tensor(2), tensor(5)) (tensor(3), tensor(6)) ''' a = torch.tensor([[1, 2, 3], [3, 2, 1]]) b = torch.tensor([[4, 5, 6], [6, 5, 4]]) c = zip(a, b) for i in c: print(i) ''' (tensor([1, 2, 3]), tensor([4, 5, 6])) (tensor([3, 2, 1]), tensor([6, 5, 4])) '''","s":"常用函数部分","u":"/en/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":1380},{"i":1384,"t":"相关链接 论文:arXiv 代码:GitHub 参考文献: Latent Diffusion Models论文解读 Stable Diffusion就是在这篇文章的基础上,使用LDM进行开发的。","s":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/en/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"","p":1383},{"i":1387,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"","p":1386},{"i":1389,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":1386},{"i":1392,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":1386},{"i":1394,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1386},{"i":1396,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":1386},{"i":1398,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":1386},{"i":1400,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 tip 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1386},{"i":1404,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":1386},{"i":1406,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1386},{"i":1408,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1386},{"i":1410,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":1409},{"i":1412,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1409},{"i":1414,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用 语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1409},{"i":1417,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1409},{"i":1419,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1409},{"i":1421,"t":"相关链接 论文:arXiv 代码:GitHub 参考资料: 54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读 【论文精读】Diffusion Model 开山之作DDPM","s":"NeurIPS 2020: Denoising Diffusion Probabilistic Models","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"","p":1420},{"i":1424,"t":"条件概率的定义​ 条件概率是指在给定另一个事件发生的条件下,某一事件发生的概率。条件概率通常用符号P(A∣B)P(A\\mid B)P(A∣B)表示,读作“在 B 发生的条件下 A 发生的概率”。 条件概率的计算公式为: P(A∣B)=P(A,B)P(B)P(A\\mid B)=\\frac{P(A,B)}{P(B)}P(A∣B)=P(B)P(A,B)​ 其中: P(A,B)P(A,B)P(A,B)是事件AAA、BBB同时发生的概率,也叫联合概率 P(B)P(B)P(B)是事件BBB独立发生的概率 全概率公式​ 对于事件AAA而言,假设有一组互斥且穷尽的条件事件B1,B2,…BnB_{1},B_{2},\\ldots B_{n}B1​,B2​,…Bn​构成一个完备事件组,则事件AAA的概率等于事件AAA在每个条件事件BiB_iBi​下发生的概率与该条件事件发生概率的乘积和。 P(A)=∑i=1nP(A∣Bi)⋅P(Bi)P(A)=\\sum_{i=1}^nP(A\\mid B_i)\\cdot P(B_i)P(A)=i=1∑n​P(A∣Bi​)⋅P(Bi​) 可以看出,全概率公式是由“因”(条件事件BiB_iBi​)推“果”(结果事件AAA)的过程,即当知道某结果事件的原因后,推断由该原因导致这件事发生的概率是多少。 贝叶斯公式​ 贝叶斯公式在观测到结果事件AAA发生后,计算其条件事件BiB_iBi​在事件AAA已经发生的条件下而发生的后验概率。 继续沿用上述全概率公式的符号定义,则有: P(Bi∣A)=P(A∣Bi)⋅P(Bi)P(A)P(B_i\\mid A)=\\frac{P(A\\mid B_i)\\cdot P(B_i)}{P(A)}P(Bi​∣A)=P(A)P(A∣Bi​)⋅P(Bi​)​ 其中: P(Bi)P(B_i)P(Bi​)以及P(A)P(A)P(A)称为先验概率 P(Bi∣A)P(B_i\\mid A)P(Bi​∣A)称为后验概率 P(A∣Bi)P(A\\mid B_i)P(A∣Bi​)称为似然","s":"先验概率与后验概率","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#先验概率与后验概率","p":1420},{"i":1426,"t":"条件概率的一般形式​ P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A)P(A,B,C)=P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid A,B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣A,B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid A,B)P(B,C∣A)=P(B∣A)⋅P(C∣A,B) 其中,第二行公式的推导如下: P(B,C∣A)=P(A,B,C)P(A)=P(A,B,C)P(A,B,C)P(C∣A,B)⋅P(B∣A)=P(B∣A)⋅P(C∣A,B)\\begin{align*} P(B,C \\mid A) &= \\frac{P(A,B,C)}{P(A)} \\\\ &= \\frac{P(A,B,C)}{\\frac{P(A,B,C)}{P(C \\mid A,B) \\cdot P(B \\mid A)}} \\\\ &= P(B \\mid A) \\cdot P(C \\mid A,B) \\end{align*}P(B,C∣A)​=P(A)P(A,B,C)​=P(C∣A,B)⋅P(B∣A)P(A,B,C)​P(A,B,C)​=P(B∣A)⋅P(C∣A,B)​ 高斯分布的KL散度​ 对于两个单一变量的高斯分布p∼N(μ1,σ12)p\\sim \\mathcal{N}(\\mu_1,\\sigma_1^2)p∼N(μ1​,σ12​)和q∼N(μ2,σ22)q\\sim \\mathcal{N}(\\mu_2,\\sigma_2^2)q∼N(μ2​,σ22​)而言,它们的KL散度定义为: DKL(p,q)=log⁡σ2σ1+σ12+(μ1−μ2)22σ22−12D_{KL}(p,q)=\\log\\frac{\\sigma_2}{\\sigma_1}+\\frac{\\sigma_1^2+(\\mu_1-\\mu_2)^2}{2\\sigma_2^2}-\\frac12DKL​(p,q)=logσ1​σ2​​+2σ22​σ12​+(μ1​−μ2​)2​−21​","s":"条件概率与高斯分布的KL散度","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#条件概率与高斯分布的kl散度","p":1420},{"i":1428,"t":"马尔科夫链指当前状态的概率只与上一时刻有关,例如若满足马尔科夫关系A→B→CA\\to B\\to CA→B→C,则有: P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A)P(A,B,C) =P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid B)P(B,C∣A)=P(B∣A)⋅P(C∣B)","s":"马尔科夫链条件概率形式","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#马尔科夫链条件概率形式","p":1420},{"i":1430,"t":"从任意高斯分布N(μ,σ2)\\mathcal{N}(\\mu,\\sigma^2)N(μ,σ2)采样xxx时,可以先从标准高斯分布N(0,1)\\mathcal{N}(0,1)N(0,1)中sample出zzz,再令 x=σ∗z+μx=\\sigma * z + \\mux=σ∗z+μ 优势: 由于线性变化,采样过程中对其他参数都有明确的导数,可以进行反向传播 可以通过线性变换来控制参数化的采样 标准正态分布具有易采样的性质","s":"参数重整化技巧","u":"/en/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#参数重整化技巧","p":1420},{"i":1432,"t":"原文链接:https://arxiv.org/pdf/2406.11838 参考资料:何恺明:Autoregressive Image Generation without Vector Quantization.","s":"Autoregressive Image Generation without Vector Quantization","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"","p":1431},{"i":1434,"t":"Conventional wisdom holds that autoregressive models for image generation are typically accompanied by vector-quantized tokens. We observe that while a discrete-valued space can facilitate representing a categorical distribution, it is not a necessity for autoregressive modeling. In this work, we propose to model the per-token probability distribution using a diffusion procedure, which allows us to apply autoregressive models in a continuous-valued space. Rather than using categorical cross-entropy loss, we define a Diffusion Loss function to model the per-token probability. This approach eliminates the need for discrete-valued tokenizers. We evaluate its effectiveness across a wide range of cases, including standard autoregressive models and generalized masked autoregressive (MAR) variants. By removing vector quantization, our image generator achieves strong results while enjoying the speed advantage of sequence modeling. We hope this work will motivate the use of autoregressive generation in other continuous-valued domains and applications.","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":1431},{"i":1436,"t":"由于语言先天的离散性质,在自然语言领域的自回归模型都是在离散的隐空间中学习数据的概率分布。因此,当自回归模型推广到连续的数据空间(如图像生成)进行发展时,研究人员将主要的精力放在了如何更有效地将连续数据离散化上,如 VQGAN、VQVAE、VAR、MaskGIT 等。 然而,本文作者从 Autoregressive 模型的性质本身(即根据先前的 token 预测下一个 token)出发进行思考,产生了自回归模型是否有必要与向量量化(Vector Quantization)表示相结合的疑问,作者发现,自回归生成模型与 token 是离散表示的还是连续表示的并没有关系,真正需要解决的问题是如何对每个 token 的概率分布进行建模,同时该概率分布可以通过损失函数来学习和约束(训练),并用于从中进行采样(生成)。","s":"研究动机","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":1431},{"i":1438,"t":"本文提出的模型融合了目前图像生成领域的三大主流范式的思想,分别为自回归生成、掩码生成以及扩散生成: 模型首先根据自回归模型性质为每个 token 生成条件向量(conditional vector)zzz 之后使用扩散过程建模每个 token 的概率分布 最后结合掩码生成的思想加速训练和推理过程","s":"主要方法与实现","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":1431},{"i":1440,"t":"具体而言,如下图所示,假设连续值向量 x∈Rdx \\in \\mathbb{R}^dx∈Rd,是当前位置要预测的 token。自回归模型在这个位置产生一个条件向量 z∈RDz \\in \\mathbb{R}^Dz∈RD​​ 。 本文使用 Diffusion Loss 根据 zzz 对 xxx 建模概率分布 p(x∣z)p(x \\mid z)p(x∣z)​ 。 L(z,x)=Eε,t[∥ε−εθ(xt∣t,z)∥2]L(z, x)=\\mathbb{E}_{\\varepsilon, t}\\left[\\left\\|\\varepsilon-\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)\\right\\|^2\\right]L(z,x)=Eε,t​[∥ε−εθ​(xt​∣t,z)∥2] 其中: ε∈Rd\\varepsilon \\in \\mathbb{R}^dε∈Rd 是从 N(0,I)\\mathcal{N}(0, \\mathbf{I})N(0,I) 采样的噪声向量 xt=αˉtx+1−αˉtεx_t=\\sqrt{\\bar{\\alpha}_t x}+\\sqrt{1-\\bar{\\alpha}_t} \\varepsilonxt​=αˉt​x​+1−αˉt​​ε,其中 αˉt\\bar{\\alpha}_tαˉt​ 定义了一个 noise schedule ttt 是 noise schedule 的时间步 噪声预测网络 εθ\\varepsilon_\\thetaεθ​ 由参数 θ\\thetaθ 控制,是一个小型 MLP 网络,εθ(xt∣t,z)\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)εθ​(xt​∣t,z) 表示此网络将 xtx_txt​ 作为输入,并且以 ttt 和 zzz​​​ 作为条件。MLP 网络的具体组成如下所示: 对于扩散过程,作者采用了 cosine 函数作为 noise schedule,在训练过程中设定为 1000 步,在推理过程中设定为 100 步。同时,Diffusion Loss 原生支持 CFG 策略。","s":"Diffusion Loss","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":1431},{"i":1442,"t":"在推理时,需要从分布 p(x∣z)p(x \\mid z)p(x∣z) 中采样样本。采样是通过逆扩散过程进行的: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt∣t,z))+σtδx_{t-1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t-\\frac{1-\\alpha_t}{\\sqrt{1-\\bar{\\alpha}_t}} \\epsilon_\\theta\\left(x_t \\mid t, z\\right)\\right)+\\sigma_t \\deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt​δ 这里 δ\\deltaδ 是从高斯分布 N(0,I)\\mathcal{N}(0, I)N(0,I) 中采样的, σt\\sigma_tσt​ 是时间步 ttt 的噪声水平。以 xT∼N(0,I)x_T \\sim \\mathcal{N}(0, I)xT​∼N(0,I) 开始,此过程生成一个样本 x0x_0x0​ 使得 x0∼p(x∣z)x_0 \\sim p(x \\mid z)x0​∼p(x∣z)​。","s":"采样","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":1431},{"i":1445,"t":"本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。 掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。","s":"结合掩码生成模型的思想 MAR","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":1431},{"i":1452,"t":"对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。","s":"MAR 模型速度与效果的 trade-off","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":1431},{"i":1454,"t":"实战练习 Transformer实战练习,代码见Github仓库。 This is a practice of Transformer, follow the guide of Github Repo.","s":"Speaker Classification","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"","p":1453},{"i":1456,"t":"Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.","s":"Overview","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":1453},{"i":1458,"t":"The original dataset is VoxCeleb1. We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive. Arguments: data_dir: The path to the data directory. metadata_path: The path to the metadata. segment_len: The length of audio segment for training. The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data. data directory/ ├── mapping.json ├── metadata.json ├── testdata.json └── uttr-{random string}.pt","s":"Dataset","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":1453},{"i":1460,"t":"This is also the assignment solution of ML2021Spring HW4.","s":"Related","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":1453},{"i":1463,"t":"We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":1461},{"i":1465,"t":"通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证 性能有待提升 上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。","s":"研究背景与动机","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":1461},{"i":1467,"t":"首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程: 输入 raw image,Encoder 得到对应的 feature map。 f=E(im)f=\\mathcal{E}(im)f=E(im) 输入feature map,Quantizer 得到对应的量化 image token。 q=Q(f)q=\\mathcal{Q}(f)q=Q(f) 在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZZ 中的 code。 q(i,j)=(arg⁡min⁡v∈[V]∥lookup(Z,v)−f(i,j)∥2)∈[V]q^{(i,j)}=\\left(\\arg\\min_{v\\in[V]}\\|\\text{lookup}(Z,v)-f^{(i,j)}\\|_2\\right)\\in[V]q(i,j)=(argv∈[V]min​∥lookup(Z,v)−f(i,j)∥2​)∈[V] Decoder 通过接收在 Codebook 中查找得到的 f^\\hat{f}f^​ 生成重构的图像。 f^=lookup⁡(Z,q)\\hat{f}=\\operatorname{lookup}(Z,q)f^​=lookup(Z,q) im^=D(f^)\\hat{im}=\\mathcal{D}(\\hat{f})im^=D(f^​) L=∥im−im^∥2+∥f−f^∥2+λPLP(im^)+λGLG(im^)\\mathcal{L}=\\|im-i\\hat{m}\\|_2+\\|f-\\hat{f}\\|_2+\\lambda_\\text{P}\\mathcal{L}_\\text{P}(i\\hat{m})+\\lambda_\\text{G}\\mathcal{L}_\\text{G}(i\\hat{m})L=∥im−im^∥2​+∥f−f^​∥2​+λP​LP​(im^)+λG​LG​(im^) 下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。 文章发现了目前传统 VAR 模型存在的三个问题。 VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_txt​ 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt−1)(x_1, x_2, ..., x_{t-1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。 作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。 作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。 This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,…,xn×n)x=(x_1,x_2,\\ldots,x_{n\\times n})x=(x1​,x2​,…,xn×n​) 的 token 序列,需要 O(n2)\\mathcal{O}(n^{2})O(n2) 的注意力步骤以及 O(n6)\\mathcal{O}(n^{6})O(n6) 的计算复杂度。","s":"问题发现与提出","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":1461},{"i":1470,"t":"本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction。 自回归过程从分辨率为 1×11\\times11×1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。 通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 f∈Rh×w×Cf \\in \\mathbb{R}^{h \\times w \\times C}f∈Rh×w×C 量化为 KKK 个多尺度标记图 (r1,r2,…,rK)(r_1, r_2, \\ldots, r_K)(r1​,r2​,…,rK​),每个图的分辨率 hk×wkh_k \\times w_khk​×wk​ 逐步增加,最终达到 rKr_KrK​ 与原始特征图的分辨率 h×wh \\times wh×w 匹配。自回归似然性公式为: p(r1,r2,…,rK)=∏k=1Kp(rk∣r1,r2,…,rk−1)p(r_1, r_2, \\ldots, r_K) = \\prod_{k=1}^{K} p(r_k \\mid r_1, r_2, \\ldots, r_{k-1})p(r1​,r2​,…,rK​)=k=1∏K​p(rk​∣r1​,r2​,…,rk−1​) 其中每个自回归单元 rk∈[V]hk×wkr_k \\in [V]^{h_k \\times w_k}rk​∈[V]hk​×wk​ 是包含 hk×wkh_k \\times w_khk​×wk​ 个标记的第 kkk 个尺度的标记图,而序列 (r1,r2,…,rk−1)(r_1, r_2, \\ldots, r_{k-1})(r1​,r2​,…,rk−1​) 作为 rkr_krk​ 的“前缀”。在第 kkk 个自回归步骤中,所有 rkr_krk​ 中的 h_k \\times w_k 标记的分布将并行生成,并以 rkr_krk​ 的前缀和关联的第 kkk 个位置嵌入图为条件。如下图所示。 请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_krk​ 只能关注其前缀 r≤kr_{\\leq k}r≤k​,从而满足 Autoregressive 模型的数学假设前提。 本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。","s":"主要方法","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":1461},{"i":1472,"t":"Multi-scale VQ quantizer​ 首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。 VAR Transformer​ 作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。 在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_kr1​,...,rk​ 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。 单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KKK。","s":"模型主要结构","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":1461},{"i":1474,"t":"本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。 对文章开篇提出的问题的解决: 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2n2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\\mathcal{O}(n^2)O(n2) 次解码迭代和 O(n6)\\mathcal{O}(n^6)O(n6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\\mathcal{O}(log(n))O(log(n)) 次迭代和 O(n4)\\mathcal{O}(n^4)O(n4)​ 次总计算量。 文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力。","s":"总结","u":"/en/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":1461},{"i":1476,"t":"相关链接 论文:CVPR 2023 open access 代码:Piscart-AI-Research 文章的命名风格借鉴了CVPR 2022的文章Few Shot Generative Model Adaption via Relaxed Spatial Structural Alignment","s":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"","p":1475},{"i":1478,"t":"本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征且适应目标域的prompt,从而指导目标域生成器的训练。 This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility. 训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":1475},{"i":1481,"t":"Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。 few-shot​ 对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。 然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。 相关文献方法 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019. 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020. 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021. 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021. zero-shot​ 对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。 此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。 然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。","s":"Generative Model Adaption","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":1475},{"i":1483,"t":"Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。 然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。 Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。","s":"Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":1475},{"i":1486,"t":"IPL方法分两个阶段。 第一阶段:训练Latent Mapper​ 第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。 第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。 第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。 第二阶段:将Latent Mapper插入目标域生成器的训练过程​ 第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。","s":"概述","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":1475},{"i":1489,"t":"自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。","s":"图像生成:自回归模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"","p":1488},{"i":1491,"t":"自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。 假设有一个序列 x=(x1,x2,…,xT)x=\\left(x_1, x_2, \\ldots, x_T\\right)x=(x1​,x2​,…,xT​) ,自回归模型的目标是学习条件概率分布 p(xt∣x 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":1544},{"i":1566,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":1544},{"i":1569,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1544},{"i":1571,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":1544},{"i":1574,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1544},{"i":1576,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1544},{"i":1578,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1544},{"i":1580,"t":"还得梳理清楚文生图模型这块的脉络,建立自己的知识结构和时间线,把 related work 里提到的工作也加到时间线里,尽量做到拿到一篇新的 paper 就可以做到能插入到自己的知识结构里,知道这篇工作是对以前的哪个点进行的改进,是递进还是平行。 一个月完成知识储备和体系搭建,之后开始 trace 最新进展,想 idea 做实验。","s":"20240705 @ 图像生成与视频生成基座模型","u":"/en/docs/Deep-Learning/组会记录/1-20240705","h":"","p":1579},{"i":1583,"t":"import torch","s":"后期工作","u":"/en/docs/Deep-Learning/组会记录/1-20240705","h":"#后期工作","p":1579},{"i":1586,"t":"参考链接 原文 URL:Recent Advances in (Image) Generative Foundation Models","s":"图像生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#图像生成基座模型","p":1584},{"i":1588,"t":"GAN​ 使用对抗生成策略,判别器根据真实图像判断生成器生成的图像是否逼真,二者交替训练。 Autoregressive(AR)​ 自回归生成范式,利用输入自身之前各期 [x1,...,xt−1][x_1,...,x_{t-1}][x1​,...,xt−1​] 来预测本期 xtx_txt​​​ 的表现。在图像生成中,自回归模型可以逐像素或逐块生成图像,每一步的生成基于之前已经生成的部分。自回归模型的优点在于能够捕捉图像中的复杂依赖关系,从而生成更加逼真的图像。 代表模型:VAE、VQVAE(2017)​ 参考资料 VQ-VAE 的简明介绍:量子化子编码器 Variant AutoEncoder(VAE)和 VQ-VAE 学习笔记和代码 VAE 和 VQ-VAE 都通过学习数据分布的潜在表示来生成新的样本。VAE 使用高斯分布来表示潜在空间,而 VQ-VAE 使用离散的代码簿来表示潜在空间。 具体来说,VAE 的工作原理是通过一个编码器将输入数据映射到一个潜在空间,然后通过一个解码器将潜在空间中的向量重构为原始数据。在训练过程中,VAE 会学习到数据分布的潜在表示,并能够生成与训练数据类似的新样本。 VQ-VAE 的工作原理与 VAE 类似,但它使用离散的代码簿来表示潜在空间。VQ-VAE 首先将编码器输出的向量进行量化,将其映射到代码簿中的最近向量。然后,解码器使用代码簿中的向量来重构原始数据。VQ-VAE 的优势在于,它可以学习到数据中的离散结构和语义信息,并可以避免过拟合。 代表模型:VQGAN(2021)​ 代表模型:ViT-VQGAN(2022)​ VQ (Vector Quantization) 的改进:在原有的 VQ-VAE 基础上进行了改进,通过引入更复杂的量化器和更强大的解码器,使得生成的图像质量得到了显著提升。 GAN (Generative Adversarial Network) 的结合:将 VQ 和 GAN 结合,利用 Style-GAN 的判别器来提升生成图像的细节和逼真度。 Transformer 的使用:将 VQ-VAE 和 VQGAN 的 Encoder、Decoder 中原来使用的 CNN 结构替换为 ViT。一是因为数据量丰富,二是 CNN 的归纳偏置对模型的约束是有限的,三是计算效率和重建质量更显著。 代表模型:VAR​ 上图展示了不同方式的自回归生成模型,VAR 方法在每个时间序列节点上都根据之前各时间步的输出预测出当前时间步的,且每个时间步均预测出完整的目标图像,且分辨率随时间推移逐步提升至高清图像,即 next-resolution prediction。 Masked-prediction model(Non-AR)​ 参考资料 生成周刊·第一期 代表模型:MaskGIT: Masked Generative Image Transformer​ 这种生成模型依赖一个预训练好的 VQGAN,能将图片 tokenize 成一组量化后的 visual tokens。VQGAN 编码图片得到的 tokens 是离散的,所有可能的 tokens 构成一个 codebook,假设其中包含 KKK 个 token 选项。MVTM 训练就是指给定 masked tokens,让网络预测这些被 masked 掉的 tokens。对于每个被 masked 掉的 token,网络给出一个 KKK 维向量预测当前 token 属于 codebook 中每个 token 的可能性,类似于完成一个 KKK 分类任务。 上图展示了传统 AR 模型和 MaskGIT 在推理过程中的区别。与之前 SOTA 使用的 Autoregressive 方法——逐行再逐列依次生成 image token 不同,MaskGIT 在推理时的每次迭代从一组 masked tokens 中预测出每个位置出现 visual token 的可能性,然后仅保留那些置信度足够高的位置的 visual token,然后继续将当前预测结果再送入网络进行下一轮预测,直到所有位置的 visual token 都被预测出来。与之前常用的自回归方法不同,每轮预测都是基于对图片的全局感知,可以并行预测。这样网络仅需 8 次前向传播就能生成高质量的图片。 顺序解码与 MaskGIT 计划并行解码的比较。第 1 行和第 3 行是每次迭代时的输入潜在掩码,第 2 行和第 4 行是每次迭代时每个模型生成的样本。MaskGIT 的解码从所有未知代码(浅灰色标记)开始,逐渐用更多更分散的预测并行填充潜表征(深灰色标记),预测标记的数量随着迭代急剧增加。MaskGIT 只用了 8 次迭代就完成了解码,而顺序法需要 256 轮。 代表模型:MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis​ Diffusion Model​ 参考链接 深度理解变分自编码器(VAE) | 从入门到精通","s":"四种生成范式","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#四种生成范式","p":1584},{"i":1590,"t":"数据:Re-caption 与 text encoder(T5) 结构:从 U-Net 到纯 Transformer,代表论文 Scalable Diffusion Models with Transformers 训练范式:使用 Rectified Flow 加速生成过程,参考链接 Diffusion学习笔记(十二)——Rectified Flow","s":"如何训练优秀的生成基座模型?","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#如何训练优秀的生成基座模型","p":1584},{"i":1592,"t":"参考链接 原文 URL:Video and 3D Generation","s":"视频生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#视频生成基座模型","p":1584},{"i":1594,"t":"介绍 欢迎来到笔记本的深度学习部分 若更新不及时,欢迎通过 GitHub 联系交流 有关论文笔记的说明 为了节省写作时间,论文笔记部分的文章通常只讲述文章的方法论,Introduction 以及 Related Work 详情可以参考论文原文","s":"Welcome","u":"/en/docs/Deep-Learning/intro","h":"","p":1593},{"i":1596,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Deep-Learning/intro","h":"#支持我","p":1593},{"i":1598,"t":"tip 欢迎来到笔记本的其他部分","s":"Welcome","u":"/en/docs/Others/intro","h":"","p":1597},{"i":1600,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Others/intro","h":"#支持我","p":1597},{"i":1602,"t":"告示栏的启用 在docusaurus.config.js的themeConfig中加入以下代码 announcementBar: { id: 'announcementBar-3', content: 'Welcome to my notebook!', isCloseable: false, }, 告示栏的背景个性化 在custom.css中加入以下代码 div[class^='announcementBar_'] { background: repeating-linear-gradient( -35deg, var(--ifm-color-primary-lighter), var(--ifm-color-primary-lighter) 20px, var(--ifm-color-primary-lightest) 10px, var(--ifm-color-primary-lightest) 40px ); font-weight: 700; }","s":"告示栏","u":"/en/docs/Others/博客搭建/告示栏","h":"","p":1601},{"i":1604,"t":"info 这里记录着在学习过程中发现的理解或操作方面出现的错误,温故知新。","s":"查漏补缺","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"","p":1603},{"i":1606,"t":"进行广播的条件:两个矩阵的后缘维度相同或其中一方的维度为1。 后缘维度相同:A为(3,4,5)的三维数据,B为(4,5)的二维数组。由于A和B的后缘维度都为(4,5),所以可以进行广播。同理,当A为(3,4)的二维数组,B为(4,)的数组,他们的后缘维度都是4,所以可以进行广播。 后缘维度中有一方维度为1:A为(4,5)的二维数组,B为(4,1)的二维数组,其中一方维度为1,可以进行广播。 广播的原理:在运算过程中,Python逐步对数组进行广播,并不进行实际的复制操作,节省内存。 以下是举出具体例子进行分析: import numpy as np import torch x = torch.tensor(np.arange(9), dtype=torch.float32) x = torch.reshape(x, (3, 3)) print(x) x1 = x[:, :, None] # (3, 3, 1) print(x1) \"\"\" tensor([[[0.], [1.], [2.]], [[3.], [4.], [5.]], [[6.], [7.], [8.]]]) \"\"\" x2 = x[:, None] # (3, 1, 3) print(x2) \"\"\" tensor([[[0., 1., 2.]], [[3., 4., 5.]], [[6., 7., 8.]]]) \"\"\" output = x1 + x2 print(output) \"\"\" tensor([[[ 0., 1., 2.], [ 1., 2., 3.], [ 2., 3., 4.]], [[ 6., 7., 8.], [ 7., 8., 9.], [ 8., 9., 10.]], [[12., 13., 14.], [13., 14., 15.], [14., 15., 16.]]]) \"\"\" 由于x1与x2在第0维度上维度相同,所以Python可以直接进行逐元素相加,即依次进行如下运算 x1[0,:,:]+x2[0,:,:](1)x1[0, :, :] + x2[0, :, :] \\tag{1}x1[0,:,:]+x2[0,:,:](1) x1[1,:,:]+x2[1,:,:](2)x1[1, :, :] + x2[1, :, :] \\tag{2}x1[1,:,:]+x2[1,:,:](2) x1[2,:,:]+x2[2,:,:](3)x1[2, :, :] + x2[2, :, :] \\tag{3}x1[2,:,:]+x2[2,:,:](3) 但在第0维度的相加过程中出现了shape为(3, 1)的矩阵与shape为(1, 3)的矩阵相加的情况,此时进行广播,将(3, 1)的每一列复制三次为(3, 3),将(1, 3)的每一行复制三次为(3, 3),再进行逐元素相加。 其实,上述的过程还可以再细分为,x1[0, 0, :]与x2[0, 0, :]相加时出现了第一次广播,将x1[0, 0, :]复制了三次与x2[0,0, :]完成相加,这里不再赘述,最终想表达的原理是广播机制是在运算过程当中进行的,并非一次性将二者全部复制为对应的最小公倍数形状后再进行运算。","s":"Python的广播机制","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#python的广播机制","p":1603},{"i":1608,"t":"点积在Python中对应的运算符为*,进行矩阵之间的逐元素乘法。在点积运算中,运算矩阵二者形状不一样时可能涉及到广播机制; 矩阵乘法在Python中对应的运算符为@,进行常规矩阵乘法。遵守左矩阵的列数必须等于右矩阵的行数,且输出矩阵的行数等于左矩阵的行数、输出矩阵的列数等于右矩阵的列数的规则。","s":"点积(dot product)与矩阵乘法(matmul product)","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#点积dot-product与矩阵乘法matmul-product","p":1603},{"i":1610,"t":"当你有多个列表(或其他可迭代对象)时,zip函数可以将它们逐个配对成元组。而*操作符用于解压元组,将元组中的元素分别作为参数传递给函数。 以下是一个简单的例子: # zip函数的例子 list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] list3 = ['x', 'y', 'z'] # 使用zip将多个列表配对成元组 zipped_lists = zip(list1, list2, list3) # 打印配对后的元组 for item in zipped_lists: print(item) 输出: (1, 'a', 'x') (2, 'b', 'y') (3, 'c', 'z') 在这个例子中,zip将list1、list2和list3中相同位置的元素组合成元组。 接下来,我们可以使用 * 操作符解压这些元组: # *解压操作的例子 unzipped_lists = zip(*zipped_lists) # 打印解压后的列表 for item in unzipped_lists: print(item) 输出: (1, 2, 3) ('a', 'b', 'c') ('x', 'y', 'z') 在这个例子中,*操作符将先前由zip组合的元组解压,分别放回原始的列表。","s":"zip函数与解压操作*","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#zip函数与解压操作","p":1603},{"i":1612,"t":"参考资料 https://www.jianshu.com/p/41c15d301542 对于不同的网络层,输入的维度虽然不同,但是通常输入的第一个维度都是batch_size,比如torch.nn.Linear的输入(batch_size,in_features),torch.nn.Conv2d的输入(batch_size, C, H, W)。 而RNN的输入是(seq_len, batch_size, input_size),batch_size位于第二维度!虽然可以将batch_size和序列长度seq_len对换位置,此时只需令batch_first=True。 但是为什么RNN输入默认不是batch first=True?这是为了便于并行计算。 因为cuDNN中RNN的API就是batch_size在第二维度。进一步讲,batch first意味着模型的输入(一个Tensor)在内存中存储时,先存储第一个sequence,再存储第二个,而如果是seq_len first,模型的输入在内存中,先存储每一个sequence的第一个元素,然后是第二个元素,两种区别如下图所示: seq_len first意味着不同序列中同一个时刻对应的输入单元在内存中是毗邻的,这样才能做到真正的batch计算。","s":"对batch_first参数的理解","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#对batch_first参数的理解","p":1603},{"i":1614,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"自回归模型:LlamaGen","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":1613},{"i":1616,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1613},{"i":1618,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1613},{"i":1621,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1613},{"i":1623,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的 LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1613},{"i":1625,"t":"原文链接:https://arxiv.org/pdf/2404.02905","s":"自回归模型:VAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"","p":1624},{"i":1627,"t":"We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.","s":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":1624},{"i":1629,"t":"通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证 性能有待提升 上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。","s":"研究背景与动机","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":1624},{"i":1631,"t":"首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程: 输入 raw image,Encoder 得到对应的 feature map。 f=E(im)f=\\mathcal{E}(im)f=E(im) 输入feature map,Quantizer 得到对应的量化 image token。 q=Q(f)q=\\mathcal{Q}(f)q=Q(f) 在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZZ 中的 code。 q(i,j)=(arg⁡min⁡v∈[V]∥lookup(Z,v)−f(i,j)∥2)∈[V]q^{(i,j)}=\\left(\\arg\\min_{v\\in[V]}\\|\\text{lookup}(Z,v)-f^{(i,j)}\\|_2\\right)\\in[V]q(i,j)=(argv∈[V]min​∥lookup(Z,v)−f(i,j)∥2​)∈[V] Decoder 通过接收在 Codebook 中查找得到的 f^\\hat{f}f^​ 生成重构的图像。 f^=lookup⁡(Z,q)\\hat{f}=\\operatorname{lookup}(Z,q)f^​=lookup(Z,q) im^=D(f^)\\hat{im}=\\mathcal{D}(\\hat{f})im^=D(f^​) L=∥im−im^∥2+∥f−f^∥2+λPLP(im^)+λGLG(im^)\\mathcal{L}=\\|im-i\\hat{m}\\|_2+\\|f-\\hat{f}\\|_2+\\lambda_\\text{P}\\mathcal{L}_\\text{P}(i\\hat{m})+\\lambda_\\text{G}\\mathcal{L}_\\text{G}(i\\hat{m})L=∥im−im^∥2​+∥f−f^​∥2​+λP​LP​(im^)+λG​LG​(im^) 下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。 文章发现了目前传统 VAR 模型存在的三个问题。 VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_txt​ 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt−1)(x_1, x_2, ..., x_{t-1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。 作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。 作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。 This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,…,xn×n)x=(x_1,x_2,\\ldots,x_{n\\times n})x=(x1​,x2​,…,xn×n​) 的 token 序列,需要 O(n2)\\mathcal{O}(n^{2})O(n2) 的注意力步骤以及 O(n6)\\mathcal{O}(n^{6})O(n6) 的计算复杂度。","s":"问题发现与提出","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":1624},{"i":1634,"t":"本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction。 自回归过程从分辨率为 1×11\\times11×1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。 通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 f∈Rh×w×Cf \\in \\mathbb{R}^{h \\times w \\times C}f∈Rh×w×C 量化为 KKK 个多尺度标记图 (r1,r2,…,rK)(r_1, r_2, \\ldots, r_K)(r1​,r2​,…,rK​),每个图的分辨率 hk×wkh_k \\times w_khk​×wk​ 逐步增加,最终达到 rKr_KrK​ 与原始特征图的分辨率 h×wh \\times wh×w 匹配。自回归似然性公式为: p(r1,r2,…,rK)=∏k=1Kp(rk∣r1,r2,…,rk−1)p(r_1, r_2, \\ldots, r_K) = \\prod_{k=1}^{K} p(r_k \\mid r_1, r_2, \\ldots, r_{k-1})p(r1​,r2​,…,rK​)=k=1∏K​p(rk​∣r1​,r2​,…,rk−1​) 其中每个自回归单元 rk∈[V]hk×wkr_k \\in [V]^{h_k \\times w_k}rk​∈[V]hk​×wk​ 是包含 hk×wkh_k \\times w_khk​×wk​ 个标记的第 kkk 个尺度的标记图,而序列 (r1,r2,…,rk−1)(r_1, r_2, \\ldots, r_{k-1})(r1​,r2​,…,rk−1​) 作为 rkr_krk​ 的“前缀”。在第 kkk 个自回归步骤中,所有 rkr_krk​ 中的 h_k \\times w_k 标记的分布将并行生成,并以 rkr_krk​ 的前缀和关联的第 kkk 个位置嵌入图为条件。如下图所示。 请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_krk​ 只能关注其前缀 r≤kr_{\\leq k}r≤k​,从而满足 Autoregressive 模型的数学假设前提。 本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。","s":"主要方法","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":1624},{"i":1636,"t":"Multi-scale VQ quantizer​ 首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。 VAR Transformer​ 作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。 在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_kr1​,...,rk​ 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。 单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KKK​。","s":"模型主要结构","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":1624},{"i":1638,"t":"期待更好的 VQVAE tokenizer 可以提升 VAR 模型的能力。 本文只实现了 class-conditional generation,可以继续扩展为多模态任务,text-prompt generation。目前我认为比较常见的一个想法就是结合 T5 text-encoder,将文字 视频生成。可以将视频看作是 3D pyramids,尝试 3D next-scale prediction。 作者表示,与 Diffusion Model-based 的视频生成模型 SORA 相比,由于 VAR 模型在结构与上与 LLMs 更相似,可以更好地与 LLMs 的技术相结合。","s":"局限性与展望","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#局限性与展望","p":1624},{"i":1640,"t":"本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。 对文章开篇提出的问题的解决: 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2n2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\\mathcal{O}(n^2)O(n2) 次解码迭代和 O(n6)\\mathcal{O}(n^6)O(n6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\\mathcal{O}(log(n))O(log(n)) 次迭代和 O(n4)\\mathcal{O}(n^4)O(n4)​ 次总计算量。 文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力。","s":"总结","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":1624},{"i":1643,"t":"dock显示的图标是全局图标,程序启动器的desktop文件位于/usr/share/applications中,全局主题中图标主题的程序logo位于~/.local/share/icons/Mkos-Big-Sur-Night/128x128/apps(deppending on specific situation)中。在logo文件夹中挑选想要的logo,在desktop中的icon位置修改即可 应用更新的时候会同时更新.desktop文件,因此在更换图标是最好直接更换在主题文件中替换icon,而不是更改desktop的icon路径 Finder小组件中application title文字不能垂直居中,可以更换为Window title插件","s":"一、latte-dock","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#一latte-dock","p":1641},{"i":1645,"t":"Finder栏中Plasmoids左半部分从左至右依次为: kpple menu application title/window titile(if the text of application title can't be centered vertically) global menu 右半部分从左至右依次为: resources monitor (fork) mcOS BS Inline Battery 网络 Control Center(replace the icon with search icon) Control Center(replace the icom with menu icon) Better Inline Clock 安装方法: plasmpkg2 -u xxx.plasmoid","s":"二、Kde Plasmoids","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#二kde-plasmoids","p":1641},{"i":1648,"t":"未知,可能是由Windows休眠模式导致","s":"一、发生原因","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#一发生原因","p":1646},{"i":1650,"t":"使用ntfsfix修复ntfs磁盘 安装ntfsfix yay -S ntfsfix 查看问题分区 df -h 修复 sudo ntfsfix /dev/your_partition 重启 reboot","s":"二、解决方案","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#二解决方案","p":1646},{"i":1652,"t":"通过编写脚本函数的方式,手动开启代理","s":"终端代理","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"","p":1651},{"i":1654,"t":"新建脚本文件terminal_proxy.sh # 开启代理 function proxy_on(){ export ALL_PROXY=socks5://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export https_proxy=https://127.0.0.1:7890 echo -e \"已开启代理\" } # 关闭代理 function proxy_off(){ unset ALL_PROXY unset http_proxy unset https_proxy echo -e \"已关闭代理\" }","s":"一、编写脚本","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#一编写脚本","p":1651},{"i":1656,"t":"fish的配置文件:~/.config/fish/config.fish zsh的配置文件:~/.zshrc bash的配置文件:~/.bashrc 在配置文件末尾添加以下代码 source /path/terminal_proxy.sh","s":"二、关联终端配置文件","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#二关联终端配置文件","p":1651},{"i":1658,"t":"在终端中输入以下命令即可开启代理 proxy_on 在终端中输入以下命令即可关闭代理 proxy_off","s":"三、使用","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#三使用","p":1651},{"i":1661,"t":"树的性质: 一棵 N 个结点的树有 N-1 条边 树的总度数+1=树的结点数 树的度=树中度最大结点的度数 二叉树的性质: 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1 树转化为二叉树: 参考资料:知乎 加线。在所有的兄弟结点之间加一条线。 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子。 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。","s":"树","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":1659},{"i":1663,"t":"图的表示: 邻接矩阵 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性 邻接表的搜索 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。 Kruskal算法 Prim算法 最短路径 ​ ​","s":"图","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":1659},{"i":1665,"t":"tip 大数除法是指被除数大小超出long long范围,而导致必须使用字符串存储的除法,属于简单模拟的范畴","s":"大数除法","u":"/en/docs/Tui-Mian/机试/大数除法","h":"","p":1664},{"i":1667,"t":"通过模拟列竖式手动计算除法,实现使用字符串存储被除数的大数除法","s":"思路","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#思路","p":1664},{"i":1669,"t":"string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 }","s":"参考代码","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":1664},{"i":1671,"t":"将大数除法与进制转换相结合。 tip 北京大学机试真题,N诺链接 完整代码如下: #include using namespace std; string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 } int main() { string s; while (cin >> s) { vector vec; int len = s.size(); while (s != \"0\") { int remainder = (s[len - 1] - '0') % 2; vec.push_back(remainder); s = division(s, 2); len = s.size(); } if (vec.empty()) { cout << \"0\"; } else { for (auto it = vec.rbegin(); it != vec.rend(); it++) { cout << *it; } } cout << endl; } return 0; }","s":"扩展","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":1664},{"i":1674,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 tip P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"面试常考问题","u":"/en/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":1672},{"i":1677,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1 线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 tip 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 tip 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"一、线性代数","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":1675},{"i":1679,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 tip P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"二、概率论","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":1675},{"i":1681,"t":"tip 参考链接: 线性代数极简入门 《线性代数》高清教学视频 “惊叹号”系列 宋浩老师","s":"线性代数","u":"/en/docs/Tui-Mian/数学/线性代数","h":"","p":1680},{"i":1683,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1","s":"一、基础知识","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":1680},{"i":1685,"t":"线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 tip 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 tip 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"二、面试常考问题","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":1680},{"i":1687,"t":"tip 欢迎来到笔记本的推免复习部分","s":"Welcome","u":"/en/docs/Tui-Mian/intro","h":"","p":1686},{"i":1689,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Tui-Mian/intro","h":"#支持我","p":1686},{"i":1693,"t":"显著性目标检测Salient Object Detection,相当于语义分割中的二分类任务,只有前景和背景","s":"(一)SOD任务","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":1690},{"i":1695,"t":"下图为U-2-Net的整体结构 tip residual [rɪˈzɪdjuəl] 在encoder阶段,每个block之后使用maxpooling下采样两倍 在decoder阶段,每个block之后使用双线性插值上采样两倍 下图为Residual U-block的结构 tip 卷积是如何改变输出的通道数的? 卷积核的通道数等于输入的通道数,卷积核的个数等于输出的通道数 图片来源知乎 在特征融合阶段,每一层的encoder-decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的feature map通道数也为1。将每一层的feature map进行concat拼接,得到6通道的融合feature map,最后使用1x1卷积以及sigmoid激活函数得到最终的融合特征图输出","s":"(二)网络结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":1690},{"i":1697,"t":"损失函数是7个损失项的加权求和 共有6层encoder-decoder结构,将每一层对应的feature map与ground truth做BCE Loss得到6个损失项 第7个损失项是最终融合得到的feature map与ground truth的BCE Loss 在论文中,每个损失项的权重都为1 canny边缘检测: 使用高斯滤波进行平滑 计算像素梯度 非极大值抑制 双阈值检测强边缘、弱边缘 边缘连接","s":"(三)损失函数","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":1690},{"i":1699,"t":"深度可分离卷积的优点是可以在大致保持卷积效果的情况下减少参数量 在实现原理上可分为两个步骤:深度卷积(depth wise)以及逐点(point wise)卷积 深度卷积是一种在每个输入通道上分别进行卷积操作的卷积方法,每个输入通道只与对应的卷积核进行卷积。 逐点卷积通过使用1×11 \\times 11×1卷积对深度卷积的结果再次卷积","s":"(四)深度可分离卷积","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":1690},{"i":1702,"t":"PR曲线所围成的面积即使该类的AP值","s":"(一)mAP","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":1690},{"i":1704,"t":"tip 参考资料:【精读AI论文】YOLO V1目标检测,看我就够了 1.预测阶段​ 下图为YOLOv1的算法框架 下图为YOLOv1的网络结构 输入[448, 448, 3]图像,输出[7, 7, 30]的tensor(包含所有预测框的坐标、置信度和类别结果),通过解析输出的tensor得到预测结果 首先将输入图片划分为S×SS \\times SS×S个grid cell。在YOLOv1中S=7S=7S=7 每个grid cell预测出BBB个bounding box预测框(bbox),每个bbox的中心点都落在该grid cell中。在YOLOv1中B=2B=2B=2 每个bbox包含(x, y, h, w, c)五种信息,其中x, y为bbox左上角坐标,h, w为bbox的宽高,c为该bbox是否存在object的概率 同时每个grid cell预测出一组与数据集有关的条件类别概率。在YOLOv1论文使用的数据集Pascal VOC中,类别种类为20类,因此在预测阶段输出的[7, 7, 30]的tensor含义如下图所示 每个grid cell选出条件类别概率最大的类别,因此每个grid cell只能检测一个物体 tip 这也是YOLOv1小目标和密集目标识别能力差的原因 每个bbox的置信度与其父grid cell的类别概率相乘得到全概率,如下图所示 进行NMS后处理: 对某一特定类别,首先根据全概率置信度排序 将此时最大置信度的bbox与其他所有置信度更小的bbox做IoU判断,若IoU大于设置的阈值,则抹除置信度小的bbox 将剩余的次大的置信度重复步骤2,抹除所有置信度更小的其IoU超过阈值的bbox tip 非极大值抑制只在预测阶段进行 在训练阶段,所有bbox都会在Loss Function中起到更新的作用,因此不进行NMS 2. 训练过程的损失函数​","s":"(二)YOLOv1","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":1690},{"i":1706,"t":"1. BN层​ 2. 高分辨率训练​ 3. Anchor​ YOLOv2引入了anchor机制代替bbox,将图像划分为13×1313 \\times 1313×13个grid cell,每个grid cell生成5个anchor anchor是通过k-means聚类在数据集上生成的不同尺寸的先验框 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂","s":"(二)YOLOv2","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":1690},{"i":1708,"t":"1. 特征融合​ YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征 主干通过卷积和池化提取特征,形成不同尺寸的特征图 分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征 主干特征图通过卷积对通道数降维之后与分支在通道维度上concat tip 在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合 2. 前处理​ 对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度 3. 特征金字塔FCN​","s":"(三)YOLOv5","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":1690},{"i":1710,"t":"tip 有关CSP特征融合可以参考:https://blog.csdn.net/weixin_55073640/article/details/122614176 CBAM是通道+空间注意力机制(SENet是通道注意力机制)","s":"三、CBAM","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":1690},{"i":1712,"t":"通道注意力:原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘 空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘","s":"(一)总体结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":1690},{"i":1714,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图","s":"(二)通道注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":1690},{"i":1716,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,再将二者concat后通过7×77 \\times 77×7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图","s":"(三)空间注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":1690},{"i":1718,"t":"作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \\times 77×7卷积与3×33 \\times 33×3卷积的消融实验发现,7×77 \\times 77×7卷积效果更好) 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好","s":"(四)其他注意事项","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":1690},{"i":1720,"t":"Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。 YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失","s":"四、Focal Loss","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":1690},{"i":1722,"t":"Squeeze and Excitation Squeeze挤压操作就是将[b,c,h,w][b, c, h, w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构 Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数","s":"五、SENet","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":1690},{"i":1724,"t":"自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量、键(Key)向量和值(Value)向量。 通过点积和缩放点积计算相似程度 通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。","s":"六、自注意力机制","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":1690},{"i":1727,"t":"This content has been encrypted.","s":"(一)英文自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":1690},{"i":1729,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(二)西电广研院自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":1690},{"i":1731,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(三)电子科技大学自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":1690},{"i":1734,"t":"自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。 希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。 文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。","s":"前言","u":"/en/docs/Tui-Mian/Summary","h":"#前言","p":1732},{"i":1736,"t":"常见名词 含义解释 928/929 每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。 没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。 优营 优营就是夏令营的优秀营员。 不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。 wl/waiting list wl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。","s":"扫盲","u":"/en/docs/Tui-Mian/Summary","h":"#扫盲","p":1732},{"i":1738,"t":"本科学校:理工类普通一本(四非) 专业:计算机科学与技术CS rank:前1%(非rank 1 or 2的top选手) 英语:四级594 & 六级586 竞赛:非ACMer,一个CV类比赛国一,其他都是更不上台面的奖项了 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金 科研及论文:无正经科研经历,EI水会一篇 从某种程度上来说,本科出身和rank基本上决定了上限。","s":"个人情况","u":"/en/docs/Tui-Mian/Summary","h":"#个人情况","p":1732}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/873",[0,3.351,1,8.159,2,2.799,3,9.782,4,8.159,5,8.159,6,8.159]],["t/875",[2,2.397,7,2.227,8,3.021,9,1.871,10,2.328,11,2.328,12,3.887,13,2.328,14,0.589,15,2.589,16,3.097,17,3.021,18,6.988,19,3.757,20,6.345,21,3.767,22,4.878,23,7.655,24,2.514,25,2.139,26,3.192,27,3.767,28,3.767,29,3.767,30,4.088,31,4.236,32,2.182]],["t/877",[14,0.551,33,3.921,34,6.951,35,7.656,36,9.411,37,7.656,38,7.656,39,7.656]],["t/879",[0,3.717,40,9.051]],["t/881",[7,2.827,8,3.835,9,2.375,10,2.955,11,2.955,12,3.996,13,2.955,14,0.591,19,3.268,25,4.569,30,3.395,31,3.518,32,2.77,41,3.662,42,4.782,43,5.2,44,3.835,45,6.046]],["t/883",[2,1.815,12,3.668,14,0.592,16,2.846,19,3.454,24,3.531,25,5.227,26,4.483,43,5.028,45,5.076,46,5.291,47,7.206]],["t/886",[14,0.555,48,8.582,49,7.272]],["t/888",[14,0.539]],["t/890",[0,3.717,14,0.469]],["t/892",[14,0.533,50,6.808]],["t/894",[49,7.532,51,5.772,52,8.889]],["t/896",[14,0.597,33,2.07,53,9.595,54,4.872,55,4.042,56,4.042,57,6.074,58,2.559,59,6.074,60,6.074,61,6.074,62,4.054,63,5.369,64,6.074,65,4.042,66,4.042]],["t/899",[14,0.598,67,5.589,68,5.589,69,5.589,70,5.589,71,5.589,72,5.589,73,5.589,74,5.589,75,5.589,76,5.589,77,5.589,78,5.589,79,5.589,80,5.589,81,5.589,82,5.589]],["t/901",[9,2.873,10,3.574,11,3.574,14,0.594,15,3.976,83,5.252,84,5.252,85,3.494,86,4.901,87,4.639,88,3.166,89,3.86,90,3.86,91,4.639,92,4.901,93,5.784,94,5.784]],["t/903",[9,3.481,10,4.331,11,4.331,95,7.008,96,7.008,97,7.008,98,7.008,99,7.008,100,7.008,101,7.008,102,7.008,103,7.008,104,5.621,105,7.008,106,7.008,107,7.008,108,7.008,109,7.008]],["t/905",[2,2.076,12,3.44,14,0.559,25,1.711,43,3.578,45,4.161,110,6.422,111,3.013,112,3.013,113,3.013,114,3.013,115,3.013,116,3.013,117,2.217,118,3.013,119,3.013,120,3.013,121,3.013,122,3.013,123,2.416,124,3.013,125,5.554,126,5.096,127,4.833,128,2.735,129,3.013,130,2.735,131,3.013,132,3.013,133,3.013,134,3.013,135,3.013,136,2.416,137,2.735,138,2.735,139,6.037,140,3.013,141,3.013,142,3.013,143,3.013,144,3.013,145,3.013,146,1.907,147,3.013,148,2.735,149,3.013,150,2.735,151,2.553,152,2.217,153,3.013,154,3.013,155,3.013,156,3.013,157,3.013,158,3.013,159,3.013]],["t/908",[12,3.803,14,0.488,160,5.11,161,6.951,162,5.263,163,6.951,164,7.656,165,5.864,166,7.656,167,6.951,168,7.656]],["t/910",[12,3.031,14,0.585,25,2.772,32,1.767,33,1.562,160,5.091,161,5.54,162,2.097,169,4.673,170,3.05,171,3.05,172,3.05,173,3.05,174,3.05,175,3.05,176,3.05,177,2.336,178,3.05,179,3.05,180,3.05,181,3.05,182,3.05,183,3.05,184,3.355,185,5.909,186,2.769,187,2.035,188,2.584,189,2.446,190,2.769,191,2.584,192,2.584,193,2.769,194,6.464,195,2.584,196,2.584,197,4.673,198,4.135,199,2.584,200,1.64,201,2.584,202,2.584,203,2.584,204,2.769,205,2.769,206,2.769,207,2.584,208,2.584,209,2.584,210,2.244,211,2.769,212,2.336]],["t/912",[14,0.385,139,5.273,184,5.106,197,5.688,213,7.427,214,7.427,215,4.701,216,8.063,217,7.427,218,7.427,219,7.427,220,7.427]],["t/915",[12,4.768,14,0.526,25,3.819,43,3.975,165,5.149,167,7.874,221,6.816,222,6.723,223,4.774,224,3.68,225,6.723,226,6.723,227,6.723]],["t/917",[12,4.799,14,0.559,139,4.839,221,4.839,228,8.748,229,3.604,230,6.815,231,6.815,232,6.815,233,6.815,234,6.815,235,6.815]],["t/919",[12,4.424,14,0.572,19,2.847,146,4.436,221,6.323,236,7.008,237,7.008,238,7.008,239,7.008,240,7.008]],["t/921",[14,0.461,241,8.889,242,8.889]],["t/923",[2,1.64,14,0.57,33,2.449,34,6.24,91,3.835,229,2.529,243,4.782,244,4.782,245,4.782,246,4.782,247,4.782,248,3.518,249,2.159,250,4.782,251,4.782,252,6.872,253,4.782,254,4.782,255,4.782,256,4.782,257,4.782,258,4.782,259,4.782,260,4.782,261,4.782,262,8.795,263,4.782,264,4.782,265,4.782,266,4.782,267,4.782,268,4.782,269,4.782]],["t/925",[7,1.148,14,0.603,86,1.645,200,2.828,270,1.941,271,1.941,272,1.941,273,1.941,274,1.941,275,1.645,276,1.941,277,1.941,278,1.487,279,1.941,280,1.941,281,1.941,282,1.941,283,1.941,284,1.941,285,1.941,286,1.941,287,1.941,288,1.763,289,1.941,290,1.941,291,1.645,292,1.941,293,1.941,294,1.941,295,1.941,296,1.941,297,0.888,298,1.941,299,1.941,300,1.941,301,1.941,302,1.941,303,1.645,304,1.941,305,1.941,306,1.941,307,1.763,308,1.941,309,1.941,310,1.941,311,1.763,312,1.941,313,1.941,314,1.941,315,1.941,316,1.763,317,1.941,318,0.937,319,3.35,320,1.941,321,1.941,322,1.941,323,1.763,324,1.941,325,1.941,326,1.941,327,1.941,328,1.941,329,1.941,330,1.941,331,1.941,332,1.941,333,1.941,334,1.941,335,1.941,336,1.941,337,1.941,338,1.941,339,1.941,340,1.941,341,1.941,342,1.941,343,1.941,344,1.941,345,1.941,346,1.941,347,1.941,348,1.941,349,1.941,350,1.941,351,1.941,352,1.941,353,1.941,354,1.763,355,1.941,356,1.941,357,1.941,358,1.941,359,1.941]],["t/927",[2,0.879,7,2.504,9,1.273,10,1.583,11,1.583,12,2.69,13,1.583,14,0.592,16,1.378,19,1.72,22,2.171,24,1.71,26,2.171,30,3.007,31,1.885,32,1.484,43,3.201,85,4.796,162,1.761,187,4.198,200,2.912,360,2.562,361,2.562,362,2.562,363,2.562,364,2.562,365,7.209,366,2.562,367,2.562,368,2.562,369,2.562,370,1.962,371,2.562,372,2.326,373,5.414,374,4.916,375,2.326,376,2.326,377,4.916,378,2.326,379,2.562,380,2.562,381,2.562,382,4.235,383,2.326,384,2.171,385,2.562,386,2.562,387,2.562,388,2.562,389,2.562,390,2.171,391,1.962,392,2.562,393,2.562,394,2.562,395,2.562]],["t/929",[14,0.583,43,3.235,89,4.475,162,2.424,200,2.943,365,6.862,374,6.862,375,3.201,376,3.201,377,4.968,378,3.201,383,3.201,396,3.526,397,5.472,398,3.526,399,2.828,400,3.526,401,3.526,402,3.526,403,3.526,404,3.526,405,3.526,406,3.526,407,2.988,408,3.526,409,2.701,410,2.701,411,5.472,412,2.828,413,2.828,414,2.828,415,3.526,416,3.526,417,3.526,418,3.526,419,6.705,420,3.526,421,3.526,422,3.526,423,3.526,424,3.526,425,3.526,426,3.526,427,3.526,428,3.526]],["t/931",[14,0.584,15,7.086,16,1.832,33,3.798,165,2.608,291,2.885,307,3.092,316,3.092,429,3.405,430,3.405,431,3.405,432,3.405,433,3.405,434,3.405,435,3.405,436,3.405,437,3.405,438,3.405,439,3.405,440,3.405,441,3.405,442,3.405,443,3.405,444,3.405,445,3.405,446,3.405,447,3.405,448,3.092,449,3.405,450,3.405,451,3.405,452,2.885,453,3.405,454,3.405,455,3.405,456,3.405,457,3.405,458,3.405,459,3.405,460,3.405,461,5.325,462,3.092,463,2.273,464,3.405,465,3.405,466,3.405]],["t/933",[14,0.479,17,5.957,146,4.701,163,6.743,467,7.427,468,7.427,469,6.293,470,7.427,471,7.427,472,7.427,473,7.427,474,7.427,475,7.427]],["t/935",[12,3.235,14,0.593,88,4.951,399,3.561,476,4.44,477,5.518,478,4.44,479,4.44,480,4.44,481,6.512,482,6.512,483,5.223,484,4.44,485,4.44,486,4.44,487,4.44,488,4.44,489,4.44,490,4.44,491,4.44,492,4.44,493,4.44,494,4.44,495,4.44,496,4.44]],["t/937",[14,0.576,16,3.475,24,4.312,87,7.553,210,4.754,370,4.948,497,6.461,498,6.461,499,5.866,500,6.461,501,5.475,502,6.461,503,5.866,504,5.866]],["t/939",[14,0.586,91,7.413,505,6.218,506,6.218,507,4.987,508,4.275,509,6.218,510,6.218,511,6.218,512,4.987,513,6.218,514,6.218,515,6.218,516,6.218]],["t/941",[14,0.602,16,2.267,22,3.571,24,2.812,90,4.992,210,3.101,370,3.227,372,3.826,384,3.571,501,3.571,517,4.214,518,3.571,519,4.214,520,4.214,521,4.214,522,4.214,523,4.214,524,4.214,525,4.214,526,3.826,527,4.214,528,4.214,529,4.214,530,4.214,531,4.214,532,3.826,533,4.214]],["t/943",[16,4.388,90,5.445,501,6.913,534,8.159,535,7.408,536,7.408,537,8.159,538,8.159]],["t/945",[2,2.659,12,1.083,14,0.598,16,1.172,19,1.957,92,3.135,126,1.604,128,1.979,136,1.748,139,1.548,148,4.375,200,1.99,539,2.18,540,6.359,541,3.699,542,2.18,543,6.359,544,9.61,545,2.18,546,2.18,547,1.604,548,2.18,549,2.18,550,3.05,551,2.18,552,2.18,553,4.819,554,2.18,555,2.18,556,2.18,557,2.18,558,6.911,559,2.18,560,2.18,561,2.18,562,2.18,563,2.18,564,2.18,565,2.18,566,2.18,567,2.18,568,2.18,569,2.18,570,2.18,571,2.18,572,2.18,573,2.18,574,2.18,575,2.18,576,3.359]],["t/948",[2,1.747,7,1.902,9,0.646,10,0.804,11,0.804,12,3.14,13,0.804,14,0.586,17,1.043,19,2.567,30,4.715,31,2.367,32,2.642,54,2.58,85,0.786,90,0.868,110,0.845,117,2.901,152,1.73,160,1.569,165,0.996,184,1.616,185,3.341,187,3.708,188,1.102,189,3.163,191,1.102,192,1.102,194,3.864,195,1.102,196,1.102,197,3.02,198,2.726,199,1.102,200,0.7,201,1.102,202,1.102,203,1.102,207,1.102,208,3.341,209,3.864,210,1.73,211,1.181,212,3.02,224,1.761,229,1.701,249,1.061,390,1.102,518,1.992,550,1.488,577,1.181,578,1.301,579,1.181,580,1.181,581,2.135,582,1.181,583,1.102,584,3.217,585,2.351,586,1.992,587,3.943,588,2.351,589,2.351,590,2.351,591,1.301,592,1.301,593,1.301,594,2.351,595,2.351,596,2.351,597,2.351,598,2.351,599,1.301,600,2.351,601,1.301,602,3.58,603,2.351,604,1.301,605,1.181,606,1.301,607,1.181,608,1.301,609,2.351,610,1.301,611,2.351,612,3.238,613,2.351,614,1.616,615,2.351,616,1.301,617,1.301,618,1.301,619,1.301,620,1.301,621,1.301,622,3.217,623,1.301,624,1.301,625,2.351,626,1.301,627,1.301,628,1.301,629,1.301,630,1.301,631,2.351]],["t/950",[2,1.097,7,2.998,9,0.914,10,1.137,11,1.137,12,4.011,13,1.137,14,0.571,19,0.748,32,4.35,83,1.671,85,1.112,91,1.476,110,1.195,117,2.354,160,2.135,184,2.199,185,4.296,186,1.671,187,2.135,188,1.56,189,1.476,190,1.671,191,1.56,192,1.56,193,1.671,194,4.865,195,1.56,196,1.56,197,4.823,198,3.595,199,1.56,200,2.282,201,1.56,202,1.56,203,1.56,204,1.671,205,1.671,206,1.671,207,1.56,208,1.56,209,2.711,210,2.354,212,2.45,224,2.322,390,1.56,507,1.476,508,1.265,512,1.476,577,1.671,579,1.671,580,1.671,581,2.905,582,1.671,586,1.56,632,1.841,633,1.841,634,3.199,635,3.199,636,1.841,637,1.841,638,1.354,639,2.905,640,1.841,641,1.841,642,1.841,643,1.841,644,1.841,645,1.841,646,1.841,647,1.841,648,1.841,649,1.841,650,1.841,651,1.841,652,1.841,653,1.841,654,1.841,655,1.841,656,1.841,657,1.841,658,1.841,659,1.841,660,1.841,661,1.841,662,1.841,663,1.841,664,1.841,665,1.841,666,1.476,667,1.841,668,1.841,669,1.56,670,1.841,671,1.841,672,1.841,673,1.841,674,1.841,675,1.841,676,1.841,677,1.841,678,1.841,679,1.841,680,1.841,681,1.841,682,1.841,683,1.841,684,1.841,685,1.841,686,1.841,687,1.841,688,1.841,689,3.199,690,1.841]],["t/952",[2,1.375,12,3.787,13,0.672,14,0.574,19,1.834,32,3.104,33,1.023,54,1.601,58,2.537,62,0.726,63,2.525,110,4.109,146,3.617,160,2.291,165,2.629,184,3.103,197,0.833,200,1.074,210,0.8,212,0.833,215,1.264,223,0.772,224,1.879,249,0.491,463,0.726,508,2.36,586,2.346,614,0.747,638,1.469,691,1.087,692,1.087,693,1.087,694,1.601,695,2.769,696,3.116,697,1.087,698,1.087,699,2.769,700,1.087,701,3.432,702,1.997,703,1.087,704,1.087,705,1.087,706,1.087,707,0.921,708,1.087,709,1.087,710,1.997,711,4.961,712,1.997,713,0.872,714,2.277,715,1.997,716,1.087,717,1.087,718,1.997,719,1.087,720,1.087,721,1.087,722,1.997,723,1.087,724,1.087,725,6.591,726,2.769,727,2.769,728,4.514,729,1.087,730,1.087,731,1.087,732,1.087,733,1.087,734,1.087,735,1.087,736,1.087,737,1.087,738,1.087,739,1.087,740,1.087,741,1.087,742,1.087,743,1.813,744,1.997,745,2.769,746,2.769,747,1.997,748,1.087,749,2.769,750,1.529,751,1.087,752,1.997,753,1.087,754,1.087,755,1.087,756,1.087,757,1.087,758,1.087,759,2.769,760,1.087,761,1.997,762,1.469,763,1.087,764,1.087,765,1.087,766,1.997,767,1.087,768,1.087,769,1.087,770,1.087,771,1.087,772,1.087,773,1.087,774,1.087,775,1.087,776,0.987,777,1.087,778,1.087,779,1.087,780,1.087,781,1.087,782,1.087,783,1.087,784,1.087,785,1.997,786,1.087,787,1.087,788,1.087,789,1.087,790,1.087,791,1.087,792,1.087,793,1.087,794,1.087,795,1.087,796,1.087,797,1.087,798,1.087,799,1.087,800,1.087,801,1.087,802,0.921,803,1.087,804,1.997,805,1.087,806,1.087,807,1.997,808,1.997,809,1.087,810,1.087,811,1.087,812,1.087,813,1.087,814,1.087,815,1.087,816,1.087,817,1.087,818,1.087,819,1.087]],["t/955",[2,1.604,9,0.815,10,1.014,11,1.014,12,4.398,13,1.014,14,0.588,19,1.899,32,4.301,104,1.315,110,1.065,117,3.441,123,1.315,125,1.315,126,2.128,139,1.164,160,1.095,162,1.128,184,1.128,187,1.095,200,0.882,216,1.315,507,1.315,508,1.128,512,1.315,583,1.39,638,3.441,666,3.111,669,1.39,762,1.207,820,1.39,821,1.39,822,1.489,823,1.489,824,1.489,825,1.39,826,1.489,827,2.626,828,2.626,829,2.626,830,2.626,831,2.892,832,2.892,833,1.64,834,5.73,835,2.626,836,1.489,837,2.626,838,2.626,839,2.45,840,2.45,841,2.626,842,1.489,843,1.489,844,1.489,845,1.489,846,1.489,847,1.489,848,1.489,849,1.489,850,1.489,851,4.246,852,1.489,853,1.489,854,1.489,855,1.489,856,1.489,857,1.489,858,1.489,859,1.489,860,1.489,861,1.489,862,1.489,863,1.489,864,1.489,865,3.521,866,3.521,867,1.489,868,1.489,869,1.489,870,1.489,871,1.489,872,1.39,873,1.39,874,1.39,875,1.489,876,1.489,877,1.489,878,1.489,879,1.489,880,1.489,881,2.45,882,1.489,883,1.489,884,1.489,885,3.286,886,1.39,887,1.489]],["t/957",[2,1.899,9,1.042,10,1.296,11,1.296,12,4.725,13,1.296,14,0.537,19,2.249,32,4.772,104,1.682,110,1.362,117,4.073,123,1.682,125,1.682,126,2.634,139,1.489,160,1.4,162,1.442,184,1.442,187,1.4,200,1.128,216,1.682,507,1.682,508,1.442,512,1.682,583,1.777,638,4.073,666,3.756,669,1.777,762,1.543,820,1.777,821,1.777,822,1.904,823,1.904,824,1.904,825,1.777,826,1.904,827,3.25,828,3.25,829,3.25,830,3.25,834,6.126,835,3.25,836,1.904,837,3.25,838,3.25,839,3.033,840,3.033,841,3.25,842,1.904,843,1.904,844,1.904,845,1.904,846,1.904,847,1.904,848,1.904,849,1.904,850,1.904,851,5.026,852,1.904,853,1.904,854,1.904,855,1.904,856,1.904,857,1.904,858,1.904,859,1.904,860,1.904,861,1.904,862,1.904,863,1.904,864,1.904,865,4.252,866,4.252,867,1.904,868,1.904,869,1.904,870,1.904,871,1.904,872,1.777,873,1.777,874,1.777,875,1.904,876,1.904,877,1.904,878,1.904,879,1.904,880,1.904,881,3.033,882,1.904,883,1.904,884,1.904,886,1.777,887,1.904]],["t/959",[2,2.192,9,1.625,10,2.021,11,2.021,12,4.764,13,2.021,14,0.485,19,1.328,32,4.202,104,2.623,110,4.711,117,3.796,123,2.623,125,2.623,126,3.796,137,2.97,138,2.97,139,2.322,150,2.97,160,2.183,184,2.248,200,1.759,216,2.623,547,3.796,638,2.407,666,4.138,820,2.771,821,2.771,825,2.771,834,4.372,839,2.771,840,2.771,872,2.771,873,2.771,874,2.771,881,2.771,886,2.771,888,3.271,889,3.271,890,3.271,891,3.271,892,3.271,893,3.271,894,3.271,895,3.271,896,3.271,897,3.271,898,3.271,899,3.271,900,3.271,901,2.771,902,3.271,903,3.271,904,3.271,905,3.271,906,3.271,907,3.271,908,3.271,909,3.271,910,3.271,911,3.271,912,3.271,913,3.271,914,3.271,915,3.271,916,3.271,917,3.271,918,3.271,919,3.271]],["t/961",[0,3.144,14,0.528,19,4.318,920,7.656,921,7.656,922,7.656,923,7.656]],["t/963",[2,2.353,7,2.161,8,2.932,9,1.816,10,2.259,11,2.259,12,4.132,13,2.259,14,0.591,19,3.568,32,2.117,58,4.342,187,2.44,224,3.755,248,5.668,605,5.109,743,5.109,802,4.768,924,3.656,925,3.656,926,3.656,927,3.656,928,6.86,929,6.528,930,3.656]],["t/965",[14,0.416,19,3.26,931,8.027,932,8.027,933,8.027,934,8.027,935,8.027,936,8.027,937,8.027]],["t/969",[14,0.557,938,6.723,939,6.104,940,6.723,941,7.201,942,6.723,943,6.723,944,6.723,945,6.723,946,6.104,947,6.723,948,4.774,949,6.104]],["t/971",[941,6.2,950,8.732,951,8.732,952,8.732]],["t/973",[14,0.528,941,5.436,946,6.951,948,5.436,949,6.951,953,7.656,954,6.951,955,7.656,956,7.656,957,7.656]],["t/975",[14,0.539]],["t/977",[14,0.545,16,3.995,941,6.558,958,5.688,959,7.826,960,9.236,961,7.427,962,6.743]],["t/979",[9,2.208,14,0.569,19,0.795,20,1.777,33,2.707,87,1.569,223,1.389,297,0.895,399,1.569,469,1.658,696,1.777,939,1.777,941,4.628,948,1.389,954,1.777,958,2.583,959,4.479,963,3.062,964,1.957,965,1.957,966,1.957,967,3.373,968,1.957,969,1.777,970,1.957,971,1.957,972,1.957,973,3.373,974,5.286,975,1.957,976,1.957,977,3.373,978,4.799,979,5.286,980,3.373,981,1.957,982,1.957,983,1.389,984,1.957,985,1.957,986,3.373,987,3.373,988,1.957,989,1.957,990,3.373,991,1.957,992,3.062,993,1.658,994,1.957,995,1.957,996,1.658,997,1.957,998,1.957,999,1.957,1000,1.957,1001,1.957,1002,1.569,1003,1.777,1004,1.957,1005,1.957,1006,1.957,1007,1.957,1008,1.957,1009,1.957,1010,1.957,1011,1.44,1012,1.957,1013,3.373,1014,3.373,1015,3.373,1016,1.957,1017,1.957,1018,1.957,1019,1.777,1020,1.569,1021,1.569,1022,1.777,1023,1.777,1024,1.777,1025,1.777,1026,1.777,1027,3.062,1028,1.777,1029,1.777,1030,1.777,1031,1.499,1032,1.777,1033,3.062,1034,1.777,1035,3.062,1036,1.777,1037,1.777,1038,3.062,1039,1.777,1040,1.777,1041,1.777,1042,1.777,1043,1.777,1044,4.036,1045,1.777,1046,1.777,1047,1.777,1048,1.777,1049,4.036,1050,1.777,1051,1.569,1052,1.777,1053,1.306,1054,1.658,1055,1.658,1056,1.777,1057,1.957]],["t/981",[49,5.404,51,4.142,84,5.791,85,3.853,88,3.491,90,4.257,92,5.404,462,5.791,535,5.791,607,8.497,1058,5.404,1059,6.378,1060,6.378,1061,6.378,1062,6.378,1063,6.721,1064,6.378,1065,6.378,1066,5.791,1067,5.791,1068,5.791,1069,6.378]],["t/983",[14,0.591,30,5.403,85,4.597,187,5.079,224,3.025,407,4.683,409,4.233,410,4.233,412,4.433,413,4.433,414,4.433,1070,5.526,1071,5.526,1072,5.526,1073,5.018,1074,5.526,1075,5.526,1076,5.526]],["t/985",[14,0.578,130,7.06,1077,7.776,1078,7.776,1079,7.776,1080,7.776]],["t/987",[14,0.589,15,5.962,30,4.774,31,4.947,409,5.149,410,5.149,412,5.392,1081,6.723,1082,5.392,1083,6.723]],["t/989",[14,0.584,409,5.605,410,5.605,413,5.869,414,5.869,1084,7.317,1085,7.317,1086,7.317]],["t/991",[2,2.371,14,0.578,43,4.086,249,3.12,508,4.751,1087,6.91,1088,6.91,1089,6.91,1090,6.91,1091,6.91,1092,6.91,1093,6.91]],["t/993",[16,4.462,24,5.536,370,6.353,499,7.532,503,7.532,504,7.532,1094,8.295]],["t/995",[407,6.913,409,6.249,410,6.249,412,6.544,413,6.544,414,6.544,1073,7.408,1095,8.159]],["t/997",[14,0.581,16,3.185,24,3.952,43,4.716,90,3.952,248,4.357,249,2.674,370,4.536,384,5.018,518,5.018,526,5.377,532,5.377,536,5.377,1096,5.922,1097,5.922,1098,5.922,1099,5.922,1100,5.922,1101,5.922]],["t/999",[7,4.264,14,0.514,88,3.947,229,3.814,1066,6.548,1067,6.548,1068,6.548,1102,5.12,1103,7.211,1104,7.211,1105,7.211,1106,7.211,1107,7.211,1108,7.211]],["t/1001",[2,2.758,14,0.594,16,3.224,19,3.266,275,5.078,1031,4.59,1109,5.993,1110,4.41,1111,5.993,1112,5.993,1113,5.993,1114,5.993,1115,5.993]],["t/1005",[14,0.593]],["t/1007",[14,0.576]],["t/1009",[14,0.478]],["t/1012",[16,4.182,1116,8.627,1117,7.776,1118,6.589,1119,7.776,1120,6.589,1121,7.06,1122,7.06,1123,7.776,1124,7.776]],["t/1014",[16,4.318,1118,6.802,1120,6.802,1125,8.027,1126,7.288,1127,7.769,1128,8.027,1129,8.027]],["t/1016",[2,2.216,14,0.488,19,2.624,1116,5.866,1118,5.475,1120,5.475,1121,5.866,1122,7.673,1126,5.866,1127,5.182,1130,6.461,1131,5.182,1132,6.461,1133,8.451,1134,6.461,1135,3.993,1136,6.461,1137,6.461,1138,6.461,1139,6.461]],["t/1018",[14,0.478]],["t/1022",[0,3.892,2,2.246,14,0.553,1140,9.115,1141,6.546,1142,6.546,1143,6.546,1144,6.546,1145,6.546,1146,6.546,1147,6.546,1148,6.546,1149,6.546]],["t/1026",[14,0.533,1150,8.889]],["t/1029",[0,3.351,14,0.507,1151,9.512,1152,8.159,1153,8.159]],["t/1031",[0,3.717,1154,9.051]],["t/1034",[0,3.717,14,0.469]],["t/1036",[1155,8.809]],["t/1038",[14,0.589,1156,9.686]],["t/1041",[0,3.586,14,0.559]],["t/1043",[14,0.559,1157,7.929]],["t/1046",[14,0.576]],["t/1048",[14,0.565,550,3.936,1140,8.934,1158,6.218,1159,6.218,1160,5.646,1161,6.218,1162,6.218,1163,5.646,1164,6.218,1165,6.218,1166,5.646,1167,6.218,1168,6.218,1169,6.218,1170,6.218,1171,6.218]],["t/1051",[14,0.589]],["t/1053",[0,3.097,14,0.563,1160,8.465,1163,8.465,1166,6.846,1172,7.54,1173,7.54]],["t/1055",[14,0.578,16,4.462,391,6.353]],["t/1057",[14,0.576,16,5.261,391,6.249]],["t/1059",[14,0.576]],["t/1061",[19,3.676,1174,9.051]],["t/1063",[7,4.591,9,0.831,12,1.462,13,1.034,14,0.579,23,1.519,33,2.767,53,2.672,62,1.117,160,1.964,200,2.551,215,1.059,275,1.418,291,1.418,477,1.418,638,2.899,639,1.519,941,2.09,958,1.282,963,2.672,1055,3.338,1131,1.342,1175,1.673,1176,1.673,1177,2.943,1178,2.943,1179,2.943,1180,2.943,1181,6.832,1182,2.943,1183,2.943,1184,2.943,1185,2.943,1186,2.943,1187,4.743,1188,2.943,1189,2.943,1190,2.943,1191,2.943,1192,2.943,1193,2.943,1194,2.943,1195,2.943,1196,2.943,1197,5.958,1198,2.943,1199,1.911,1200,2.943,1201,2.943,1202,3.94,1203,1.673,1204,1.673,1205,1.673,1206,1.673,1207,1.673,1208,1.673,1209,1.673,1210,1.673,1211,1.673,1212,1.673,1213,1.673,1214,1.673,1215,1.673,1216,1.673,1217,1.673,1218,1.673,1219,1.673,1220,1.673,1221,1.673,1222,1.673,1223,1.673,1224,1.673,1225,1.673,1226,1.673,1227,1.673,1228,1.673,1229,1.673,1230,1.673,1231,1.673,1232,1.673,1233,1.673,1234,1.282,1235,1.673,1236,1.673,1237,1.673,1238,1.673,1239,1.342,1240,1.673,1241,1.673,1242,1.673,1243,1.673,1244,1.673,1245,1.673,1246,1.673,1247,1.673,1248,1.673,1249,1.673,1250,1.673,1251,1.673,1252,1.673,1253,2.943,1254,1.673,1255,1.673,1256,1.673,1257,1.673,1258,1.673,1259,1.519,1260,1.673,1261,1.673,1262,1.519,1263,1.673]],["t/1065",[9,1.871,14,0.555,33,1.929,469,3.192,614,2.589,941,2.674,948,4.088,958,2.885,959,6.63,992,3.42,1019,3.42,1020,3.021,1021,3.021,1022,3.42,1023,3.42,1024,3.42,1025,3.42,1026,3.42,1027,5.227,1028,3.42,1029,3.42,1030,3.42,1031,2.885,1032,3.42,1033,5.227,1034,3.42,1035,5.227,1036,3.42,1037,3.42,1038,5.227,1039,3.42,1040,3.42,1041,3.42,1042,3.42,1043,3.42,1044,6.345,1045,3.42,1046,3.42,1047,3.42,1048,3.42,1049,6.345,1050,3.42,1051,3.021,1052,3.42,1053,2.514,1054,3.192,1055,3.192,1056,3.42,1264,3.767,1265,3.192,1266,3.767,1267,3.767]],["t/1067",[0,3.717,14,0.469]],["t/1069",[14,0.533,50,6.808]],["t/1071",[14,0.453,1268,8.732,1269,6.688,1270,8.732]],["t/1074",[1135,5.593,1271,9.051]],["t/1076",[14,0.478]],["t/1078",[14,0.604,1272,6.38]],["t/1080",[14,0.416,297,3.671,1135,4.961,1269,6.148,1272,5.699,1273,7.288,1274,8.027,1275,5.357,1276,6.802]],["t/1082",[14,0.525,297,4.968,1277,4.896,1278,9.323,1279,7.54,1280,5.353]],["t/1084",[14,0.555,1276,7.272,1277,5.573]],["t/1086",[14,0.555,1281,6.633,1282,6.633,1283,6.633,1284,6.633,1285,6.633,1286,6.633,1287,8.597,1288,6.633,1289,6.633,1290,6.633,1291,6.633,1292,6.633,1293,6.633,1294,6.633,1295,6.633]],["t/1088",[0,3.651,1296,8.889,1297,3.822]],["t/1090",[14,0.413,311,5.377,1239,4.75,1297,2.546,1298,7.976,1299,5.922,1300,5.922,1301,4.75,1302,4.75,1303,5.377,1304,5.377,1305,3.66,1306,5.922,1307,5.922,1308,5.922,1309,5.018,1310,5.018,1311,3.033,1312,5.018,1313,5.922,1314,5.922,1315,5.922,1316,5.922,1317,5.922,1318,5.922,1319,2.986,1320,4.75,1321,5.922,1322,5.922]],["t/1092",[14,0.374,1301,5.784,1302,5.784,1323,7.211,1324,7.211,1325,7.211,1326,7.211,1327,7.211,1328,7.211,1329,7.211,1330,7.211,1331,7.211,1332,7.211,1333,7.211,1334,7.211,1335,7.211]],["t/1094",[14,0.379,1336,4.326,1337,7.317,1338,7.317,1339,7.317,1340,7.317,1341,7.317,1342,7.317,1343,6.2,1344,7.317,1345,7.317,1346,7.317,1347,7.317,1348,7.317,1349,7.317]],["t/1096",[0,2.761,1350,6.723,1351,6.104,1352,6.723,1353,8.672,1354,6.723,1355,6.723,1356,6.723,1357,6.104,1358,6.723,1359,5.697,1360,6.723,1361,6.723,1362,6.723,1363,6.723,1364,6.723,1365,6.723,1366,6.723,1367,6.723,1368,6.723]],["t/1099",[14,0.566,1369,9.411,1370,7.656,1371,7.656,1372,7.656,1373,7.656,1374,7.656]],["t/1101",[14,0.568,43,4.954,45,5.761,1375,6.378,1376,6.378,1377,6.378,1378,6.378,1379,6.378,1380,6.378,1381,6.378,1382,6.378,1383,6.378,1384,6.378,1385,6.378,1386,6.378,1387,6.378]],["t/1103",[1388,7.659,1389,8.436,1390,8.436,1391,8.436,1392,8.436,1393,8.436]],["t/1107",[14,0.581,51,3.047,1280,3.331,1394,4.691,1395,4.691,1396,4.691,1397,7.959,1398,4.691,1399,4.691,1400,4.691,1401,4.691,1402,4.691,1403,6.778,1404,4.691,1405,4.691,1406,4.691,1407,4.691,1408,4.691,1409,4.691,1410,4.691,1411,4.691,1412,4.691,1413,4.691,1414,4.691,1415,4.691,1416,4.691,1417,4.691,1418,4.691,1419,4.691,1420,4.691,1421,4.691,1422,4.691,1423,4.691]],["t/1110",[14,0.593]],["t/1112",[14,0.533,1424,8.889]],["t/1114",[14,0.533,1425,8.889]],["t/1117",[0,3.05,14,0.603]],["t/1119",[14,0.594,391,4.885,1426,7.1,1427,6.378,1428,8.379,1429,6.378,1430,6.378,1431,5.404,1432,6.378,1433,6.378]],["t/1121",[2,3.784,14,0.596,51,3.473,249,4.542]],["t/1123",[14,0.539]],["t/1125",[0,2.295,14,0.512,1434,7.668,1435,4.736,1436,5.589,1437,5.589,1438,5.589,1439,5.589,1440,5.589,1441,5.074,1442,5.589,1443,5.589,1444,5.589,1445,5.589,1446,5.589,1447,5.589,1448,5.589,1449,5.589,1450,5.589,1451,5.589,1452,5.589,1453,5.589,1454,5.589,1455,5.589,1456,5.589,1457,5.074,1458,5.074,1459,5.589,1460,4.736,1461,5.589,1462,5.589]],["t/1127",[14,0.52,1441,5.944,1457,5.944,1458,5.944,1460,5.547,1463,6.546,1464,6.546,1465,6.546,1466,6.546,1467,6.546,1468,6.546,1469,6.546,1470,6.546,1471,6.546,1472,6.546,1473,6.546,1474,6.546,1475,6.546,1476,6.546,1477,6.546]],["t/1129",[14,0.565,1460,7.614,1478,7.108,1479,7.108,1480,7.108,1481,7.108,1482,7.108,1483,7.108,1484,7.108,1485,7.108,1486,7.108]],["t/1132",[224,5.046]],["t/1136",[14,0.604]],["t/1138",[14,0.559,1487,8.732]],["t/1141",[14,0.517,1488,8.436,1489,8.436,1490,8.436,1491,8.436]],["t/1143",[14,0.589]],["t/1145",[14,0.599,1492,6.633,1493,6.633,1494,6.633,1495,6.023,1496,6.633,1497,5.621,1498,6.023]],["t/1147",[14,0.61,224,3.203,1495,7.184]],["t/1149",[14,0.557,318,3.812,1499,6.336,1500,7.172,1501,7.172,1502,5.812,1503,7.172]],["t/1151",[1504,8.37]],["t/1154",[318,4.214,1336,5.163,1505,7.929,1506,7.929]],["t/1156",[1507,6.363,1508,6.363,1509,6.363,1510,6.363,1511,6.363,1512,6.363,1513,6.363,1514,6.363,1515,6.363,1516,6.363,1517,6.363,1518,6.363,1519,6.363,1520,6.363,1521,4.551,1522,4.677,1523,6.363,1524,6.363]],["t/1158",[1525,6.589,1526,7.06,1527,7.06,1528,5.521,1529,4.805,1530,7.06,1531,7.06,1532,7.06,1533,7.06,1534,7.06,1535,7.06]],["t/1160",[1536,7.659,1537,7.659,1538,7.659,1539,7.659,1540,7.659,1541,7.659]],["t/1162",[0,1.983,14,0.419,47,4.091,248,3.553,929,4.091,1528,6.272,1529,5.779,1542,4.384,1543,4.384,1544,4.384,1545,3.223,1546,4.384,1547,4.384,1548,2.984,1549,4.384,1550,4.384,1551,4.091,1552,4.384,1553,2.984,1554,5.561,1555,4.427,1556,4.384,1557,4.384,1558,6.283,1559,4.384,1560,4.384,1561,4.384,1562,4.384,1563,4.384,1564,4.384,1565,4.384,1566,4.384,1567,3.223,1568,4.384,1569,4.384,1570,4.384]],["t/1166",[14,0.594,318,4.441,1311,5.269,1571,6.513,1572,4.804,1573,3.893,1574,3.893]],["t/1168",[1575,7.532,1576,7.532,1577,6.653,1578,7.532,1579,7.532,1580,7.532,1581,7.532]],["t/1170",[2,2.031,14,0.522,19,3.24,151,5.018,1110,4.357,1553,3.66,1555,3.241,1577,4.75,1582,5.377,1583,5.377,1584,5.377,1585,5.377,1586,5.377,1587,5.377,1588,5.377,1589,5.377,1590,5.377,1591,5.377,1592,5.377,1593,4.071,1594,5.377,1595,3.952,1596,5.377,1597,5.377,1598,5.377,1599,5.377]],["t/1173",[1600,9.219]],["t/1175",[318,3.938,1297,3.508,1312,6.913,1601,8.159,1602,8.159,1603,8.159,1604,8.159,1605,5.298]],["t/1177",[1606,9.219]],["t/1179",[51,5.213,1303,7.288,1304,7.288,1305,4.961,1336,4.746,1607,8.027,1608,8.027,1609,8.027,1610,8.027]],["t/1181",[1319,4.482,1611,6.808,1612,8.889]],["t/1183",[14,0.392,63,5.559,297,1.96,602,3.892,1275,2.861,1297,2.728,1311,3.25,1319,3.2,1571,2.713,1611,4.86,1613,4.287,1614,5.161,1615,4.287,1616,2.306,1617,4.287,1618,4.287,1619,5.09,1620,4.287,1621,4.287,1622,4.287,1623,4.287,1624,4.287,1625,4.287,1626,4.287,1627,4.287,1628,4.287,1629,4.287,1630,4.211,1631,8.094,1632,5.09,1633,2.649,1634,6.402,1635,3.632,1636,3.283,1637,3.283,1638,3.632,1639,4.287,1640,4.287,1641,1.96,1642,4.287,1643,3.154,1644,3.892]],["t/1185",[901,5.14,1593,5.573,1595,5.41,1641,2.774,1643,4.464,1645,6.066,1646,6.066,1647,4.646,1648,4.646,1649,6.066,1650,6.066,1651,6.066,1652,6.066,1653,6.066,1654,6.066,1655,6.066,1656,6.066,1657,6.066,1658,6.717,1659,6.066,1660,3.587,1661,6.066,1662,6.066,1663,6.066,1664,6.066]],["t/1187",[14,0.431,297,4.358,1275,6.03,1297,2.182,1302,4.07,1571,3.212,1619,6.668,1665,5.075,1666,5.075,1667,5.075,1668,5.075,1669,5.075,1670,5.075,1671,5.075,1672,5.075,1673,5.075,1674,5.075,1675,5.075,1676,5.075,1677,5.075,1678,5.075,1679,4.608,1680,5.075,1681,5.075,1682,5.075,1683,5.075,1684,5.075,1685,5.075,1686,5.075,1687,5.075,1688,5.075,1689,5.075,1690,5.075,1691,5.075]],["t/1189",[1319,4.564,1692,9.051]],["t/1191",[0,3.297,1309,6.802,1310,6.802,1311,4.111,1312,6.802,1336,4.746,1693,8.027,1694,8.027,1695,8.027]],["t/1193",[1311,4.635,1696,9.051]],["t/1195",[1697,9.219]],["t/1197",[1239,5.957,1302,5.957,1319,4.657,1698,7.427,1699,7.427,1700,7.427,1701,7.427,1702,7.427,1703,7.427,1704,7.427,1705,7.427,1706,7.427,1707,7.427]],["t/1199",[14,0.532,297,3.556,1297,3.343,1708,6.014,1709,5.955,1710,5.721,1711,5.346,1712,6.589]],["t/1202",[200,4.388,1708,6.192,1713,7.846,1714,7.408,1715,7.408,1716,7.408]],["t/1204",[14,0.482,33,4.255,1713,5.051,1717,7.544,1718,5.718,1719,7.574,1720,7.88,1721,5.718,1722,5.718,1723,5.718,1724,7.041,1725,5.718,1726,5.718,1727,5.718,1728,5.718,1729,5.718]],["t/1206",[14,0.56,1730,6.148,1731,6.148,1732,7.288,1733,7.288,1734,7.288]],["t/1210",[14,0.59,1616,3.263,1735,6.501,1736,5.508,1737,6.328,1738,7.36,1739,7.36,1740,5.508,1741,5.508,1742,5.508]],["t/1212",[2,2.761,12,1.691,14,0.569,146,3.371,1616,2.864,1658,3.918,1737,4.259,1743,2.212,1744,4.835,1745,4.835,1746,3.092,1747,8.379,1748,4.835,1749,2.505,1750,4.835,1751,4.835,1752,6.734,1753,5.954,1754,4.835,1755,4.835,1756,4.835,1757,4.835,1758,4.835,1759,3.092,1760,2.505,1761,3.092,1762,3.092,1763,3.092,1764,3.092,1765,3.092,1766,2.885,1767,3.092,1768,3.092,1769,3.918,1770,4.835,1771,3.092,1772,3.092]],["t/1214",[14,0.577,1616,4.584,1737,5.535,1743,3.54,1749,6.973,1760,4.817,1773,3.955,1774,5.944,1775,5.944,1776,5.547]],["t/1216",[2,0.912,14,0.59,19,1.08,88,2.39,1135,2.698,1275,1.774,1277,2.835,1521,1.726,1522,1.774,1548,1.643,1616,4.34,1769,5.619,1773,2.637,1777,2.413,1778,2.413,1779,2.413,1780,2.413,1781,2.413,1782,2.252,1783,3.212,1784,2.413,1785,2.413,1786,7.537,1787,5.337,1788,4.614,1789,1.887,1790,2.413,1791,3.964,1792,3.964,1793,2.413,1794,2.413,1795,2.413,1796,3.964,1797,2.413,1798,2.413,1799,2.413,1800,2.413,1801,1.827,1802,2.132,1803,2.413,1804,2.413]],["t/1218",[14,0.587,19,1.355,85,2.016,89,2.227,249,1.506,1297,1.434,1336,1.973,1521,3.403,1522,3.498,1548,2.062,1616,1.795,1641,1.526,1658,2.455,1660,1.973,1711,3.603,1787,4.805,1788,3.403,1789,2.369,1801,2.294,1805,3.029,1806,3.029,1807,2.827,1808,5.877,1809,3.029,1810,3.029,1811,3.029,1812,5.877,1813,3.029,1814,3.029,1815,3.029,1816,3.029,1817,3.029,1818,4.759,1819,2.112,1820,3.029,1821,3.029,1822,3.029,1823,1.895,1824,2.676,1825,3.029,1826,3.029,1827,4.759,1828,4.204,1829,3.029,1830,3.029,1831,2.676,1832,3.029]],["t/1220",[14,0.582,25,2.125,41,2.866,58,1.759,88,0.858,1272,1.113,1277,1.018,1297,0.674,1545,1.046,1595,3.021,1641,0.717,1647,5.973,1648,1.201,1708,4.181,1730,1.201,1731,1.201,1773,1.679,1783,3.331,1788,2.43,1819,0.992,1833,5.201,1834,1.423,1835,1.113,1836,3.398,1837,1.423,1838,2.523,1839,1.423,1840,4.11,1841,1.423,1842,1.423,1843,1.423,1844,1.423,1845,1.257,1846,1.423,1847,1.423,1848,2.523,1849,2.753,1850,2.523,1851,4.11,1852,2.523,1853,1.423,1854,1.423,1855,1.423,1856,1.423,1857,3.001,1858,1.423,1859,1.423,1860,1.423,1861,3.72,1862,2.354,1863,2.523,1864,1.423,1865,1.423,1866,1.423,1867,1.328,1868,1.423,1869,1.328,1870,2.523,1871,1.423,1872,1.328,1873,1.201,1874,1.423,1875,1.423,1876,1.423,1877,1.423,1878,7.466,1879,2.523,1880,1.423,1881,1.423,1882,1.423,1883,2.523,1884,3.631,1885,1.423,1886,1.423,1887,1.423,1888,2.523,1889,2.523,1890,1.423,1891,1.423,1892,1.423,1893,2.523,1894,2.229,1895,2.523,1896,2.523,1897,2.523,1898,1.423,1899,1.423,1900,1.423,1901,5.201,1902,2.523,1903,2.523,1904,2.523,1905,1.423,1906,1.423]],["t/1223",[14,0.594,1199,4.785,1275,4.918,1311,3.773,1636,3.147,1787,4.185,1788,2.669,1907,5.583,1908,7.427,1909,3.731,1910,3.731,1911,5.583,1912,3.731,1913,3.731,1914,3.731,1915,5.583,1916,5.583,1917,4.71,1918,3.296,1919,3.731,1920,3.731,1921,3.731,1922,3.731]],["t/1225",[14,0.597,1311,2.928,1719,4.379,1788,5.058,1918,4.586,1923,5.191,1924,5.191,1925,5.191,1926,8.635,1927,5.191,1928,5.191,1929,5.191]],["t/1228",[14,0.576,318,3.806,1082,3.068,1311,1.959,1336,2.261,1548,2.364,1616,2.057,1769,2.814,1773,3.519,1787,2.172,1828,3.068,1930,2.629,1931,3.473,1932,3.473,1933,3.473,1934,3.473,1935,3.241,1936,5.289,1937,5.658,1938,3.473,1939,3.241,1940,3.473,1941,3.473,1942,3.473,1943,3.473,1944,3.473,1945,3.473,1946,3.473,1947,3.473,1948,3.473,1949,3.473,1950,3.473,1951,3.473,1952,3.473,1953,3.473,1954,3.473,1955,3.473,1956,5.289,1957,5.289,1958,5.289,1959,3.473,1960,3.473,1961,3.473,1962,3.473,1963,3.473,1964,3.473]],["t/1230",[2,1.588,14,0.593,249,2.09,1305,2.861,1319,1.441,1521,3.007,1522,3.09,1611,2.188,1616,5.391,1641,3.07,1708,2.931,1735,6.673,1737,3.007,1749,2.102,1773,4.772,1801,3.183,1823,2.63,1831,2.291,1965,2.594,1966,6.096,1967,2.594,1968,4.296,1969,4.683,1970,2.594,1971,2.594,1972,2.594,1973,2.594,1974,2.102,1975,2.594]],["t/1232",[14,0.574,15,2.219,89,4.228,297,1.476,885,2.735,996,2.735,1011,2.375,1053,2.155,1102,3.626,1305,4.45,1521,2.096,1574,2.375,1614,1.995,1616,5.644,1641,2.335,1708,3.232,1737,3.316,1760,2.375,1773,5.04,1802,2.589,1819,2.043,1823,2.9,1824,2.589,1894,2.589,1930,2.219,1968,3.757,1974,3.757,1976,2.931,1977,2.931,1978,2.931,1979,2.375,1980,2.931,1981,2.931,1982,2.931,1983,2.931,1984,2.931,1985,2.931,1986,2.931,1987,2.472,1988,2.931,1989,2.096,1990,2.931]],["t/1234",[0,3.717,14,0.469]],["t/1236",[14,0.539]],["t/1238",[1991,7.394]],["t/1240",[14,0.549,1311,3.539,1573,5.085,1574,5.085,1619,5.543,1979,5.085,1991,8.218,1992,6.91,1993,6.91,1994,6.91,1995,6.91,1996,5.543]],["t/1242",[14,0.363,714,3.98,1551,5.938,1553,4.331,1593,4.818,1643,5.156,1679,6.363,1997,5.938,1998,7.008,1999,7.008,2000,7.008,2001,7.008,2002,7.008,2003,7.008,2004,7.008,2005,7.008,2006,7.008,2007,4.143]],["t/1244",[14,0.484,694,3.438,901,3.632,1058,3.632,1643,4.669,1644,3.892,1979,3.154,1991,5.09,1996,3.438,2008,4.287,2009,5.787,2010,6.346,2011,4.287,2012,4.287,2013,4.287,2014,4.287,2015,6.346,2016,4.287,2017,5.377,2018,4.287,2019,3.283,2020,4.287,2021,6.346,2022,4.287,2023,4.287,2024,4.287,2025,3.632,2026,4.287,2027,4.287,2028,4.287,2029,4.287,2030,3.892,2031,4.287,2032,4.287,2033,4.287,2034,4.287,2035,6.346,2036,4.287,2037,4.287,2038,4.287,2039,4.287,2040,4.287,2041,4.287,2042,4.287,2043,4.287,2044,4.287,2045,4.287,2046,4.287,2047,4.287]],["t/1246",[14,0.583,318,3.335,1525,5.855,1766,5.855,1991,8.218,2048,6.91,2049,6.91,2050,6.91]],["t/1248",[1823,4.874,2051,8.582,2052,8.582,2053,8.582,2054,7.272]],["t/1250",[297,4.065,1614,5.493,1636,6.808]],["t/1252",[14,0.469,1636,6.932]],["t/1254",[14,0.576]],["t/1256",[14,0.563]],["t/1258",[14,0.478]],["t/1260",[14,0.582,2055,8.748,2056,6.815,2057,6.815,2058,6.815,2059,5.775,2060,5.22,2061,6.815,2062,6.815,2063,6.815,2064,6.815]],["t/1262",[2,1.551,14,0.575,62,6.721,146,2.862,1002,6.25,1063,7.308,1614,4.078,2065,4.105,2066,4.105,2067,3.462,2068,4.105,2069,4.105,2070,6.598,2071,4.521,2072,4.521,2073,2.936,2074,4.521,2075,4.521,2076,4.521,2077,4.521,2078,4.521,2079,4.105,2080,4.105,2081,4.521,2082,4.521,2083,4.105]],["t/1264",[2,1.51,14,0.573,62,5.121,146,4.095,1063,3.529,1614,2.719,2065,3.995,2066,5.874,2067,4.955,2068,3.995,2069,3.995,2073,2.858,2079,5.874,2080,3.995,2083,3.995,2084,4.4,2085,4.4,2086,4.4,2087,4.4,2088,4.4,2089,4.4,2090,4.4,2091,7.679,2092,4.4,2093,4.4,2094,6.47,2095,4.4,2096,4.4,2097,4.4,2098,4.4,2099,4.4,2100,4.4,2101,4.4,2102,4.4]],["t/1266",[14,0.547,62,5.536,146,5.251,1063,7.924]],["t/1268",[14,0.43,51,5.387,1529,6.105,1555,5.407,2103,8.295]],["t/1271",[2,2.901,14,0.598,51,3.4,229,4.844,614,6.297,2104,5.235,2105,5.235,2106,5.235,2107,5.235,2108,5.235,2109,5.235,2110,5.235]],["t/1273",[0,3.351,14,0.507,2111,8.289,2112,8.159,2113,8.159,2114,8.159]],["t/1276",[32,3.274,278,4.329,1053,5.158,1351,5.132,1529,5.849,1555,5.601,1593,5.313,1595,3.773,1632,4.533,1987,4.329,1997,6.548,2115,7.728,2116,5.652,2117,5.652,2118,5.652,2119,5.132,2120,4.329,2121,7.728,2122,4.789,2123,5.652,2124,5.652,2125,5.652]],["t/1278",[2126,8.37]],["t/1280",[2,3.287,9,0.879,14,0.548,19,3.83,51,0.619,90,0.637,110,1.607,200,0.952,229,3.9,249,1.858,278,0.73,477,4.745,483,5.481,547,0.702,550,1.12,713,2.914,762,0.702,948,0.677,1053,2.425,1054,0.808,1110,2.274,1155,1.499,1199,0.619,1234,0.73,1262,0.866,1277,0.619,1336,1.046,1529,2.245,1545,1.181,1555,1.989,1595,4.109,1630,0.986,1633,1.91,1660,0.564,1937,1.419,1997,5.423,2126,0.866,2127,0.866,2128,1.606,2129,0.866,2130,0.954,2131,1.769,2132,1.769,2133,4.479,2134,0.954,2135,0.954,2136,0.954,2137,0.954,2138,0.954,2139,1.769,2140,0.866,2141,1.769,2142,0.866,2143,0.954,2144,0.866,2145,0.954,2146,0.954,2147,0.954,2148,0.808,2149,0.954,2150,0.954,2151,5.89,2152,3.091,2153,3.091,2154,3.091,2155,1.499,2156,3.091,2157,4.933,2158,1.769,2159,1.769,2160,1.769,2161,0.954,2162,0.954,2163,0.954,2164,1.419,2165,1.769,2166,3.091,2167,1.769,2168,1.606,2169,4.115,2170,1.769,2171,1.606,2172,1.769,2173,1.985,2174,1.769,2175,0.954,2176,1.769,2177,1.769,2178,1.769,2179,1.769,2180,4.127,2181,3.487,2182,3.091,2183,1.769,2184,1.769,2185,0.954,2186,0.954,2187,1.769,2188,0.954,2189,0.954,2190,0.954,2191,1.769,2192,0.954,2193,0.808,2194,0.954,2195,0.954,2196,0.954,2197,1.769,2198,0.954,2199,0.954,2200,0.954,2201,0.954,2202,1.499,2203,0.954,2204,0.954,2205,0.954,2206,0.954,2207,0.954,2208,0.765,2209,0.702,2210,0.954,2211,0.808,2212,0.73,2213,0.954,2214,0.954]],["t/1282",[14,0.514,1528,5.12,1529,4.457,1555,3.947,1593,4.958,2181,6.11,2215,7.211,2216,7.211,2217,7.211,2218,7.211,2219,7.211,2220,7.211,2221,7.211,2222,7.211]],["t/1284",[1529,5.493,1555,4.865,2223,8.889]],["t/1286",[14,0.56,51,4.142,318,3.078,762,4.693,1431,5.404,1528,4.529,1529,5.178,1554,4.385,1555,4.586,1937,6.721,2119,5.791,2127,5.791,2128,7.608,2129,5.791,2224,5.791]],["t/1288",[14,0.543,1431,6.913,2224,7.408,2225,8.159,2226,4.315,2227,8.159]],["t/1290",[14,0.587,62,4.891,508,5.038,762,5.392,2168,6.654,2180,4.753,2181,4.436,2226,4.472,2228,5.235,2229,5.235,2230,6.654,2231,5.235,2232,5.235,2233,5.235,2234,5.235,2235,5.235,2236,5.235,2237,5.235,2238,5.235]],["t/1292",[1528,6.2,1554,6.003,1555,4.78,2230,7.929]],["t/1294",[14,0.539,318,3.48,2226,5.246,2239,7.211,2240,7.211,2241,9.068,2242,9.068,2243,7.211,2244,7.211]],["t/1296",[0,3.297,14,0.539,1555,4.394,1571,5.081,2245,8.027,2246,8.027,2247,5.699]],["t/1298",[0,3.144,88,4.19,612,6.682,2226,4.049,2248,7.656,2249,7.656,2250,7.656,2251,7.656,2252,7.656,2253,7.656,2254,7.656]],["t/1300",[14,0.483,229,4.931,550,4.773,2226,5.353,2255,7.54,2256,7.54,2257,7.54,2258,7.54,2259,7.54]],["t/1302",[14,0.403,229,5.025,2226,5.426,2260,7.776,2261,7.776,2262,7.776,2263,7.776,2264,7.776]],["t/1304",[0,2.962,2,2.474,14,0.47,88,3.947,136,5.784,229,3.814,550,4.565,2226,5.504,2265,6.548,2266,7.211,2267,7.211,2268,7.211]],["t/1307",[14,0.445,2269,8.582,2270,8.582,2271,8.582,2272,8.582]],["t/1309",[2273,7.129,2274,8.071,2275,8.889]],["t/1311",[14,0.547,463,5.536,2274,7.532,2276,8.295,2277,7.532]],["t/1315",[2,2.63,14,0.512,19,2.27,25,3.174,43,4.534,58,3.538,223,5.444,547,4.112,1135,3.454,1633,4.739,2209,4.112,2278,5.589,2279,5.589,2280,5.589,2281,5.589,2282,5.589,2283,5.589,2284,5.074,2285,6.497,2286,5.589,2287,5.589,2288,4.28,2289,4.482,2290,4.112,2291,5.074,2292,5.589,2293,5.589]],["t/1317",[2,1.723,14,0.546,19,4.005,25,2.853,43,5.83,223,5.054,547,3.696,1614,3.104,1633,4.399,2091,6.463,2209,3.696,2284,4.561,2289,4.029,2290,3.696,2291,4.561,2294,5.023,2295,7.118,2296,7.118,2297,5.023,2298,5.023,2299,5.023,2300,5.023,2301,5.023]],["t/1320",[14,0.518,45,5.031,2302,7.317,2303,7.317,2304,7.317,2305,9.151,2306,7.317,2307,7.317,2308,7.317,2309,7.317,2310,7.317,2311,7.317]],["t/1322",[2,1.732,14,0.569,44,3.13,152,2.872,229,3.128,249,1.762,508,4.066,1053,2.605,1135,5.293,1435,1.968,1567,1.55,1633,1.435,1845,4.048,2007,2.984,2171,2.109,2289,1.863,2312,2.323,2313,2.323,2314,2.323,2315,1.968,2316,3.903,2317,2.323,2318,2.323,2319,2.323,2320,2.323,2321,2.323,2322,2.323,2323,2.323,2324,2.323,2325,5.915,2326,2.323,2327,2.323,2328,2.323,2329,2.323,2330,2.323,2331,2.323,2332,2.323,2333,2.323,2334,2.323,2335,2.323,2336,3.903,2337,2.323,2338,2.323,2339,2.323,2340,2.323,2341,2.323,2342,2.323,2343,2.323,2344,3.903,2345,2.323,2346,2.323,2347,2.323,2348,2.323,2349,2.323,2350,2.323,2351,2.323,2352,2.323,2353,2.323,2354,2.323,2355,2.323,2356,3.903,2357,2.323,2358,2.323,2359,2.323,2360,2.323,2361,2.323,2362,2.323,2363,2.323,2364,2.323,2365,2.323,2366,2.323,2367,2.323,2368,2.109,2369,3.903,2370,2.323,2371,3.903,2372,2.323,2373,5.915,2374,3.307,2375,2.323,2376,3.903,2377,2.323,2378,2.323,2379,2.323,2380,2.323]],["t/1325",[9,3.869,62,5.198,169,5.965,323,5.191,1297,3.348,1567,5.198,1660,3.38,1987,4.379,1989,3.713,2226,4.119,2381,8.635,2382,6.247,2383,5.717,2384,5.717,2385,4.845,2386,4.586,2387,5.717,2388,5.191,2389,5.717,2390,5.717,2391,5.191,2392,5.198,2393,5.717]],["t/1327",[9,4.224,62,3.531,86,6.256,90,5.676,169,5.655,969,4.804,1003,4.804,1051,4.244,1239,4.244,1567,3.531,1632,4.244,1660,3.128,1987,6.513,2148,4.483,2226,2.798,2381,8.355,2382,4.244,2386,4.244,2392,4.928,2394,5.291,2395,5.291,2396,5.291,2397,4.483,2398,5.291,2399,4.052,2400,5.291,2401,5.291,2402,5.291,2403,5.291]],["t/1329",[9,3.582,90,6.62,169,6.945,1297,3.1,1660,5.361,2148,6.11,2382,5.784,2404,5.784,2405,7.211,2406,7.211,2407,7.211,2408,7.211]],["t/1331",[0,3.717,14,0.469]],["t/1333",[1974,6.425,2409,8.732,2410,8.732,2411,8.732]],["t/1335",[224,3.631,354,6.023,1135,5.894,1787,3.768,2412,8.597,2413,8.597,2414,6.633,2415,6.023,2416,6.633,2417,6.023,2418,6.023,2419,6.633,2420,7.284,2421,6.633,2422,6.633,2423,6.633,2424,6.023]],["t/1337",[14,0.529,224,3.953,1787,5.434,2415,4.655,2417,6.557,2418,6.557,2425,5.127,2426,5.127,2427,7.222,2428,5.127,2429,8.361,2430,5.127,2431,5.127,2432,4.344,2433,7.222,2434,5.127,2435,5.127,2436,5.127,2437,7.222,2438,5.127,2439,5.127,2440,5.127,2441,5.127,2442,5.127,2443,5.127,2444,5.127]],["t/1340",[2445,8.889,2446,8.889,2447,8.889]],["t/1342",[14,0.461,1388,8.071,2288,6.808]],["t/1344",[2448,9.219]],["t/1346",[2,1.41,14,0.519,19,1.669,229,3.897,249,3.954,612,6.218,614,4.227,713,3.296,2140,3.731,2155,3.482,2374,3.482,2449,4.109,2450,4.109,2451,4.109,2452,4.109,2453,4.109,2454,3.731,2455,5.583,2456,3.731,2457,4.109,2458,4.109,2459,4.109,2460,4.109,2461,4.109,2462,3.731,2463,4.109,2464,5.583,2465,4.109,2466,4.109,2467,4.109,2468,4.109,2469,4.109,2470,4.109,2471,4.109,2472,3.731,2473,4.109,2474,4.109,2475,4.109,2476,4.109,2477,3.731,2478,4.109,2479,3.731,2480,4.109,2481,3.482,2482,4.109,2483,4.109,2484,4.109]],["t/1349",[2226,5.277,2485,8.436,2486,8.436,2487,8.436,2488,7.659]],["t/1351",[14,0.502,215,5.825,1787,3.005,2226,5.868,2488,4.804,2489,5.291,2490,5.291,2491,5.291,2492,7.383,2493,5.291,2494,5.291,2495,5.291,2496,5.291,2497,5.291,2498,5.291,2499,5.291,2500,4.804,2501,4.804,2502,5.291,2503,5.291,2504,5.291]],["t/1354",[14,0.576]],["t/1356",[14,0.539,249,3.256,1631,6.548,2505,7.211,2506,7.211,2507,7.211,2508,7.211,2509,7.211,2510,7.211,2511,7.211,2512,7.211,2513,7.211,2514,7.211]],["t/1358",[14,0.532,2500,7.06,2501,7.06,2515,7.776,2516,7.776,2517,7.776,2518,7.776,2519,7.776,2520,7.776]],["t/1361",[14,0.539]],["t/1363",[14,0.584]],["t/1365",[14,0.539]],["t/1368",[14,0.478]],["t/1370",[14,0.57,19,3.435,224,4.628,248,3.852,1234,4.01,1787,4.802,2397,4.436,2424,4.753,2521,5.235,2522,5.235,2523,5.235,2524,5.235,2525,5.235,2526,5.235,2527,5.235,2528,5.235,2529,5.235,2530,8.455,2531,5.235,2532,5.235,2533,5.235,2534,4.199,2535,5.235]],["t/1372",[2,3.049,2536,8.071,2537,8.889]],["t/1375",[612,6.2,2538,8.732,2539,8.732,2540,7.929]],["t/1377",[2,1.879,14,0.544,19,0.592,25,1.479,32,2.486,43,3.967,45,4.613,89,0.973,169,1.994,391,1.116,547,1.072,576,1.323,612,2.506,614,1.002,1082,5.095,1110,2.597,1157,3.205,1633,3.674,1660,1.539,1782,2.991,1783,1.072,1823,1.479,1862,1.235,1930,1.79,1935,2.206,1939,2.206,2209,2.597,2211,1.235,2212,1.116,2288,1.116,2289,1.169,2290,1.072,2368,2.364,2454,3.897,2456,1.323,2540,1.323,2541,2.604,2542,1.457,2543,1.457,2544,1.457,2545,1.457,2546,1.457,2547,1.457,2548,1.457,2549,1.457,2550,1.457,2551,2.604,2552,1.457,2553,2.604,2554,1.457,2555,1.457,2556,1.457,2557,1.457,2558,1.457,2559,1.457,2560,2.604,2561,1.457,2562,3.529,2563,2.604,2564,2.604,2565,1.457,2566,1.169,2567,1.457,2568,1.457,2569,1.457,2570,1.457,2571,1.457,2572,1.457,2573,1.457,2574,2.604,2575,2.604,2576,1.457,2577,1.457,2578,1.457,2579,1.457,2580,1.457,2581,2.604,2582,1.457,2583,1.457,2584,3.529,2585,2.604,2586,1.457,2587,2.604,2588,2.604,2589,2.604,2590,2.604,2591,1.457,2592,1.457,2593,3.529,2594,4.292,2595,4.932,2596,1.457,2597,2.604,2598,1.457,2599,1.457,2600,1.457,2601,1.457,2602,1.457,2603,1.235,2604,1.457,2605,1.457,2606,1.457,2607,1.457,2608,1.457,2609,1.457,2610,1.457,2611,1.457,2612,1.457,2613,4.292,2614,1.457,2615,1.457,2616,1.457,2617,1.457,2618,1.323,2619,1.457,2620,4.292,2621,1.457,2622,1.457,2623,1.457,2624,1.457,2625,1.457,2626,1.457,2627,1.457,2628,1.457,2629,1.457,2630,1.457,2631,1.457,2632,2.604,2633,2.604,2634,2.604,2635,2.604,2636,2.604,2637,1.457,2638,1.457,2639,1.457,2640,1.457,2641,1.457,2642,1.457,2643,1.457,2644,1.457,2645,1.457,2646,1.323,2647,1.457,2648,1.323,2649,1.457,2650,1.457,2651,1.457]],["t/1379",[19,3.676,2652,9.051]],["t/1382",[2,1.664,14,0.565,19,1.514,33,3.273,44,3.89,87,1.764,89,1.468,224,4.26,229,5.094,249,3.34,550,3.615,612,4.538,614,4.394,802,1.863,1053,2.488,1102,1.561,1776,3.158,1969,1.764,2155,1.863,2173,1.764,2374,1.863,2462,1.997,2464,3.384,2472,1.997,2477,1.997,2479,1.997,2648,3.384,2653,2.199,2654,2.199,2655,3.727,2656,2.199,2657,2.199,2658,2.199,2659,2.199,2660,2.199,2661,2.199,2662,2.199,2663,2.199,2664,3.727,2665,2.199,2666,2.199,2667,2.199,2668,2.199,2669,2.199,2670,2.199,2671,2.199,2672,2.199,2673,2.199,2674,2.199,2675,2.199,2676,2.199,2677,2.199,2678,2.199,2679,2.199,2680,2.199,2681,2.199,2682,3.727,2683,2.199,2684,3.727,2685,2.199,2686,2.199,2687,2.199,2688,2.199,2689,2.199,2690,2.199,2691,4.85,2692,3.384,2693,3.727,2694,2.199,2695,2.199,2696,2.199,2697,2.199,2698,2.199,2699,2.199,2700,2.199]],["t/1384",[14,0.502,1275,5.357,1297,3.451,1319,4.048,1499,6.438,1611,6.148,2701,6.438,2702,8.027]],["t/1387",[14,0.557,318,3.812,1499,6.336,1500,7.172,1501,7.172,1502,5.812,1503,7.172]],["t/1389",[1504,8.37]],["t/1392",[318,4.214,1336,5.163,1505,7.929,1506,7.929]],["t/1394",[1507,6.363,1508,6.363,1509,6.363,1510,6.363,1511,6.363,1512,6.363,1513,6.363,1514,6.363,1515,6.363,1516,6.363,1517,6.363,1518,6.363,1519,6.363,1520,6.363,1521,4.551,1522,4.677,1523,6.363,1524,6.363]],["t/1396",[1525,6.589,1526,7.06,1527,7.06,1528,5.521,1529,4.805,1530,7.06,1531,7.06,1532,7.06,1533,7.06,1534,7.06,1535,7.06]],["t/1398",[1536,7.659,1537,7.659,1538,7.659,1539,7.659,1540,7.659,1541,7.659]],["t/1400",[0,1.983,14,0.419,47,4.091,248,3.553,929,4.091,1528,6.272,1529,5.779,1542,4.384,1543,4.384,1544,4.384,1545,3.223,1546,4.384,1547,4.384,1548,2.984,1549,4.384,1550,4.384,1551,4.091,1552,4.384,1553,2.984,1554,5.561,1555,4.427,1556,4.384,1557,4.384,1558,6.283,1559,4.384,1560,4.384,1561,4.384,1562,4.384,1563,4.384,1564,4.384,1565,4.384,1566,4.384,1567,3.223,1568,4.384,1569,4.384,1570,4.384]],["t/1404",[14,0.594,318,4.441,1311,5.269,1571,6.513,1572,4.804,1573,3.893,1574,3.893]],["t/1406",[1575,7.532,1576,7.532,1577,6.653,1578,7.532,1579,7.532,1580,7.532,1581,7.532]],["t/1408",[2,2.031,14,0.522,19,3.24,151,5.018,1110,4.357,1553,3.66,1555,3.241,1577,4.75,1582,5.377,1583,5.377,1584,5.377,1585,5.377,1586,5.377,1587,5.377,1588,5.377,1589,5.377,1590,5.377,1591,5.377,1592,5.377,1593,4.071,1594,5.377,1595,3.952,1596,5.377,1597,5.377,1598,5.377,1599,5.377]],["t/1410",[2703,8.37]],["t/1412",[2,0.853,177,1.903,221,1.765,229,1.314,249,1.122,297,3.75,463,1.659,550,1.573,714,1.412,993,2.106,1011,1.829,1135,1.536,1199,1.614,1280,2.932,1297,3.773,1305,1.536,1319,1.253,1614,2.552,1630,1.385,1637,4.727,1641,3.892,1643,1.829,1660,2.442,1743,2.201,1801,1.709,1849,3.039,1861,1.614,1873,1.903,1917,1.903,1930,1.709,2007,1.469,2009,3.163,2017,2.106,2019,1.903,2202,2.106,2386,3.312,2404,3.312,2566,1.993,2603,2.106,2704,2.256,2705,1.993,2706,2.256,2707,1.993,2708,2.106,2709,1.993,2710,4.382,2711,2.256,2712,2.256,2713,2.256,2714,1.199,2715,2.256,2716,1.829,2717,1.829,2718,2.256,2719,2.256,2720,2.256,2721,4.25,2722,2.256,2723,2.256,2724,2.256,2725,2.256,2726,2.256,2727,1.765,2728,1.993,2729,2.256,2730,1.993,2731,2.256,2732,2.256,2733,1.993,2734,2.256,2735,2.256,2736,1.659,2737,2.256,2738,1.993,2739,2.256,2740,1.993,2741,2.256,2742,2.256,2743,2.256,2744,1.993,2745,1.993,2746,2.256,2747,2.256,2748,1.993,2749,2.256,2750,1.993,2751,1.993,2752,2.256,2753,2.256,2754,2.256,2755,2.256,2756,1.993,2757,1.993,2758,1.44,2759,1.993,2760,1.993,2761,1.829,2762,2.256,2763,2.256,2764,2.256,2765,1.993,2766,1.993,2767,2.106,2768,2.256,2769,2.256,2770,2.106]],["t/1414",[14,0.593,25,2.123,58,2.366,297,1.709,1297,2.991,1319,1.885,1553,2.31,1605,5.062,1641,3.564,1743,1.553,2007,2.21,2714,2.762,2716,2.751,2727,2.654,2736,2.495,2738,2.998,2750,2.998,2751,2.998,2758,4.515,2759,2.998,2760,2.998,2771,4.212,2772,3.394,2773,3.168,2774,2.863,2775,2.165,2776,3.394,2777,3.394,2778,3.394,2779,2.863,2780,3.394,2781,5.197,2782,3.394]],["t/1417",[14,0.586,1311,2.962,1336,3.42,1571,3.661,1641,3.59,1743,3.26,2392,3.86,2736,7.033,2783,3.976,2784,3.166,2785,5.252,2786,5.252]],["t/1419",[14,0.591,19,0.935,1127,1.846,1131,3.106,1297,0.989,1336,1.36,1359,1.95,1548,2.393,1593,1.582,1743,0.956,1835,4.175,1861,1.494,2059,3.281,2273,1.846,2285,1.95,2288,1.762,2534,1.846,2705,3.106,2714,1.11,2716,1.693,2758,2.243,2779,1.762,2787,5.956,2788,4.552,2789,1.95,2790,1.95,2791,2.089,2792,2.089,2793,2.089,2794,4.552,2795,2.089,2796,1.762,2797,2.089,2798,3.516,2799,2.089,2800,2.089,2801,2.089,2802,2.089,2803,2.089,2804,2.089,2805,2.089,2806,2.089,2807,3.516,2808,2.089,2809,2.089,2810,2.089,2811,2.089,2812,4.248,2813,2.089,2814,2.089,2815,2.089,2816,2.089,2817,2.089,2818,3.516,2819,2.089,2820,2.089,2821,2.089,2822,2.089,2823,2.089,2824,3.516,2825,3.516,2826,2.089,2827,2.089,2828,2.089,2829,2.089,2830,2.089,2831,2.089,2832,2.089,2833,2.089,2834,2.089,2835,2.089,2836,2.089,2837,2.089,2838,2.089,2839,2.089,2840,2.089,2841,2.089,2842,4.021,2843,2.089]],["t/1421",[14,0.497,1297,3.396,1319,4.837,1499,6.336,2701,6.336,2844,7.899,2845,7.899,2846,7.899]],["t/1424",[14,0.565,224,3.203,2847,5.852,2848,5.852,2849,5.852,2850,5.852,2851,5.852,2852,5.852,2853,5.852,2854,5.852,2855,5.852,2856,7.912,2857,5.852,2858,5.852,2859,5.852,2860,5.852,2861,5.852,2862,5.852,2863,5.852,2864,5.852,2865,5.852,2866,5.852,2867,5.852]],["t/1426",[14,0.53,1845,4.155,2073,6.237,2812,6.164,2868,5.181,2869,6.605,2870,4.704,2871,4.704,2872,6.605,2873,5.181,2874,5.181,2875,4.704,2876,4.704,2877,5.181,2878,5.181,2879,5.181,2880,5.181,2881,5.181,2882,7.275,2883,7.275,2884,5.181,2885,5.181,2886,5.181,2887,5.181,2888,5.181,2889,5.181,2890,5.181,2891,5.181]],["t/1428",[2869,6.548,2870,6.548,2871,6.548,2872,8.233,2875,6.548,2876,8.233,2892,7.211,2893,7.211,2894,7.211,2895,7.211,2896,7.211,2897,7.211,2898,7.211,2899,7.211]],["t/1430",[14,0.58,1786,6.336,2900,7.899,2901,7.899,2902,7.899]],["t/1432",[85,5.011,297,3.793,1641,3.793,2714,4.003,2717,6.104,2784,4.54,2903,7.532]],["t/1434",[7,1.973,9,3.215,85,3.166,110,2.167,297,3.354,303,2.827,483,5.882,983,3.721,1002,4.204,1020,2.676,1135,3.239,1297,3.804,1305,2.062,1319,2.643,1502,2.455,1545,3.498,1553,2.062,1567,2.227,1641,2.397,1743,3.046,1823,2.977,2054,2.827,2120,2.555,2290,2.455,2385,2.827,2399,2.555,2481,4.441,2707,2.676,2714,4.083,2721,2.676,2740,2.676,2757,2.676,2761,2.455,2766,2.676,2784,2.869,2904,3.029,2905,3.029,2906,3.029,2907,3.029,2908,3.029,2909,2.676,2910,4.759,2911,2.827,2912,4.759,2913,3.029,2914,3.029,2915,4.759,2916,3.029,2917,3.029,2918,3.029,2919,3.029,2920,3.029,2921,2.676,2922,2.676,2923,2.676,2924,3.029,2925,3.029,2926,3.029,2927,3.029,2928,3.029,2929,2.827]],["t/1436",[14,0.58,1743,4.175,2714,3.584,2784,4.065,2930,6.743,2931,6.743]],["t/1438",[14,0.573,1280,5.699,1743,4.023,2932,7.288]],["t/1440",[14,0.582,41,2.929,223,2.716,750,4.461,1301,5.658,1319,2.937,1743,1.588,1823,3.308,1835,2.716,2060,4.461,2073,4.581,2420,3.241,2842,3.068,2933,3.473,2934,3.473,2935,3.473,2936,3.473,2937,4.672,2938,3.068,2939,3.068,2940,3.473,2941,3.473,2942,3.473,2943,3.473,2944,3.473,2945,3.473,2946,3.473,2947,3.068,2948,3.473,2949,3.473,2950,3.473,2951,3.068,2952,3.473,2953,3.473,2954,6.405,2955,3.473,2956,5.289,2957,3.473,2958,3.473,2959,2.814,2960,3.473]],["t/1442",[14,0.558,750,4.233,1343,4.683,2060,4.233,2073,5.651,2938,4.433,2939,4.433,2947,4.433,2951,4.433,2961,5.018,2962,5.018,2963,5.018,2964,5.018,2965,5.018,2966,5.018,2967,5.018,2968,5.018,2969,5.018,2970,5.018,2971,6.909,2972,5.018,2973,5.018,2974,5.018,2975,5.018,2976,5.018,2977,5.018]],["t/1445",[14,0.589,33,3.589,224,3.836,1571,4.436,1743,3.698,2774,5.367,2978,6.363,2979,5.621]],["t/1452",[14,0.571,1605,5.13,1743,3.281,2922,6.336,2979,6.336,2980,7.172]],["t/1454",[14,0.423,318,3.938,1151,7.408,2701,6.544,2981,8.159,2982,8.159,2983,8.159,2984,8.159]],["t/1456",[9,3.924,318,4.63,1819,5,1989,5.13,2404,6.336,2534,6.336,2985,7.172,2986,7.899,2987,7.899]],["t/1458",[14,0.438,463,5.645,776,5.874,958,3.37,1155,3.729,1660,2.602,1719,3.37,1730,3.37,1731,3.37,2142,3.995,2144,5.874,2164,3.529,2382,3.529,2391,6.966,2708,3.729,2911,3.729,2985,3.995,2988,6.47,2989,4.4,2990,6.47,2991,4.4,2992,6.47,2993,6.47,2994,4.4,2995,4.4,2996,4.4,2997,7.672,2998,4.4,2999,4.4,3000,4.4,3001,4.4,3002,4.4,3003,4.4,3004,4.4,3005,4.4,3006,4.4,3007,6.47,3008,6.47,3009,4.4,3010,4.4,3011,4.4,3012,4.4]],["t/1460",[448,7.929,3013,8.732,3014,8.732,3015,8.732]],["t/1463",[7,2.373,162,1.651,177,1.839,221,1.705,297,3.322,318,2.495,452,2.035,463,1.603,707,2.035,714,2.936,948,1.705,1021,1.926,1199,1.559,1234,1.839,1297,2.889,1319,2.024,1320,1.926,1545,1.603,1573,1.767,1595,1.603,1605,3.357,1630,3.367,1633,1.484,1635,3.4,1637,1.839,1638,2.035,1641,2.762,1647,3.074,1648,1.839,1709,3.074,1710,2.953,1743,0.997,1789,1.705,1849,1.767,1857,1.926,1861,1.559,1884,3.219,1979,1.767,1989,3.357,1996,1.926,2007,3.057,2009,1.839,2019,3.074,2025,2.035,2120,1.839,2122,2.035,2173,1.926,2193,2.035,2208,1.926,2226,1.27,2399,1.839,2709,1.926,2710,3.671,2714,2.495,2727,1.705,2728,1.926,2730,1.926,2744,1.926,2745,1.926,2748,1.926,2756,1.926,2758,2.325,2761,2.953,2765,1.926,2775,4.466,2796,1.839,2909,1.926,2921,1.926,3016,2.18,3017,2.18,3018,1.926,3019,2.035,3020,2.18,3021,2.18,3022,2.18,3023,2.18,3024,2.18,3025,2.18,3026,1.926,3027,2.18,3028,2.035,3029,2.18,3030,2.18,3031,2.18,3032,2.18,3033,2.18,3034,2.18,3035,2.18,3036,2.18,3037,2.18,3038,2.18,3039,2.18,3040,3.554,3041,2.18,3042,2.18,3043,2.18,3044,2.18,3045,2.18,3046,2.18,3047,2.18,3048,2.18,3049,2.18,3050,2.18,3051,2.18,3052,2.18,3053,2.18,3054,2.18]],["t/1465",[14,0.591,714,3.363,1605,5.857,1630,5.027,1743,2.459,1861,3.846,2710,4.205,2714,2.858,2758,3.43,2771,4.357,3040,6.2]],["t/1467",[9,2.035,14,0.575,33,1.26,88,2.242,278,1.885,714,3.484,983,2.908,1199,1.598,1297,1.058,1311,1.26,1502,1.811,1529,3.251,1548,2.531,1553,2.531,1555,4.025,1571,1.558,1630,1.371,1641,3.877,1660,1.455,1743,3.728,1819,3.33,2007,3.111,2164,1.974,2247,3.736,2315,2.085,2714,2.96,2717,1.811,2733,1.974,2736,2.734,2771,1.811,2775,3.553,2783,3.617,2937,1.974,2959,1.811,3055,2.234,3056,2.234,3057,2.234,3058,2.234,3059,2.234,3060,2.234,3061,2.234,3062,2.234,3063,2.234,3064,2.234,3065,2.234,3066,2.234,3067,2.234,3068,2.234,3069,2.085,3070,2.085,3071,2.234,3072,2.234,3073,3.736,3074,1.747,3075,2.234,3076,2.234,3077,2.085,3078,2.234,3079,2.234,3080,2.234,3081,2.234]],["t/1470",[14,0.575,88,3.638,318,1.355,714,3.775,1426,6.197,1554,1.931,1630,4.368,1743,3.255,1787,1.595,2007,3.93,2067,5.091,2073,1.824,2226,4.368,2392,4.437,2714,1.355,2758,1.627,2775,1.627,2784,2.499,3018,2.252,3040,1.931,3082,2.55,3083,2.55,3084,2.55,3085,2.55,3086,2.55,3087,2.55,3088,6.035,3089,2.55,3090,4.146,3091,4.146,3092,2.55,3093,2.55,3094,2.55,3095,2.55,3096,2.55,3097,2.55,3098,2.55,3099,4.146,3100,2.55,3101,2.55,3102,2.55,3103,2.55,3104,2.55,3105,2.55,3106,2.55,3107,2.55,3108,2.55,3109,2.55,3110,3.048]],["t/1472",[14,0.579,88,4.571,249,1.935,318,3.062,1265,3.632,1311,2.195,1554,2.947,1555,2.346,1630,2.389,1711,2.947,1743,3.702,1819,5.286,2247,3.044,2392,2.861,2714,2.069,2775,4.376,2783,2.947,2784,3.473,3026,3.438,3074,3.044,3110,5.95,3111,3.892,3112,3.892,3113,3.892,3114,3.892,3115,3.892]],["t/1474",[14,0.595,88,2.778,714,2.882,1555,2.778,1630,3.996,1641,3.279,1743,2.978,2247,3.603,2714,4.012,2758,2.94,2775,4.153,2784,2.778,3040,3.489,3116,4.608,3117,4.608,3118,4.608,3119,4.608,3120,4.608]],["t/1476",[14,0.358,297,3.16,1297,2.971,1710,5.085,1711,4.751,1872,5.855,1917,5.293,2030,6.274,2536,6.274,2767,5.855,3121,7.479,3122,6.274,3123,6.91,3124,6.91,3125,6.91,3126,6.274,3127,6.91,3128,6.91]],["t/1478",[297,2.993,978,5.944,1051,5.25,1058,5.547,1305,5.267,1567,4.369,1616,3.521,1632,5.25,1641,3.897,1711,4.5,1968,4.817,3129,6.546,3130,6.546,3131,6.546,3132,5.944,3133,6.546,3134,6.546,3135,6.546,3136,6.546,3137,6.546,3138,6.546]],["t/1481",[0,1.37,14,0.173,297,2.96,463,2.227,1269,2.555,1272,3.721,1276,2.827,1277,2.167,1297,1.434,1305,2.062,1357,3.029,1567,2.227,1573,3.856,1574,4.762,1641,1.526,1660,1.973,1709,2.555,1710,4.762,1807,2.827,1867,2.827,1873,2.555,1974,2.455,2208,2.676,2277,3.029,3028,2.827,3121,5.484,3126,3.029,3139,3.336,3140,3.336,3141,5.241,3142,3.336,3143,3.336,3144,6.472,3145,3.336,3146,3.336,3147,3.336,3148,3.336,3149,5.241,3150,3.336,3151,3.336,3152,3.336,3153,3.336,3154,3.336,3155,3.336,3156,3.336,3157,3.336,3158,3.336,3159,3.336,3160,3.336,3161,3.336,3162,3.336,3163,2.827,3164,3.336,3165,3.336,3166,3.336,3167,3.336,3168,3.336,3169,3.336,3170,3.336,3171,3.336,3172,3.336,3173,5.241,3174,5.241,3175,5.241,3176,5.241,3177,3.336,3178,3.336,3179,3.336,3180,5.241,3181,3.336,3182,3.336,3183,3.336,3184,3.336,3185,3.336,3186,3.336,3187,3.336,3188,3.336]],["t/1483",[14,0.416,1989,6.29,3189,8.027,3190,8.027,3191,8.027,3192,8.027,3193,8.027,3194,8.027]],["t/1486",[1275,6.535,1658,6.013,1708,3.888,1773,4.937,1823,3.488,1989,3.988,3132,5.576,3195,6.141,3196,6.141,3197,6.141,3198,6.141,3199,6.141,3200,6.141,3201,6.141,3202,6.141,3203,6.141,3204,6.141,3205,6.141,3206,6.141,3207,6.141,3208,6.141,3209,6.141,3210,6.141]],["t/1489",[1297,3.891,2714,4.368]],["t/1491",[14,0.569,54,4.384,1835,3.881,2067,5.784,2073,5.619,2959,4.022,3069,6.399,3070,4.631,3211,5.466,3212,5.466,3213,5.466,3214,5.466,3215,5.466,3216,5.466,3217,5.466,3218,5.466,3219,5.466,3220,5.466,3221,5.466,3222,5.466,3223,5.466,3224,5.466,3225,5.466,3226,5.466]],["t/1494",[14,0.445,3227,8.541,3228,10.079]],["t/1496",[14,0.453,2111,7.399,3227,7.399,3229,7.929]],["t/1498",[14,0.579,1309,6.256,2784,4.041,2923,4.244,3073,6.534,3074,3.757,3110,6.46,3227,6.256,3229,6.703,3230,5.291,3231,5.291,3232,7.383,3233,5.291,3234,7.383,3235,5.291]],["t/1500",[14,0.582,249,4.362,3073,6.86,3074,4.839,3110,6.448,3236,6.815]],["t/1502",[14,0.575,297,2.645,1269,6.012,1272,6.327,1273,5.252,1277,5.098,2783,5.396,2784,3.166,3073,6.785,3110,6.378,3237,5.784,3238,5.784]],["t/1504",[14,0.584,318,4.87,2784,3.631,3073,4.71,3110,4.427,3239,8.597,3240,6.633,3241,6.633,3242,6.633]],["t/1506",[14,0.591,58,5.688,318,4.337,3243,8.159,3244,7.108]],["t/1508",[14,0.588,58,4.565,318,3.48,2773,8.818,3243,6.548]],["t/1510",[14,0.358,297,4.036,694,5.543,1297,3.795,1319,4.451,1989,4.488,2432,5.855,3077,5.855,3121,7.479,3122,6.274,3245,8.826,3246,6.91,3247,6.91,3248,6.91]],["t/1512",[0,3.651,3249,8.889,3250,8.889]],["t/1514",[1720,7.532,1724,7.532,3251,7.129]],["t/1517",[14,0.437,399,6.766,1102,5.99,3251,8.003,3252,8.436]],["t/1519",[14,0.569,19,2.464,1633,3.749,1823,3.446,2618,5.508,3251,7.322,3253,5.508,3254,6.066,3255,6.066,3256,8.289,3257,6.066,3258,6.066,3259,5.508,3260,7.36,3261,6.066,3262,6.066]],["t/1521",[14,0.501,19,3.553,1633,4.212,3251,7.749,3253,6.188,3256,7.943,3259,6.188,3260,6.188,3263,6.815,3264,6.815,3265,6.815,3266,6.815,3267,6.815,3268,6.815]],["t/1523",[85,5.011,297,3.793,1641,3.793,2714,4.003,2717,6.104,2784,4.54,2903,7.532]],["t/1525",[7,1.973,9,3.215,85,3.166,110,2.167,297,3.354,303,2.827,483,5.882,983,3.721,1002,4.204,1020,2.676,1135,3.239,1297,3.804,1305,2.062,1319,2.643,1502,2.455,1545,3.498,1553,2.062,1567,2.227,1641,2.397,1743,3.046,1823,2.977,2054,2.827,2120,2.555,2290,2.455,2385,2.827,2399,2.555,2481,4.441,2707,2.676,2714,4.083,2721,2.676,2740,2.676,2757,2.676,2761,2.455,2766,2.676,2784,2.869,2904,3.029,2905,3.029,2906,3.029,2907,3.029,2908,3.029,2909,2.676,2910,4.759,2911,2.827,2912,4.759,2913,3.029,2914,3.029,2915,4.759,2916,3.029,2917,3.029,2918,3.029,2919,3.029,2920,3.029,2921,2.676,2922,2.676,2923,2.676,2924,3.029,2925,3.029,2926,3.029,2927,3.029,2928,3.029,2929,2.827]],["t/1527",[14,0.58,1743,4.175,2714,3.584,2784,4.065,2930,6.743,2931,6.743]],["t/1529",[14,0.573,1280,5.699,1743,4.023,2932,7.288]],["t/1531",[14,0.582,41,2.929,223,2.716,750,4.461,1301,5.658,1319,2.937,1743,1.588,1823,3.308,1835,2.716,2060,4.461,2073,4.581,2420,3.241,2842,3.068,2933,3.473,2934,3.473,2935,3.473,2936,3.473,2937,4.672,2938,3.068,2939,3.068,2940,3.473,2941,3.473,2942,3.473,2943,3.473,2944,3.473,2945,3.473,2946,3.473,2947,3.068,2948,3.473,2949,3.473,2950,3.473,2951,3.068,2952,3.473,2953,3.473,2954,6.405,2955,3.473,2956,5.289,2957,3.473,2958,3.473,2959,2.814,2960,3.473]],["t/1533",[14,0.558,750,4.233,1343,4.683,2060,4.233,2073,5.651,2938,4.433,2939,4.433,2947,4.433,2951,4.433,2961,5.018,2962,5.018,2963,5.018,2964,5.018,2965,5.018,2966,5.018,2967,5.018,2968,5.018,2969,5.018,2970,5.018,2971,6.909,2972,5.018,2973,5.018,2974,5.018,2975,5.018,2976,5.018,2977,5.018]],["t/1536",[14,0.589,33,3.589,224,3.836,1571,4.436,1743,3.698,2774,5.367,2978,6.363,2979,5.621]],["t/1543",[14,0.571,1605,5.13,1743,3.281,2922,6.336,2979,6.336,2980,7.172]],["t/1545",[14,0.532,297,3.556,1297,3.343,1708,6.014,1709,5.955,1710,5.721,1711,5.346,1712,6.589]],["t/1548",[200,4.388,1708,6.192,1713,7.846,1714,7.408,1715,7.408,1716,7.408]],["t/1550",[14,0.482,33,4.255,1713,5.051,1717,7.544,1718,5.718,1719,7.574,1720,7.88,1721,5.718,1722,5.718,1723,5.718,1724,7.041,1725,5.718,1726,5.718,1727,5.718,1728,5.718,1729,5.718]],["t/1552",[14,0.56,1730,6.148,1731,6.148,1732,7.288,1733,7.288,1734,7.288]],["t/1556",[14,0.59,1616,3.263,1735,6.501,1736,5.508,1737,6.328,1738,7.36,1739,7.36,1740,5.508,1741,5.508,1742,5.508]],["t/1558",[2,2.761,12,1.691,14,0.569,146,3.371,1616,2.864,1658,3.918,1737,4.259,1743,2.212,1744,4.835,1745,4.835,1746,3.092,1747,8.379,1748,4.835,1749,2.505,1750,4.835,1751,4.835,1752,6.734,1753,5.954,1754,4.835,1755,4.835,1756,4.835,1757,4.835,1758,4.835,1759,3.092,1760,2.505,1761,3.092,1762,3.092,1763,3.092,1764,3.092,1765,3.092,1766,2.885,1767,3.092,1768,3.092,1769,3.918,1770,4.835,1771,3.092,1772,3.092]],["t/1560",[14,0.577,1616,4.584,1737,5.535,1743,3.54,1749,6.973,1760,4.817,1773,3.955,1774,5.944,1775,5.944,1776,5.547]],["t/1562",[2,0.912,14,0.59,19,1.08,88,2.39,1135,2.698,1275,1.774,1277,2.835,1521,1.726,1522,1.774,1548,1.643,1616,4.34,1769,5.619,1773,2.637,1777,2.413,1778,2.413,1779,2.413,1780,2.413,1781,2.413,1782,2.252,1783,3.212,1784,2.413,1785,2.413,1786,7.537,1787,5.337,1788,4.614,1789,1.887,1790,2.413,1791,3.964,1792,3.964,1793,2.413,1794,2.413,1795,2.413,1796,3.964,1797,2.413,1798,2.413,1799,2.413,1800,2.413,1801,1.827,1802,2.132,1803,2.413,1804,2.413]],["t/1564",[14,0.587,19,1.355,85,2.016,89,2.227,249,1.506,1297,1.434,1336,1.973,1521,3.403,1522,3.498,1548,2.062,1616,1.795,1641,1.526,1658,2.455,1660,1.973,1711,3.603,1787,4.805,1788,3.403,1789,2.369,1801,2.294,1805,3.029,1806,3.029,1807,2.827,1808,5.877,1809,3.029,1810,3.029,1811,3.029,1812,5.877,1813,3.029,1814,3.029,1815,3.029,1816,3.029,1817,3.029,1818,4.759,1819,2.112,1820,3.029,1821,3.029,1822,3.029,1823,1.895,1824,2.676,1825,3.029,1826,3.029,1827,4.759,1828,4.204,1829,3.029,1830,3.029,1831,2.676,1832,3.029]],["t/1566",[14,0.582,25,2.125,41,2.866,58,1.759,88,0.858,1272,1.113,1277,1.018,1297,0.674,1545,1.046,1595,3.021,1641,0.717,1647,5.973,1648,1.201,1708,4.181,1730,1.201,1731,1.201,1773,1.679,1783,3.331,1788,2.43,1819,0.992,1833,5.201,1834,1.423,1835,1.113,1836,3.398,1837,1.423,1838,2.523,1839,1.423,1840,4.11,1841,1.423,1842,1.423,1843,1.423,1844,1.423,1845,1.257,1846,1.423,1847,1.423,1848,2.523,1849,2.753,1850,2.523,1851,4.11,1852,2.523,1853,1.423,1854,1.423,1855,1.423,1856,1.423,1857,3.001,1858,1.423,1859,1.423,1860,1.423,1861,3.72,1862,2.354,1863,2.523,1864,1.423,1865,1.423,1866,1.423,1867,1.328,1868,1.423,1869,1.328,1870,2.523,1871,1.423,1872,1.328,1873,1.201,1874,1.423,1875,1.423,1876,1.423,1877,1.423,1878,7.466,1879,2.523,1880,1.423,1881,1.423,1882,1.423,1883,2.523,1884,3.631,1885,1.423,1886,1.423,1887,1.423,1888,2.523,1889,2.523,1890,1.423,1891,1.423,1892,1.423,1893,2.523,1894,2.229,1895,2.523,1896,2.523,1897,2.523,1898,1.423,1899,1.423,1900,1.423,1901,5.201,1902,2.523,1903,2.523,1904,2.523,1905,1.423,1906,1.423]],["t/1569",[14,0.594,1199,4.785,1275,4.918,1311,3.773,1636,3.147,1787,4.185,1788,2.669,1907,5.583,1908,7.427,1909,3.731,1910,3.731,1911,5.583,1912,3.731,1913,3.731,1914,3.731,1915,5.583,1916,5.583,1917,4.71,1918,3.296,1919,3.731,1920,3.731,1921,3.731,1922,3.731]],["t/1571",[14,0.597,1311,2.928,1719,4.379,1788,5.058,1918,4.586,1923,5.191,1924,5.191,1925,5.191,1926,8.635,1927,5.191,1928,5.191,1929,5.191]],["t/1574",[14,0.576,318,3.806,1082,3.068,1311,1.959,1336,2.261,1548,2.364,1616,2.057,1769,2.814,1773,3.519,1787,2.172,1828,3.068,1930,2.629,1931,3.473,1932,3.473,1933,3.473,1934,3.473,1935,3.241,1936,5.289,1937,5.658,1938,3.473,1939,3.241,1940,3.473,1941,3.473,1942,3.473,1943,3.473,1944,3.473,1945,3.473,1946,3.473,1947,3.473,1948,3.473,1949,3.473,1950,3.473,1951,3.473,1952,3.473,1953,3.473,1954,3.473,1955,3.473,1956,5.289,1957,5.289,1958,5.289,1959,3.473,1960,3.473,1961,3.473,1962,3.473,1963,3.473,1964,3.473]],["t/1576",[2,1.588,14,0.593,249,2.09,1305,2.861,1319,1.441,1521,3.007,1522,3.09,1611,2.188,1616,5.391,1641,3.07,1708,2.931,1735,6.673,1737,3.007,1749,2.102,1773,4.772,1801,3.183,1823,2.63,1831,2.291,1965,2.594,1966,6.096,1967,2.594,1968,4.296,1969,4.683,1970,2.594,1971,2.594,1972,2.594,1973,2.594,1974,2.102,1975,2.594]],["t/1578",[14,0.574,15,2.219,89,4.228,297,1.476,885,2.735,996,2.735,1011,2.375,1053,2.155,1102,3.626,1305,4.45,1521,2.096,1574,2.375,1614,1.995,1616,5.644,1641,2.335,1708,3.232,1737,3.316,1760,2.375,1773,5.04,1802,2.589,1819,2.043,1823,2.9,1824,2.589,1894,2.589,1930,2.219,1968,3.757,1974,3.757,1976,2.931,1977,2.931,1978,2.931,1979,2.375,1980,2.931,1981,2.931,1982,2.931,1983,2.931,1984,2.931,1985,2.931,1986,2.931,1987,2.472,1988,2.931,1989,2.096,1990,2.931]],["t/1580",[14,0.578,983,5.521,1869,6.589,2388,7.06,3269,7.06,3270,7.776]],["t/1583",[1633,5.593,2209,6.66]],["t/1586",[14,0.507,297,3.731,1297,3.508,1641,3.731,2770,6.913,3271,8.159,3272,8.159]],["t/1588",[2,0.713,14,0.587,85,1.256,229,1.1,249,0.939,297,2.128,318,1.715,550,1.316,714,1.181,1031,2.722,1269,1.593,1272,3.909,1277,1.35,1297,0.894,1311,1.065,1319,1.049,1320,1.668,1553,4.449,1605,2.308,1619,1.668,1641,2.128,1743,3.762,1789,1.476,1989,1.35,2007,2.101,2111,3.011,2392,3.106,2646,1.888,2710,3.909,2714,1.004,2736,2.372,2774,5.161,2775,2.058,2779,1.593,2783,2.443,2784,1.138,2923,1.668,2959,1.53,3019,1.762,3073,6.544,3110,5.648,3273,2.079,3274,2.079,3275,2.079,3276,2.079,3277,2.079,3278,2.079,3279,3.554,3280,2.079,3281,2.079,3282,2.079,3283,2.079,3284,2.079,3285,2.079,3286,2.079]],["t/1590",[14,0.546,63,5.015,318,4.222,1297,2.93,1319,3.437,1614,4.212,1634,5.775,2727,4.839,2789,5.775,3287,6.815,3288,6.815,3289,6.815,3290,8.748,3291,6.815]],["t/1592",[14,0.522,297,3.924,3292,8.582,3293,7.792]],["t/1594",[14,0.585,983,5.521,2701,6.237,3269,7.06,3294,7.776]],["t/1596",[14,0.533,50,6.808]],["t/1598",[0,3.717,14,0.469]],["t/1600",[14,0.533,50,6.808]],["t/1602",[14,0.519,189,3.873,212,3.698,229,2.553,713,3.873,2397,4.091,2455,4.384,2775,5.117,2796,3.698,3295,4.828,3296,6.92,3297,3.873,3298,4.828,3299,4.828,3300,4.828,3301,4.828,3302,4.828,3303,4.828,3304,4.828,3305,8.834,3306,8.834,3307,8.834,3308,6.92,3309,4.828,3310,6.92,3311,4.828,3312,4.828,3313,4.828,3314,4.828]],["t/1604",[14,0.469,51,5.878]],["t/1606",[2,2.717,14,0.574,19,2.547,25,1.448,43,3.707,44,3.383,136,2.044,152,4.613,229,4.803,249,3.136,550,3.415,612,2.995,614,3.709,1031,5.32,1053,1.701,1102,1.81,1110,3.103,1633,2.606,2133,2.314,2209,1.876,2211,2.16,2212,1.952,2566,2.044,3315,2.549,3316,2.549,3317,2.549,3318,2.549,3319,2.549,3320,4.217,3321,2.549,3322,4.217,3323,4.217,3324,2.549,3325,2.549,3326,2.549,3327,4.217,3328,5.395,3329,4.217,3330,2.549,3331,2.549,3332,4.217,3333,2.549,3334,2.549,3335,2.549,3336,2.549,3337,2.549,3338,2.549,3339,2.549,3340,2.549,3341,2.549,3342,2.549,3343,2.549,3344,2.549,3345,2.549,3346,4.217,3347,2.549]],["t/1608",[1102,7.381]],["t/1610",[2,2.592,14,0.577,33,3.869,43,4.467,45,5.194,224,4.135,229,3.996,249,3.411,1786,6.06,2692,7.583,3348,4.287,3349,6.346,3350,6.346,3351,6.346,3352,4.287,3353,6.346,3354,6.346,3355,4.287,3356,6.346,3357,4.287]],["t/1612",[14,0.374,33,3.693,215,4.565,1783,5.306,1787,4.096,3358,7.211,3359,7.211,3360,7.211,3361,7.211,3362,7.211,3363,7.211,3364,7.211,3365,7.211,3366,7.211,3367,7.211,3368,7.211]],["t/1614",[2703,8.37]],["t/1616",[2,0.853,177,1.903,221,1.765,229,1.314,249,1.122,297,3.75,463,1.659,550,1.573,714,1.412,993,2.106,1011,1.829,1135,1.536,1199,1.614,1280,2.932,1297,3.773,1305,1.536,1319,1.253,1614,2.552,1630,1.385,1637,4.727,1641,3.892,1643,1.829,1660,2.442,1743,2.201,1801,1.709,1849,3.039,1861,1.614,1873,1.903,1917,1.903,1930,1.709,2007,1.469,2009,3.163,2017,2.106,2019,1.903,2202,2.106,2386,3.312,2404,3.312,2566,1.993,2603,2.106,2704,2.256,2705,1.993,2706,2.256,2707,1.993,2708,2.106,2709,1.993,2710,4.382,2711,2.256,2712,2.256,2713,2.256,2714,1.199,2715,2.256,2716,1.829,2717,1.829,2718,2.256,2719,2.256,2720,2.256,2721,4.25,2722,2.256,2723,2.256,2724,2.256,2725,2.256,2726,2.256,2727,1.765,2728,1.993,2729,2.256,2730,1.993,2731,2.256,2732,2.256,2733,1.993,2734,2.256,2735,2.256,2736,1.659,2737,2.256,2738,1.993,2739,2.256,2740,1.993,2741,2.256,2742,2.256,2743,2.256,2744,1.993,2745,1.993,2746,2.256,2747,2.256,2748,1.993,2749,2.256,2750,1.993,2751,1.993,2752,2.256,2753,2.256,2754,2.256,2755,2.256,2756,1.993,2757,1.993,2758,1.44,2759,1.993,2760,1.993,2761,1.829,2762,2.256,2763,2.256,2764,2.256,2765,1.993,2766,1.993,2767,2.106,2768,2.256,2769,2.256,2770,2.106]],["t/1618",[14,0.593,25,2.139,58,2.384,297,1.722,1297,3.005,1319,1.899,1553,2.328,1605,5.082,1641,3.578,1743,1.564,2007,2.227,2714,2.779,2716,2.771,2727,2.674,2736,2.514,2738,3.021,2750,3.021,2751,3.021,2758,4.533,2759,3.021,2760,3.021,2771,4.236,2772,3.42,2773,3.192,2774,2.885,2775,2.182,2776,3.42,2777,3.42,2778,3.42,2779,2.885,2780,3.42,2781,5.227,2782,3.42]],["t/1621",[14,0.586,1311,2.962,1336,3.42,1571,3.661,1641,3.59,1743,3.26,2392,3.86,2736,7.033,2783,3.976,2784,3.166,2785,5.252,2786,5.252]],["t/1623",[14,0.591,19,0.93,1127,1.837,1131,3.094,1297,0.985,1336,1.354,1359,1.941,1548,2.384,1593,1.575,1743,0.951,1835,4.163,1861,1.487,2059,3.268,2273,1.837,2285,1.941,2288,1.754,2534,1.837,2705,3.094,2714,1.105,2716,1.685,2758,2.234,2779,1.754,2787,5.941,2788,4.537,2789,1.941,2790,1.941,2791,2.08,2792,2.08,2793,2.08,2794,4.537,2795,2.08,2796,1.754,2797,2.08,2798,3.502,2799,2.08,2800,2.08,2801,2.08,2802,2.08,2803,2.08,2804,2.08,2805,2.08,2806,2.08,2807,3.502,2808,2.08,2809,2.08,2810,2.08,2811,2.08,2812,4.234,2813,2.08,2814,2.08,2815,2.08,2816,2.08,2817,2.08,2818,3.502,2819,2.08,2820,2.08,2821,2.08,2822,2.08,2823,2.08,2824,3.502,2825,3.502,2826,2.08,2827,2.08,2828,2.08,2829,2.08,2830,2.08,2831,2.08,2832,2.08,2833,2.08,2834,2.08,2835,2.08,2836,2.08,2837,2.08,2838,2.08,2839,2.08,2840,2.08,2841,2.08,2842,4.008,2843,2.08]],["t/1625",[3369,9.219]],["t/1627",[7,2.373,162,1.651,177,1.839,221,1.705,297,3.322,318,2.495,452,2.035,463,1.603,707,2.035,714,2.936,948,1.705,1021,1.926,1199,1.559,1234,1.839,1297,2.889,1319,2.024,1320,1.926,1545,1.603,1573,1.767,1595,1.603,1605,3.357,1630,3.367,1633,1.484,1635,3.4,1637,1.839,1638,2.035,1641,2.762,1647,3.074,1648,1.839,1709,3.074,1710,2.953,1743,0.997,1789,1.705,1849,1.767,1857,1.926,1861,1.559,1884,3.219,1979,1.767,1989,3.357,1996,1.926,2007,3.057,2009,1.839,2019,3.074,2025,2.035,2120,1.839,2122,2.035,2173,1.926,2193,2.035,2208,1.926,2226,1.27,2399,1.839,2709,1.926,2710,3.671,2714,2.495,2727,1.705,2728,1.926,2730,1.926,2744,1.926,2745,1.926,2748,1.926,2756,1.926,2758,2.325,2761,2.953,2765,1.926,2775,4.466,2796,1.839,2909,1.926,2921,1.926,3016,2.18,3017,2.18,3018,1.926,3019,2.035,3020,2.18,3021,2.18,3022,2.18,3023,2.18,3024,2.18,3025,2.18,3026,1.926,3027,2.18,3028,2.035,3029,2.18,3030,2.18,3031,2.18,3032,2.18,3033,2.18,3034,2.18,3035,2.18,3036,2.18,3037,2.18,3038,2.18,3039,2.18,3040,3.554,3041,2.18,3042,2.18,3043,2.18,3044,2.18,3045,2.18,3046,2.18,3047,2.18,3048,2.18,3049,2.18,3050,2.18,3051,2.18,3052,2.18,3053,2.18,3054,2.18]],["t/1629",[14,0.591,714,3.363,1605,5.857,1630,5.027,1743,2.459,1861,3.846,2710,4.205,2714,2.858,2758,3.43,2771,4.357,3040,6.2]],["t/1631",[9,2.035,14,0.575,33,1.26,88,2.242,278,1.885,714,3.484,983,2.908,1199,1.598,1297,1.058,1311,1.26,1502,1.811,1529,3.251,1548,2.531,1553,2.531,1555,4.025,1571,1.558,1630,1.371,1641,3.877,1660,1.455,1743,3.728,1819,3.33,2007,3.111,2164,1.974,2247,3.736,2315,2.085,2714,2.96,2717,1.811,2733,1.974,2736,2.734,2771,1.811,2775,3.553,2783,3.617,2937,1.974,2959,1.811,3055,2.234,3056,2.234,3057,2.234,3058,2.234,3059,2.234,3060,2.234,3061,2.234,3062,2.234,3063,2.234,3064,2.234,3065,2.234,3066,2.234,3067,2.234,3068,2.234,3069,2.085,3070,2.085,3071,2.234,3072,2.234,3073,3.736,3074,1.747,3075,2.234,3076,2.234,3077,2.085,3078,2.234,3079,2.234,3080,2.234,3081,2.234]],["t/1634",[14,0.575,88,3.638,318,1.355,714,3.775,1426,6.197,1554,1.931,1630,4.368,1743,3.255,1787,1.595,2007,3.93,2067,5.091,2073,1.824,2226,4.368,2392,4.437,2714,1.355,2758,1.627,2775,1.627,2784,2.499,3018,2.252,3040,1.931,3082,2.55,3083,2.55,3084,2.55,3085,2.55,3086,2.55,3087,2.55,3088,6.035,3089,2.55,3090,4.146,3091,4.146,3092,2.55,3093,2.55,3094,2.55,3095,2.55,3096,2.55,3097,2.55,3098,2.55,3099,4.146,3100,2.55,3101,2.55,3102,2.55,3103,2.55,3104,2.55,3105,2.55,3106,2.55,3107,2.55,3108,2.55,3109,2.55,3110,3.048]],["t/1636",[14,0.579,88,4.571,249,1.935,318,3.062,1265,3.632,1311,2.195,1554,2.947,1555,2.346,1630,2.389,1711,2.947,1743,3.702,1819,5.286,2247,3.044,2392,2.861,2714,2.069,2775,4.376,2783,2.947,2784,3.473,3026,3.438,3074,3.044,3110,5.95,3111,3.892,3112,3.892,3113,3.892,3114,3.892,3115,3.892]],["t/1638",[14,0.573,297,2.585,694,4.533,714,3.21,1280,4.013,1297,2.43,1311,2.894,1319,2.85,1614,3.493,1616,3.04,1630,3.15,1743,2.347,1930,3.886,2007,3.342,2758,4.476,2775,4.476,3074,4.013,3293,7.016,3370,5.652,3371,5.652,3372,5.652,3373,5.652]],["t/1640",[14,0.595,88,2.778,714,2.882,1555,2.778,1630,3.996,1641,3.279,1743,2.978,2247,3.603,2714,4.012,2758,2.94,2775,4.153,2784,2.778,3040,3.489,3116,4.608,3117,4.608,3118,4.608,3119,4.608,3120,4.608]],["t/1643",[1968,5.812,2432,6.693,3374,7.899,3375,7.899,3376,7.899,3377,7.899,3378,7.899,3379,7.899,3380,7.899,3381,7.172]],["t/1645",[14,0.443,63,3.935,288,4.856,1614,3.305,1712,4.532,2790,4.532,2929,6.303,3381,4.856,3382,5.348,3383,5.348,3384,8.552,3385,5.348,3386,5.348,3387,5.348,3388,5.348,3389,5.348,3390,5.348,3391,5.348,3392,5.348,3393,5.348,3394,7.438,3395,5.348,3396,7.438,3397,7.438,3398,8.552,3399,5.348,3400,5.348,3401,5.348,3402,5.348,3403,5.348]],["t/1648",[3404,9.219]],["t/1650",[14,0.521,16,3.995,215,4.701,962,6.743,3405,7.427,3406,10.052,3407,7.427,3408,7.427,3409,7.427,3410,7.427]],["t/1652",[14,0.478]],["t/1654",[14,0.562,58,5.131,1259,7.36,2290,5.964,3411,6.066,3412,5.508,3413,9.129,3414,6.066,3415,6.066,3416,6.066,3417,5.508,3418,9.129,3419,6.066,3420,6.066,3421,6.066]],["t/1656",[14,0.437,1011,6.207,3422,8.436,3423,8.436,3424,8.436,3425,8.436]],["t/1658",[14,0.528,3412,7.929,3417,7.929]],["t/1661",[2,3.409,14,0.599,200,4.507,249,2.879,3426,6.378,3427,6.378]],["t/1663",[14,0.592,3428,7.899,3429,7.899]],["t/1665",[0,3.651,126,7.57]],["t/1667",[14,0.478]],["t/1669",[12,3.684,14,0.601,15,3.661,16,1.832,19,3.622,24,2.273,25,1.934,32,1.972,3430,3.092,3431,6.734,3432,5.954,3433,5.954,3434,6.734,3435,7.748,3436,3.092,3437,3.092,3438,4.835,3439,3.092,3440,3.092]],["t/1671",[0,0.949,2,0.793,7,1.367,8,1.854,9,1.148,10,1.429,11,1.429,12,3.763,13,1.429,14,0.599,15,3.458,16,3.538,17,1.854,19,3.57,24,3.358,25,1.313,30,3.572,31,1.701,32,2.252,187,1.543,200,1.243,249,1.755,1310,1.959,3430,2.099,3431,5.355,3432,4.567,3433,4.567,3434,5.972,3435,6.47,3436,2.099,3437,2.099,3438,3.53,3439,2.099,3440,2.099,3441,2.312,3442,3.887,3443,2.312,3444,2.312,3445,2.312,3446,2.312,3447,2.312,3448,2.312]],["t/1674",[0,2.15,14,0.6,146,4.639,224,4.628,2212,4.01,3449,4.753,3450,4.753,3451,4.753,3452,4.753,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753]],["t/1677",[0,3.199,14,0.604,200,4.764,3163,4.845,3460,5.191,3461,5.191,3462,5.191,3463,5.191]],["t/1679",[0,2.15,14,0.6,146,4.639,224,4.628,2212,4.01,3449,4.753,3450,4.753,3451,4.753,3452,4.753,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753]],["t/1681",[0,3.465,14,0.581]],["t/1683",[14,0.528,3460,7.929,3461,7.929]],["t/1685",[0,3.302,14,0.604,200,4.88,3163,5.078,3462,5.442,3463,5.442]],["t/1687",[0,3.717,14,0.469]],["t/1689",[14,0.533,50,6.808]],["t/1693",[3464,8.889,3465,8.889,3466,8.889]],["t/1695",[0,3.593,14,0.501,63,6.437,249,3.077,1311,3.49,1634,5.775,3467,8.748,3468,6.815,3469,6.815,3470,6.815,3471,6.815,3472,6.815,3473,6.815,3474,6.815,3475,6.815]],["t/1697",[2,2.438,14,0.553,152,5.23,1497,6.023,1823,4.037,3476,7.108,3477,7.108,3478,8.986,3479,7.108,3480,7.108,3481,7.108,3482,7.108]],["t/1699",[14,0.507,1522,5.445,2226,4.315,2265,7.408,3483,8.159,3484,8.159,3485,8.159]],["t/1702",[3486,9.219]],["t/1704",[0,3.358,2,1.689,14,0.424,45,3.385,152,5.164,215,3.117,249,2.223,1498,4.471,1787,2.797,2226,2.604,3487,4.924,3488,4.924,3489,8.177,3490,7.018,3491,4.924,3492,4.924,3493,4.924,3494,4.924,3495,4.924,3496,8.177,3497,4.924,3498,4.924,3499,4.924,3500,4.924,3501,4.924,3502,4.924,3503,4.924,3504,4.924,3505,4.924,3506,4.924,3507,4.924,3508,7.018,3509,4.924,3510,4.924,3511,4.924,3512,4.924,3513,4.924]],["t/1706",[2,2.548,14,0.385,229,3.928,249,3.353,1435,6.293,2226,3.928,3514,7.427,3515,7.427,3516,7.427,3517,7.427,3518,7.427,3519,7.427,3520,7.427,3521,7.427]],["t/1708",[0,3.097,2,2.586,14,0.563,229,3.987,249,3.404,1497,6.389,1969,6.047,3522,7.54,3523,7.54]],["t/1710",[0,3.651,3524,8.889,3525,8.889]],["t/1712",[2,3.168,33,5.148,215,6.363,3526,7.826,3527,7.427,3528,7.427,3529,7.427,3530,7.427]],["t/1714",[2,2.846,33,5.059,215,5.251,3526,7.029,3531,8.295,3532,8.295]],["t/1716",[2,2.754,33,4.111,215,6.132,2226,4.245,3526,6.802,3533,8.027,3534,8.027,3535,8.027]],["t/1718",[14,0.423,2226,5.541,3536,8.159,3537,8.159,3538,8.159,3539,8.159]],["t/1720",[1823,5.784,3540,8.732,3541,8.732]],["t/1722",[2,2.626,14,0.397,33,4.819,215,4.846,2273,6.14,3542,7.656,3543,7.656,3544,7.656,3545,7.656,3546,7.656,3547,7.656]],["t/1724",[14,0.559,3548,8.732]],["t/1727",[3297,7.259,3549,7.669]],["t/1729",[2,2.799,14,0.507,249,3.683,3297,7.846,3549,8.289]],["t/1731",[2,2.799,14,0.507,249,3.683,3297,7.846,3549,8.289]],["t/1734",[14,0.563]],["t/1736",[14,0.554,89,5.19,3550,9.501,3551,7.776,3552,7.776,3553,7.776,3554,7.776]],["t/1738",[2,2.626,14,0.488,3555,7.656,3556,7.656,3557,7.656,3558,7.656,3559,7.656,3560,7.656,3561,7.656,3562,7.656,3563,7.656]]],"invertedIndex":[["",{"_index":14,"t":{"875":{"position":[[57,1],[73,2],[88,1],[98,1],[132,1],[142,1],[158,1],[165,1],[182,1],[188,1],[194,1],[199,1],[213,1],[223,1],[228,2],[234,1],[241,1],[251,1],[269,1],[271,1],[328,2],[334,1],[341,2],[349,2],[368,1],[375,1],[382,2],[388,2],[397,1],[399,1]]},"877":{"position":[[19,19],[71,8],[83,1],[98,1]]},"881":{"position":[[57,1],[70,1],[80,2],[94,1],[102,1],[106,1],[113,1],[127,1],[132,1],[136,1],[140,1],[145,1],[149,1],[157,2],[164,1],[172,2],[178,1],[185,2],[190,2],[199,1],[201,1],[213,1]]},"883":{"position":[[0,20],[94,1],[99,1],[103,1],[107,1],[112,1],[116,1],[122,2],[125,5],[133,2],[140,1],[165,1],[181,1],[188,1],[205,1],[211,1],[217,1],[222,1],[230,1]]},"886":{"position":[[0,9],[21,6],[41,4]]},"888":{"position":[[0,39],[40,24]]},"890":{"position":[[4,12]]},"892":{"position":[[0,15],[21,2]]},"896":{"position":[[5,1],[9,4],[23,7],[40,8],[54,1],[62,1],[66,6],[77,4],[87,1],[93,4],[103,1],[109,1],[113,4],[123,1],[129,1],[134,4],[144,1],[149,4],[159,1],[169,1],[173,7],[186,1],[196,1],[200,10],[216,1],[220,3],[229,1],[237,1],[241,3],[248,4],[258,1],[263,5],[273,6],[284,6]]},"899":{"position":[[0,3],[4,2],[7,3],[11,2],[14,3],[18,2],[30,4],[43,6],[58,6],[73,4],[87,4],[101,5],[114,4],[128,5],[143,4],[157,6],[173,6],[203,5],[218,8],[234,4]]},"901":{"position":[[21,3],[25,2],[28,3],[32,2],[35,3],[39,2],[52,4],[63,4],[75,2],[87,3],[97,1],[103,6],[115,2],[125,3],[133,2],[142,2],[165,4]]},"905":{"position":[[0,10],[39,1],[45,1],[75,1],[82,1],[88,1],[95,4],[194,11],[255,7],[344,7],[430,6],[527,1],[557,1],[600,1],[638,1],[675,1],[681,1],[691,1],[697,1],[723,1],[725,1],[768,1],[770,1]]},"908":{"position":[[18,1],[71,2]]},"910":{"position":[[0,10],[34,1],[36,1],[70,12],[118,1],[137,1],[160,1],[186,1],[237,1],[239,1],[301,2],[304,9],[314,8],[345,1],[398,15],[423,1],[457,2],[476,1],[511,2],[514,1],[561,1],[587,8],[610,8],[631,10],[667,1],[695,1],[716,1],[726,1],[750,1],[771,1],[773,8],[813,1],[815,3],[819,3],[823,3],[840,1],[842,1]]},"912":{"position":[[77,1]]},"915":{"position":[[7,1],[18,35],[61,1],[128,1]]},"917":{"position":[[0,6],[24,1],[39,19],[71,1],[86,1],[114,1]]},"919":{"position":[[23,1],[51,1],[58,1],[67,3],[71,1],[78,1],[94,1]]},"921":{"position":[[0,3]]},"923":{"position":[[17,4],[31,9],[41,9],[58,18],[205,1],[222,1],[224,3],[496,17],[525,17],[549,17],[579,17],[739,7],[773,39],[837,1]]},"925":{"position":[[13,30],[44,11],[56,2],[59,2],[121,22],[156,20],[183,15],[208,15],[230,10],[246,15],[344,15],[377,16],[403,15],[428,18],[460,22],[555,10],[566,2],[569,2],[577,17],[609,20],[643,23],[679,2],[684,9],[699,14],[721,8],[732,9],[751,34],[797,20],[820,4],[868,17],[905,20],[941,15],[964,18],[993,18],[1024,25],[1065,25],[1099,22],[1135,29],[1181,29],[1222,22],[1253,12],[1279,13],[1300,12],[1325,13],[1352,24],[1382,8],[1403,9],[1423,24],[1455,35],[1503,16],[1530,5],[1536,2],[1539,2],[1600,10],[1631,11],[1664,11],[1693,16],[1710,5],[1716,2],[1719,2],[1737,11],[1770,10],[1793,28],[1835,4],[1858,9],[1873,2],[1888,4],[1893,8],[1902,2],[1905,2],[1922,19],[1954,20],[1987,26],[2026,23],[2050,5],[2056,2],[2059,2],[2071,17],[2103,4],[2114,2],[2132,9],[2159,9],[2194,10],[2215,9],[2225,4],[2230,2],[2233,2],[2244,13],[2277,18],[2306,11],[2327,12],[2350,9],[2370,11],[2382,8],[2391,2],[2394,2],[2417,19],[2461,10],[2476,13],[2502,13],[2520,13],[2546,13],[2572,16],[2609,16],[2643,23],[2684,23]]},"927":{"position":[[274,2],[323,2],[377,2],[451,2],[454,15],[480,2],[483,5],[498,2],[501,5],[522,2],[543,2],[546,4],[561,2],[564,14],[592,2],[595,6],[612,2],[615,15],[639,2],[642,21],[682,2],[778,2],[843,2],[933,2],[971,2],[1043,2],[1106,2],[1109,10],[1130,2],[1174,2],[1242,2],[1298,2],[1335,2],[1394,2],[1397,13],[1411,2],[1414,1],[1416,23],[1440,2],[1513,1],[1547,2],[1553,1],[1571,1],[1584,1],[1602,2],[1611,1],[1613,1],[1620,2],[1628,2],[1631,1],[1633,2],[1636,1],[1643,2],[1662,1]]},"929":{"position":[[219,2],[222,15],[246,2],[249,21],[287,2],[314,2],[339,2],[342,6],[363,2],[366,6],[382,2],[385,4],[400,2],[403,14],[430,2],[502,2],[565,2],[568,10],[589,2],[592,5],[607,2],[610,5],[626,2],[657,2],[703,2],[799,2],[864,2],[953,2],[987,2]]},"931":{"position":[[329,8],[338,3],[342,2],[354,8],[676,5],[682,4],[687,2],[701,4],[713,10],[724,3],[749,4],[763,4],[776,4],[789,6],[805,6],[822,4],[827,1],[829,5],[861,7],[885,11],[908,11],[928,9],[949,13],[973,17],[991,1],[1000,6],[1033,2],[1104,12],[1126,8],[1149,10],[1176,9]]},"933":{"position":[[149,2],[160,2]]},"935":{"position":[[336,2],[349,2],[359,1],[368,2],[519,2],[664,2],[667,4],[672,2],[681,1],[691,2],[783,1],[798,2],[892,2],[895,4],[900,2],[917,2],[965,2],[1001,2],[1004,4],[1009,2],[1022,2],[1025,6],[1043,2],[1046,6],[1064,2],[1067,6]]},"937":{"position":[[179,2],[182,2],[194,2],[197,2],[209,2],[212,4],[228,2],[253,2],[256,8]]},"939":{"position":[[184,2],[187,3],[200,2],[203,3],[218,2],[221,6],[238,2],[241,6],[259,2],[262,8],[281,2],[284,10]]},"941":{"position":[[124,2],[127,13],[151,2],[154,6],[171,2],[174,10],[195,2],[223,2],[226,25],[268,2],[271,21],[303,2],[306,8],[324,2],[327,16],[362,2],[365,8],[385,2],[388,8],[413,2],[416,23],[453,2],[456,15],[485,2],[488,15],[515,2],[518,19],[547,2],[550,18],[578,2],[581,8],[599,2],[602,8],[627,2],[630,13],[659,2],[662,16]]},"945":{"position":[[11,1],[20,5],[89,11],[108,24],[146,24],[171,2],[187,8],[211,1],[234,2],[240,2],[248,4],[255,1],[298,2],[305,7],[332,1],[336,5],[367,2],[374,6],[402,1],[406,5],[443,2],[446,1],[452,1],[456,5],[498,1],[503,3],[509,1],[515,4],[522,4],[544,5],[559,2],[565,7],[575,6],[592,2],[598,6],[607,7],[626,2],[632,3],[638,8],[657,2],[663,8],[680,2],[683,2],[689,2],[696,6],[716,2],[722,2],[729,9],[750,2],[753,1],[758,10],[783,2],[786,1],[791,2],[798,8],[820,2],[823,1],[828,10],[855,2],[858,1],[888,2],[891,1],[896,11],[921,2],[924,1],[929,2],[936,8],[960,2],[963,2],[980,2],[983,1],[988,12],[1015,1],[1020,2],[1026,2],[1029,1],[1034,7],[1045,1]]},"948":{"position":[[97,1],[103,1],[109,1],[115,1],[117,8],[148,1],[182,15],[207,1],[216,2],[235,1],[245,2],[248,1],[295,1],[321,8],[344,8],[365,10],[401,1],[429,1],[450,1],[452,8],[492,1],[514,1],[558,1],[600,1],[607,1],[689,1],[704,1],[706,8],[742,1],[840,1],[845,1],[854,1],[911,1],[918,1],[956,1],[966,1],[1018,2],[1024,1],[1065,1],[1067,1],[1069,1],[1083,1],[1085,8],[1121,1],[1188,2],[1197,1],[1199,2],[1208,2],[1211,1],[1213,2],[1288,1],[1293,1],[1302,1],[1325,1],[1344,1],[1351,1],[1389,1],[1399,1],[1451,2],[1457,1],[1525,2],[1534,1],[1536,2],[1543,2],[1546,1],[1548,2],[1557,1],[1572,1],[1574,1],[1588,1],[1598,1],[1632,1],[1647,2],[1655,1],[1657,2],[1664,2],[1667,1],[1669,2],[1686,1],[1688,1],[1697,2],[1718,1],[1720,1],[1740,1],[1946,1],[1963,2],[1966,14],[1991,1],[1998,1],[2021,2],[2030,2],[2033,1],[2035,2],[2043,2],[2057,2],[2060,14],[2257,1],[2280,1],[2287,1],[2313,2],[2325,2],[2328,1],[2330,2],[2338,2],[2360,2],[2377,1]]},"950":{"position":[[99,1],[105,1],[111,1],[117,1],[189,8],[220,1],[273,15],[298,1],[332,2],[351,1],[386,2],[389,1],[436,1],[462,8],[485,8],[506,10],[542,1],[570,1],[591,1],[601,1],[625,1],[646,1],[648,8],[688,1],[710,1],[754,1],[847,1],[854,1],[1038,1],[1053,1],[1055,1],[1137,2],[1175,1],[1205,1],[1338,1],[1340,1],[1419,1],[1501,1],[1649,1],[1751,1],[1899,1],[1901,1],[2126,1],[2128,1],[2194,1],[2278,1],[2337,1],[2374,1],[2416,1],[2469,1],[2502,1],[2514,1]]},"952":{"position":[[234,5],[259,5],[310,1],[329,1],[424,8],[448,4],[485,3],[580,4],[660,2],[693,10],[728,2],[764,1],[766,5],[790,1],[806,1],[865,1],[911,1],[955,1],[1004,1],[1025,2],[1031,1],[1043,1],[1045,1],[1058,1],[1092,1],[1094,11],[1106,11],[1118,5],[1124,7],[1132,7],[1267,6],[1283,1],[1289,6],[1347,1],[1352,6],[1410,1],[1415,7],[1495,6],[1531,1],[1553,1],[1565,1],[1577,1],[1603,1],[1635,2],[1659,1],[1771,1],[1773,7],[1788,1],[1832,1],[1834,8],[1851,1],[1856,1],[1863,1],[1865,6],[1893,1],[1898,1],[1900,1],[1913,1],[1915,2],[1988,3],[2004,1],[2070,2],[2100,7],[2151,6],[2184,4],[2204,10],[2262,1],[2328,7],[2368,1],[2370,5],[2427,1],[2451,1],[2477,5],[2494,8],[2503,1],[2510,1],[2563,1],[2621,9],[2631,1],[2633,1],[2635,2],[2638,8],[2647,2],[2650,11],[2663,15],[2702,1],[2715,1],[2795,2],[2868,1],[2897,1],[2926,1],[3030,4],[3038,1],[3109,1],[3132,1],[3160,1],[3198,1],[3200,1],[3212,1]]},"955":{"position":[[197,1],[218,2],[221,10],[278,2],[307,1],[309,2],[357,7],[400,2],[403,13],[456,2],[459,11],[523,2],[526,15],[584,2],[587,15],[614,1],[616,2],[619,10],[676,2],[705,1],[742,2],[745,14],[799,2],[802,11],[866,2],[869,15],[927,2],[930,15],[957,1],[959,2],[962,3],[988,1],[1063,1],[1065,2],[1068,4],[1090,1],[1151,1],[1255,1],[1333,3],[1337,2],[1340,9],[1350,1],[1352,2],[1355,4],[1378,1],[1465,1],[1467,2],[1470,4],[1493,1],[1580,1],[1582,2],[1585,4],[1609,1],[1698,1],[1711,1],[1743,1],[1795,2],[1798,4],[1803,2],[1847,2],[1850,4],[1897,2],[1900,4],[1939,2],[1942,9],[1952,2],[1989,2],[1992,9],[2011,2],[2014,4],[2019,2],[2032,2],[2035,4],[2040,2],[2053,2],[2067,2],[2070,4],[2075,2],[2088,2],[2101,2],[2104,4],[2109,2],[2122,1],[2134,1]]},"957":{"position":[[197,1],[264,1],[445,1],[493,1],[674,1],[698,1],[773,1],[792,1],[853,1],[957,1],[1035,3],[1039,1],[1059,1],[1146,1],[1166,1],[1253,1],[1274,1],[1363,1],[1376,1],[1408,1],[1460,2],[1580,2],[1626,2],[1639,2],[1653,2],[1666,1],[1678,1]]},"959":{"position":[[277,1],[340,2],[350,1],[537,1],[558,1],[570,2],[652,1],[665,1],[827,1]]},"961":{"position":[[4,93],[98,5],[264,5]]},"963":{"position":[[57,1],[131,1],[139,2],[144,2],[149,2],[155,1],[164,1],[179,2],[182,6],[198,1],[204,1],[206,2],[209,6],[216,1],[218,2],[221,5],[238,1],[245,1],[267,1],[279,2],[297,1],[352,1],[364,2],[369,2],[376,2],[382,1],[391,1],[404,1],[415,2],[428,1],[457,1],[459,1],[471,1]]},"965":{"position":[[0,47]]},"969":{"position":[[28,14],[43,16],[60,7],[68,11],[80,8],[195,10]]},"973":{"position":[[19,9],[29,9],[39,7]]},"975":{"position":[[0,9],[10,20]]},"977":{"position":[[49,5],[105,17],[123,19],[143,19]]},"979":{"position":[[0,6],[167,16],[184,8],[258,58],[317,3],[354,5],[441,17],[459,2],[487,2],[514,2],[517,4],[538,2],[557,3],[578,5],[633,1],[702,2],[733,1],[799,1],[862,1],[929,1],[970,2],[982,1],[1060,2],[1097,3],[1143,5],[1198,1],[1234,2],[1259,2],[1287,2],[1290,4],[1308,2],[1421,1],[1449,1],[1570,1],[1572,14],[1643,1],[1645,14],[1774,1],[1803,1],[1878,1],[1905,1],[1963,1],[2023,1],[2080,5],[2086,12],[2099,16],[2116,15]]},"983":{"position":[[21,2],[58,2],[91,2],[125,2],[128,2],[142,2],[145,4],[160,2],[163,5],[184,2],[187,8],[210,2],[213,7],[221,2],[269,1],[279,2],[299,2]]},"985":{"position":[[19,1],[44,2],[47,7],[67,2],[70,7],[78,2]]},"987":{"position":[[9,1],[31,2],[57,2],[60,6],[78,2],[81,2],[86,2],[101,2],[119,2],[128,2],[131,21]]},"989":{"position":[[46,2],[49,6],[67,2],[70,6],[87,2],[90,6],[106,2],[109,6]]},"991":{"position":[[0,2],[3,6],[77,2],[80,10],[94,4],[102,4],[122,2],[125,5]]},"997":{"position":[[12,2],[15,7],[23,2],[60,2],[63,7],[84,5],[133,2],[171,2],[207,2],[214,6],[238,2],[271,2]]},"999":{"position":[[15,2],[62,1],[241,12]]},"1001":{"position":[[28,2],[31,10],[42,2],[45,7],[53,2],[56,2],[59,2],[62,2],[65,2],[84,2],[104,2],[122,2],[139,2],[160,2],[180,2],[191,6]]},"1005":{"position":[[0,23],[24,25],[50,23],[74,6],[81,4],[86,6],[93,17]]},"1007":{"position":[[0,20],[21,36],[58,13],[72,22]]},"1009":{"position":[[0,14]]},"1016":{"position":[[72,31],[277,5],[283,5]]},"1018":{"position":[[0,57]]},"1022":{"position":[[234,3],[370,11],[382,7],[403,5],[413,28],[442,39]]},"1026":{"position":[[33,44],[78,47]]},"1029":{"position":[[55,19],[75,13]]},"1034":{"position":[[4,19]]},"1038":{"position":[[0,10],[19,31],[51,5],[65,20],[86,7],[94,7],[102,15]]},"1041":{"position":[[0,37],[42,23],[66,30]]},"1043":{"position":[[0,7],[8,20],[39,13]]},"1046":{"position":[[0,15],[16,43],[60,15],[76,22]]},"1048":{"position":[[12,9],[22,24],[90,2],[93,4],[107,1],[270,1],[444,1],[631,1]]},"1051":{"position":[[0,61],[62,42],[105,56],[162,39],[202,32],[235,47]]},"1053":{"position":[[0,40],[41,61],[174,7],[182,4],[208,13]]},"1055":{"position":[[0,42],[45,5],[51,32],[86,5],[92,20]]},"1057":{"position":[[0,46],[49,5],[71,4],[78,5],[84,54]]},"1059":{"position":[[0,27],[28,6],[35,17],[53,22]]},"1063":{"position":[[123,1],[159,1],[184,1],[200,1],[220,2],[232,1],[256,9],[266,1],[282,1],[292,1],[315,1],[347,2],[374,1],[415,1],[417,8],[441,1],[472,1],[479,1],[493,1],[495,1],[497,1],[499,1],[501,1],[572,1],[630,4],[635,2],[638,1],[666,1],[736,1],[805,1],[863,1],[881,1],[883,1],[885,1],[936,1],[1002,2],[1335,1],[1371,1],[1396,1],[1412,1],[1432,2],[1444,1],[1468,9],[1478,1],[1494,1],[1504,1],[1527,1],[1559,2],[1586,1],[1656,1],[1687,1],[1694,1],[1708,1],[1710,1],[1712,1],[1714,1],[1716,1],[1718,2],[1721,1],[1750,1],[1803,1],[1830,2],[1871,1],[2145,2],[2254,1],[2312,2],[2340,2],[2352,1]]},"1065":{"position":[[67,2],[225,15],[365,1],[393,1],[514,1],[516,14],[587,1],[589,14],[718,1],[747,1],[822,1],[849,1],[907,1],[967,1],[1024,13],[1053,36]]},"1067":{"position":[[4,14]]},"1069":{"position":[[0,15],[21,2]]},"1071":{"position":[[0,4]]},"1076":{"position":[[0,137]]},"1078":{"position":[[10,8],[19,19],[39,15],[55,21],[77,6],[84,21],[106,6],[113,52],[166,3],[170,32],[203,6],[210,6],[217,16],[234,6],[241,26]]},"1080":{"position":[[244,51]]},"1082":{"position":[[0,3],[87,3],[91,53]]},"1084":{"position":[[0,3],[96,3],[100,53]]},"1086":{"position":[[0,32],[33,82],[116,43],[504,27],[663,17],[681,118]]},"1090":{"position":[[0,30],[232,7]]},"1092":{"position":[[0,12]]},"1094":{"position":[[187,15]]},"1099":{"position":[[86,3],[151,24],[176,3],[180,84],[265,18]]},"1101":{"position":[[77,18],[96,3],[100,3],[104,5],[110,7],[171,5],[266,4],[363,4]]},"1107":{"position":[[45,8],[54,8],[63,4],[68,9],[83,10],[94,64],[159,56],[216,54],[271,8],[280,9],[399,10],[513,9],[694,10],[873,8],[882,9],[1004,10],[1143,9],[1339,10]]},"1110":{"position":[[0,19],[20,5],[26,5],[32,5],[38,4],[43,3],[47,2]]},"1112":{"position":[[0,16],[42,33]]},"1114":{"position":[[0,7],[25,3]]},"1117":{"position":[[0,5],[6,39],[46,7],[54,6],[61,6],[68,6],[75,6],[82,22],[105,22],[128,73],[202,3],[206,64],[275,74]]},"1119":{"position":[[0,7],[8,3],[12,50],[63,3],[261,12],[274,3],[278,7],[286,3],[290,26],[317,3],[321,40],[362,3],[509,10],[520,3]]},"1121":{"position":[[0,23],[24,5],[35,6],[42,3],[46,3],[50,12],[63,7],[71,6],[78,6],[85,4],[90,8],[99,4],[104,5],[110,5],[116,5],[122,53],[176,3],[180,12],[193,39],[233,19],[277,19]]},"1123":{"position":[[0,76],[77,34]]},"1125":{"position":[[0,17],[359,42],[885,60],[1114,2],[1169,2]]},"1127":{"position":[[0,14],[169,27],[630,2],[685,2]]},"1129":{"position":[[0,5],[6,38],[45,13],[359,5],[365,40],[406,13]]},"1136":{"position":[[0,5],[6,15],[22,12],[35,23],[59,29],[89,14],[104,5],[110,84],[195,16],[212,22],[235,20],[256,77],[334,90]]},"1138":{"position":[[99,10],[110,5],[116,39]]},"1141":{"position":[[0,6],[160,6]]},"1143":{"position":[[0,9],[10,45],[56,8],[65,30],[96,26],[123,27]]},"1145":{"position":[[10,7],[18,34],[53,13],[76,7],[84,17],[102,13],[127,7],[135,37],[173,13],[198,7],[206,17],[272,10],[283,9],[326,16],[343,6]]},"1147":{"position":[[0,10],[11,64],[76,56],[133,54],[188,11],[200,19],[220,24],[245,25],[271,18],[290,21],[312,26],[362,18],[433,35],[469,38],[508,27],[536,49],[586,12],[599,46],[646,68],[715,8],[724,3],[728,3],[732,12],[745,25],[771,46],[818,56],[875,17],[896,4],[901,2]]},"1149":{"position":[[0,4],[14,5],[66,3],[113,40]]},"1162":{"position":[[0,5],[389,4],[812,13]]},"1166":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"1170":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"1183":{"position":[[201,18],[285,17],[562,26]]},"1187":{"position":[[256,10],[917,5],[923,10]]},"1199":{"position":[[0,8],[13,13],[74,11]]},"1204":{"position":[[0,3],[19,2],[30,9]]},"1206":{"position":[[0,13],[27,2],[45,8],[69,5]]},"1210":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"1212":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"1214":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"1216":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"1218":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"1220":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"1223":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"1225":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"1228":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"1230":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"1232":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"1234":{"position":[[4,33]]},"1236":{"position":[[0,89],[90,157]]},"1240":{"position":[[191,2],[199,8],[242,16],[286,31],[354,31]]},"1242":{"position":[[361,3]]},"1244":{"position":[[12,34],[225,28],[821,29],[856,41],[1154,5],[1388,5]]},"1246":{"position":[[302,11],[314,2],[322,49],[372,1],[379,32],[424,65],[498,87],[594,40],[635,11]]},"1252":{"position":[[102,50]]},"1254":{"position":[[0,171],[172,34],[207,31],[239,41]]},"1256":{"position":[[0,100],[101,123],[225,116]]},"1258":{"position":[[0,41]]},"1260":{"position":[[0,75],[76,12],[181,1],[357,9],[385,1],[392,1],[399,36],[441,1],[448,37]]},"1262":{"position":[[6,35],[44,28],[79,20],[102,27],[130,11],[212,3],[220,7],[228,8],[239,15],[264,2],[276,31],[310,21],[332,8],[596,1],[602,1],[649,3],[674,11]]},"1264":{"position":[[6,6],[21,24],[48,18],[69,10],[80,11],[162,3],[170,7],[178,28],[356,3],[417,5],[431,14],[470,2],[482,31],[516,20],[705,1],[711,1],[781,11]]},"1266":{"position":[[0,61],[68,1],[76,51]]},"1268":{"position":[[5,5]]},"1271":{"position":[[90,35],[366,1],[370,18],[400,3],[404,8],[415,24],[444,19],[464,3],[468,48],[517,3],[521,51],[584,3],[588,8],[599,31],[633,7],[641,3],[645,14],[662,31],[694,3],[698,47],[748,14],[765,6],[774,19]]},"1273":{"position":[[100,5],[286,81]]},"1280":{"position":[[5,9],[15,40],[56,13],[74,1],[78,3],[88,14],[131,4],[144,2],[176,5],[281,1],[336,1],[388,1],[432,8],[899,1],[955,1],[1045,1],[1135,1],[1237,1],[1277,1],[1286,1],[1302,1],[1311,1],[1328,1],[1337,1],[1370,1],[1408,1],[1444,1],[1453,11],[1465,33],[1646,1],[1689,1],[1699,1],[1819,1],[1865,1],[1893,1],[2125,1],[2191,1],[2248,1],[2266,1],[2287,2],[2342,10],[2543,1],[2569,1],[2598,3],[3190,5],[3196,1],[3326,1],[3383,1],[3435,1],[3479,1],[3539,1],[3629,1],[3719,1],[3801,1],[3841,1],[3850,1],[3866,1],[3875,1],[3892,1],[3901,1],[3934,1],[3972,1],[4008,1],[4017,1],[4059,1],[4069,1],[4115,1],[4161,1],[4189,1],[4284,1],[4350,1],[4407,1],[4425,1],[4446,2],[4501,1],[4527,1]]},"1282":{"position":[[130,4],[190,4],[257,4]]},"1286":{"position":[[212,40],[253,13],[271,1],[275,3],[285,14],[328,4],[341,2]]},"1288":{"position":[[0,15],[33,20],[71,4]]},"1290":{"position":[[127,36],[170,16],[221,12],[240,5],[269,8],[278,6],[287,1],[331,6],[340,13],[371,51],[460,5],[466,13],[488,51],[540,5],[546,15],[564,27],[594,29]]},"1294":{"position":[[0,12],[88,5],[239,100],[352,13]]},"1296":{"position":[[69,37],[187,1],[189,16]]},"1300":{"position":[[106,12],[162,1]]},"1302":{"position":[[95,1]]},"1304":{"position":[[107,1],[137,6]]},"1307":{"position":[[139,16]]},"1311":{"position":[[0,24],[25,14],[40,32]]},"1315":{"position":[[24,1],[37,1],[116,1],[307,1],[352,1]]},"1317":{"position":[[22,1],[40,1],[44,1],[52,1],[158,1],[176,1],[180,1],[188,1],[296,1]]},"1320":{"position":[[37,19],[89,1],[189,1]]},"1322":{"position":[[0,4],[317,2],[353,2],[356,2],[707,2],[719,2],[743,2],[777,2],[803,2],[817,2],[832,2],[880,2],[893,1],[948,2],[1001,1],[1033,1],[1064,1],[1121,4],[1176,2],[1228,2],[1236,1],[1253,2],[1266,2],[1269,2],[1345,2],[1442,1],[1454,1],[1496,1],[1518,1],[1541,1],[1588,1],[1638,1],[1685,1],[1710,1],[1744,1],[1776,1],[1821,1],[1871,1]]},"1331":{"position":[[4,8]]},"1337":{"position":[[72,1],[161,15],[253,1],[297,1],[335,1],[452,1],[564,1]]},"1342":{"position":[[0,35]]},"1346":{"position":[[89,38],[158,1],[306,1],[369,1],[397,1],[425,1],[540,1],[582,1],[624,1]]},"1351":{"position":[[271,1],[494,3],[498,14],[513,32],[546,15]]},"1354":{"position":[[0,24],[25,23],[49,5],[55,3]]},"1356":{"position":[[0,26],[179,20],[495,17],[801,16]]},"1358":{"position":[[0,31],[261,10],[341,1]]},"1361":{"position":[[0,88],[89,62]]},"1363":{"position":[[0,115],[116,80],[197,64],[262,47],[310,50]]},"1365":{"position":[[0,78],[79,65]]},"1368":{"position":[[0,150]]},"1370":{"position":[[335,30],[498,38],[537,15],[566,1],[576,1],[593,1],[598,2],[610,1],[614,1],[619,1],[630,1],[634,1]]},"1377":{"position":[[197,1],[249,1],[503,1],[542,1],[771,1],[775,1],[1022,1],[1067,1],[1137,1],[1173,1],[1190,1],[1252,1],[1285,1],[1358,2],[1459,2],[1483,2],[1580,1],[1628,1],[1683,1],[1803,1],[1841,1],[1991,1],[2026,1],[2037,1],[2097,1],[2163,1],[2175,1],[2197,1],[2209,1],[2231,1],[2236,1],[2251,2],[2257,2],[2271,2],[2310,1],[2319,1],[2324,1],[2376,1],[2435,1],[2564,1],[2577,1],[2650,1],[2678,1],[2735,1],[2751,1]]},"1382":{"position":[[83,1],[102,1],[121,1],[141,1],[160,1],[180,1],[209,1],[267,1],[293,1],[323,1],[388,1],[485,1],[518,1],[524,1],[551,1],[556,1],[589,1],[594,1],[606,3],[610,1],[625,1],[714,1],[762,1],[764,8],[775,1],[862,1],[893,2],[930,1],[1041,1],[1069,1],[1097,1],[1130,3],[1203,3],[1209,1],[1250,1],[1291,1],[1324,3],[1406,3]]},"1384":{"position":[[0,4],[24,5]]},"1387":{"position":[[0,4],[14,5],[66,3],[113,40]]},"1400":{"position":[[0,5],[389,4],[812,13]]},"1404":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"1408":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"1414":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,2],[730,8],[766,15]]},"1417":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"1419":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[985,10],[1074,60],[1330,7],[1342,4],[1361,3],[1369,23],[1398,36],[1435,8],[1449,11],[1553,33],[1709,6],[1731,1],[1751,5],[1761,8],[1779,1],[1789,13],[1803,1],[1811,4],[1831,4],[1855,60],[1925,6],[1974,5],[1980,5],[1986,68],[2055,5],[2061,4],[2092,11],[2125,1],[2134,1],[2173,3],[2408,15],[2441,5],[2493,23]]},"1421":{"position":[[0,4],[24,5]]},"1424":{"position":[[0,8],[81,6],[90,7],[98,11],[176,3],[249,6],[561,6],[627,20],[753,3]]},"1426":{"position":[[0,10],[264,14],[377,2],[402,2],[405,2],[474,2],[477,2]]},"1430":{"position":[[122,1],[126,1],[139,3],[143,33],[177,17],[195,14]]},"1436":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"1438":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"1440":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"1442":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"1445":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"1452":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"1454":{"position":[[0,4]]},"1458":{"position":[[518,3],[535,3],[553,3],[571,3]]},"1465":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"1467":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"1470":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"1472":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"1474":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"1476":{"position":[[0,4]]},"1481":{"position":[[213,6]]},"1483":{"position":[[157,19]]},"1491":{"position":[[123,7],[199,18],[268,1],[270,10],[367,10],[387,1],[389,9],[403,23],[565,25],[657,8],[684,1]]},"1494":{"position":[[72,40]]},"1496":{"position":[[0,4]]},"1498":{"position":[[0,4],[37,7],[91,10],[109,4],[123,1],[134,4],[139,1],[150,1],[253,56],[429,5],[435,27],[463,29],[493,9],[510,1]]},"1500":{"position":[[8,1],[17,61],[93,62],[156,5],[162,29],[192,35],[228,4],[233,3],[253,26]]},"1502":{"position":[[6,3],[79,21],[172,8],[235,5],[241,20],[262,4],[274,1],[280,19],[300,4],[305,3],[324,25]]},"1504":{"position":[[75,36],[187,27],[215,5],[221,22],[244,2],[259,19],[279,4],[284,3],[295,1],[318,28]]},"1506":{"position":[[12,1],[21,7],[41,31],[73,45],[119,5],[125,19],[145,9],[167,18],[186,4],[211,38]]},"1508":{"position":[[78,24],[114,5],[132,61],[194,5],[200,24],[225,30],[256,4],[261,3],[287,22]]},"1510":{"position":[[0,5]]},"1517":{"position":[[29,7]]},"1519":{"position":[[30,1],[41,1],[43,3],[47,1],[181,1],[183,22],[206,1],[278,1],[353,1]]},"1521":{"position":[[30,1],[152,1],[154,22]]},"1527":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"1529":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"1531":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"1533":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"1536":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"1543":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"1545":{"position":[[0,8],[13,13],[74,11]]},"1550":{"position":[[0,3],[19,2],[30,9]]},"1552":{"position":[[0,13],[27,2],[45,8],[69,5]]},"1556":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"1558":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"1560":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"1562":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"1564":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"1566":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"1569":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"1571":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"1574":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"1576":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"1578":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"1580":{"position":[[0,32],[46,24],[77,46],[124,19],[150,6],[162,4]]},"1586":{"position":[[0,4],[5,2]]},"1588":{"position":[[5,40],[66,18],[131,5],[148,84],[255,4],[267,13],[314,7],[326,1],[361,15],[384,16],[475,31],[514,6],[614,35],[715,8],[731,46],[815,5],[824,1],[830,5],[846,19],[878,5],[891,1],[899,1],[917,6],[928,5],[955,31],[1019,72],[1153,4],[1158,8],[1218,15],[1254,7],[1282,7],[1297,10],[1315,4],[1340,1],[1356,7],[1394,2],[1417,2],[1437,7],[1451,2],[1463,3],[1473,12],[1490,5],[1496,7],[1507,3],[1519,13],[1538,3],[1557,13],[1594,12],[1621,10],[1645,22],[1726,51],[1780,16],[1797,5],[1811,11],[1825,3],[1831,16],[1850,3],[1951,3],[1957,16],[1978,2],[2089,4],[2110,1],[2112,6]]},"1590":{"position":[[14,1],[33,4],[44,2],[108,7],[131,11]]},"1592":{"position":[[0,4],[5,2]]},"1594":{"position":[[0,2],[3,14],[18,11],[37,4],[42,9],[95,2],[111,10]]},"1596":{"position":[[0,15],[21,2]]},"1598":{"position":[[4,12]]},"1600":{"position":[[0,15],[21,2]]},"1602":{"position":[[0,6],[65,1],[148,2],[151,9],[211,1],[412,2],[433,1]]},"1604":{"position":[[5,32]]},"1606":{"position":[[244,14],[293,1],[345,1],[384,1],[391,2],[400,1],[422,3],[495,3],[502,1],[515,1],[537,3],[598,3],[609,1],[614,1],[633,3],[661,1],[676,1],[692,2],[708,1],[723,1],[794,3],[874,2],[877,2],[880,1],[888,2],[891,2],[952,2],[955,2],[958,1],[966,2],[969,2],[1030,2],[1033,2],[1036,1],[1044,2],[1047,2],[1272,69]]},"1610":{"position":[[69,11],[81,1],[98,1],[116,1],[140,1],[158,1],[189,1],[216,1],[218,8],[265,3],[354,10],[365,1],[367,10],[378,1],[380,8],[404,1],[425,1],[427,8],[476,3]]},"1612":{"position":[[0,4]]},"1618":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,10],[765,15]]},"1621":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"1623":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[971,5],[986,10],[1075,60],[1331,7],[1343,4],[1362,3],[1370,23],[1399,36],[1436,8],[1450,11],[1554,33],[1710,6],[1732,1],[1752,5],[1762,8],[1780,1],[1790,13],[1804,1],[1812,4],[1832,4],[1856,60],[1926,6],[1975,5],[1981,5],[1987,68],[2056,5],[2062,4],[2093,11],[2126,1],[2135,1],[2174,3],[2409,15],[2442,5],[2494,23]]},"1629":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"1631":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"1634":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"1636":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"1638":{"position":[[0,5],[22,4],[31,6],[38,6],[149,13],[204,6],[233,7],[246,5],[256,8],[270,10],[286,7]]},"1640":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"1645":{"position":[[148,12],[209,2],[330,5]]},"1650":{"position":[[43,6],[56,2],[92,2]]},"1652":{"position":[[0,18]]},"1654":{"position":[[24,1],[26,4],[183,7],[191,1],[193,1],[195,4],[281,7],[289,1]]},"1656":{"position":[[75,13]]},"1658":{"position":[[0,16],[26,16]]},"1661":{"position":[[0,5],[6,2],[11,6],[22,2],[39,14],[54,7],[62,9],[74,5],[86,1],[91,1],[95,8],[104,7],[112,18],[131,41],[173,43],[217,45]]},"1663":{"position":[[0,5],[6,4],[11,30],[42,6],[49,40],[107,4],[112,1],[114,1]]},"1667":{"position":[[0,31]]},"1669":{"position":[[39,1],[41,2],[44,1],[46,23],[70,2],[90,2],[93,1],[103,1],[108,2],[111,17],[143,1],[148,2],[151,2],[163,1],[179,1],[191,1],[193,2],[196,13],[215,1],[227,1],[232,1],[250,2],[276,2],[288,1],[290,2],[347,1],[357,1],[375,1],[382,1],[393,1],[400,1],[402,2],[405,9],[438,1],[440,2],[502,1],[514,1],[522,2],[525,26],[552,1],[561,2],[564,6],[571,1],[595,1],[597,2],[648,1],[667,2],[670,6],[677,1]]},"1671":{"position":[[0,14],[33,7],[126,1],[128,2],[131,1],[133,23],[157,2],[177,2],[180,1],[190,1],[195,2],[198,17],[230,1],[235,2],[238,2],[250,1],[266,1],[278,1],[280,2],[283,13],[302,1],[314,1],[319,1],[337,2],[363,2],[375,1],[377,2],[434,1],[444,1],[462,1],[469,1],[480,1],[487,1],[489,2],[492,9],[525,1],[527,2],[589,1],[601,1],[609,2],[612,26],[639,1],[648,2],[651,6],[658,1],[682,1],[684,2],[735,1],[754,2],[757,6],[764,1],[777,1],[800,2],[806,1],[833,1],[854,2],[862,1],[878,1],[899,1],[932,1],[954,1],[966,1],[985,1],[992,2],[1000,1],[1007,1],[1022,1],[1041,2],[1062,1],[1069,2],[1077,1],[1079,1],[1086,2],[1095,1],[1107,1]]},"1674":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[764,5]]},"1677":{"position":[[0,51],[52,16],[128,12],[141,4],[146,10],[157,12],[170,9],[180,63],[248,14],[263,13],[277,15],[361,20],[386,72],[459,13],[473,43],[517,68],[586,87],[674,14],[689,9],[699,49],[749,12],[762,28],[791,14],[917,55]]},"1679":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[764,5]]},"1681":{"position":[[4,5],[10,8],[19,12],[32,7],[40,4]]},"1683":{"position":[[0,51],[52,16]]},"1685":{"position":[[0,12],[13,4],[18,10],[29,12],[42,9],[52,63],[120,14],[135,13],[149,15],[233,20],[258,72],[331,13],[345,43],[389,68],[458,87],[546,14],[561,9],[571,49],[621,12],[634,28],[663,14],[789,55]]},"1687":{"position":[[4,14]]},"1689":{"position":[[0,15],[21,2]]},"1695":{"position":[[140,15],[156,30],[187,6]]},"1697":{"position":[[162,10],[173,6],[180,6],[187,12],[200,4]]},"1699":{"position":[[0,31],[81,48]]},"1704":{"position":[[600,20],[725,14],[789,10]]},"1706":{"position":[[11,7]]},"1708":{"position":[[3,5],[62,24],[87,33],[198,4],[203,28]]},"1718":{"position":[[134,38]]},"1722":{"position":[[146,6]]},"1724":{"position":[[0,48],[105,15],[121,91]]},"1729":{"position":[[3,7],[47,7]]},"1731":{"position":[[3,7],[47,7]]},"1734":{"position":[[0,59],[60,30],[91,30]]},"1736":{"position":[[0,4],[5,4],[193,2],[196,13]]},"1738":{"position":[[0,16],[69,1]]}}}],["0",{"_index":19,"t":{"875":{"position":[[90,2],[100,2],[144,2],[160,2],[208,4],[231,2],[365,2]]},"881":{"position":[[115,2],[129,2],[210,2]]},"883":{"position":[[96,2],[167,2],[183,2]]},"919":{"position":[[53,2]]},"927":{"position":[[1605,2],[1659,2]]},"945":{"position":[[253,1],[273,1],[839,1]]},"948":{"position":[[842,2],[913,2],[1021,2],[1290,2],[1346,2],[1454,2],[1993,2],[2282,2],[2374,2]]},"950":{"position":[[2511,2]]},"952":{"position":[[92,1],[121,1],[792,2],[808,2],[3089,3],[3209,2]]},"955":{"position":[[382,2],[724,2],[1007,2],[2131,2]]},"957":{"position":[[283,2],[512,2],[717,2],[1675,2]]},"959":{"position":[[824,2]]},"961":{"position":[[161,24],[186,3],[257,2],[260,3]]},"963":{"position":[[86,3],[142,1],[152,2],[367,1],[379,2],[468,2]]},"965":{"position":[[48,22]]},"979":{"position":[[2156,5]]},"1001":{"position":[[114,7],[172,7]]},"1016":{"position":[[0,17]]},"1061":{"position":[[50,5]]},"1170":{"position":[[1518,39],[1631,2]]},"1216":{"position":[[1279,2]]},"1218":{"position":[[223,2]]},"1280":{"position":[[343,2],[349,3],[353,3],[360,2],[975,2],[989,3],[993,3],[1000,3],[1011,4],[1065,2],[1076,2],[1079,3],[1083,3],[1087,2],[1094,3],[1158,3],[1162,3],[1169,3],[1177,2],[1191,4],[3390,2],[3396,3],[3400,3],[3407,2],[3559,2],[3573,3],[3577,3],[3584,3],[3595,4],[3649,2],[3660,2],[3663,3],[3667,3],[3671,2],[3678,3],[3742,3],[3746,3],[3753,3],[3761,2],[3775,4]]},"1315":{"position":[[169,14]]},"1317":{"position":[[38,1],[46,3],[61,3],[174,1],[182,3],[197,3]]},"1346":{"position":[[308,1]]},"1370":{"position":[[568,1],[578,1],[601,1]]},"1377":{"position":[[2260,1]]},"1379":{"position":[[44,74]]},"1382":{"position":[[958,2],[982,3]]},"1408":{"position":[[1518,39],[1631,2]]},"1419":{"position":[[303,1]]},"1519":{"position":[[131,5]]},"1521":{"position":[[56,5],[62,5]]},"1562":{"position":[[1279,2]]},"1564":{"position":[[223,2]]},"1606":{"position":[[648,3],[1217,2],[1229,2],[1253,2]]},"1623":{"position":[[303,1]]},"1669":{"position":[[105,2],[145,2],[165,2],[244,5],[359,5],[443,33],[600,25]]},"1671":{"position":[[192,2],[232,2],[252,2],[331,5],[446,5],[530,33],[687,25],[857,4],[894,4],[995,4],[1104,2]]}}}],["0&d(u,v)d0​d1​≤d(u,v)≤d0​d(u,v)d_0\\end{cases}\\tag{14}h(u,v)={10​d(u,v)≤d0​d(u,v)>d0​​(14",{"_index":1442,"t":{"1125":{"position":[[142,67]]}}}],["0&d(u,v)>d_1\\end{cases}\\tag{18}h(u,v)=⎩⎨⎧​1d0​−d1​d(u,v)−d1​​0​d(u,v)d1​​(18",{"_index":1462,"t":{"1125":{"position":[[1172,102]]}}}],["0&d(u,v)\\leq",{"_index":1465,"t":{"1127":{"position":[[97,12]]}}}],["0.1",{"_index":2684,"t":{"1382":{"position":[[826,5],[850,4]]}}}],["0.1959",{"_index":1856,"t":{"1220":{"position":[[1195,8]]},"1566":{"position":[[1195,8]]}}}],["0.2",{"_index":2687,"t":{"1382":{"position":[[855,6]]}}}],["0.2042",{"_index":1854,"t":{"1220":{"position":[[1175,7]]},"1566":{"position":[[1175,7]]}}}],["0.25",{"_index":179,"t":{"910":{"position":[[188,5]]}}}],["0.3",{"_index":2681,"t":{"1382":{"position":[[802,5]]}}}],["0.7",{"_index":2685,"t":{"1382":{"position":[[832,4]]}}}],["0.8",{"_index":2682,"t":{"1382":{"position":[[814,4],[837,5]]}}}],["0.88",{"_index":2686,"t":{"1382":{"position":[[843,6]]}}}],["0.9",{"_index":2648,"t":{"1377":{"position":[[2737,4]]},"1382":{"position":[[797,4],[808,5]]}}}],["0.94",{"_index":2734,"t":{"1412":{"position":[[630,4]]},"1616":{"position":[[630,4]]}}}],["0.99",{"_index":2683,"t":{"1382":{"position":[[819,6]]}}}],["0.998",{"_index":3045,"t":{"1463":{"position":[[1036,6]]},"1627":{"position":[[1036,6]]}}}],["01",{"_index":559,"t":{"945":{"position":[[500,2]]}}}],["012",{"_index":552,"t":{"945":{"position":[[370,3]]}}}],["0x3f3f3f3f",{"_index":138,"t":{"905":{"position":[[489,10]]},"959":{"position":[[131,10]]}}}],["0xf",{"_index":546,"t":{"945":{"position":[[301,3]]}}}],["0xff;//d",{"_index":1188,"t":{"1063":{"position":[[294,8],[1506,8]]}}}],["0维度的相加过程中出现了shape为(3",{"_index":3340,"t":{"1606":{"position":[[1080,24]]}}}],["0阶矩和1",{"_index":1491,"t":{"1141":{"position":[[167,33]]}}}],["1",{"_index":2,"t":{"873":{"position":[[64,1]]},"875":{"position":[[243,2],[331,2],[386,1]]},"883":{"position":[[63,21]]},"905":{"position":[[742,3],[772,2],[775,2]]},"923":{"position":[[198,4]]},"927":{"position":[[1597,2]]},"945":{"position":[[264,8],[342,1],[573,1],[605,1],[636,1],[739,1],[769,1],[807,1]]},"948":{"position":[[213,2],[1315,3],[1611,3],[1630,1],[1774,3],[2109,3]]},"950":{"position":[[1645,3],[1747,3]]},"952":{"position":[[76,1],[105,1],[143,1],[1055,2],[2864,3]]},"955":{"position":[[862,3],[923,3],[1935,3],[1985,3]]},"957":{"position":[[617,3],[659,3],[1576,3],[1613,3]]},"959":{"position":[[370,2],[568,1],[797,3]]},"963":{"position":[[200,2],[240,2],[293,3]]},"991":{"position":[[91,2]]},"1001":{"position":[[76,7],[93,10]]},"1016":{"position":[[18,12]]},"1022":{"position":[[78,57]]},"1121":{"position":[[254,1],[257,1],[260,1],[269,1],[272,1],[275,1],[298,1],[303,1],[306,1],[311,1],[314,1],[319,1]]},"1170":{"position":[[1669,2]]},"1212":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"1216":{"position":[[957,1]]},"1230":{"position":[[336,1],[955,12]]},"1262":{"position":[[308,1]]},"1264":{"position":[[514,1]]},"1271":{"position":[[364,1],[389,10],[413,1]]},"1280":{"position":[[338,4],[346,2],[367,3],[371,2],[374,2],[377,3],[978,3],[982,3],[986,2],[997,2],[1004,3],[1008,2],[1068,3],[1072,3],[1090,3],[1098,2],[1101,4],[1173,3],[1184,3],[1188,2],[1784,9],[1890,2],[3385,4],[3393,2],[3414,3],[3418,2],[3421,2],[3424,3],[3562,3],[3566,3],[3570,2],[3581,2],[3588,3],[3592,2],[3652,3],[3656,3],[3674,3],[3682,2],[3685,4],[3757,3],[3768,3],[3772,2],[4186,2]]},"1304":{"position":[[87,1]]},"1315":{"position":[[132,2],[184,13]]},"1317":{"position":[[186,1]]},"1322":{"position":[[1564,3],[1628,3],[1799,3]]},"1346":{"position":[[721,4]]},"1372":{"position":[[22,20]]},"1377":{"position":[[404,2],[407,2],[2233,2],[2288,2],[2321,2],[2437,2]]},"1382":{"position":[[961,3],[1243,4],[1382,4]]},"1408":{"position":[[1669,2]]},"1412":{"position":[[552,3]]},"1558":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"1562":{"position":[[957,1]]},"1576":{"position":[[336,1],[955,12]]},"1588":{"position":[[1823,1]]},"1606":{"position":[[0,30],[409,2],[441,5],[521,2],[555,3],[652,3],[663,3]]},"1610":{"position":[[100,3],[269,3],[480,3]]},"1616":{"position":[[552,3]]},"1661":{"position":[[20,1],[25,13],[93,1],[263,37]]},"1671":{"position":[[889,2]]},"1697":{"position":[[134,16]]},"1704":{"position":[[35,7]]},"1706":{"position":[[0,2]]},"1708":{"position":[[0,2]]},"1712":{"position":[[70,2],[190,2]]},"1714":{"position":[[84,2]]},"1716":{"position":[[91,2]]},"1722":{"position":[[100,2]]},"1729":{"position":[[0,2]]},"1731":{"position":[[0,2]]},"1738":{"position":[[46,1]]}}}],["1)&&(countout(1)==n",{"_index":660,"t":{"950":{"position":[[1625,19]]}}}],["1),indegree(0),outdegree(0",{"_index":190,"t":{"910":{"position":[[429,27]]},"950":{"position":[[304,27]]}}}],["1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点e的下一个索引为e+1的元素值由于−1",{"_index":933,"t":{"965":{"position":[[193,51]]}}}],["1)[\\frac{d(u,v)}{d_0}]^{2n}}\\tag{16}h(u,v)=1+(2​−1)[d0​d(u,v)​]2n1​(16",{"_index":1447,"t":{"1125":{"position":[[461,71]]}}}],["1)[\\frac{d_0}{d(u,v)}]^{2n}}\\tag{20}h(u,v)=1+(2​−1)[d(u,v)d0​​]2n1​(20",{"_index":1469,"t":{"1127":{"position":[[273,71]]}}}],["1)\\tag{13}s(k)=ceil(sk​×l−1)(13",{"_index":1430,"t":{"1119":{"position":[[210,32]]}}}],["1)的每一列复制三次为(3",{"_index":3343,"t":{"1606":{"position":[[1144,14]]}}}],["1)的矩阵与shape为(1",{"_index":3341,"t":{"1606":{"position":[[1105,15]]}}}],["1+max(getheight(t[rt].l),getheight(t[rt].r",{"_index":852,"t":{"955":{"position":[[1017,45]]},"957":{"position":[[727,45]]}}}],["1,0",{"_index":156,"t":{"905":{"position":[[778,4]]}}}],["1,0,1,0,0,1,0",{"_index":154,"t":{"905":{"position":[[727,14]]}}}],["1,0,1,1",{"_index":158,"t":{"905":{"position":[[790,8]]}}}],["1,0,n",{"_index":881,"t":{"955":{"position":[[1929,5],[1979,5]]},"957":{"position":[[1570,5],[1607,5]]},"959":{"position":[[791,5]]}}}],["1,1,0",{"_index":157,"t":{"905":{"position":[[783,6]]}}}],["1,1,0,1,1",{"_index":159,"t":{"905":{"position":[[799,11]]}}}],["1,l2+1,l2+p2",{"_index":909,"t":{"959":{"position":[[475,14]]}}}],["1,lb+1,lb+p2",{"_index":843,"t":{"955":{"position":[[508,14]]},"957":{"position":[[377,14]]}}}],["1,lb,lb+p2",{"_index":848,"t":{"955":{"position":[[851,10]]},"957":{"position":[[606,10]]}}}],["1.0",{"_index":133,"t":{"905":{"position":[[454,4]]}}}],["1.51",{"_index":1216,"t":{"1063":{"position":[[876,4]]}}}],["1.73",{"_index":3030,"t":{"1463":{"position":[[635,5]]},"1627":{"position":[[635,5]]}}}],["1.vector",{"_index":243,"t":{"923":{"position":[[22,8]]}}}],["10",{"_index":25,"t":{"875":{"position":[[196,2]]},"881":{"position":[[142,2],[151,3],[160,3]]},"883":{"position":[[109,2],[118,3],[136,3],[219,2]]},"905":{"position":[[683,3]]},"910":{"position":[[121,3],[287,3]]},"915":{"position":[[144,33]]},"1220":{"position":[[353,2],[894,2],[918,2]]},"1315":{"position":[[335,3]]},"1317":{"position":[[324,3]]},"1377":{"position":[[850,4],[2742,2]]},"1414":{"position":[[685,2]]},"1566":{"position":[[353,2],[894,2],[918,2]]},"1606":{"position":[[733,6]]},"1618":{"position":[[685,2]]},"1669":{"position":[[229,2]]},"1671":{"position":[[316,2]]}}}],["10,3.141590,\"method",{"_index":170,"t":{"910":{"position":[[38,19]]}}}],["10.multimap",{"_index":260,"t":{"923":{"position":[[567,11]]}}}],["100",{"_index":223,"t":{"915":{"position":[[77,42]]},"952":{"position":[[281,3]]},"979":{"position":[[687,4]]},"1315":{"position":[[325,4],[330,4]]},"1317":{"position":[[314,4],[319,4]]},"1440":{"position":[[874,3]]},"1531":{"position":[[874,3]]}}}],["1000",{"_index":41,"t":{"881":{"position":[[72,5]]},"1220":{"position":[[136,4],[326,18],[1023,4]]},"1440":{"position":[[857,4]]},"1531":{"position":[[857,4]]},"1566":{"position":[[136,4],[326,18],[1023,4]]}}}],["10000",{"_index":1839,"t":{"1220":{"position":[[320,5]]},"1566":{"position":[[320,5]]}}}],["1000000007",{"_index":891,"t":{"959":{"position":[[154,10]]}}}],["1010",{"_index":553,"t":{"945":{"position":[[390,7],[412,4],[462,4]]}}}],["106",{"_index":997,"t":{"979":{"position":[[957,4]]}}}],["108",{"_index":2258,"t":{"1300":{"position":[[164,3]]}}}],["10px",{"_index":3311,"t":{"1602":{"position":[[367,5]]}}}],["10的vector,初始化为3",{"_index":1071,"t":{"983":{"position":[[24,23]]}}}],["11",{"_index":789,"t":{"952":{"position":[[2726,2]]}}}],["11.hash_set",{"_index":261,"t":{"923":{"position":[[597,11]]}}}],["1111",{"_index":548,"t":{"945":{"position":[[321,6]]}}}],["111m",{"_index":2741,"t":{"1412":{"position":[[760,4]]},"1616":{"position":[[760,4]]}}}],["1125",{"_index":1753,"t":{"1212":{"position":[[195,5],[211,5],[467,5]]},"1558":{"position":[[195,5],[211,5],[467,5]]}}}],["11×1",{"_index":3485,"t":{"1699":{"position":[[150,18]]}}}],["11×1卷积核,每个filter对上一步的featur",{"_index":2266,"t":{"1304":{"position":[[14,28]]}}}],["12",{"_index":136,"t":{"905":{"position":[[474,2]]},"945":{"position":[[381,8]]},"1304":{"position":[[109,2]]},"1606":{"position":[[740,6]]}}}],["12.hash_multiset",{"_index":263,"t":{"923":{"position":[[629,16]]}}}],["120",{"_index":2569,"t":{"1377":{"position":[[780,5]]}}}],["120,210都是30的倍数,由于要找最大的,所以答案是210",{"_index":5,"t":{"873":{"position":[[108,33]]}}}],["13",{"_index":3327,"t":{"1606":{"position":[[747,4],[758,5]]}}}],["13.hash_map",{"_index":264,"t":{"923":{"position":[[666,11]]}}}],["1313×13个grid",{"_index":3517,"t":{"1706":{"position":[[75,12]]}}}],["14",{"_index":3328,"t":{"1606":{"position":[[752,5],[764,4],[775,5]]}}}],["14.hash_multimap",{"_index":265,"t":{"923":{"position":[[698,16]]}}}],["148",{"_index":1012,"t":{"979":{"position":[[1237,8]]}}}],["149",{"_index":972,"t":{"979":{"position":[[462,8]]}}}],["15",{"_index":3329,"t":{"1606":{"position":[[769,5],[781,4]]}}}],["16",{"_index":2566,"t":{"1377":{"position":[[669,3]]},"1412":{"position":[[600,3]]},"1606":{"position":[[786,7]]},"1616":{"position":[[600,3]]}}}],["18.65",{"_index":3029,"t":{"1463":{"position":[[626,5]]},"1627":{"position":[[626,5]]}}}],["18446744073709551615ull",{"_index":145,"t":{"905":{"position":[[602,24]]}}}],["1?'\\n",{"_index":863,"t":{"955":{"position":[[1324,8]]},"957":{"position":[[1026,8]]}}}],["1\\eta",{"_index":2443,"t":{"1337":{"position":[[545,10]]}}}],["1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;σ1\\sigma_1σ1​和σ2\\sigma_2σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr",{"_index":1656,"t":{"1185":{"position":[[592,119]]}}}],["1][b,c,1,1]的tensor",{"_index":3528,"t":{"1712":{"position":[[73,43]]}}}],["1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid",{"_index":3532,"t":{"1714":{"position":[[87,72]]}}}],["1][b,c,1,1]的tensor,该tensor",{"_index":3546,"t":{"1722":{"position":[[103,37]]}}}],["1]])12b",{"_index":2471,"t":{"1346":{"position":[[574,7]]}}}],["1],即reduce了dim=1",{"_index":2679,"t":{"1382":{"position":[[742,19]]}}}],["1_44=fd.img",{"_index":1034,"t":{"979":{"position":[[1685,12]]},"1065":{"position":[[629,12]]}}}],["1_44=fd_aug.img",{"_index":1036,"t":{"979":{"position":[[1724,16]]},"1065":{"position":[[668,16]]}}}],["1a",{"_index":2460,"t":{"1346":{"position":[[366,2]]}}}],["1e",{"_index":135,"t":{"905":{"position":[[471,2]]}}}],["1e5",{"_index":149,"t":{"905":{"position":[[677,3]]}}}],["1e9",{"_index":151,"t":{"905":{"position":[[693,3]]},"1170":{"position":[[1635,4]]},"1408":{"position":[[1635,4]]}}}],["1k−1",{"_index":2396,"t":{"1327":{"position":[[117,4]]}}}],["1t<1",{"_index":2064,"t":{"1260":{"position":[[443,4]]}}}],["1t>1",{"_index":2062,"t":{"1260":{"position":[[394,4]]}}}],["1})(r1​,r2​,…,rk−1",{"_index":3105,"t":{"1470":{"position":[[949,20]]},"1634":{"position":[[949,20]]}}}],["1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirect",{"_index":3071,"t":{"1467":{"position":[[1163,48]]},"1631":{"position":[[1163,48]]}}}],["1})p(r1​,r2​,…,rk​)=k=1∏k​p(rk​∣r1​,r2​,…,rk−1",{"_index":3100,"t":{"1470":{"position":[[745,48]]},"1634":{"position":[[745,48]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t",{"_index":2962,"t":{"1442":{"position":[[97,37]]},"1533":{"position":[[97,37]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t",{"_index":1342,"t":{"1094":{"position":[[254,50]]}}}],["1}\\right)x>n>>m",{"_index":640,"t":{"950":{"position":[[1086,10]]}}}],["cin>>row",{"_index":230,"t":{"917":{"position":[[29,9]]}}}],["cin>>row>>col",{"_index":236,"t":{"919":{"position":[[0,14]]}}}],["cin>>src>>dst",{"_index":644,"t":{"950":{"position":[[1140,14]]}}}],["ci×h×wc_i",{"_index":2489,"t":{"1351":{"position":[[0,12]]}}}],["ck={wi∣pi",{"_index":2071,"t":{"1262":{"position":[[341,9]]}}}],["ckc_kck",{"_index":2070,"t":{"1262":{"position":[[255,8],[267,8]]}}}],["class",{"_index":1930,"t":{"1228":{"position":[[72,5]]},"1232":{"position":[[614,6]]},"1377":{"position":[[276,5],[418,5]]},"1412":{"position":[[705,5]]},"1574":{"position":[[72,5]]},"1578":{"position":[[614,6]]},"1616":{"position":[[705,5]]},"1638":{"position":[[45,5]]}}}],["classifi",{"_index":2534,"t":{"1370":{"position":[[656,10]]},"1419":{"position":[[2269,11]]},"1456":{"position":[[0,8]]},"1623":{"position":[[2270,11]]}}}],["clear",{"_index":452,"t":{"931":{"position":[[781,7]]},"1463":{"position":[[930,5]]},"1627":{"position":[[930,5]]}}}],["clip",{"_index":1658,"t":{"1185":{"position":[[912,4],[924,4],[1000,9]]},"1212":{"position":[[588,4],[680,4]]},"1218":{"position":[[1019,4]]},"1486":{"position":[[639,4],[885,4]]},"1558":{"position":[[588,4],[680,4]]},"1564":{"position":[[1019,4]]}}}],["clip_directional_loss",{"_index":1824,"t":{"1218":{"position":[[1033,34]]},"1232":{"position":[[1162,21]]},"1564":{"position":[[1033,34]]},"1578":{"position":[[1162,21]]}}}],["clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtyp",{"_index":1768,"t":{"1212":{"position":[[872,75]]},"1558":{"position":[[872,75]]}}}],["clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtyp",{"_index":1772,"t":{"1212":{"position":[[1024,75]]},"1558":{"position":[[1024,75]]}}}],["clock",{"_index":3401,"t":{"1645":{"position":[[324,5]]}}}],["closure(t)\\epsilon",{"_index":1148,"t":{"1022":{"position":[[323,22]]}}}],["closure(t)ϵ−closure(t",{"_index":1149,"t":{"1022":{"position":[[347,22]]}}}],["cloud",{"_index":1733,"t":{"1206":{"position":[[39,5]]},"1552":{"position":[[39,5]]}}}],["cnn",{"_index":2111,"t":{"1273":{"position":[[0,21],[22,77]]},"1496":{"position":[[29,42]]},"1588":{"position":[[924,3],[951,3]]}}}],["cnn中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如fcn(fulli",{"_index":2105,"t":{"1271":{"position":[[126,68]]}}}],["cnn本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的cnn",{"_index":2108,"t":{"1271":{"position":[[280,83]]}}}],["cnn模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个cnn",{"_index":2104,"t":{"1271":{"position":[[0,84]]}}}],["cnn的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得cnn",{"_index":2112,"t":{"1273":{"position":[[106,175]]}}}],["cnn的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得cnn更适用于图像处理等任务。但也正是这种设计理念,使得cnn在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此self",{"_index":2113,"t":{"1273":{"position":[[368,106]]}}}],["cnt",{"_index":804,"t":{"952":{"position":[[2811,4],[2985,6]]}}}],["cntd0​d(u,v)≤d0​​(19",{"_index":1466,"t":{"1127":{"position":[[110,58]]}}}],["d_1",{"_index":1461,"t":{"1125":{"position":[[1163,5]]}}}],["d_1}&d_0\\leq",{"_index":1459,"t":{"1125":{"position":[[1139,12]]}}}],["d_1}&d_1\\leq",{"_index":1476,"t":{"1127":{"position":[[655,12]]}}}],["d_1}{d_0",{"_index":1458,"t":{"1125":{"position":[[1130,8]]},"1127":{"position":[[646,8]]}}}],["d_kd×dk",{"_index":2232,"t":{"1290":{"position":[[200,11]]}}}],["d_kl×dk",{"_index":2235,"t":{"1290":{"position":[[259,9]]}}}],["d_model",{"_index":2128,"t":{"1280":{"position":[[103,8],[136,7]]},"1286":{"position":[[300,8],[333,7]]}}}],["d_{kl}(p\\space",{"_index":2358,"t":{"1322":{"position":[[1238,14]]}}}],["d_{kl}(q",{"_index":2340,"t":{"1322":{"position":[[761,8]]}}}],["dall",{"_index":3243,"t":{"1506":{"position":[[0,9],[191,17]]},"1508":{"position":[[265,4]]}}}],["data",{"_index":463,"t":{"931":{"position":[[1097,6]]},"952":{"position":[[522,5]]},"1311":{"position":[[145,11]]},"1412":{"position":[[493,4]]},"1458":{"position":[[238,4],[453,4],[496,5],[502,4]]},"1463":{"position":[[865,4]]},"1481":{"position":[[773,4]]},"1616":{"position":[[493,4]]},"1627":{"position":[[865,4]]}}}],["data_dir",{"_index":2996,"t":{"1458":{"position":[[212,9]]}}}],["data_it",{"_index":2575,"t":{"1377":{"position":[[927,10],[1100,10]]}}}],["dataset",{"_index":2391,"t":{"1325":{"position":[[166,7]]},"1458":{"position":[[13,7],[174,7],[370,7]]}}}],["daveho@cs.umd.edu",{"_index":1206,"t":{"1063":{"position":[[716,19]]}}}],["david",{"_index":1204,"t":{"1063":{"position":[[697,5]]}}}],["ddd",{"_index":2224,"t":{"1286":{"position":[[201,5]]},"1288":{"position":[[29,3]]}}}],["ddpm",{"_index":2846,"t":{"1421":{"position":[[109,8]]}}}],["ddpm论文中的原图来分析ddpm",{"_index":1322,"t":{"1090":{"position":[[854,31]]}}}],["ddpm(denois",{"_index":1701,"t":{"1197":{"position":[[137,15]]}}}],["de(p,q)=(x−s)2+(y−t)2(1)d_e(p,q)=\\sqrt{(x",{"_index":1378,"t":{"1101":{"position":[[177,41]]}}}],["death",{"_index":1364,"t":{"1096":{"position":[[204,6]]}}}],["deathless",{"_index":1363,"t":{"1096":{"position":[[194,9]]}}}],["debug",{"_index":1049,"t":{"979":{"position":[[1941,9],[2036,9],[2058,7]]},"1065":{"position":[[885,9],[980,9],[1002,7]]}}}],["decod",{"_index":1571,"t":{"1166":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"1183":{"position":[[254,30]]},"1187":{"position":[[762,8]]},"1296":{"position":[[179,7]]},"1404":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"1417":{"position":[[33,7]]},"1445":{"position":[[109,7]]},"1467":{"position":[[452,7]]},"1536":{"position":[[109,7]]},"1621":{"position":[[33,7]]},"1631":{"position":[[452,7]]}}}],["decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用teach",{"_index":1580,"t":{"1168":{"position":[[215,82]]},"1406":{"position":[[215,82]]}}}],["decoder来说,它的输入是中间产物(即gener",{"_index":1681,"t":{"1187":{"position":[[806,39]]}}}],["decoder每一步的输出是一个经过softmax的prob",{"_index":1544,"t":{"1162":{"position":[[119,37]]},"1400":{"position":[[119,37]]}}}],["decoder的任务是生成输出,可以根据是否一次性生成输出分为autoregressive(自回归,abbr",{"_index":1536,"t":{"1160":{"position":[[0,55]]},"1398":{"position":[[0,55]]}}}],["decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的decod",{"_index":1560,"t":{"1162":{"position":[[988,68]]},"1400":{"position":[[988,68]]}}}],["decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向decoder的输出中加入end符号的生成,即每一次输出除了词汇表的所有词汇外还有end符号的概率,当end",{"_index":1552,"t":{"1162":{"position":[[610,155]]},"1400":{"position":[[610,155]]}}}],["decoder的结构训练生成模型的decod",{"_index":1688,"t":{"1187":{"position":[[1134,25]]}}}],["decoder结构,将每一层对应的featur",{"_index":3477,"t":{"1697":{"position":[[28,24]]}}}],["decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。nat的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于at",{"_index":1541,"t":{"1160":{"position":[[252,158]]},"1398":{"position":[[252,158]]}}}],["decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的featur",{"_index":3472,"t":{"1695":{"position":[[214,62]]}}}],["decoder阶段,每个block",{"_index":3470,"t":{"1695":{"position":[[80,32]]}}}],["decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token",{"_index":1540,"t":{"1160":{"position":[[101,150]]},"1398":{"position":[[101,150]]}}}],["decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(encoder)的输出。特别地,首个时间步的输入是begin符号以及编码器(encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(encod",{"_index":1546,"t":{"1162":{"position":[[230,158]]},"1400":{"position":[[230,158]]}}}],["decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,encod",{"_index":1572,"t":{"1166":{"position":[[359,50]]},"1404":{"position":[[359,50]]}}}],["deep",{"_index":1642,"t":{"1183":{"position":[[873,4]]}}}],["def",{"_index":1082,"t":{"987":{"position":[[89,6]]},"1228":{"position":[[286,3]]},"1377":{"position":[[307,3],[364,3],[443,3],[855,3],[896,3],[1297,3],[1364,3],[1427,3]]},"1574":{"position":[[286,3]]}}}],["defin",{"_index":110,"t":{"905":{"position":[[11,7],[52,7],[100,7],[133,7],[206,7],[263,7],[301,7],[352,7],[373,7],[404,7],[437,7],[459,7],[477,7]]},"948":{"position":[[74,7]]},"950":{"position":[[76,7]]},"952":{"position":[[50,7],[63,7],[78,7],[94,7],[107,7],[123,7],[145,7],[210,7],[240,7],[265,7],[331,7]]},"955":{"position":[[40,7]]},"957":{"position":[[40,7]]},"959":{"position":[[40,7],[78,7],[119,7],[142,7]]},"1280":{"position":[[283,6],[901,6],[3328,6]]},"1434":{"position":[[513,6]]},"1525":{"position":[[513,6]]}}}],["delta",{"_index":2967,"t":{"1442":{"position":[[294,8]]},"1533":{"position":[[294,8]]}}}],["deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt",{"_index":2966,"t":{"1442":{"position":[[236,54]]},"1533":{"position":[[236,54]]}}}],["delta}^{\\delta}\\sum_{b",{"_index":2516,"t":{"1358":{"position":[[131,24]]}}}],["delta}^{\\delta}{v_{a,b}*x_{i_a,j+b",{"_index":2517,"t":{"1358":{"position":[[156,37]]}}}],["demonstr",{"_index":2754,"t":{"1412":{"position":[[1039,13]]},"1616":{"position":[[1039,13]]}}}],["denois",{"_index":3246,"t":{"1510":{"position":[[26,9]]}}}],["denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从gaussian",{"_index":1704,"t":{"1197":{"position":[[362,56]]}}}],["depend",{"_index":1265,"t":{"1065":{"position":[[75,6]]},"1472":{"position":[[597,16]]},"1636":{"position":[[597,16]]}}}],["depend以及mak",{"_index":965,"t":{"979":{"position":[[79,15]]}}}],["depend和mak",{"_index":949,"t":{"969":{"position":[[346,14]]},"973":{"position":[[152,14]]}}}],["deploy",{"_index":1924,"t":{"1225":{"position":[[20,10]]},"1571":{"position":[[20,10]]}}}],["depth",{"_index":3483,"t":{"1699":{"position":[[32,24]]}}}],["dequ",{"_index":84,"t":{"901":{"position":[[57,5]]},"981":{"position":[[176,10]]}}}],["dequed1(18)h(u,v)=\\begin{cases}1&d(u,v)w2(24)h(u,v)=\\begin{cases}1&d(u,v)d00d(u,v)≤d0(19)h(u,v)=\\begin{cases}1&d(u,v)>d_0",{"_index":1464,"t":{"1127":{"position":[[30,66]]}}}],["h(u,v)={1d(u,v)>d0d(u,v)−d1d0−d1d1≤d(u,v)≤d00d(u,v)d_0",{"_index":1475,"t":{"1127":{"position":[[537,92]]}}}],["h(u,v)={1d(u,v)≤d00d(u,v)>d0(14)h(u,v)=\\begin{cases}1&d(u,v)\\leq",{"_index":1440,"t":{"1125":{"position":[[71,64]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v",{"_index":1470,"t":{"1127":{"position":[[345,68]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v)作为截止频率d0d_0d0",{"_index":1448,"t":{"1125":{"position":[[533,69]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的1/2时的d(u,v)d(u,v)d(u,v",{"_index":1451,"t":{"1125":{"position":[[729,62]]}}}],["h,t",{"_index":739,"t":{"952":{"position":[[1182,4]]}}}],["h_k",{"_index":3106,"t":{"1470":{"position":[[1018,3]]},"1634":{"position":[[1018,3]]}}}],["han",{"_index":3143,"t":{"1481":{"position":[[220,8]]}}}],["happen",{"_index":2116,"t":{"1276":{"position":[[74,7]]}}}],["hash",{"_index":262,"t":{"923":{"position":[[609,19],[646,19],[678,19],[715,19]]}}}],["hat{f}\\|_2+\\lambda_\\text{p}\\mathcal{l}_\\text{p}(i\\hat{m})+\\lambda_\\text{g}\\mathcal{l}_\\text{g}(i\\hat{m})l=∥im−im^∥2​+∥f−f^​∥2​+λp​lp​(im^)+λg​lg​(im",{"_index":3066,"t":{"1467":{"position":[[691,151]]},"1631":{"position":[[691,151]]}}}],["head",{"_index":1528,"t":{"1158":{"position":[[57,4]]},"1162":{"position":[[790,4],[913,4],[968,4],[1363,4]]},"1282":{"position":[[31,4]]},"1286":{"position":[[122,4]]},"1292":{"position":[[24,4]]},"1396":{"position":[[57,4]]},"1400":{"position":[[790,4],[913,4],[968,4],[1363,4]]}}}],["heap",{"_index":1088,"t":{"991":{"position":[[30,5]]}}}],["heap.clear",{"_index":1089,"t":{"991":{"position":[[36,13]]}}}],["heap.empti",{"_index":1091,"t":{"991":{"position":[[63,13]]}}}],["heap.push",{"_index":1092,"t":{"991":{"position":[[107,10]]}}}],["heap.siz",{"_index":1090,"t":{"991":{"position":[[50,12]]}}}],["help",{"_index":2198,"t":{"1280":{"position":[[2769,5]]}}}],["hhfq",{"_index":1972,"t":{"1230":{"position":[[705,4]]},"1576":{"position":[[705,4]]}}}],["high",{"_index":2752,"t":{"1412":{"position":[[1007,4]]},"1616":{"position":[[1007,4]]}}}],["higher",{"_index":2316,"t":{"1322":{"position":[[90,6],[132,6]]}}}],["highest",{"_index":2172,"t":{"1280":{"position":[[1906,7],[4202,7]]}}}],["hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,alexnet的表现远远超过了其他参赛的网络模型,并且在imagenet",{"_index":2272,"t":{"1307":{"position":[[55,83]]}}}],["hit",{"_index":1179,"t":{"1063":{"position":[[114,3],[1326,3]]}}}],["hk×wkh_k",{"_index":3090,"t":{"1470":{"position":[[543,8],[862,8]]},"1634":{"position":[[543,8],[862,8]]}}}],["hold",{"_index":2906,"t":{"1434":{"position":[[20,5]]},"1525":{"position":[[20,5]]}}}],["hollings@cs.umd.edu",{"_index":1210,"t":{"1063":{"position":[[783,21]]}}}],["hollingsworth",{"_index":1209,"t":{"1063":{"position":[[769,13]]}}}],["honglak",{"_index":3148,"t":{"1481":{"position":[[270,7]]}}}],["hope",{"_index":2927,"t":{"1434":{"position":[[940,4]]},"1525":{"position":[[940,4]]}}}],["host",{"_index":987,"t":{"979":{"position":[[735,4],[805,4]]}}}],["host_cc",{"_index":998,"t":{"979":{"position":[[962,7]]}}}],["hovemey",{"_index":1205,"t":{"1063":{"position":[[706,9]]}}}],["html",{"_index":1928,"t":{"1225":{"position":[[120,4]]},"1571":{"position":[[120,4]]}}}],["http://127.0.0.1:7890",{"_index":2546,"t":{"1377":{"position":[[199,23]]}}}],["http_proxi",{"_index":3420,"t":{"1654":{"position":[[244,10]]}}}],["http_proxy=http://127.0.0.1:7890",{"_index":3415,"t":{"1654":{"position":[[100,32]]}}}],["https://127.0.0.1:7890",{"_index":2548,"t":{"1377":{"position":[[251,24]]}}}],["https://arxiv.org/pdf/2404.02905",{"_index":3369,"t":{"1625":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.06525",{"_index":2703,"t":{"1410":{"position":[[0,37]]},"1614":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.11838",{"_index":2903,"t":{"1432":{"position":[[0,37]]},"1523":{"position":[[0,37]]}}}],["https://blog.csdn.net/f_zyj/article/details/51594851",{"_index":241,"t":{"921":{"position":[[4,52]]}}}],["https://blog.csdn.net/yeziyezi210/article/details/103864518",{"_index":2245,"t":{"1296":{"position":[[4,64]]}}}],["https://download.csdn.net/download/f_zyj/9988653",{"_index":242,"t":{"921":{"position":[[57,48]]}}}],["https://www.bilibili.com/video/bv12u411s7us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1164,"t":{"1048":{"position":[[284,107]]}}}],["https://www.bilibili.com/video/bv13r4y1m7sq/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1171,"t":{"1048":{"position":[[732,107]]}}}],["https://www.bilibili.com/video/bv1pl4y1e7re/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1161,"t":{"1048":{"position":[[121,107]]}}}],["https://www.bilibili.com/video/bv1vm4y1q7xb/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1167,"t":{"1048":{"position":[[458,107]]}}}],["https://www.jianshu.com/p/41c15d301542",{"_index":3358,"t":{"1612":{"position":[[5,38]]}}}],["https_proxi",{"_index":3421,"t":{"1654":{"position":[[261,11]]}}}],["https_proxy=https://127.0.0.1:7890",{"_index":3416,"t":{"1654":{"position":[[140,34]]}}}],["hung",{"_index":3178,"t":{"1481":{"position":[[702,4]]}}}],["hw4",{"_index":3015,"t":{"1460":{"position":[[53,4]]}}}],["hw×cihw",{"_index":2486,"t":{"1349":{"position":[[51,15]]}}}],["hyperparamet",{"_index":2407,"t":{"1329":{"position":[[80,14]]}}}],["hyperstyl",{"_index":1907,"t":{"1223":{"position":[[20,10],[180,10]]},"1569":{"position":[[20,10],[180,10]]}}}],["h×wh",{"_index":3092,"t":{"1470":{"position":[[600,4]]},"1634":{"position":[[600,4]]}}}],["h′以及w′h'以及w'h′以及w",{"_index":2498,"t":{"1351":{"position":[[177,24]]}}}],["i'll",{"_index":1353,"t":{"1096":{"position":[[73,4],[125,4]]}}}],["i)n(0,i",{"_index":2968,"t":{"1442":{"position":[[331,8]]},"1533":{"position":[[331,8]]}}}],["i)xt​∼n(0,i",{"_index":2973,"t":{"1442":{"position":[[410,12]]},"1533":{"position":[[410,12]]}}}],["i+1",{"_index":818,"t":{"952":{"position":[[3182,4]]}}}],["i,a,b",{"_index":737,"t":{"952":{"position":[[1144,6]]}}}],["i,j",{"_index":803,"t":{"952":{"position":[[2802,4]]}}}],["i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w",{"_index":2505,"t":{"1356":{"position":[[27,49]]}}}],["i/o",{"_index":79,"t":{"899":{"position":[[188,5]]}}}],["i440fxsupport",{"_index":1046,"t":{"979":{"position":[[1880,14]]},"1065":{"position":[[824,14]]}}}],["i<0",{"_index":744,"t":{"952":{"position":[[1316,5],[1379,5]]}}}],["i<=k",{"_index":775,"t":{"952":{"position":[[2386,5]]}}}],["ir2",{"_index":902,"t":{"959":{"position":[[352,9]]}}}],["if(la>ra",{"_index":835,"t":{"955":{"position":[[365,9],[707,9]]},"957":{"position":[[266,9],[495,9]]}}}],["if(n==0||m==0",{"_index":681,"t":{"950":{"position":[[2300,15]]}}}],["if(num==n",{"_index":679,"t":{"950":{"position":[[2196,10]]}}}],["if(read_key(&keycod",{"_index":1183,"t":{"1063":{"position":[[161,22],[1373,22]]}}}],["if(rt",{"_index":911,"t":{"959":{"position":[[560,7]]}}}],["if(rt==0",{"_index":851,"t":{"955":{"position":[[990,9],[1380,9],[1495,9],[1611,9]]},"957":{"position":[[700,9],[1061,9],[1168,9],[1276,9]]}}}],["if(t[w].l!=0",{"_index":856,"t":{"955":{"position":[[1195,13]]},"957":{"position":[[897,13]]}}}],["if(t[w].r!=0",{"_index":858,"t":{"955":{"position":[[1225,13]]},"957":{"position":[[927,13]]}}}],["if(topologicalsort",{"_index":687,"t":{"950":{"position":[[2423,22]]}}}],["ifm",{"_index":3305,"t":{"1602":{"position":[[266,3],[300,3],[339,3],[379,3]]}}}],["ifndef",{"_index":693,"t":{"952":{"position":[[37,7]]}}}],["ihpf",{"_index":1463,"t":{"1127":{"position":[[15,14]]}}}],["iii",{"_index":2059,"t":{"1260":{"position":[[353,3]]},"1419":{"position":[[1338,3],[1365,3]]},"1623":{"position":[[1339,3],[1366,3]]}}}],["illustr",{"_index":2103,"t":{"1268":{"position":[[11,12]]}}}],["ilpf",{"_index":1434,"t":{"1125":{"position":[[18,14],[37,4]]}}}],["im^=d(f^)\\hat{im}=\\mathcal{d}(\\hat{f})im^=d(f",{"_index":3063,"t":{"1467":{"position":[[569,48]]},"1631":{"position":[[569,48]]}}}],["imag",{"_index":1641,"t":{"1183":{"position":[[845,5]]},"1185":{"position":[[977,5]]},"1218":{"position":[[1104,5]]},"1220":{"position":[[1724,5]]},"1230":{"position":[[282,5],[366,5],[513,5],[844,5]]},"1232":{"position":[[45,35],[128,8]]},"1412":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"1414":{"position":[[353,5],[382,5],[417,5],[569,5]]},"1417":{"position":[[66,5],[244,5]]},"1432":{"position":[[62,5]]},"1434":{"position":[[57,5],[840,5]]},"1463":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"1467":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"1474":{"position":[[224,5],[294,5]]},"1478":{"position":[[0,10],[202,5]]},"1481":{"position":[[610,5]]},"1523":{"position":[[62,5]]},"1525":{"position":[[57,5],[840,5]]},"1564":{"position":[[1104,5]]},"1566":{"position":[[1724,5]]},"1576":{"position":[[282,5],[366,5],[513,5],[844,5]]},"1578":{"position":[[45,35],[128,8]]},"1586":{"position":[[31,7]]},"1588":{"position":[[1199,5],[1571,5],[2055,5]]},"1616":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"1618":{"position":[[353,5],[382,5],[417,5],[569,5]]},"1621":{"position":[[66,5],[244,5]]},"1627":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"1631":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"1640":{"position":[[224,5],[294,5]]}}}],["imagenet",{"_index":1849,"t":{"1220":{"position":[[1009,8],[1327,10],[1364,8]]},"1412":{"position":[[669,8],[807,8]]},"1463":{"position":[[509,8]]},"1566":{"position":[[1009,8],[1327,10],[1364,8]]},"1616":{"position":[[669,8],[807,8]]},"1627":{"position":[[509,8]]}}}],["imagen将压缩版本的图片作为gener",{"_index":1622,"t":{"1183":{"position":[[353,28]]}}}],["imagen的实验结果,相对于decoder即diffus",{"_index":1626,"t":{"1183":{"position":[[447,34]]}}}],["image数据,在传入visdom时仍需要先转化为numpi",{"_index":3262,"t":{"1519":{"position":[[355,35]]}}}],["image,encod",{"_index":3055,"t":{"1467":{"position":[[83,13]]},"1631":{"position":[[83,13]]}}}],["impact",{"_index":1639,"t":{"1183":{"position":[[791,9]]}}}],["import",{"_index":1633,"t":{"1183":{"position":[[623,9]]},"1280":{"position":[[3229,6],[3242,6],[3274,6],[3293,6]]},"1315":{"position":[[269,6],[292,6]]},"1317":{"position":[[258,6],[281,6]]},"1322":{"position":[[1474,6]]},"1377":{"position":[[0,6],[13,6],[43,6],[73,6],[105,6],[141,6],[162,6]]},"1463":{"position":[[1250,9]]},"1519":{"position":[[12,6]]},"1521":{"position":[[12,6]]},"1583":{"position":[[0,6]]},"1606":{"position":[[259,6],[278,6]]},"1627":{"position":[[1250,9]]}}}],["improv",{"_index":1635,"t":{"1183":{"position":[[702,8]]},"1463":{"position":[[555,7],[578,9]]},"1627":{"position":[[555,7],[578,9]]}}}],["in[maxn",{"_index":894,"t":{"959":{"position":[[255,9]]}}}],["incept",{"_index":1647,"t":{"1185":{"position":[[57,9]]},"1220":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"1463":{"position":[[596,9],[641,9]]},"1566":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"1627":{"position":[[596,9],[641,9]]}}}],["includ",{"_index":7,"t":{"875":{"position":[[0,8]]},"881":{"position":[[0,8]]},"925":{"position":[[2062,8]]},"927":{"position":[[1443,8],[1463,8]]},"948":{"position":[[0,8],[20,8],[38,8]]},"950":{"position":[[0,8],[21,8],[41,8],[59,8]]},"963":{"position":[[0,8]]},"999":{"position":[[0,8]]},"1063":{"position":[[1005,8],[1034,8],[1061,8],[1088,8],[1112,8],[1138,8],[1162,8],[1186,8],[1214,8],[1239,8],[1265,8]]},"1434":{"position":[[708,9]]},"1463":{"position":[[823,9],[1137,9]]},"1525":{"position":[[708,9]]},"1627":{"position":[[823,9],[1137,9]]},"1671":{"position":[[41,8]]}}}],["include::iter",{"_index":489,"t":{"935":{"position":[[765,14]]}}}],["int[col",{"_index":240,"t":{"919":{"position":[[84,9]]}}}],["int[nrow",{"_index":232,"t":{"917":{"position":[[77,8]]}}}],["interact",{"_index":2121,"t":{"1276":{"position":[[167,8],[303,12]]}}}],["interpol",{"_index":3111,"t":{"1472":{"position":[[143,11]]},"1636":{"position":[[143,11]]}}}],["introduc",{"_index":2704,"t":{"1412":{"position":[[3,9]]},"1616":{"position":[[3,9]]}}}],["introduct",{"_index":3294,"t":{"1594":{"position":[[52,42]]}}}],["intuit",{"_index":3023,"t":{"1463":{"position":[[281,9]]},"1627":{"position":[[281,9]]}}}],["invers",{"_index":1914,"t":{"1223":{"position":[[355,9]]},"1569":{"position":[[355,9]]}}}],["ios::sync_with_stdio(fals",{"_index":937,"t":{"965":{"position":[[346,28]]}}}],["iostream",{"_index":390,"t":{"927":{"position":[[1452,10]]},"948":{"position":[[9,10]]},"950":{"position":[[30,10]]}}}],["ipl",{"_index":1708,"t":{"1199":{"position":[[9,3],[27,3]]},"1202":{"position":[[16,3],[46,3]]},"1220":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"1230":{"position":[[2,3],[927,3]]},"1232":{"position":[[914,3],[1189,3]]},"1486":{"position":[[0,11]]},"1545":{"position":[[9,3],[27,3]]},"1548":{"position":[[16,3],[46,3]]},"1566":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"1576":{"position":[[2,3],[927,3]]},"1578":{"position":[[914,3],[1189,3]]}}}],["ipl独立于生成模型,可以自由选择diffus",{"_index":3137,"t":{"1478":{"position":[[286,64]]}}}],["is=exp⁡(ex[kl(p(y∣x)∣∣p(y))])is=\\exp\\left(\\mathbb{e}_x[kl(p(y|x)||p(y))]\\right)is=exp(ex​[kl(p(y∣x)∣∣p(i",{"_index":1842,"t":{"1220":{"position":[[627,108]]},"1566":{"position":[[627,108]]}}}],["is_heap",{"_index":344,"t":{"925":{"position":[[2236,7]]}}}],["is_heap_untilc++11",{"_index":345,"t":{"925":{"position":[[2258,18]]}}}],["is_list",{"_index":657,"t":{"950":{"position":[[1508,10]]}}}],["is_partitionedc++11",{"_index":321,"t":{"925":{"position":[[1542,19]]}}}],["is_permutationc++11",{"_index":350,"t":{"925":{"position":[[2397,19]]}}}],["is_sorted_untilc++11",{"_index":328,"t":{"925":{"position":[[1749,20]]}}}],["is_sortedc++11",{"_index":327,"t":{"925":{"position":[[1722,14]]}}}],["is_tre",{"_index":661,"t":{"950":{"position":[[1656,10]]}}}],["isclos",{"_index":3300,"t":{"1602":{"position":[[128,12]]}}}],["isdag",{"_index":198,"t":{"910":{"position":[[624,6],[660,6]]},"948":{"position":[[358,6],[394,6],[550,7]]},"950":{"position":[[499,6],[535,6],[746,7]]}}}],["isdag(1",{"_index":205,"t":{"910":{"position":[[741,8]]},"950":{"position":[[616,8]]}}}],["isdag(isdag",{"_index":202,"t":{"910":{"position":[[682,12]]},"948":{"position":[[416,12]]},"950":{"position":[[557,12]]}}}],["isinstance(net",{"_index":2577,"t":{"1377":{"position":[[955,15]]}}}],["isinstance(train_lay",{"_index":1814,"t":{"1218":{"position":[[347,24]]},"1564":{"position":[[347,24]]}}}],["isinstance(x",{"_index":2583,"t":{"1377":{"position":[[1114,13]]}}}],["is(incept",{"_index":1877,"t":{"1220":{"position":[[2084,12]]},"1566":{"position":[[2084,12]]}}}],["it'",{"_index":2313,"t":{"1322":{"position":[[62,4]]}}}],["item",{"_index":3353,"t":{"1610":{"position":[[231,4],[440,4]]}}}],["iter",{"_index":86,"t":{"901":{"position":[[78,8]]},"925":{"position":[[835,22]]},"1327":{"position":[[8,9],[272,9]]}}}],["iter_swap",{"_index":299,"t":{"925":{"position":[[825,9]]}}}],["it指向的元素前插入n个新元素val",{"_index":376,"t":{"927":{"position":[[729,22]]},"929":{"position":[[750,22]]}}}],["it指向的元素前插入新元素val",{"_index":375,"t":{"927":{"position":[[685,20]]},"929":{"position":[[706,20]]}}}],["iulian",{"_index":1212,"t":{"1063":{"position":[[827,6]]}}}],["j",{"_index":54,"t":{"896":{"position":[[7,1],[111,1]]},"948":{"position":[[1989,1],[1996,1],[2011,4]]},"952":{"position":[[2924,1],[3086,2]]},"1491":{"position":[[617,2]]}}}],["j2\\pi",{"_index":1397,"t":{"1107":{"position":[[353,5],[626,5],[1247,5]]}}}],["j\\frac{2\\pi",{"_index":1411,"t":{"1107":{"position":[[948,11]]}}}],["jae",{"_index":3167,"t":{"1481":{"position":[[559,3]]}}}],["jeffrey",{"_index":1208,"t":{"1063":{"position":[[758,7]]}}}],["jingwan",{"_index":3162,"t":{"1481":{"position":[[526,7]]}}}],["jinwoo",{"_index":3155,"t":{"1481":{"position":[[393,6]]}}}],["j}\\right)p(xi,j​∣xa(first",{"_index":401,"t":{"929":{"position":[[126,17]]}}}],["lista(n",{"_index":397,"t":{"929":{"position":[[51,13],[87,13]]}}}],["lista{1,2,3",{"_index":396,"t":{"929":{"position":[[33,17]]}}}],["list和tensor",{"_index":2668,"t":{"1382":{"position":[[409,17]]}}}],["list和vector",{"_index":250,"t":{"923":{"position":[[228,45]]}}}],["list或deque实现,封闭头部即可,不用vector",{"_index":252,"t":{"923":{"position":[[282,51],[342,51]]}}}],["list的*乘法是复制元素,改变list的shap",{"_index":2669,"t":{"1382":{"position":[[427,26]]}}}],["ll",{"_index":125,"t":{"905":{"position":[[360,2],[547,2],[633,2],[667,2]]},"955":{"position":[[118,3]]},"957":{"position":[[118,3]]},"959":{"position":[[204,3]]}}}],["llama",{"_index":2716,"t":{"1412":{"position":[[246,6]]},"1414":{"position":[[602,5]]},"1419":{"position":[[34,5]]},"1616":{"position":[[246,6]]},"1618":{"position":[[602,5]]},"1623":{"position":[[34,5]]}}}],["llamagen",{"_index":2705,"t":{"1412":{"position":[[13,9]]},"1419":{"position":[[971,13],[1916,8]]},"1616":{"position":[[13,9]]},"1623":{"position":[[977,8],[1917,8]]}}}],["lll",{"_index":1431,"t":{"1119":{"position":[[243,17]]},"1286":{"position":[[187,13]]},"1288":{"position":[[16,12]]}}}],["llm",{"_index":2758,"t":{"1412":{"position":[[1150,3]]},"1414":{"position":[[211,4],[288,4],[500,4],[739,3]]},"1419":{"position":[[112,4],[1444,4]]},"1463":{"position":[[988,5],[1274,5]]},"1465":{"position":[[84,4]]},"1470":{"position":[[1305,4]]},"1474":{"position":[[518,4]]},"1616":{"position":[[1150,3]]},"1618":{"position":[[211,4],[288,4],[500,4],[738,3]]},"1623":{"position":[[112,4],[1445,4]]},"1627":{"position":[[988,5],[1274,5]]},"1629":{"position":[[84,4]]},"1634":{"position":[[1305,4]]},"1638":{"position":[[265,4],[281,4]]},"1640":{"position":[[518,4]]}}}],["ll×l",{"_index":2237,"t":{"1290":{"position":[[366,4]]}}}],["locale.h",{"_index":72,"t":{"899":{"position":[[92,8]]}}}],["locatevex_al(*pg",{"_index":752,"t":{"952":{"position":[[1579,17],[1605,17]]}}}],["locatevex_al(algraph",{"_index":733,"t":{"952":{"position":[[917,20]]}}}],["locatevex_al(g",{"_index":807,"t":{"952":{"position":[[2899,15],[2928,15]]}}}],["log",{"_index":1037,"t":{"979":{"position":[[1757,4]]},"1065":{"position":[[701,4]]}}}],["log2(1pi)(7)\\begin{align",{"_index":2324,"t":{"1322":{"position":[[286,25]]}}}],["log2(pi)=∑inpi",{"_index":2323,"t":{"1322":{"position":[[271,14]]}}}],["log2(pi)−log2(qi)](9)d_{kl}(p",{"_index":2345,"t":{"1322":{"position":[[842,30]]}}}],["log2(qi)(10)\\begin{align",{"_index":2357,"t":{"1322":{"position":[[1187,25]]}}}],["log2​(pi​)=i∑n​pi",{"_index":2330,"t":{"1322":{"position":[[437,18]]}}}],["log2​(pi​)−log2​(qi​)](9",{"_index":2349,"t":{"1322":{"position":[[959,26]]}}}],["log2​(pi​1​)​(7",{"_index":2331,"t":{"1322":{"position":[[456,16]]}}}],["log2​(qi​)​(10",{"_index":2363,"t":{"1322":{"position":[[1357,15]]}}}],["log_2(p_i",{"_index":2347,"t":{"1322":{"position":[[910,11]]}}}],["log_2(q_i)]}\\tag{9}dkl​(p",{"_index":2348,"t":{"1322":{"position":[[922,25]]}}}],["logist",{"_index":2445,"t":{"1340":{"position":[[0,8]]}}}],["logit",{"_index":2829,"t":{"1419":{"position":[[2074,5]]},"1623":{"position":[[2075,5]]}}}],["logit提供的通用信息,同时保留条件logit",{"_index":2841,"t":{"1419":{"position":[[2327,80]]},"1623":{"position":[[2328,80]]}}}],["logit,即不考虑任何条件信息时生成的logit",{"_index":2838,"t":{"1419":{"position":[[2233,31]]},"1623":{"position":[[2234,31]]}}}],["logit,即基于输入文本提示的信息生成的logit",{"_index":2836,"t":{"1419":{"position":[[2189,31]]},"1623":{"position":[[2190,31]]}}}],["long",{"_index":126,"t":{"905":{"position":[[363,4],[368,4],[394,4],[399,4]]},"945":{"position":[[1010,4]]},"955":{"position":[[108,4],[113,4]]},"957":{"position":[[108,4],[113,4]]},"959":{"position":[[194,4],[199,4]]},"1665":{"position":[[4,17],[22,32]]}}}],["loss",{"_index":1823,"t":{"1218":{"position":[[1024,4]]},"1230":{"position":[[790,4],[886,4]]},"1232":{"position":[[24,8],[40,4]]},"1248":{"position":[[139,10]]},"1377":{"position":[[1623,4],[1751,6]]},"1434":{"position":[[504,5],[532,4]]},"1440":{"position":[[127,4],[893,4]]},"1486":{"position":[[890,39]]},"1519":{"position":[[280,8]]},"1525":{"position":[[504,5],[532,4]]},"1531":{"position":[[127,4],[893,4]]},"1564":{"position":[[1024,4]]},"1576":{"position":[[790,4],[886,4]]},"1578":{"position":[[24,8],[40,4]]},"1697":{"position":[[129,4]]},"1720":{"position":[[6,43],[87,14]]}}}],["loss(y_hat",{"_index":2626,"t":{"1377":{"position":[[2039,11]]}}}],["loss.to(devic",{"_index":2607,"t":{"1377":{"position":[[1658,15]]}}}],["lossdiscriminator=lossreal+lossfake(3)loss_{discriminator}=loss_{real}+loss_{fake}\\tag{3}lossdiscriminator​=lossreal​+lossfake​(3",{"_index":1291,"t":{"1086":{"position":[[532,130]]}}}],["lossfake=−ez∼pz(z)[log(1−d(g(z)))](2)loss_{fak",{"_index":1286,"t":{"1086":{"position":[[332,49]]}}}],["lossmse=∑[y−f(x)]2(5)loss_{ms",{"_index":2303,"t":{"1320":{"position":[[57,31]]}}}],["lossreal=−ex∼pdata(x)[log⁡d(x)](1)loss_{r",{"_index":1281,"t":{"1086":{"position":[[160,46]]}}}],["loss得到6",{"_index":3480,"t":{"1697":{"position":[[74,11]]}}}],["loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的lat",{"_index":3208,"t":{"1486":{"position":[[644,71]]}}}],["loss的输入来约束从源域中学习到的prompt",{"_index":3203,"t":{"1486":{"position":[[346,33]]}}}],["loss的输入,约束学习到的prompt",{"_index":3207,"t":{"1486":{"position":[[555,31]]}}}],["lot",{"_index":1052,"t":{"979":{"position":[[1992,3]]},"1065":{"position":[[936,3]]}}}],["low",{"_index":1437,"t":{"1125":{"position":[[54,3]]}}}],["lower_bound",{"_index":336,"t":{"925":{"position":[[1975,11]]}}}],["lr",{"_index":1157,"t":{"1043":{"position":[[29,9]]},"1377":{"position":[[1414,3],[2720,3],[2810,3]]}}}],["lr(0",{"_index":1160,"t":{"1048":{"position":[[98,8]]},"1053":{"position":[[139,6],[160,13]]}}}],["lr(1",{"_index":1166,"t":{"1048":{"position":[[435,8]]},"1053":{"position":[[154,5]]}}}],["lr=lr",{"_index":2605,"t":{"1377":{"position":[[1616,6]]}}}],["lr_mul=0.01",{"_index":1957,"t":{"1228":{"position":[[843,12],[986,12]]},"1574":{"position":[[843,12],[986,12]]}}}],["lr_mul=lr_mlp",{"_index":1797,"t":{"1216":{"position":[[684,14]]},"1562":{"position":[[684,14]]}}}],["lu",{"_index":3163,"t":{"1481":{"position":[[534,3]]},"1677":{"position":[[806,57]]},"1685":{"position":[[678,57]]}}}],["l×dkl",{"_index":2234,"t":{"1290":{"position":[[246,5]]}}}],["l×dl",{"_index":2225,"t":{"1288":{"position":[[54,4]]}}}],["l×ll",{"_index":2236,"t":{"1290":{"position":[[354,4]]}}}],["m",{"_index":399,"t":{"929":{"position":[[101,2]]},"935":{"position":[[323,2]]},"979":{"position":[[1086,1]]},"1517":{"position":[[52,1]]}}}],["m.clear",{"_index":496,"t":{"935":{"position":[[1053,10]]}}}],["m.empti",{"_index":495,"t":{"935":{"position":[[1032,10]]}}}],["m.erase(it",{"_index":493,"t":{"935":{"position":[[952,12]]}}}],["m.erase(key",{"_index":492,"t":{"935":{"position":[[903,13]]}}}],["m.find(key",{"_index":490,"t":{"935":{"position":[[785,12]]}}}],["m.insert(make_pair(key",{"_index":486,"t":{"935":{"position":[[486,23]]}}}],["m.size",{"_index":494,"t":{"935":{"position":[[1012,9]]}}}],["m32",{"_index":986,"t":{"979":{"position":[[729,3],[978,3]]}}}],["m[key",{"_index":482,"t":{"935":{"position":[[352,6],[683,7]]}}}],["machin",{"_index":2384,"t":{"1325":{"position":[[47,7]]}}}],["mae",{"_index":2978,"t":{"1445":{"position":[[15,3]]},"1536":{"position":[[15,3]]}}}],["mage",{"_index":3285,"t":{"1588":{"position":[[1981,10]]}}}],["main",{"_index":13,"t":{"875":{"position":[[50,6]]},"881":{"position":[[50,6]]},"927":{"position":[[1506,6]]},"948":{"position":[[1733,6]]},"950":{"position":[[2284,7]]},"952":{"position":[[2708,6]]},"955":{"position":[[1704,6]]},"957":{"position":[[1369,6]]},"959":{"position":[[658,6]]},"963":{"position":[[50,6]]},"1063":{"position":[[503,31]]},"1671":{"position":[[770,6]]}}}],["main(struct",{"_index":1240,"t":{"1063":{"position":[[1838,11]]}}}],["make",{"_index":948,"t":{"969":{"position":[[338,7]]},"973":{"position":[[144,7]]},"979":{"position":[[147,19]]},"1065":{"position":[[70,4],[82,4]]},"1280":{"position":[[2778,6]]},"1463":{"position":[[428,5]]},"1627":{"position":[[428,5]]}}}],["make_heap",{"_index":346,"t":{"925":{"position":[[2296,9]]}}}],["malloc(sizeof(arcnod",{"_index":755,"t":{"952":{"position":[[1670,26]]}}}],["man",{"_index":3183,"t":{"1481":{"position":[[758,3]]}}}],["map",{"_index":88,"t":{"901":{"position":[[99,3]]},"935":{"position":[[0,7],[223,68],[292,13],[326,9],[339,9]]},"981":{"position":[[192,4]]},"999":{"position":[[9,5]]},"1216":{"position":[[470,12],[566,10]]},"1220":{"position":[[1940,3]]},"1298":{"position":[[83,3]]},"1304":{"position":[[43,21]]},"1467":{"position":[[111,4],[1270,3]]},"1470":{"position":[[213,3],[265,4],[289,4],[386,14]]},"1472":{"position":[[104,3],[136,3],[171,6],[186,3]]},"1474":{"position":[[236,14]]},"1562":{"position":[[470,12],[566,10]]},"1566":{"position":[[1940,3]]},"1631":{"position":[[111,4],[1270,3]]},"1634":{"position":[[213,3],[265,4],[289,4],[386,14]]},"1636":{"position":[[104,3],[136,3],[171,6],[186,3]]},"1640":{"position":[[236,14]]}}}],["map、<=、>=、==、!=,其规则是先比较first,first相等时再比较second",{"_index":474,"t":{"933":{"position":[[246,110]]}}}],["pair也能进行sort",{"_index":1080,"t":{"985":{"position":[[81,12]]}}}],["pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair",{"_index":475,"t":{"933":{"position":[[357,92]]}}}],["pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second",{"_index":473,"t":{"933":{"position":[[173,72]]}}}],["paper",{"_index":1869,"t":{"1220":{"position":[[1810,5]]},"1566":{"position":[[1810,5]]},"1580":{"position":[[71,5]]}}}],["paradigm",{"_index":2709,"t":{"1412":{"position":[[107,8]]},"1463":{"position":[[66,8]]},"1616":{"position":[[107,8]]},"1627":{"position":[[66,8]]}}}],["paragraph",{"_index":2190,"t":{"1280":{"position":[[2628,10]]}}}],["paramet",{"_index":2404,"t":{"1329":{"position":[[37,9]]},"1412":{"position":[[773,11],[953,11]]},"1456":{"position":[[87,10]]},"1616":{"position":[[773,11],[953,11]]}}}],["paraphras",{"_index":2031,"t":{"1244":{"position":[[677,10]]}}}],["parti",{"_index":2773,"t":{"1414":{"position":[[90,5]]},"1508":{"position":[[0,5],[6,71],[103,10],[272,14]]},"1618":{"position":[[90,5]]}}}],["partial_sort",{"_index":330,"t":{"925":{"position":[[1822,12]]}}}],["partial_sort_copi",{"_index":331,"t":{"925":{"position":[[1840,17]]}}}],["partit",{"_index":323,"t":{"925":{"position":[[1590,9]]},"1325":{"position":[[183,11]]}}}],["partition_copyc++11",{"_index":324,"t":{"925":{"position":[[1611,19]]}}}],["partition_pointc++11",{"_index":325,"t":{"925":{"position":[[1643,20]]}}}],["pass",{"_index":1438,"t":{"1125":{"position":[[58,4]]}}}],["patch",{"_index":2979,"t":{"1445":{"position":[[68,5]]},"1452":{"position":[[26,5]]},"1536":{"position":[[68,5]]},"1543":{"position":[[26,5]]}}}],["path",{"_index":776,"t":{"952":{"position":[[2397,11]]},"1458":{"position":[[226,4],[273,4]]}}}],["path/terminal_proxy.sh",{"_index":3425,"t":{"1656":{"position":[[96,23]]}}}],["path[k]=0",{"_index":788,"t":{"952":{"position":[[2691,10]]}}}],["path[k]=u",{"_index":772,"t":{"952":{"position":[[2317,10]]}}}],["path[max_vertex_num",{"_index":765,"t":{"952":{"position":[[2162,21]]}}}],["pathnum",{"_index":780,"t":{"952":{"position":[[2483,10]]}}}],["pathnum=0",{"_index":766,"t":{"952":{"position":[[2193,10],[3006,10]]}}}],["pathnum==0",{"_index":813,"t":{"952":{"position":[[3096,12]]}}}],["paths[i",{"_index":819,"t":{"952":{"position":[[3187,10]]}}}],["paths[maxsize][max_vertex_num",{"_index":764,"t":{"952":{"position":[[2119,31]]}}}],["paths[pathnum][i",{"_index":777,"t":{"952":{"position":[[2409,17]]}}}],["paths[pathnum][i]='\\0",{"_index":779,"t":{"952":{"position":[[2453,23]]}}}],["pay",{"_index":2123,"t":{"1276":{"position":[[230,3]]}}}],["pc",{"_index":940,"t":{"969":{"position":[[102,7]]}}}],["pe(k,2i)\\\\pe(pos+k,2i+1)=pe(pos,2i+1)\\tim",{"_index":1516,"t":{"1156":{"position":[[836,43]]},"1394":{"position":[[836,43]]}}}],["pe(k,2i)\\end{array",{"_index":1519,"t":{"1156":{"position":[[908,19]]},"1394":{"position":[[908,19]]}}}],["pe(k,2i+1",{"_index":1517,"t":{"1156":{"position":[[880,10]]},"1394":{"position":[[880,10]]}}}],["pe(k,2i+1)+pe(pos,2i+1)\\tim",{"_index":1515,"t":{"1156":{"position":[[806,29]]},"1394":{"position":[[806,29]]}}}],["pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)(3)\\begin{array}{l}pe(pos+k,2i)=pe(pos,2i)\\tim",{"_index":1514,"t":{"1156":{"position":[[643,162]]},"1394":{"position":[[643,162]]}}}],["pe(pos,2i)=sin(pos100002i/dmodel)(1)pe_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1509,"t":{"1156":{"position":[[212,96]]},"1394":{"position":[[212,96]]}}}],["pe(pos,2i)\\tim",{"_index":1518,"t":{"1156":{"position":[[891,16]]},"1394":{"position":[[891,16]]}}}],["pe(pos,2i+1)=cos(pos100002i/dmodel)(2)pe_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1511,"t":{"1156":{"position":[[356,100]]},"1394":{"position":[[356,100]]}}}],["penalti",{"_index":2409,"t":{"1333":{"position":[[151,48]]}}}],["per",{"_index":2915,"t":{"1434":{"position":[[319,3],[559,3]]},"1525":{"position":[[319,3],[559,3]]}}}],["perform",{"_index":2386,"t":{"1325":{"position":[[80,11]]},"1327":{"position":[[354,12]]},"1412":{"position":[[342,11],[1065,11]]},"1616":{"position":[[342,11],[1065,11]]}}}],["permit",{"_index":1218,"t":{"1063":{"position":[[918,9]]}}}],["perspect",{"_index":1321,"t":{"1090":{"position":[[841,12]]}}}],["pg",{"_index":725,"t":{"952":{"position":[[759,4],[779,2],[795,2],[844,2],[1087,4],[1274,2],[1336,2],[1399,2],[1470,2],[1748,3],[1790,2],[1872,2]]}}}],["photo",{"_index":1737,"t":{"1210":{"position":[[44,5],[225,16],[244,5],[255,18]]},"1212":{"position":[[139,5],[150,5],[414,5]]},"1214":{"position":[[72,5],[94,5]]},"1230":{"position":[[59,5],[687,5]]},"1232":{"position":[[621,5],[649,6]]},"1556":{"position":[[44,5],[225,16],[244,5],[255,18]]},"1558":{"position":[[139,5],[150,5],[414,5]]},"1560":{"position":[[72,5],[94,5]]},"1576":{"position":[[59,5],[687,5]]},"1578":{"position":[[621,5],[649,6]]}}}],["photo.’或‘a",{"_index":1775,"t":{"1214":{"position":[[83,10]]},"1560":{"position":[[83,10]]}}}],["photorealist",{"_index":1640,"t":{"1183":{"position":[[822,14]]}}}],["photo→anim",{"_index":1883,"t":{"1220":{"position":[[2171,11],[2518,11]]},"1566":{"position":[[2171,11],[2518,11]]}}}],["photo→cartoon",{"_index":1902,"t":{"1220":{"position":[[2365,13],[2658,13]]},"1566":{"position":[[2365,13],[2658,13]]}}}],["photo→cub",{"_index":1904,"t":{"1220":{"position":[[2407,12],[2700,12]]},"1566":{"position":[[2407,12],[2700,12]]}}}],["photo→disney",{"_index":1879,"t":{"1220":{"position":[[2135,12],[2491,12]]},"1566":{"position":[[2135,12],[2491,12]]}}}],["photo→pixar",{"_index":1893,"t":{"1220":{"position":[[2277,11],[2588,11]]},"1566":{"position":[[2277,11],[2588,11]]}}}],["photo→pointil",{"_index":1903,"t":{"1220":{"position":[[2384,17],[2677,17]]},"1566":{"position":[[2384,17],[2677,17]]}}}],["photo→tolkien",{"_index":1895,"t":{"1220":{"position":[[2304,13],[2615,13]]},"1566":{"position":[[2304,13],[2615,13]]}}}],["photo→ukiyo",{"_index":1889,"t":{"1220":{"position":[[2240,11],[2569,11]]},"1566":{"position":[[2240,11],[2569,11]]}}}],["photo→wal",{"_index":1888,"t":{"1220":{"position":[[2215,10],[2544,10]]},"1566":{"position":[[2215,10],[2544,10]]}}}],["photo→werewolf",{"_index":1897,"t":{"1220":{"position":[[2327,14],[2638,14]]},"1566":{"position":[[2327,14],[2638,14]]}}}],["pi",{"_index":131,"t":{"905":{"position":[[445,2]]}}}],["pii",{"_index":129,"t":{"905":{"position":[[412,3]]}}}],["pip",{"_index":1724,"t":{"1204":{"position":[[124,3],[158,3]]},"1514":{"position":[[0,3]]},"1550":{"position":[[124,3],[158,3]]}}}],["pip_{i}pi",{"_index":2006,"t":{"1242":{"position":[[404,23]]}}}],["piscart",{"_index":3124,"t":{"1476":{"position":[[30,10]]}}}],["pixelcnn",{"_index":3229,"t":{"1496":{"position":[[14,14]]},"1498":{"position":[[114,8],[141,8]]}}}],["pixelnorm",{"_index":1791,"t":{"1216":{"position":[[516,9],[597,13]]},"1562":{"position":[[516,9],[597,13]]}}}],["pixelnorm以及全连接层,将每个点归一化(除以模长),避免输入nois",{"_index":1953,"t":{"1228":{"position":[[725,54]]},"1574":{"position":[[725,54]]}}}],["pixelnorm,防止与transformer中的lay",{"_index":1933,"t":{"1228":{"position":[[185,38]]},"1574":{"position":[[185,38]]}}}],["pixelrnn",{"_index":3227,"t":{"1494":{"position":[[0,8],[52,19]]},"1496":{"position":[[5,8]]},"1498":{"position":[[125,8],[152,8]]}}}],["pi′=pi∑wj∈ckpj",{"_index":2076,"t":{"1262":{"position":[[518,14]]}}}],["pi′=pi∑wj∈cppj",{"_index":2098,"t":{"1264":{"position":[[627,14]]}}}],["pi′p_i^{\\prime}pi",{"_index":2083,"t":{"1262":{"position":[[653,20]]},"1264":{"position":[[758,22]]}}}],["plasmpkg2",{"_index":3402,"t":{"1645":{"position":[[336,9]]}}}],["platform",{"_index":990,"t":{"979":{"position":[[810,9],[841,9]]}}}],["pleas",{"_index":2178,"t":{"1280":{"position":[[2193,6],[4352,6]]}}}],["plot",{"_index":2214,"t":{"1280":{"position":[[3321,4]]}}}],["plt",{"_index":2544,"t":{"1377":{"position":[[158,3]]}}}],["plt.show",{"_index":2645,"t":{"1377":{"position":[[2628,10]]}}}],["po",{"_index":558,"t":{"945":{"position":[[487,4],[511,3],[692,3],[725,3],[794,3],[932,3]]}}}],["point",{"_index":1201,"t":{"1063":{"position":[[660,5],[1743,6]]}}}],["polynomi",{"_index":3458,"t":{"1674":{"position":[[753,10]]},"1679":{"position":[[753,10]]}}}],["pop",{"_index":607,"t":{"948":{"position":[[1650,4]]},"981":{"position":[[100,5],[141,5],[170,5]]}}}],["pop_heap",{"_index":347,"t":{"925":{"position":[[2318,8]]}}}],["popular",{"_index":2746,"t":{"1412":{"position":[[854,7]]},"1616":{"position":[[854,7]]}}}],["portrait",{"_index":1985,"t":{"1232":{"position":[[738,10]]},"1578":{"position":[[738,10]]}}}],["pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1",{"_index":1513,"t":{"1156":{"position":[[506,136]]},"1394":{"position":[[506,136]]}}}],["posit",{"_index":2809,"t":{"1419":{"position":[[1017,8]]},"1623":{"position":[[1018,8]]}}}],["pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel",{"_index":1508,"t":{"1156":{"position":[[57,154]]},"1394":{"position":[[57,154]]}}}],["postt(int",{"_index":872,"t":{"955":{"position":[[1595,9]]},"957":{"position":[[1260,9]]},"959":{"position":[[544,9]]}}}],["postt(rt",{"_index":886,"t":{"955":{"position":[[2056,10]]},"957":{"position":[[1642,10]]},"959":{"position":[[806,10]]}}}],["postt(t[rt].l",{"_index":873,"t":{"955":{"position":[[1629,15]]},"957":{"position":[[1294,15]]},"959":{"position":[[585,15]]}}}],["postt(t[rt].r",{"_index":874,"t":{"955":{"position":[[1645,15]]},"957":{"position":[[1310,15]]},"959":{"position":[[601,15]]}}}],["pos处的二进制位置为0",{"_index":571,"t":{"945":{"position":[[863,14]]}}}],["power",{"_index":3039,"t":{"1463":{"position":[[936,5]]},"1627":{"position":[[936,5]]}}}],["pp_arr",{"_index":231,"t":{"917":{"position":[[63,7]]}}}],["ppp",{"_index":2093,"t":{"1264":{"position":[[446,14]]}}}],["ppp的坐标为(x,y)(x",{"_index":1376,"t":{"1101":{"position":[[118,19]]}}}],["practic",{"_index":2982,"t":{"1454":{"position":[[44,8]]}}}],["pre",{"_index":901,"t":{"959":{"position":[[346,3]]},"1185":{"position":[[983,3]]},"1244":{"position":[[1023,6]]}}}],["pre[maxn",{"_index":893,"t":{"959":{"position":[[244,10]]}}}],["pre_stylegan",{"_index":1734,"t":{"1206":{"position":[[54,14]]},"1552":{"position":[[54,14]]}}}],["precis",{"_index":3131,"t":{"1478":{"position":[[150,7]]}}}],["predic",{"_index":322,"t":{"925":{"position":[[1562,27]]}}}],["predict",{"_index":2007,"t":{"1242":{"position":[[442,11]]},"1322":{"position":[[1533,7],[1580,7],[1768,7]]},"1412":{"position":[[95,11]]},"1414":{"position":[[172,10]]},"1463":{"position":[[158,11],[190,12],[255,12]]},"1467":{"position":[[32,10],[946,10],[996,11]]},"1470":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"1588":{"position":[[1108,11],[1127,10]]},"1616":{"position":[[95,11]]},"1618":{"position":[[172,10]]},"1627":{"position":[[158,11],[190,12],[255,12]]},"1631":{"position":[[32,10],[946,10],[996,11]]},"1634":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"1638":{"position":[[192,11]]}}}],["prediction,图(b",{"_index":3067,"t":{"1467":{"position":[[903,25]]},"1631":{"position":[[903,25]]}}}],["predictor",{"_index":1302,"t":{"1090":{"position":[[185,46]]},"1092":{"position":[[185,10]]},"1187":{"position":[[245,10]]},"1197":{"position":[[568,14]]}}}],["predictor中。从随机分布中sample出的噪声就是nois",{"_index":1677,"t":{"1187":{"position":[[703,34]]}}}],["predictor中,而需要预测出的噪声分布的ground",{"_index":1671,"t":{"1187":{"position":[[407,29]]}}}],["predictor对噪声denois",{"_index":1700,"t":{"1197":{"position":[[107,29]]}}}],["predictor的ground",{"_index":1678,"t":{"1187":{"position":[[738,16]]}}}],["predictor预测出的噪声,αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​以及α1,α2,...αt\\alpha_1,\\alpha_2,...\\alpha_tα1​,α2​,...αt",{"_index":1348,"t":{"1094":{"position":[[592,158]]}}}],["predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的ground",{"_index":1333,"t":{"1092":{"position":[[717,65]]}}}],["predictor,根据文字prompt对从随机分布中sampl",{"_index":1308,"t":{"1090":{"position":[[490,54]]}}}],["predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的nois",{"_index":1699,"t":{"1197":{"position":[[58,48]]}}}],["predit",{"_index":1860,"t":{"1220":{"position":[[1402,9]]},"1566":{"position":[[1402,9]]}}}],["preprocess",{"_index":2990,"t":{"1458":{"position":[[88,10],[161,12]]}}}],["present",{"_index":3016,"t":{"1463":{"position":[[3,7]]},"1627":{"position":[[3,7]]}}}],["press",{"_index":1260,"t":{"1063":{"position":[[2184,7]]}}}],["pret(int",{"_index":864,"t":{"955":{"position":[[1365,8]]},"957":{"position":[[1046,8]]}}}],["pret(rt",{"_index":884,"t":{"955":{"position":[[2022,9]]},"957":{"position":[[1629,9]]}}}],["pret(t[rt].l",{"_index":867,"t":{"955":{"position":[[1435,14]]},"957":{"position":[[1116,14]]}}}],["pret(t[rt].r",{"_index":868,"t":{"955":{"position":[[1450,14]]},"957":{"position":[[1131,14]]}}}],["pretrain",{"_index":1995,"t":{"1240":{"position":[[208,28]]}}}],["prev_permut",{"_index":359,"t":{"925":{"position":[[2667,16]]}}}],["prewitt",{"_index":1494,"t":{"1145":{"position":[[116,10]]}}}],["prim",{"_index":3429,"t":{"1663":{"position":[[100,6]]}}}],["primari",{"_index":3307,"t":{"1602":{"position":[[276,7],[310,7],[349,7],[389,7]]}}}],["print",{"_index":1261,"t":{"1063":{"position":[[2201,5]]}}}],["print(\"%c\",(asciicode=='\\r",{"_index":1195,"t":{"1063":{"position":[[443,28],[1658,28]]}}}],["print(\"\\n",{"_index":1192,"t":{"1063":{"position":[[376,9],[1588,9]]}}}],["print(\"argmax",{"_index":2688,"t":{"1382":{"position":[[871,13]]}}}],["print(\"attent",{"_index":2166,"t":{"1280":{"position":[[1708,16],[1924,16],[4078,16],[4220,16]]}}}],["print(\"keys:\\n",{"_index":2158,"t":{"1280":{"position":[[1347,16],[3911,16]]}}}],["print(\"queries:\\n",{"_index":2159,"t":{"1280":{"position":[[1379,19],[3943,19]]}}}],["print(\"to",{"_index":1177,"t":{"1063":{"position":[[99,9],[1311,9]]}}}],["print(\"values:\\n",{"_index":2160,"t":{"1280":{"position":[[1417,18],[3981,18]]}}}],["print(\"weight",{"_index":2184,"t":{"1280":{"position":[[2296,15],[4455,15]]}}}],["print(\"welcom",{"_index":1255,"t":{"1063":{"position":[[2075,14]]}}}],["print(a",{"_index":2672,"t":{"1382":{"position":[[543,7]]}}}],["print(b",{"_index":2674,"t":{"1382":{"position":[[581,7]]}}}],["print(c.shap",{"_index":2661,"t":{"1382":{"position":[[252,14]]}}}],["print(d.shap",{"_index":2666,"t":{"1382":{"position":[[373,14]]}}}],["print(f'loss",{"_index":2637,"t":{"1377":{"position":[[2464,12]]}}}],["print(f'{metric[2",{"_index":2641,"t":{"1377":{"position":[[2545,18]]}}}],["print(i",{"_index":2693,"t":{"1382":{"position":[[1121,8],[1315,8]]}}}],["print(i)16'''17(tensor([1",{"_index":2476,"t":{"1346":{"position":[[651,26]]}}}],["print(i)6'''7(tensor(1",{"_index":2467,"t":{"1346":{"position":[[450,24]]}}}],["print(item",{"_index":3354,"t":{"1610":{"position":[[253,11],[464,11]]}}}],["print(output",{"_index":3325,"t":{"1606":{"position":[[619,13]]}}}],["print(x",{"_index":3319,"t":{"1606":{"position":[[372,8]]}}}],["print(x1",{"_index":3321,"t":{"1606":{"position":[[412,9]]}}}],["print(x2",{"_index":3324,"t":{"1606":{"position":[[527,9]]}}}],["printf(\"%c",{"_index":705,"t":{"952":{"position":[[312,12]]}}}],["printf(\"%d%c\",v[i],i==len",{"_index":862,"t":{"955":{"position":[[1298,25]]},"957":{"position":[[1000,25]]}}}],["printf(\"%d\\n",{"_index":930,"t":{"963":{"position":[[430,14]]}}}],["printf(\"%d\\n\",t[rt].d",{"_index":914,"t":{"959":{"position":[[628,23]]}}}],["printf(\"7.28",{"_index":812,"t":{"952":{"position":[[3017,12]]}}}],["printf(\"\\t",{"_index":814,"t":{"952":{"position":[[3111,10]]}}}],["printf(\"\\t%d",{"_index":816,"t":{"952":{"position":[[3162,12]]}}}],["printf(first?first=0,\"%d",{"_index":865,"t":{"955":{"position":[[1398,27],[1528,27],[1661,27]]},"957":{"position":[[1079,27],[1201,27],[1326,27]]}}}],["priority_queue,greater1t",{"_index":2061,"t":{"1260":{"position":[[387,4]]}}}],["t>的元素对序列。序列中的元素以const",{"_index":478,"t":{"935":{"position":[[68,21]]}}}],["t[maxn",{"_index":825,"t":{"955":{"position":[[208,9]]},"957":{"position":[[208,9]]},"959":{"position":[[290,9]]}}}],["t[rt].d=pre[rt",{"_index":907,"t":{"959":{"position":[[437,16]]}}}],["t[rt].l=create(l1,p1",{"_index":908,"t":{"959":{"position":[[454,20]]}}}],["t[rt].l=mid_po_build(la,p1",{"_index":847,"t":{"955":{"position":[[824,26]]},"957":{"position":[[579,26]]}}}],["t[rt].l=mid_pr_build(la,p1",{"_index":842,"t":{"955":{"position":[[481,26]]},"957":{"position":[[350,26]]}}}],["t[rt].r=create(p1+1,r1,l2+p2+1,r2",{"_index":910,"t":{"959":{"position":[[490,35]]}}}],["t[rt].r=mid_po_build(p1+1,ra,lb+p2,rb",{"_index":849,"t":{"955":{"position":[[885,37]]},"957":{"position":[[621,37]]}}}],["t[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb",{"_index":844,"t":{"955":{"position":[[542,41]]},"957":{"position":[[392,41]]}}}],["t\\bar{\\alpha}_tαˉt",{"_index":2953,"t":{"1440":{"position":[[551,21]]},"1531":{"position":[[551,21]]}}}],["t\\sigma_tσt",{"_index":2969,"t":{"1442":{"position":[[346,13]]},"1533":{"position":[[346,13]]}}}],["t\\vert",{"_index":1383,"t":{"1101":{"position":[[325,6]]}}}],["t\\vert)\\tag{3}d8​(p,q)=max(∣x−s∣,∣y−t∣)(3",{"_index":1387,"t":{"1101":{"position":[[431,42]]}}}],["tag{10",{"_index":2360,"t":{"1322":{"position":[[1304,8]]}}}],["tag{1}",{"_index":1123,"t":{"1012":{"position":[[144,12]]}}}],["tag{1}3×3×3×4=108(1",{"_index":2259,"t":{"1300":{"position":[[168,21]]}}}],["tag{1}acc=len(y)∑i(predi​==yi​)​(1",{"_index":2453,"t":{"1346":{"position":[[196,36]]}}}],["tag{1}attention(q,k,v)=softmax(dk​​qkt​)v(1",{"_index":2207,"t":{"1280":{"position":[[3144,45]]}}}],["tag{1}l(y,z)=max(0,−y∗z)(1",{"_index":2527,"t":{"1370":{"position":[[406,28]]}}}],["tag{1}min",{"_index":2421,"t":{"1335":{"position":[[113,10]]}}}],["tag{1}pe(pos,2i)​=sin(100002i/dmodel​pos​)(1",{"_index":1510,"t":{"1156":{"position":[[309,46]]},"1394":{"position":[[309,46]]}}}],["tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1",{"_index":2502,"t":{"1351":{"position":[[328,65]]}}}],["tag{1}x1[0,:,:]+x2[0,:,:](1",{"_index":3333,"t":{"1606":{"position":[[894,29]]}}}],["tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1",{"_index":2507,"t":{"1356":{"position":[[142,36]]}}}],["tag{1}σ(x)=1+e−x1​(1",{"_index":2280,"t":{"1315":{"position":[[47,22]]}}}],["tag{2}",{"_index":1128,"t":{"1014":{"position":[[59,12]]}}}],["tag{2}3×3××3=27(2",{"_index":2263,"t":{"1302":{"position":[[100,19]]}}}],["tag{2}d4​(p,q)=∣x−s∣+∣y−t∣(2",{"_index":1384,"t":{"1101":{"position":[[332,30]]}}}],["tag{2}dxd",{"_index":2286,"t":{"1315":{"position":[[145,14]]}}}],["tag{2}l(w,b)+2λ​∥w∥12​(2",{"_index":2428,"t":{"1337":{"position":[[110,26]]}}}],["tag{2}pe(pos,2i+1)​=cos(100002i/dmodel​pos​)(2",{"_index":1512,"t":{"1156":{"position":[[457,48]]},"1394":{"position":[[457,48]]}}}],["tag{2}x1[1,:,:]+x2[1,:,:](2",{"_index":3336,"t":{"1606":{"position":[[972,29]]}}}],["tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2",{"_index":2510,"t":{"1356":{"position":[[364,61]]}}}],["tag{3}1×1×3×4=12(3",{"_index":2268,"t":{"1304":{"position":[[112,20]]}}}],["tag{3}a",{"_index":1136,"t":{"1016":{"position":[[210,11]]}}}],["tag{3}f(x)={0x​x<0x≥0​(3",{"_index":2297,"t":{"1317":{"position":[[77,26]]}}}],["tag{3}pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)​(3",{"_index":1520,"t":{"1156":{"position":[[928,125]]},"1394":{"position":[[928,125]]}}}],["tag{3}x1[2,:,:]+x2[2,:,:](3",{"_index":3339,"t":{"1606":{"position":[[1050,29]]}}}],["tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3",{"_index":2513,"t":{"1356":{"position":[[636,61]]}}}],["tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3",{"_index":2435,"t":{"1337":{"position":[[347,46]]}}}],["tag{4}dxdf(x)​={01​x<0x≥0​(4",{"_index":2300,"t":{"1317":{"position":[[213,30]]}}}],["tag{4}inputembedding(pos,i)=wordembedding(pos,i)+positionencoding(pos,i)(4",{"_index":1524,"t":{"1156":{"position":[[1234,76]]},"1394":{"position":[[1234,76]]}}}],["tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4",{"_index":2442,"t":{"1337":{"position":[[501,43]]}}}],["tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−δ∑δ​b=−δ∑δ​va,b​∗xia​,j+b​(4",{"_index":2518,"t":{"1358":{"position":[[194,66]]}}}],["tag{5}lossmse​=∑[y−f(x)]2(5",{"_index":2306,"t":{"1320":{"position":[[112,29]]}}}],["tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5",{"_index":2520,"t":{"1358":{"position":[[398,65]]}}}],["tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6",{"_index":1590,"t":{"1170":{"position":[[732,57]]},"1408":{"position":[[732,57]]}}}],["tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6",{"_index":2311,"t":{"1320":{"position":[[220,33]]}}}],["tag{7",{"_index":2328,"t":{"1322":{"position":[[403,7]]}}}],["tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7",{"_index":1592,"t":{"1170":{"position":[[1026,52]]},"1408":{"position":[[1026,52]]}}}],["take",{"_index":1351,"t":{"1096":{"position":[[54,4]]},"1276":{"position":[[24,5]]}}}],["target",{"_index":978,"t":{"979":{"position":[[635,6],[828,6],[938,6],[984,6]]},"1478":{"position":[[227,6]]}}}],["target_cc",{"_index":984,"t":{"979":{"position":[[692,9]]}}}],["target_cc_prefix)gcc",{"_index":985,"t":{"979":{"position":[[705,22]]}}}],["target_cc_prefix)ld",{"_index":1006,"t":{"979":{"position":[[1063,21]]}}}],["target_class",{"_index":1981,"t":{"1232":{"position":[[634,14]]},"1578":{"position":[[634,14]]}}}],["target_direct",{"_index":1829,"t":{"1218":{"position":[[1160,16]]},"1564":{"position":[[1160,16]]}}}],["target_direction:mapp",{"_index":1830,"t":{"1218":{"position":[[1186,23]]},"1564":{"position":[[1186,23]]}}}],["target_embed",{"_index":1771,"t":{"1212":{"position":[[1005,16]]},"1558":{"position":[[1005,16]]}}}],["target_ld",{"_index":1005,"t":{"979":{"position":[[1050,9]]}}}],["target_prompt",{"_index":1741,"t":{"1210":{"position":[[115,14]]},"1556":{"position":[[115,14]]}}}],["target_prompts]).to(devic",{"_index":1759,"t":{"1212":{"position":[[369,27]]},"1558":{"position":[[369,27]]}}}],["target_tokenized_prompt",{"_index":1758,"t":{"1212":{"position":[[305,24],[784,24]]},"1558":{"position":[[305,24],[784,24]]}}}],["task",{"_index":1979,"t":{"1232":{"position":[[585,4]]},"1240":{"position":[[337,11]]},"1244":{"position":[[909,6]]},"1463":{"position":[[1131,5]]},"1578":{"position":[[585,4]]},"1627":{"position":[[1131,5]]}}}],["teacher",{"_index":1577,"t":{"1168":{"position":[[146,11]]},"1170":{"position":[[429,19]]},"1406":{"position":[[146,11]]},"1408":{"position":[[429,19]]}}}],["techniqu",{"_index":2383,"t":{"1325":{"position":[[29,9]]}}}],["tell",{"_index":1358,"t":{"1096":{"position":[[130,4]]}}}],["temp",{"_index":3435,"t":{"1669":{"position":[[158,4],[210,4],[253,13],[270,5],[377,4],[516,5]]},"1671":{"position":[[245,4],[297,4],[340,13],[357,5],[464,4],[603,5]]}}}],["templat",{"_index":1966,"t":{"1230":{"position":[[103,25],[632,9],[647,9],[739,18]]},"1576":{"position":[[103,25],[632,9],[647,9],[739,18]]}}}],["tensor",{"_index":3326,"t":{"1606":{"position":[[637,10]]}}}],["tensor(0.2684",{"_index":2376,"t":{"1322":{"position":[[1695,14],[1881,14]]}}}],["tensor(1",{"_index":2694,"t":{"1382":{"position":[[1134,11]]}}}],["tensor(2",{"_index":2696,"t":{"1382":{"position":[[1157,11]]}}}],["tensor(3",{"_index":2698,"t":{"1382":{"position":[[1180,11]]}}}],["tensor(4",{"_index":2695,"t":{"1382":{"position":[[1146,10]]}}}],["tensor(4))8(tensor(2",{"_index":2468,"t":{"1346":{"position":[[475,22]]}}}],["tensor(5",{"_index":2697,"t":{"1382":{"position":[[1169,10]]}}}],["tensor(5))9(tensor(3",{"_index":2469,"t":{"1346":{"position":[[498,22]]}}}],["tensor(6",{"_index":2699,"t":{"1382":{"position":[[1192,10]]}}}],["tensor(6))10'''11a",{"_index":2470,"t":{"1346":{"position":[[521,18]]}}}],["tensor([1",{"_index":2691,"t":{"1382":{"position":[[947,10],[965,10],[1328,11]]}}}],["tensor([3",{"_index":2700,"t":{"1382":{"position":[[1367,11]]}}}],["tensor([4",{"_index":2477,"t":{"1346":{"position":[[686,10]]},"1382":{"position":[[1348,10]]}}}],["tensor([6",{"_index":2479,"t":{"1346":{"position":[[726,10]]},"1382":{"position":[[1387,10]]}}}],["tensor([[9",{"_index":2673,"t":{"1382":{"position":[[558,11]]}}}],["tensor([[[0",{"_index":3322,"t":{"1606":{"position":[[426,14],[541,13]]}}}],["tensorflow框架,可以使用tensorboard",{"_index":3249,"t":{"1512":{"position":[[4,36]]}}}],["tensor的*乘法是对tensor",{"_index":2670,"t":{"1382":{"position":[[454,28]]}}}],["term",{"_index":2118,"t":{"1276":{"position":[[110,6]]}}}],["terminal_proxy.sh",{"_index":3411,"t":{"1654":{"position":[[0,23]]}}}],["test",{"_index":169,"t":{"910":{"position":[[29,4],[101,5],[232,4]]},"1325":{"position":[[224,4],[277,7]]},"1327":{"position":[[82,4],[240,4]]},"1329":{"position":[[95,4],[115,5]]},"1377":{"position":[[1771,5],[2519,4]]}}}],["test.first",{"_index":172,"t":{"910":{"position":[[107,10]]}}}],["test.four",{"_index":178,"t":{"910":{"position":[[176,9]]}}}],["test.second",{"_index":173,"t":{"910":{"position":[[125,11]]}}}],["test.third",{"_index":175,"t":{"910":{"position":[[149,10]]}}}],["test_acc",{"_index":2636,"t":{"1377":{"position":[[2367,8],[2453,10]]}}}],["test_acc:.3f",{"_index":2640,"t":{"1377":{"position":[[2528,16]]}}}],["test_it",{"_index":2594,"t":{"1377":{"position":[[1391,10],[2405,10],[2668,9],[2787,10]]}}}],["testdata.json",{"_index":3012,"t":{"1458":{"position":[[557,13]]}}}],["text",{"_index":1614,"t":{"1183":{"position":[[78,4],[597,4],[748,4],[837,4]]},"1232":{"position":[[669,4]]},"1250":{"position":[[18,4]]},"1262":{"position":[[413,6],[590,5]]},"1264":{"position":[[699,5]]},"1317":{"position":[[130,7]]},"1412":{"position":[[903,4],[1099,4]]},"1578":{"position":[[669,4]]},"1590":{"position":[[16,4]]},"1616":{"position":[[903,4],[1099,4]]},"1638":{"position":[[132,4]]},"1645":{"position":[[80,4]]}}}],["text_direct",{"_index":1971,"t":{"1230":{"position":[[616,15]]},"1576":{"position":[[616,15]]}}}],["text_featur",{"_index":1831,"t":{"1218":{"position":[[1230,13]]},"1230":{"position":[[243,13]]},"1564":{"position":[[1230,13]]},"1576":{"position":[[243,13]]}}}],["textual",{"_index":2021,"t":{"1244":{"position":[[455,7],[522,7]]}}}],["text{subject",{"_index":2416,"t":{"1335":{"position":[[58,13]]}}}],["theta",{"_index":2420,"t":{"1335":{"position":[[106,6],[192,23]]},"1440":{"position":[[655,8]]},"1531":{"position":[[655,8]]}}}],["third",{"_index":166,"t":{"908":{"position":[[52,6]]}}}],["third:\"method",{"_index":181,"t":{"910":{"position":[[258,13]]}}}],["those",{"_index":3041,"t":{"1463":{"position":[[970,5]]},"1627":{"position":[[970,5]]}}}],["thpf",{"_index":1474,"t":{"1127":{"position":[[522,14]]}}}],["thread",{"_index":1197,"t":{"1063":{"position":[[556,8],[565,6],[2169,6],[2238,8],[2247,6],[2324,6]]}}}],["three",{"_index":182,"t":{"910":{"position":[[272,7]]}}}],["time",{"_index":2226,"t":{"1288":{"position":[[59,6]]},"1290":{"position":[[193,6],[252,6],[359,6]]},"1294":{"position":[[101,6],[141,6],[174,6]]},"1298":{"position":[[94,6]]},"1300":{"position":[[135,6],[144,6],[153,6]]},"1302":{"position":[[70,6],[79,6],[86,6]]},"1304":{"position":[[7,6],[80,6],[89,6],[98,6]]},"1325":{"position":[[243,6],[290,5]]},"1327":{"position":[[187,6]]},"1349":{"position":[[67,6],[98,6]]},"1351":{"position":[[13,6],[22,6],[55,6],[66,6],[77,6],[115,6],[148,6],[158,6],[424,6],[435,6],[444,6],[453,6],[463,6]]},"1463":{"position":[[422,5]]},"1470":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"1627":{"position":[[422,5]]},"1634":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"1699":{"position":[[143,6]]},"1704":{"position":[[167,6]]},"1706":{"position":[[68,6]]},"1716":{"position":[[134,6]]},"1718":{"position":[[70,6],[89,6],[115,6]]}}}],["time.h",{"_index":82,"t":{"899":{"position":[[227,6]]}}}],["timer",{"_index":2612,"t":{"1377":{"position":[[1784,6]]}}}],["timer.start",{"_index":2622,"t":{"1377":{"position":[[1950,13]]}}}],["timer.stop",{"_index":2631,"t":{"1377":{"position":[[2142,12]]}}}],["timer.sum():.1f",{"_index":2642,"t":{"1377":{"position":[[2579,16]]}}}],["tip",{"_index":0,"t":{"873":{"position":[[0,3]]},"879":{"position":[[0,3]]},"890":{"position":[[0,3]]},"961":{"position":[[0,3]]},"1022":{"position":[[74,3],[247,3],[409,3]]},"1029":{"position":[[0,3]]},"1031":{"position":[[0,3]]},"1034":{"position":[[0,3]]},"1041":{"position":[[38,3]]},"1053":{"position":[[135,3]]},"1067":{"position":[[0,3]]},"1088":{"position":[[0,3]]},"1096":{"position":[[0,3]]},"1117":{"position":[[271,3]]},"1125":{"position":[[33,3]]},"1162":{"position":[[1335,3]]},"1191":{"position":[[126,3]]},"1234":{"position":[[0,3]]},"1273":{"position":[[282,3]]},"1296":{"position":[[0,3]]},"1298":{"position":[[0,3]]},"1304":{"position":[[133,3]]},"1331":{"position":[[0,3]]},"1400":{"position":[[1335,3]]},"1481":{"position":[[809,4]]},"1512":{"position":[[0,3]]},"1598":{"position":[[0,3]]},"1665":{"position":[[0,3]]},"1671":{"position":[[15,3]]},"1674":{"position":[[736,3]]},"1677":{"position":[[244,3],[382,3]]},"1679":{"position":[[736,3]]},"1681":{"position":[[0,3]]},"1685":{"position":[[116,3],[254,3]]},"1687":{"position":[[0,3]]},"1695":{"position":[[16,3],[136,3]]},"1704":{"position":[[0,3],[519,3],[721,3]]},"1708":{"position":[[154,3]]},"1710":{"position":[[0,3]]}}}],["titile(if",{"_index":3386,"t":{"1645":{"position":[[66,9]]}}}],["titl",{"_index":3381,"t":{"1643":{"position":[[321,7]]},"1645":{"position":[[100,5]]}}}],["title/window",{"_index":3385,"t":{"1645":{"position":[[53,12]]}}}],["title文字不能垂直居中,可以更换为window",{"_index":3380,"t":{"1643":{"position":[[295,25]]}}}],["tlpf",{"_index":1454,"t":{"1125":{"position":[[946,14]]}}}],["tmp",{"_index":746,"t":{"952":{"position":[[1435,5],[1545,5],[2882,5]]}}}],["tmp[0",{"_index":749,"t":{"952":{"position":[[1555,7],[2915,8],[3051,7]]}}}],["tmp[2",{"_index":751,"t":{"952":{"position":[[1567,7]]}}}],["tmp[20",{"_index":805,"t":{"952":{"position":[[2832,8]]}}}],["tmp[3",{"_index":808,"t":{"952":{"position":[[2944,8],[3059,8]]}}}],["tmp[max_vertex_num",{"_index":738,"t":{"952":{"position":[[1156,20]]}}}],["toc",{"_index":52,"t":{"894":{"position":[[19,5]]}}}],["todo(\"start",{"_index":1258,"t":{"1063":{"position":[[2148,11]]}}}],["token",{"_index":1743,"t":{"1212":{"position":[[20,9],[577,8]]},"1214":{"position":[[44,8],[179,8]]},"1412":{"position":[[89,5],[411,11],[565,9]]},"1414":{"position":[[575,9]]},"1417":{"position":[[72,12],[250,9]]},"1419":{"position":[[2066,7]]},"1434":{"position":[[120,7],[323,5],[563,5],[636,11]]},"1436":{"position":[[174,5],[261,5],[302,5]]},"1438":{"position":[[67,5],[116,5]]},"1440":{"position":[[56,24]]},"1445":{"position":[[76,5],[137,5]]},"1452":{"position":[[34,5]]},"1463":{"position":[[249,5]]},"1465":{"position":[[37,5]]},"1467":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"1470":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"1472":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"1474":{"position":[[230,5],[300,6]]},"1525":{"position":[[120,7],[323,5],[563,5],[636,11]]},"1527":{"position":[[174,5],[261,5],[302,5]]},"1529":{"position":[[67,5],[116,5]]},"1531":{"position":[[56,24]]},"1536":{"position":[[76,5],[137,5]]},"1543":{"position":[[34,5]]},"1558":{"position":[[20,9],[577,8]]},"1560":{"position":[[44,8],[179,8]]},"1588":{"position":[[1245,8],[1290,6],[1308,6],[1342,5],[1371,15],[1397,12],[1420,12],[1445,5],[1467,5],[1577,5],[1614,6],[1639,5],[1675,37],[1720,5]]},"1616":{"position":[[89,5],[411,11],[565,9]]},"1618":{"position":[[575,9]]},"1621":{"position":[[72,12],[250,9]]},"1623":{"position":[[2067,7]]},"1627":{"position":[[249,5]]},"1629":{"position":[[37,5]]},"1631":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"1634":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"1636":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"1638":{"position":[[12,9]]},"1640":{"position":[[230,5],[300,6]]}}}],["tokenizer、quant",{"_index":2778,"t":{"1414":{"position":[[388,19]]},"1618":{"position":[[388,19]]}}}],["tokenize后为tensor",{"_index":1750,"t":{"1212":{"position":[[161,19],[433,19]]},"1558":{"position":[[161,19],[433,19]]}}}],["tokens。vqgan",{"_index":3283,"t":{"1588":{"position":[[1269,12]]}}}],["token或random",{"_index":1999,"t":{"1242":{"position":[[92,12]]}}}],["token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做dot",{"_index":2045,"t":{"1244":{"position":[[1264,57]]}}}],["token进行遮挡后,喂入encoder中。对于每个被mask掉的词汇,bert",{"_index":2000,"t":{"1242":{"position":[[105,68]]}}}],["token)出发进行思考,产生了自回归模型是否有必要与向量量化(vector",{"_index":2931,"t":{"1436":{"position":[[186,38]]},"1527":{"position":[[186,38]]}}}],["top",{"_index":1063,"t":{"981":{"position":[[134,6],[163,6]]},"1262":{"position":[[0,3],[73,3],[364,3],[433,3],[492,3]]},"1264":{"position":[[0,3]]},"1266":{"position":[[62,3],[70,3]]}}}],["topologicalsort",{"_index":664,"t":{"950":{"position":[[1758,30]]}}}],["torch",{"_index":2209,"t":{"1280":{"position":[[3236,5]]},"1315":{"position":[[299,5]]},"1317":{"position":[[288,5]]},"1377":{"position":[[7,5],[37,5],[112,5]]},"1583":{"position":[[7,5]]},"1606":{"position":[[285,5]]}}}],["torch.cat([clip.tokenize(p",{"_index":1745,"t":{"1212":{"position":[[57,27],[332,27]]},"1558":{"position":[[57,27],[332,27]]}}}],["torch.concat((a",{"_index":2663,"t":{"1382":{"position":[[295,16]]}}}],["torch.linspac",{"_index":2291,"t":{"1315":{"position":[[309,15]]},"1317":{"position":[[298,15]]}}}],["torch.log",{"_index":2366,"t":{"1322":{"position":[[1444,9]]}}}],["torch.log(torch.softmax(predict",{"_index":2372,"t":{"1322":{"position":[[1590,32]]}}}],["torch.nn",{"_index":2289,"t":{"1315":{"position":[[260,8]]},"1317":{"position":[[249,8]]},"1322":{"position":[[1481,8]]},"1377":{"position":[[64,8]]}}}],["torch.nn.crossentropyloss",{"_index":2606,"t":{"1377":{"position":[[1630,27]]}}}],["torch.nn.crossentropyloss相当于torch.softmax",{"_index":2365,"t":{"1322":{"position":[[1400,41]]}}}],["torch.nn.funct",{"_index":2210,"t":{"1280":{"position":[[3249,19]]}}}],["torch.nn.modul",{"_index":2578,"t":{"1377":{"position":[[971,17]]}}}],["torch.nn.nllloss",{"_index":2367,"t":{"1322":{"position":[[1456,17]]}}}],["torch.nn.sequenti",{"_index":2557,"t":{"1377":{"position":[[505,20]]}}}],["torch.optim.sgd(net.paramet",{"_index":2604,"t":{"1377":{"position":[[1582,33]]}}}],["torch.rand(4",{"_index":2655,"t":{"1382":{"position":[[104,13],[143,13]]}}}],["torch.reshape(x",{"_index":3318,"t":{"1606":{"position":[[347,16]]}}}],["torch.size([2",{"_index":2662,"t":{"1382":{"position":[[269,14]]}}}],["torch.size([4",{"_index":2667,"t":{"1382":{"position":[[390,14]]}}}],["torch.stack((a",{"_index":2658,"t":{"1382":{"position":[[182,15]]}}}],["torch.sum(y_hat.argmax(dim=1",{"_index":2591,"t":{"1377":{"position":[[1328,29]]}}}],["torch.tensor([1",{"_index":2374,"t":{"1322":{"position":[[1640,16],[1823,16]]},"1346":{"position":[[371,16]]},"1382":{"position":[[1043,16]]}}}],["torch.tensor([4",{"_index":2462,"t":{"1346":{"position":[[399,16]]},"1382":{"position":[[1071,16]]}}}],["torch.tensor([[0",{"_index":2153,"t":{"1280":{"position":[[957,17],[1137,17],[3541,17],[3721,17]]}}}],["torch.tensor([[0.1",{"_index":2680,"t":{"1382":{"position":[[777,19]]}}}],["torch.tensor([[1",{"_index":2155,"t":{"1280":{"position":[[1047,17],[3631,17]]},"1346":{"position":[[542,17]]},"1382":{"position":[[1211,17]]}}}],["torch.tensor([[2",{"_index":2371,"t":{"1322":{"position":[[1543,17],[1778,17]]}}}],["torch.tensor([[3",{"_index":2671,"t":{"1382":{"position":[[487,17]]}}}],["torch.tensor([[4",{"_index":2472,"t":{"1346":{"position":[[584,17]]},"1382":{"position":[[1252,17]]}}}],["torch.tensor(input",{"_index":2132,"t":{"1280":{"position":[[390,20],[3437,20]]}}}],["torch.tensor(np.arange(9",{"_index":3317,"t":{"1606":{"position":[[295,26]]}}}],["torchaudio",{"_index":1722,"t":{"1204":{"position":[[74,10]]},"1550":{"position":[[74,10]]}}}],["torchvis",{"_index":1721,"t":{"1204":{"position":[[62,11]]},"1550":{"position":[[62,11]]}}}],["tqdm",{"_index":1727,"t":{"1204":{"position":[[147,4]]},"1550":{"position":[[147,4]]}}}],["trace",{"_index":3270,"t":{"1580":{"position":[[144,5]]}}}],["trade",{"_index":2843,"t":{"1419":{"position":[[2451,29]]},"1623":{"position":[[2452,29]]}}}],["train",{"_index":1660,"t":{"1185":{"position":[[987,12]]},"1218":{"position":[[334,5]]},"1280":{"position":[[830,9]]},"1325":{"position":[[214,5]]},"1327":{"position":[[144,8]]},"1329":{"position":[[0,5],[14,5]]},"1377":{"position":[[1758,6],[2492,5]]},"1412":{"position":[[484,8],[980,8]]},"1458":{"position":[[340,9]]},"1467":{"position":[[1518,7]]},"1481":{"position":[[799,9]]},"1564":{"position":[[334,5]]},"1616":{"position":[[484,8],[980,8]]},"1631":{"position":[[1518,7]]}}}],["train(lenet",{"_index":2650,"t":{"1377":{"position":[[2762,12]]}}}],["train(net",{"_index":2592,"t":{"1377":{"position":[[1368,10]]}}}],["train_acc",{"_index":2634,"t":{"1377":{"position":[[2187,9],[2349,10]]}}}],["train_acc:.3f",{"_index":2639,"t":{"1377":{"position":[[2502,16]]}}}],["train_it",{"_index":2593,"t":{"1377":{"position":[[1379,11],[2656,11],[2775,11]]}}}],["train_l",{"_index":2632,"t":{"1377":{"position":[[2155,7],[2339,9]]}}}],["train_l:.3f",{"_index":2638,"t":{"1377":{"position":[[2477,14]]}}}],["train_lay",{"_index":1812,"t":{"1218":{"position":[[280,12],[379,12],[394,14]]},"1564":{"position":[[280,12],[379,12],[394,14]]}}}],["trained的cnn,该cnn通常使用预训练的incept",{"_index":1650,"t":{"1185":{"position":[[89,33]]}}}],["training&fin",{"_index":2041,"t":{"1244":{"position":[[1030,13]]}}}],["tran",{"_index":3176,"t":{"1481":{"position":[[691,5],[707,5]]}}}],["transform",{"_index":318,"t":{"925":{"position":[[1413,9]]},"1149":{"position":[[20,23]]},"1154":{"position":[[0,11]]},"1166":{"position":[[2,11],[104,11],[486,18],[609,11]]},"1175":{"position":[[0,11]]},"1228":{"position":[[114,14],[240,13],[463,20],[587,16]]},"1246":{"position":[[412,11]]},"1286":{"position":[[93,11]]},"1294":{"position":[[340,11]]},"1387":{"position":[[20,23]]},"1392":{"position":[[0,11]]},"1404":{"position":[[2,11],[104,11],[486,18],[609,11]]},"1454":{"position":[[56,12]]},"1456":{"position":[[57,11],[101,12]]},"1463":{"position":[[330,12],[472,12],[782,11]]},"1470":{"position":[[217,28]]},"1472":{"position":[[270,12],[320,11]]},"1504":{"position":[[154,20],[175,11],[247,11],[306,11]]},"1506":{"position":[[29,11],[155,11]]},"1508":{"position":[[120,11]]},"1574":{"position":[[114,14],[240,13],[463,20],[587,16]]},"1588":{"position":[[866,11],[1205,12]]},"1590":{"position":[[47,16],[95,12]]},"1627":{"position":[[330,12],[472,12],[782,11]]},"1634":{"position":[[217,28]]},"1636":{"position":[[270,12],[320,11]]}}}],["transformer_lay",{"_index":1944,"t":{"1228":{"position":[[484,17]]},"1574":{"position":[[484,17]]}}}],["transformerencoder(transformer_lay",{"_index":1950,"t":{"1228":{"position":[[631,37]]},"1574":{"position":[[631,37]]}}}],["transformerencoderlayer(d_model=512",{"_index":1945,"t":{"1228":{"position":[[504,36]]},"1574":{"position":[[504,36]]}}}],["transformermapperv2(nn.modul",{"_index":1931,"t":{"1228":{"position":[[78,31]]},"1574":{"position":[[78,31]]}}}],["transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。bert",{"_index":1994,"t":{"1240":{"position":[[98,92]]}}}],["transformer中有lay",{"_index":1942,"t":{"1228":{"position":[[413,18]]},"1574":{"position":[[413,18]]}}}],["transformer实战练习,代码见github",{"_index":2981,"t":{"1454":{"position":[[5,28]]}}}],["transformer是sequ",{"_index":1501,"t":{"1149":{"position":[[70,20]]},"1387":{"position":[[70,20]]}}}],["transformer由encoder和decoder组成,编码器和解码器都包含6个block",{"_index":1504,"t":{"1151":{"position":[[0,58]]},"1389":{"position":[[0,58]]}}}],["transformer的推理阶段,自回归类型的decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(error",{"_index":1575,"t":{"1168":{"position":[[0,131]]},"1406":{"position":[[0,131]]}}}],["transformer训练时采取的teach",{"_index":1556,"t":{"1162":{"position":[[826,33]]},"1400":{"position":[[826,33]]}}}],["transformer(residu",{"_index":3241,"t":{"1504":{"position":[[120,20]]}}}],["treat",{"_index":970,"t":{"979":{"position":[[336,7]]}}}],["treebank",{"_index":2036,"t":{"1244":{"position":[[747,33]]}}}],["true",{"_index":210,"t":{"910":{"position":[[834,5]]},"937":{"position":[[231,11]]},"941":{"position":[[198,16]]},"948":{"position":[[698,5],[1559,5]]},"950":{"position":[[1047,5],[1108,6]]},"952":{"position":[[71,4]]}}}],["true;//加入拓扑排序的顶点为n",{"_index":680,"t":{"950":{"position":[[2214,30]]}}}],["truncat",{"_index":1765,"t":{"1212":{"position":[[725,19]]},"1558":{"position":[[725,19]]}}}],["trung",{"_index":3175,"t":{"1481":{"position":[[685,5],[730,5]]}}}],["truth",{"_index":1679,"t":{"1187":{"position":[[755,6]]},"1242":{"position":[[248,21]]}}}],["truth一次性喂到decod",{"_index":1579,"t":{"1168":{"position":[[176,38]]},"1406":{"position":[[176,38]]}}}],["truth做bc",{"_index":3479,"t":{"1697":{"position":[[64,9]]}}}],["truth做cross",{"_index":2053,"t":{"1248":{"position":[[119,11]]}}}],["truth对nois",{"_index":1707,"t":{"1197":{"position":[[556,11]]}}}],["truth就是sampl",{"_index":1672,"t":{"1187":{"position":[[437,18]]}}}],["truth就是第3步中sample出的噪声ϵ\\epsilon",{"_index":1334,"t":{"1092":{"position":[[783,32]]}}}],["truth的bc",{"_index":3482,"t":{"1697":{"position":[[119,9]]}}}],["truth的策略,但是还额外需要一个encoder来产生lat",{"_index":1674,"t":{"1187":{"position":[[553,34]]}}}],["tsinghua",{"_index":1732,"t":{"1206":{"position":[[30,8]]},"1552":{"position":[[30,8]]}}}],["ttt",{"_index":2060,"t":{"1260":{"position":[[367,17]]},"1440":{"position":[[594,3],[772,3]]},"1442":{"position":[[365,3]]},"1531":{"position":[[594,3],[772,3]]},"1533":{"position":[[365,3]]}}}],["ttt从t,…,1t,\\ldots,1t,…,1范围循环ttt",{"_index":1338,"t":{"1094":{"position":[[54,33]]}}}],["ttt是从1,…,t1,\\ldots,t1,…,t范围中sample出的一个integ",{"_index":1324,"t":{"1092":{"position":[[50,46]]}}}],["ttt计数的循环,若t>1t>1t>1,则从normal",{"_index":1339,"t":{"1094":{"position":[[88,34]]}}}],["tune",{"_index":1574,"t":{"1166":{"position":[[580,28]]},"1232":{"position":[[1119,9]]},"1240":{"position":[[267,13]]},"1404":{"position":[[580,28]]},"1481":{"position":[[139,10],[158,54],[459,6]]},"1578":{"position":[[1119,9]]}}}],["tuning范式与scratch范式的训练效果做了对比,其中scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(converg",{"_index":2042,"t":{"1244":{"position":[[1044,109]]}}}],["tutori",{"_index":3245,"t":{"1510":{"position":[[16,9],[95,9]]}}}],["two",{"_index":177,"t":{"910":{"position":[[170,5]]},"1412":{"position":[[970,3]]},"1463":{"position":[[1246,3]]},"1616":{"position":[[970,3]]},"1627":{"position":[[1246,3]]}}}],["tx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon",{"_index":1327,"t":{"1092":{"position":[[196,71]]}}}],["type(m",{"_index":2597,"t":{"1377":{"position":[[1451,7],[1475,7]]}}}],["typedef",{"_index":184,"t":{"910":{"position":[[323,7],[540,7]]},"912":{"position":[[0,7]]},"948":{"position":[[126,7],[274,7]]},"950":{"position":[[198,7],[415,7]]},"952":{"position":[[165,7],[185,7],[357,7],[390,7],[489,7],[585,7]]},"955":{"position":[[100,7]]},"957":{"position":[[100,7]]},"959":{"position":[[186,7]]}}}],["typic",{"_index":2907,"t":{"1434":{"position":[[78,9]]},"1525":{"position":[[78,9]]}}}],["t}\\left[\\left\\|\\varepsilon",{"_index":2942,"t":{"1440":{"position":[[240,26]]},"1531":{"position":[[240,26]]}}}],["u",{"_index":63,"t":{"896":{"position":[[198,1],[218,1],[239,1]]},"952":{"position":[[1992,2],[2264,3],[2310,6],[2512,9]]},"1183":{"position":[[638,1],[696,1],[810,1]]},"1590":{"position":[[38,1]]},"1645":{"position":[[347,1]]},"1695":{"position":[[0,4],[125,1]]}}}],["u,int",{"_index":768,"t":{"952":{"position":[[2247,5]]}}}],["u==v",{"_index":774,"t":{"952":{"position":[[2361,6]]}}}],["u=q.front();//取队首顶点u",{"_index":670,"t":{"950":{"position":[[1926,20]]}}}],["u\\ell_uℓu",{"_index":2837,"t":{"1419":{"position":[[2221,11]]},"1623":{"position":[[2222,11]]}}}],["udg",{"_index":709,"t":{"952":{"position":[[374,4]]}}}],["ui",{"_index":1926,"t":{"1225":{"position":[[43,2],[241,2],[266,12],[279,2]]},"1571":{"position":[[43,2],[241,2],[266,12],[279,2]]}}}],["ull",{"_index":127,"t":{"905":{"position":[[381,3],[588,3]]}}}],["uncertainti",{"_index":2320,"t":{"1322":{"position":[[139,12]]}}}],["unchang",{"_index":2457,"t":{"1346":{"position":[[322,9]]}}}],["uncom",{"_index":1047,"t":{"979":{"position":[[1907,9]]},"1065":{"position":[[851,9]]}}}],["uncondit",{"_index":1278,"t":{"1082":{"position":[[145,13],[171,13]]}}}],["undefin",{"_index":1008,"t":{"979":{"position":[[1101,9]]}}}],["understand",{"_index":1644,"t":{"1183":{"position":[[887,13]]},"1244":{"position":[[125,13]]}}}],["unfreez",{"_index":1808,"t":{"1218":{"position":[[161,8],[271,8],[507,8]]},"1564":{"position":[[161,8],[271,8],[507,8]]}}}],["unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.zssgan.zssgan.determine_opt_lay",{"_index":1806,"t":{"1218":{"position":[[70,77]]},"1564":{"position":[[70,77]]}}}],["unifi",{"_index":1320,"t":{"1090":{"position":[[833,7]]},"1463":{"position":[[1431,7]]},"1588":{"position":[[2021,5]]},"1627":{"position":[[1431,7]]}}}],["uniqu",{"_index":319,"t":{"925":{"position":[[1448,6],[1520,9]]}}}],["unique_copi",{"_index":320,"t":{"925":{"position":[[1491,11]]}}}],["unit",{"_index":2797,"t":{"1419":{"position":[[544,6]]},"1623":{"position":[[544,6]]}}}],["unordered_map",{"_index":1067,"t":{"981":{"position":[[255,14]]},"999":{"position":[[136,14]]}}}],["unordered_multimap",{"_index":1069,"t":{"981":{"position":[[290,22]]}}}],["unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound",{"_index":1108,"t":{"999":{"position":[[171,69]]}}}],["unordered_multiset",{"_index":1068,"t":{"981":{"position":[[270,19]]},"999":{"position":[[151,19]]}}}],["unordered_set",{"_index":1066,"t":{"981":{"position":[[240,14]]},"999":{"position":[[121,14]]}}}],["unset",{"_index":3418,"t":{"1654":{"position":[[222,5],[238,5],[255,5]]}}}],["unsign",{"_index":128,"t":{"905":{"position":[[385,8]]},"945":{"position":[[1001,8]]}}}],["until",{"_index":2533,"t":{"1370":{"position":[[646,5]]}}}],["unzipped_list",{"_index":3356,"t":{"1610":{"position":[[389,14],[448,15]]}}}],["up",{"_index":3037,"t":{"1463":{"position":[[907,2]]},"1627":{"position":[[907,2]]}}}],["updat",{"_index":2405,"t":{"1329":{"position":[[47,6]]}}}],["update='append",{"_index":3260,"t":{"1519":{"position":[[261,16],[336,16]]},"1521":{"position":[[227,16]]}}}],["upper_bound",{"_index":337,"t":{"925":{"position":[[2014,11]]}}}],["url:rec",{"_index":3271,"t":{"1586":{"position":[[8,10]]}}}],["url:video",{"_index":3292,"t":{"1592":{"position":[[8,9]]}}}],["us",{"_index":9,"t":{"875":{"position":[[25,5]]},"881":{"position":[[25,5]]},"901":{"position":[[0,5]]},"903":{"position":[[250,5]]},"927":{"position":[[1481,5]]},"948":{"position":[[53,5]]},"950":{"position":[[119,5]]},"955":{"position":[[79,5]]},"957":{"position":[[79,5]]},"959":{"position":[[165,5]]},"963":{"position":[[25,5]]},"979":{"position":[[760,4],[1206,4],[2025,6]]},"1063":{"position":[[931,4]]},"1065":{"position":[[969,6]]},"1280":{"position":[[700,5],[2653,3]]},"1325":{"position":[[39,4],[250,5]]},"1327":{"position":[[70,4],[132,4],[215,4]]},"1329":{"position":[[126,4]]},"1434":{"position":[[354,5],[472,5],[973,3]]},"1456":{"position":[[53,3]]},"1467":{"position":[[1628,4],[1730,4]]},"1525":{"position":[[354,5],[472,5],[973,3]]},"1631":{"position":[[1628,4],[1730,4]]},"1671":{"position":[[66,5]]}}}],["usag",{"_index":2737,"t":{"1412":{"position":[[653,5]]},"1616":{"position":[[653,5]]}}}],["user",{"_index":269,"t":{"923":{"position":[[839,5]]}}}],["usual",{"_index":2138,"t":{"1280":{"position":[[656,7]]}}}],["util",{"_index":467,"t":{"933":{"position":[[0,11]]}}}],["utils/text_templates.pi",{"_index":1965,"t":{"1230":{"position":[[76,23]]},"1576":{"position":[[76,23]]}}}],["utkarsh",{"_index":3159,"t":{"1481":{"position":[[497,12]]}}}],["uttr",{"_index":3007,"t":{"1458":{"position":[[410,4],[575,4]]}}}],["ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​f(u,v)ej2π(ux+vy)dudv(8",{"_index":1408,"t":{"1107":{"position":[[812,60]]}}}],["ux+vy)}dxdy\\tag{7}f(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7",{"_index":1405,"t":{"1107":{"position":[[632,61]]}}}],["ux}du\\tag{6}f(x)=∫−∞∞​f(u)ej2πuxdu(6",{"_index":1401,"t":{"1107":{"position":[[475,37]]}}}],["ux}dx\\tag{5}f(u)=∫−∞+∞​f(x)e−j2πuxdx(5",{"_index":1398,"t":{"1107":{"position":[[359,39]]}}}],["ux}{n}}\\tag{10}f(x)=n1​u=0∑n−1​f(u)ejn2πux​(10",{"_index":1415,"t":{"1107":{"position":[[1095,47]]}}}],["ux}{n}}\\tag{9}f(u)=x=0∑n−1​f(x)e−jn2πux​(9",{"_index":1412,"t":{"1107":{"position":[[960,43]]}}}],["v",{"_index":762,"t":{"952":{"position":[[1995,8],[2612,2]]},"955":{"position":[[1118,2]]},"957":{"position":[[820,2]]},"1280":{"position":[[76,1]]},"1286":{"position":[[273,1]]},"1290":{"position":[[562,1],[592,1]]}}}],["v,int",{"_index":769,"t":{"952":{"position":[[2253,5]]}}}],["v.push_back(w",{"_index":855,"t":{"955":{"position":[[1179,15]]},"957":{"position":[[881,15]]}}}],["v1",{"_index":3488,"t":{"1704":{"position":[[22,12]]}}}],["v3",{"_index":1836,"t":{"1220":{"position":[[126,2],[1319,2],[1348,2]]},"1566":{"position":[[126,2],[1319,2],[1348,2]]}}}],["v3模型。在计算fid时,生成图像和真实图像分别输入到预训练的cnn中,提取出各自的特征表示向量(representation)。这两个represent",{"_index":1651,"t":{"1185":{"position":[[123,105]]}}}],["v=g.vertexs[u].connectors[i];//u的后继节点v",{"_index":672,"t":{"950":{"position":[[2011,38]]}}}],["v]^{h_k",{"_index":3102,"t":{"1470":{"position":[[823,8]]},"1634":{"position":[[823,8]]}}}],["v_n",{"_index":1122,"t":{"1012":{"position":[[137,6]]},"1016":{"position":[[171,4],[203,6]]}}}],["v_t",{"_index":1120,"t":{"1012":{"position":[[127,4]]},"1014":{"position":[[53,5]]},"1016":{"position":[[193,4]]}}}],["vae",{"_index":3073,"t":{"1467":{"position":[[1388,3],[1686,4],[1721,3]]},"1498":{"position":[[87,3],[105,3],[249,3],[506,3]]},"1500":{"position":[[13,3],[87,3],[247,3]]},"1502":{"position":[[13,3],[168,3],[270,3],[312,3]]},"1504":{"position":[[291,3]]},"1588":{"position":[[263,3],[310,3],[322,3],[331,3],[335,25],[380,3],[401,8],[410,64],[510,3],[521,3],[549,3],[610,3],[727,3],[887,3],[2094,15]]},"1631":{"position":[[1388,3],[1686,4],[1721,3]]}}}],["vaes(vari",{"_index":3235,"t":{"1498":{"position":[[512,16]]}}}],["vae、gan以及diffus",{"_index":1607,"t":{"1179":{"position":[[0,18]]}}}],["vae、vqvae(2017",{"_index":3276,"t":{"1588":{"position":[[233,21]]}}}],["vae在训练过程中,期待ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g",{"_index":1694,"t":{"1191":{"position":[[130,47]]}}}],["vae的数学原理,从vae到diffus",{"_index":1317,"t":{"1090":{"position":[[735,38]]}}}],["vae(vector",{"_index":3232,"t":{"1498":{"position":[[177,10],[318,10]]}}}],["vae)与diffus",{"_index":1313,"t":{"1090":{"position":[[591,14]]}}}],["vae)的训练策略是使用encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为decoder的输入,加上文字prompt",{"_index":1693,"t":{"1191":{"position":[[39,86]]}}}],["vae,vq",{"_index":3236,"t":{"1500":{"position":[[240,6]]}}}],["val",{"_index":374,"t":{"927":{"position":[[677,4],[722,6],[1038,4]]},"929":{"position":[[497,4],[698,4],[743,6],[982,4]]}}}],["valid",{"_index":2382,"t":{"1325":{"position":[[13,10],[139,10]]},"1327":{"position":[[34,11]]},"1329":{"position":[[54,10]]},"1458":{"position":[[474,5]]}}}],["valu",{"_index":483,"t":{"935":{"position":[[361,6],[510,8]]},"1280":{"position":[[942,6],[1265,6],[1321,6],[1436,7],[1988,18],[2148,6],[2184,6],[2250,9],[3526,6],[3829,6],[3885,6],[4000,7],[4307,6],[4343,6],[4409,9]]},"1434":{"position":[[161,6],[446,6],[629,6],[1026,6]]},"1525":{"position":[[161,6],[446,6],[629,6],[1026,6]]}}}],["value^{n",{"_index":2220,"t":{"1282":{"position":[[262,8]]}}}],["vanilla",{"_index":2713,"t":{"1412":{"position":[[209,7]]},"1616":{"position":[[209,7]]}}}],["var",{"_index":2775,"t":{"1414":{"position":[[192,3]]},"1463":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"1467":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"1470":{"position":[[1092,3]]},"1472":{"position":[[266,3],[292,3],[316,3]]},"1474":{"position":[[413,3],[506,3]]},"1588":{"position":[[987,9],[997,21]]},"1602":{"position":[[260,4],[294,4],[333,4],[373,4]]},"1618":{"position":[[192,3]]},"1627":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"1631":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"1634":{"position":[[1092,3]]},"1636":{"position":[[266,3],[292,3],[316,3]]},"1638":{"position":[[27,3],[252,3]]},"1640":{"position":[[413,3],[506,3]]}}}],["varepsilon_\\theta",{"_index":2955,"t":{"1440":{"position":[[627,23]]},"1531":{"position":[[627,23]]}}}],["varepsilon_\\theta\\left(x_t",{"_index":2943,"t":{"1440":{"position":[[267,27]]},"1531":{"position":[[267,27]]}}}],["varepsilonxt​=αˉt​x​+1−αˉt",{"_index":2952,"t":{"1440":{"position":[[517,33]]},"1531":{"position":[[517,33]]}}}],["variant",{"_index":2923,"t":{"1434":{"position":[[793,9]]},"1498":{"position":[[5,7]]},"1525":{"position":[[793,9]]},"1588":{"position":[[281,7]]}}}],["variat",{"_index":1309,"t":{"1090":{"position":[[545,25]]},"1191":{"position":[[0,18]]},"1498":{"position":[[198,11],[339,11]]}}}],["vc++6.0中指针初始化为0xcccccccc",{"_index":732,"t":{"952":{"position":[[873,26]]}}}],["vc++6.0中指针初始化为0xcccccccc,如果不将指针初始化为null",{"_index":741,"t":{"952":{"position":[[1221,45]]}}}],["vec",{"_index":3441,"t":{"1671":{"position":[[820,4]]}}}],["vec.empti",{"_index":3446,"t":{"1671":{"position":[[971,13]]}}}],["vec.push_back(remaind",{"_index":3444,"t":{"1671":{"position":[[904,25]]}}}],["vec.rbegin",{"_index":3447,"t":{"1671":{"position":[[1024,13]]}}}],["vec.rend",{"_index":3448,"t":{"1671":{"position":[[1044,11]]}}}],["vector",{"_index":85,"t":{"901":{"position":[[68,6]]},"927":{"position":[[0,10],[149,81],[231,27],[433,12],[1301,33],[1338,55],[1472,8]]},"948":{"position":[[29,8]]},"950":{"position":[[50,8]]},"981":{"position":[[19,17]]},"983":{"position":[[94,19],[224,12]]},"1218":{"position":[[845,10]]},"1432":{"position":[[87,6]]},"1434":{"position":[[103,6],[815,6]]},"1523":{"position":[[87,6]]},"1525":{"position":[[103,6],[815,6]]},"1564":{"position":[[845,10]]},"1588":{"position":[[693,7]]}}}],["vector::iter",{"_index":646,"t":{"950":{"position":[[1177,24]]}}}],["vector为底层容器,堆heap",{"_index":256,"t":{"923":{"position":[[448,41]]}}}],["vector对象,存储的是int",{"_index":361,"t":{"927":{"position":[[277,27]]}}}],["vector对象,并从由迭代器first和last定义的序列[first",{"_index":366,"t":{"927":{"position":[[380,41]]}}}],["vector的s",{"_index":1072,"t":{"983":{"position":[[61,18]]}}}],["vector)zzz",{"_index":2932,"t":{"1438":{"position":[[92,10]]},"1529":{"position":[[92,10]]}}}],["ver",{"_index":721,"t":{"952":{"position":[[644,5]]}}}],["veri",{"_index":1054,"t":{"979":{"position":[[2018,4]]},"1065":{"position":[[962,4]]},"1280":{"position":[[2932,4]]}}}],["verifi",{"_index":2756,"t":{"1412":{"position":[[1122,6]]},"1463":{"position":[[738,8]]},"1616":{"position":[[1122,6]]},"1627":{"position":[[738,8]]}}}],["vernum",{"_index":727,"t":{"952":{"position":[[798,7],[1339,7],[1456,8]]}}}],["vernum,arcnum",{"_index":719,"t":{"952":{"position":[[621,14]]}}}],["vers[a].firstarc",{"_index":759,"t":{"952":{"position":[[1752,18],[1793,18],[1875,17]]}}}],["vers[i].data=tmp[i",{"_index":748,"t":{"952":{"position":[[1473,21]]}}}],["vers[i].firstarc",{"_index":730,"t":{"952":{"position":[[847,17]]}}}],["version/src/project0/build目录下执行mak",{"_index":964,"t":{"979":{"position":[[43,35]]}}}],["version/src/projecti/build",{"_index":946,"t":{"969":{"position":[[287,33]]},"973":{"position":[[114,29]]}}}],["version/src/projecti/build文件夹下进行,即要在终端中通过cd",{"_index":1264,"t":{"1065":{"position":[[17,49]]}}}],["version/src/projecti/build目录下创建.bochsrc",{"_index":1018,"t":{"979":{"position":[[1379,41]]}}}],["version/src/projecti/build目录下的makefi",{"_index":977,"t":{"979":{"position":[[593,39],[1158,39]]}}}],["version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefil",{"_index":971,"t":{"979":{"position":[[369,71]]}}}],["version/src/projecti/src/geeko",{"_index":945,"t":{"969":{"position":[[232,37]]}}}],["version/src/projecti/src/geekos/main.c",{"_index":1175,"t":{"1063":{"position":[[9,40]]}}}],["version/src/目录下会存在project0",{"_index":942,"t":{"969":{"position":[[131,26]]}}}],["vert",{"_index":2417,"t":{"1335":{"position":[[83,5]]},"1337":{"position":[[92,5],[273,5]]}}}],["vert^2_1",{"_index":2418,"t":{"1335":{"position":[[91,9]]},"1337":{"position":[[100,9],[281,9]]}}}],["vert_2",{"_index":2309,"t":{"1320":{"position":[[181,7]]}}}],["vertex",{"_index":185,"t":{"910":{"position":[[338,6],[414,8],[516,7],[578,8]]},"948":{"position":[[141,6],[198,8],[250,7],[312,8]]},"950":{"position":[[213,6],[289,8],[391,7],[453,8]]}}}],["vertex(int",{"_index":191,"t":{"910":{"position":[[460,10]]},"948":{"position":[[219,10]]},"950":{"position":[[335,10]]}}}],["vertexs.resize(1",{"_index":206,"t":{"910":{"position":[[752,18]]},"950":{"position":[[627,18]]}}}],["vertexs.resize(n",{"_index":203,"t":{"910":{"position":[[697,18]]},"948":{"position":[[431,18]]},"950":{"position":[[572,18]]}}}],["vertexs.s",{"_index":580,"t":{"948":{"position":[[516,16]]},"950":{"position":[[712,16]]}}}],["vertexs[id1].connectors.push_back(id2",{"_index":581,"t":{"948":{"position":[[560,39],[609,39]]},"950":{"position":[[756,39],[856,39]]}}}],["vertexs[id1].indegre",{"_index":636,"t":{"950":{"position":[[962,24]]}}}],["vertexs[id1].outdegre",{"_index":634,"t":{"950":{"position":[[796,25],[936,25]]}}}],["vertexs[id2].connectors.push_back(id1",{"_index":582,"t":{"948":{"position":[[649,39]]},"950":{"position":[[896,39]]}}}],["vertexs[id2].indegre",{"_index":635,"t":{"950":{"position":[[822,24],[1013,24]]}}}],["vertexs[id2].outdegre",{"_index":637,"t":{"950":{"position":[[987,25]]}}}],["vertexs[id].connectors.s",{"_index":594,"t":{"948":{"position":[[920,30],[1353,30]]}}}],["vertexs[id].connectors[i",{"_index":595,"t":{"948":{"position":[[968,26],[1401,26]]}}}],["vertextyp",{"_index":701,"t":{"952":{"position":[[218,10],[511,10],[941,10],[2108,10]]}}}],["vertic",{"_index":3388,"t":{"1645":{"position":[[124,11]]}}}],["vga_update_interv",{"_index":1041,"t":{"979":{"position":[[1805,20]]},"1065":{"position":[[749,20]]}}}],["vgaromimag",{"_index":1024,"t":{"979":{"position":[[1509,12]]},"1065":{"position":[[453,12]]}}}],["vi",{"_index":3253,"t":{"1519":{"position":[[26,3]]},"1521":{"position":[[26,3]]}}}],["via",{"_index":3126,"t":{"1476":{"position":[[110,3]]},"1481":{"position":[[627,3]]}}}],["video",{"_index":3077,"t":{"1467":{"position":[[1680,5]]},"1510":{"position":[[121,5]]},"1631":{"position":[[1680,5]]}}}],["viet",{"_index":3177,"t":{"1481":{"position":[[697,4]]}}}],["vis.line([0",{"_index":3255,"t":{"1519":{"position":[[116,14]]}}}],["vis.line([[0",{"_index":3263,"t":{"1521":{"position":[[41,14]]}}}],["vis.line([loss.item",{"_index":3261,"t":{"1519":{"position":[[289,23]]}}}],["visdom",{"_index":3251,"t":{"1514":{"position":[[12,6]]},"1517":{"position":[[0,28],[37,6]]},"1519":{"position":[[5,6],[19,6],[32,8]]},"1521":{"position":[[5,6],[19,6],[32,8]]}}}],["visdom.serv",{"_index":3252,"t":{"1517":{"position":[[54,13]]}}}],["visit",{"_index":585,"t":{"948":{"position":[[753,8],[1132,8]]}}}],["visit(vertextyp",{"_index":704,"t":{"952":{"position":[[290,16]]}}}],["visit[cnt]=0",{"_index":811,"t":{"952":{"position":[[2992,13]]}}}],["visit[max_vertex_num",{"_index":763,"t":{"952":{"position":[[2077,22]]}}}],["visit[p",{"_index":783,"t":{"952":{"position":[[2568,8]]}}}],["visit[u]=0",{"_index":787,"t":{"952":{"position":[[2679,11]]}}}],["visit[u]=1",{"_index":771,"t":{"952":{"position":[[2298,11]]}}}],["visited.count(id1",{"_index":596,"t":{"948":{"position":[[998,19],[1431,19]]}}}],["visited.insert(id1",{"_index":598,"t":{"948":{"position":[[1044,20],[1497,20]]}}}],["visited.insert(start",{"_index":589,"t":{"948":{"position":[[802,22],[1216,22]]}}}],["visual",{"_index":2710,"t":{"1412":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"1463":{"position":[[11,6],[352,6],[1409,6]]},"1465":{"position":[[168,6]]},"1588":{"position":[[1262,6],[1632,6],[1668,6],[1713,6]]},"1616":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"1627":{"position":[[11,6],[352,6],[1409,6]]},"1629":{"position":[[168,6]]}}}],["vit",{"_index":3279,"t":{"1588":{"position":[[668,8],[934,16]]}}}],["viz.line([[y1",{"_index":3267,"t":{"1521":{"position":[[177,14]]}}}],["viz.line([real_y_data",{"_index":3258,"t":{"1519":{"position":[[208,23]]}}}],["vllm",{"_index":2782,"t":{"1414":{"position":[[761,4]]},"1618":{"position":[[760,4]]}}}],["vnode",{"_index":715,"t":{"952":{"position":[[504,6],[547,7]]}}}],["vnv_nvn",{"_index":1159,"t":{"1048":{"position":[[68,21]]}}}],["voc1voc_1voc1​词汇向量输入时,在decoder中,voc1voc_1voc1",{"_index":1586,"t":{"1170":{"position":[[177,87]]},"1408":{"position":[[177,87]]}}}],["vocabulari",{"_index":1542,"t":{"1162":{"position":[[6,16]]},"1400":{"position":[[6,16]]}}}],["vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(nlp",{"_index":1543,"t":{"1162":{"position":[[23,95]]},"1400":{"position":[[23,95]]}}}],["voc中,类别种类为20类,因此在预测阶段输出的[7",{"_index":3505,"t":{"1704":{"position":[[423,27]]}}}],["void",{"_index":638,"t":{"950":{"position":[[1073,4]]},"952":{"position":[[285,4],[2215,4]]},"955":{"position":[[1073,4],[1360,4],[1475,4],[1590,4]]},"957":{"position":[[775,4],[1041,4],[1148,4],[1255,4]]},"959":{"position":[[539,4]]},"1063":{"position":[[82,4],[1294,4],[1833,4]]}}}],["voxceleb1",{"_index":2988,"t":{"1458":{"position":[[24,10],[72,10]]}}}],["vq",{"_index":3110,"t":{"1470":{"position":[[1241,2],[1261,2]]},"1472":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]},"1498":{"position":[[78,8],[102,2],[161,15],[310,7],[503,2]]},"1500":{"position":[[10,2],[79,7],[237,2]]},"1502":{"position":[[10,2],[165,2],[267,2],[309,2]]},"1504":{"position":[[288,2]]},"1588":{"position":[[260,2],[307,2],[328,2],[377,2],[507,2],[525,23],[553,56],[690,2],[724,2],[821,2],[884,2]]},"1634":{"position":[[1241,2],[1261,2]]},"1636":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]}}}],["vqgan",{"_index":2783,"t":{"1417":{"position":[[5,5]]},"1467":{"position":[[1033,5],[1212,5],[1331,5]]},"1472":{"position":[[346,5]]},"1502":{"position":[[0,5],[63,15]]},"1588":{"position":[[893,5],[1234,10]]},"1621":{"position":[[5,5]]},"1631":{"position":[[1033,5],[1212,5],[1331,5]]},"1636":{"position":[[346,5]]}}}],["vqgan、vqvae、var、maskgit",{"_index":2930,"t":{"1436":{"position":[[108,23]]},"1527":{"position":[[108,23]]}}}],["vqgan(2021",{"_index":3278,"t":{"1588":{"position":[[650,17]]}}}],["vqgan(2022",{"_index":3280,"t":{"1588":{"position":[[677,12]]}}}],["vqgan(vector",{"_index":3237,"t":{"1502":{"position":[[101,17]]}}}],["vqgan,rq",{"_index":3242,"t":{"1504":{"position":[[297,8]]}}}],["vqvae",{"_index":3074,"t":{"1467":{"position":[[1505,5]]},"1472":{"position":[[64,5]]},"1498":{"position":[[31,5]]},"1500":{"position":[[0,5]]},"1631":{"position":[[1505,5]]},"1636":{"position":[[64,5]]},"1638":{"position":[[6,5]]}}}],["vqvae、vqgan",{"_index":3221,"t":{"1491":{"position":[[517,47]]}}}],["vqvae、vqga、dal",{"_index":2772,"t":{"1414":{"position":[[64,21]]},"1618":{"position":[[64,21]]}}}],["vrtype",{"_index":702,"t":{"952":{"position":[[248,6],[433,6]]}}}],["vtv_tvt",{"_index":1158,"t":{"1048":{"position":[[47,20]]}}}],["vt​∪vn​)∗(1",{"_index":1124,"t":{"1012":{"position":[[157,15]]}}}],["vt​∪vn​)∗(3",{"_index":1137,"t":{"1016":{"position":[[229,15]]}}}],["vt∗(2)",{"_index":1125,"t":{"1014":{"position":[[6,9]]}}}],["vt∗​(2",{"_index":1129,"t":{"1014":{"position":[[72,9]]}}}],["vt∪vn)∗(1)",{"_index":1117,"t":{"1012":{"position":[[73,14]]}}}],["vt∪vn)∗(3)\\alpha",{"_index":1134,"t":{"1016":{"position":[[115,19]]}}}],["vvv",{"_index":2069,"t":{"1262":{"position":[[216,3]]},"1264":{"position":[[166,3]]}}}],["v当前是第k",{"_index":770,"t":{"952":{"position":[[2268,10]]}}}],["v的入度减1",{"_index":674,"t":{"950":{"position":[[2067,9]]}}}],["w",{"_index":1787,"t":{"1216":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"1218":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"1223":{"position":[[72,1],[346,1],[618,1]]},"1228":{"position":[[13,1]]},"1335":{"position":[[89,1]]},"1337":{"position":[[98,1],[237,2],[279,1],[332,2],[345,1]]},"1351":{"position":[[451,1]]},"1370":{"position":[[564,1],[608,1],[612,1]]},"1470":{"position":[[448,1]]},"1562":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"1564":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"1569":{"position":[[72,1],[346,1],[618,1]]},"1574":{"position":[[13,1]]},"1612":{"position":[[170,3]]},"1634":{"position":[[448,1]]},"1704":{"position":[[308,2]]}}}],["w')o(co​×ci​×h×w×h′×w",{"_index":2504,"t":{"1351":{"position":[[470,23]]}}}],["w'co​×h′×w",{"_index":2497,"t":{"1351":{"position":[[165,11]]}}}],["w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\parti",{"_index":2430,"t":{"1337":{"position":[[177,59]]}}}],["w1,p1),(w2,p2),…,(wv,pv)}\\left\\{\\left(w_1",{"_index":2085,"t":{"1264":{"position":[[207,44]]}}}],["w1,w2w_{1",{"_index":2801,"t":{"1419":{"position":[[789,17]]},"1623":{"position":[[789,17]]}}}],["w=q.front",{"_index":854,"t":{"955":{"position":[[1157,12]]},"957":{"position":[[859,12]]}}}],["w][b,1,h,w]的tensor",{"_index":3530,"t":{"1712":{"position":[[196,46]]}}}],["w][b,1,h,w]的tensor,再将二者concat后通过7×77",{"_index":3534,"t":{"1716":{"position":[[97,36]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b",{"_index":3531,"t":{"1714":{"position":[[24,56]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b",{"_index":3533,"t":{"1716":{"position":[[24,66]]}}}],["w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b",{"_index":3545,"t":{"1722":{"position":[[56,40]]}}}],["w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b",{"_index":3529,"t":{"1712":{"position":[[153,36]]}}}],["w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b",{"_index":3527,"t":{"1712":{"position":[[30,36]]}}}],["w_2\\\\1&d(u,v",{"_index":1485,"t":{"1129":{"position":[[525,14]]}}}],["w_2\\end{cases}\\tag{24}h(u,v)=⎩⎨⎧​101​d(u,v)w2​​(24",{"_index":1486,"t":{"1129":{"position":[[540,76]]}}}],["w_code",{"_index":1910,"t":{"1223":{"position":[[143,20]]},"1569":{"position":[[143,20]]}}}],["w_encod",{"_index":1913,"t":{"1223":{"position":[[292,9]]},"1569":{"position":[[292,9]]}}}],["w_i",{"_index":2080,"t":{"1262":{"position":[[604,3]]},"1264":{"position":[[713,3]]}}}],["w_k",{"_index":3107,"t":{"1470":{"position":[[1029,3]]},"1634":{"position":[[1029,3]]}}}],["w_key",{"_index":2152,"t":{"1280":{"position":[[949,5],[1288,5],[3533,5],[3852,5]]}}}],["w_khk​×wk",{"_index":3091,"t":{"1470":{"position":[[559,10],[878,10]]},"1634":{"position":[[559,10],[878,10]]}}}],["w_k}rk​∈[v]hk​×wk",{"_index":3103,"t":{"1470":{"position":[[839,18]]},"1634":{"position":[[839,18]]}}}],["w_queri",{"_index":2154,"t":{"1280":{"position":[[1037,7],[1313,7],[3621,7],[3877,7]]}}}],["w_t",{"_index":2441,"t":{"1337":{"position":[[496,4]]}}}],["w_valu",{"_index":2156,"t":{"1280":{"position":[[1127,7],[1339,7],[3711,7],[3903,7]]}}}],["w_{2}w1​,w2",{"_index":2802,"t":{"1419":{"position":[[807,12]]},"1623":{"position":[[807,12]]}}}],["wall",{"_index":1014,"t":{"979":{"position":[[1266,4],[1315,4]]}}}],["warn",{"_index":968,"t":{"979":{"position":[[321,8]]}}}],["waveform",{"_index":2991,"t":{"1458":{"position":[[107,9]]}}}],["wci​×h×w",{"_index":2490,"t":{"1351":{"position":[[29,8]]}}}],["web",{"_index":1925,"t":{"1225":{"position":[[39,3]]},"1571":{"position":[[39,3]]}}}],["web_ui",{"_index":1929,"t":{"1225":{"position":[[298,8]]},"1571":{"position":[[298,8]]}}}],["weight",{"_index":713,"t":{"952":{"position":[[440,7]]},"1280":{"position":[[644,7],[912,7],[2139,8],[3496,7],[4298,8]]},"1346":{"position":[[336,7]]},"1602":{"position":[[420,7]]}}}],["weighted_valu",{"_index":2182,"t":{"1280":{"position":[[2232,15],[2325,16],[4391,15],[4484,16]]}}}],["weighted_values.sum(dim=0",{"_index":2187,"t":{"1280":{"position":[[2571,26],[4529,26]]}}}],["welcom",{"_index":3298,"t":{"1602":{"position":[[101,8]]}}}],["well",{"_index":2193,"t":{"1280":{"position":[[2707,4]]},"1463":{"position":[[397,5]]},"1627":{"position":[[397,5]]}}}],["werror",{"_index":975,"t":{"979":{"position":[[507,6]]}}}],["whether",{"_index":2712,"t":{"1412":{"position":[[201,7]]},"1616":{"position":[[201,7]]}}}],["while(!q.empti",{"_index":669,"t":{"950":{"position":[[1903,18]]},"955":{"position":[[1133,17]]},"957":{"position":[[835,17]]}}}],["while(1",{"_index":1182,"t":{"1063":{"position":[[150,8],[1362,8]]}}}],["while(cin",{"_index":392,"t":{"927":{"position":[[1537,9]]}}}],["while(g.s",{"_index":590,"t":{"948":{"position":[[825,14],[1273,14]]}}}],["while(in[p1]!=pre[rt",{"_index":905,"t":{"959":{"position":[[398,22]]}}}],["while(it!=g.vertexs.end",{"_index":648,"t":{"950":{"position":[[1226,27]]}}}],["while(m",{"_index":643,"t":{"950":{"position":[[1128,7]]}}}],["while(mid[p1]!=rt",{"_index":838,"t":{"955":{"position":[[431,18],[774,18]]},"957":{"position":[[315,18],[544,18]]}}}],["while(~scanf(\"%d\",&n",{"_index":875,"t":{"955":{"position":[[1720,22]]},"957":{"position":[[1385,22]]}}}],["wh×w",{"_index":3093,"t":{"1470":{"position":[[612,4]]},"1634":{"position":[[612,4]]}}}],["wide",{"_index":2919,"t":{"1434":{"position":[[687,4]]},"1525":{"position":[[687,4]]}}}],["win='win_id",{"_index":3256,"t":{"1519":{"position":[[137,13],[247,13],[322,13]]},"1521":{"position":[[68,13],[213,13]]}}}],["window",{"_index":3404,"t":{"1648":{"position":[[0,20]]}}}],["winograd",{"_index":2039,"t":{"1244":{"position":[[812,8]]}}}],["wisdom",{"_index":2905,"t":{"1434":{"position":[[13,6]]},"1525":{"position":[[13,6]]}}}],["wise",{"_index":1522,"t":{"1156":{"position":[[1087,10]]},"1216":{"position":[[1074,4]]},"1218":{"position":[[1129,4],[1253,15]]},"1230":{"position":[[441,4],[599,4]]},"1394":{"position":[[1087,10]]},"1562":{"position":[[1074,4]]},"1564":{"position":[[1129,4],[1253,15]]},"1576":{"position":[[441,4],[599,4]]},"1699":{"position":[[73,7]]}}}],["wise)以及逐点(point",{"_index":3484,"t":{"1699":{"position":[[57,15]]}}}],["without",{"_index":2717,"t":{"1412":{"position":[[253,7]]},"1432":{"position":[[79,7]]},"1467":{"position":[[1581,7]]},"1523":{"position":[[79,7]]},"1616":{"position":[[253,7]]},"1631":{"position":[[1581,7]]}}}],["wi​∈ck",{"_index":2082,"t":{"1262":{"position":[[641,7]]}}}],["wi​∈cp",{"_index":2102,"t":{"1264":{"position":[[750,7]]}}}],["wi∈ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2077,"t":{"1262":{"position":[[537,38]]}}}],["wi∈cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2099,"t":{"1264":{"position":[[646,38]]}}}],["wl",{"_index":3554,"t":{"1736":{"position":[[321,65]]}}}],["wl/wait",{"_index":3553,"t":{"1736":{"position":[[305,10]]}}}],["wnli(winograd",{"_index":2037,"t":{"1244":{"position":[[781,13]]}}}],["word",{"_index":1525,"t":{"1158":{"position":[[0,9]]},"1246":{"position":[[186,4]]},"1396":{"position":[[0,9]]}}}],["work",{"_index":983,"t":{"979":{"position":[[681,5]]},"1434":{"position":[[289,5],[950,4]]},"1467":{"position":[[1614,4],[1725,4]]},"1525":{"position":[[289,5],[950,4]]},"1580":{"position":[[41,4]]},"1594":{"position":[[106,4]]},"1631":{"position":[[1614,4],[1725,4]]}}}],["work.109",{"_index":1004,"t":{"979":{"position":[[1040,9]]}}}],["workshop",{"_index":3157,"t":{"1481":{"position":[[480,10]]}}}],["worship",{"_index":1354,"t":{"1096":{"position":[[78,7]]}}}],["write",{"_index":1048,"t":{"979":{"position":[[1925,5]]},"1065":{"position":[[869,5]]}}}],["wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1",{"_index":2436,"t":{"1337":{"position":[[394,40]]}}}],["www和偏置项bbb",{"_index":2529,"t":{"1370":{"position":[[458,39]]}}}],["w∥12​≤θ(1",{"_index":2422,"t":{"1335":{"position":[[142,11]]}}}],["w∥12≤θ(1)min",{"_index":2414,"t":{"1335":{"position":[[22,13]]}}}],["w为bbox的宽高,c为该bbox是否存在object",{"_index":3503,"t":{"1704":{"position":[[338,30]]}}}],["w归约为文法开始符号",{"_index":1172,"t":{"1053":{"position":[[103,31]]}}}],["x",{"_index":43,"t":{"881":{"position":[[100,1],[124,2],[147,1],[155,1]]},"883":{"position":[[91,2],[114,1],[131,1]]},"905":{"position":[[41,3],[69,5],[84,3]]},"915":{"position":[[4,2]]},"927":{"position":[[525,8],[1534,2],[1550,2]]},"929":{"position":[[290,8],[317,8]]},"991":{"position":[[118,3]]},"997":{"position":[[241,12],[274,10]]},"1101":{"position":[[308,1],[414,1]]},"1315":{"position":[[43,3],[305,1]]},"1317":{"position":[[42,1],[50,1],[54,1],[178,1],[190,1],[294,1]]},"1377":{"position":[[382,3],[873,3],[1092,2],[1135,1],[1157,1],[1162,2],[1171,1],[1917,3],[1986,2]]},"1606":{"position":[[291,1],[343,1],[386,4],[504,4]]},"1610":{"position":[[142,5],[278,4],[506,5]]}}}],["x)%mod",{"_index":115,"t":{"905":{"position":[[115,9]]}}}],["x)=11+e−x(1)\\sigma(x",{"_index":2278,"t":{"1315":{"position":[[0,23]]}}}],["x)=\\mathbb{e}_{\\varepsilon",{"_index":2941,"t":{"1440":{"position":[[212,27]]},"1531":{"position":[[212,27]]}}}],["x)>(i",{"_index":112,"t":{"905":{"position":[[28,10]]}}}],["x)\\mu(x)μ(x",{"_index":2824,"t":{"1419":{"position":[[1716,14],[1816,14]]},"1623":{"position":[[1717,14],[1817,14]]}}}],["x)\\sigma(x)σ(x",{"_index":2825,"t":{"1419":{"position":[[1733,17],[1836,18]]},"1623":{"position":[[1734,17],[1837,18]]}}}],["x,y)(x",{"_index":1369,"t":{"1099":{"position":[[0,41],[90,15]]}}}],["x.reshap",{"_index":2552,"t":{"1377":{"position":[[393,10]]}}}],["x.shape[0",{"_index":2630,"t":{"1377":{"position":[[2099,11]]}}}],["x.to(devic",{"_index":2584,"t":{"1377":{"position":[[1139,13],[1175,12],[1993,13]]}}}],["x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​做weight",{"_index":1330,"t":{"1092":{"position":[[445,122]]}}}],["x0x_0x0",{"_index":2974,"t":{"1442":{"position":[[436,8]]},"1533":{"position":[[436,8]]}}}],["x0∼p(x∣z)x_0",{"_index":2975,"t":{"1442":{"position":[[448,12]]},"1533":{"position":[[448,12]]}}}],["x1",{"_index":3320,"t":{"1606":{"position":[[381,2],[611,2]]}}}],["x1,...,xt−1][x_1,...,x_{t",{"_index":3274,"t":{"1588":{"position":[[85,26]]}}}],["x1,x2,...,xt−1)(x_1",{"_index":3068,"t":{"1467":{"position":[[1126,21]]},"1631":{"position":[[1126,21]]}}}],["x1[0",{"_index":3346,"t":{"1606":{"position":[[1195,21],[1232,20]]}}}],["x1[0,:,:]+x2[0,:,:](1)x1[0",{"_index":3331,"t":{"1606":{"position":[[846,27]]}}}],["x1[1,:,:]+x2[1,:,:](2)x1[1",{"_index":3334,"t":{"1606":{"position":[[924,27]]}}}],["x1[2,:,:]+x2[2,:,:](3)x1[2",{"_index":3337,"t":{"1606":{"position":[[1002,27]]}}}],["x1与x2在第0维度上维度相同,所以python",{"_index":3330,"t":{"1606":{"position":[[798,47]]}}}],["x2",{"_index":3323,"t":{"1606":{"position":[[499,2],[616,2]]}}}],["x2[0",{"_index":3332,"t":{"1606":{"position":[[882,5],[1220,8]]}}}],["x2[0,0",{"_index":3347,"t":{"1606":{"position":[[1256,15]]}}}],["x2[1",{"_index":3335,"t":{"1606":{"position":[[960,5]]}}}],["x2[2",{"_index":3338,"t":{"1606":{"position":[[1038,5]]}}}],["x86",{"_index":939,"t":{"969":{"position":[[89,12]]},"979":{"position":[[835,5]]}}}],["x86/elf",{"_index":991,"t":{"979":{"position":[[854,7]]}}}],["x86_64与i386",{"_index":976,"t":{"979":{"position":[[561,16]]}}}],["x using namespace std; int main() { vector colors(200001, 0); int B, E; while (scanf(\"%d %d\", &B, &E)) { if (B == 0 && E == 0) { break; } colors[B]++; // 刷墙起点标记 colors[E + 1]--; // 刷墙终点标记 } // 计算前缀和 for (int i = 1; i < colors.size(); i++) { colors[i] += colors[i - 1]; } int begin, end; while (scanf(\"%d %d\", &begin, &end)) { if (begin == 0 && end == 0) { break; } for (int i = begin; i <= end; i++) { printf(\"%d\\n\", colors[i]); } } return 0; }","s":"参考代码","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":881},{"i":886,"t":"使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。 首先初始化前缀和数组,使每一个元素等于为0。 该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值−1-1−1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,−1)[1, -1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于−1-1−1而抵消影响(自身值为−1-1−1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。 关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用\"\\n\"代替endl。 ios::sync_with_stdio(false);","s":"题解","u":"/en/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":881},{"i":888,"t":"tip 设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值","s":"反序输出","u":"/en/docs/Algorithms/题解/反序输出","h":"","p":887},{"i":890,"t":"#include using namespace std; int main() { for (int i = 1000; i <= 9999; i++) { int x = i * 9, y = 0; while (x > 0) { y = y * 10 + x % 10; x /= 10; } if (i == y) { cout << i << endl; } } return 0; }","s":"参考代码","u":"/en/docs/Algorithms/题解/反序输出","h":"#参考代码","p":887},{"i":892,"t":"反序输出可以分为两部分:拆分以及反序拼接 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分 while (x > 0) { y = y * 10 + x % 10; // 拼接与拆分 x /= 10; } 拼接:将s中的数字拼接成整数 int sum = 0; for (int i = 0; i < s.size(); i++) { sum = sum * 10 + s[i]; }","s":"题解","u":"/en/docs/Algorithms/题解/反序输出","h":"#题解","p":887},{"i":894,"t":"info 转载自Sonder的笔记本 vector:变长数组,倍增的思想 pair:存储一对数 string:字符串,substr(), c_str() queue:push(), front(), pop() priority_queue:优先队列,push(), top(), pop() stack:栈,push(), top(), pop() deque:双端队列 set, map, multiset, multimap:基于红黑树来实现,本质上是动态维护一个有序序列 unordered_set, unordered_map, unordered_multiset, unordered_multimap:哈希表 bitset:压位","s":"STL模板","u":"/en/docs/Algorithms/STL模板","h":"","p":893},{"i":896,"t":"vector a(10,3); // 定义一个长度为10的vector,初始化为3; a.size(); // vector的size,所有容器都有 a.empty(); // 范围vector是否为空,所有容器都有 a.clear(); // 清空 a.front(); // 第一个数 a.back(); // 最后一个数 a.push_back(); // 在最后插入一个数 a.pop_back(); // 删除最后一个数 // vector支持比较运算 vector a(4,3),b(3,4); if(a > b) cout << \"Yes\"; else cout << \"No\"","s":"vector","u":"/en/docs/Algorithms/STL模板","h":"#vector","p":893},{"i":898,"t":"pair a; a = {20,\"abc\"}; a.first(); // 获取第一个元素 a.second(); // 获取第二个元素 // pair也能进行sort","s":"pair","u":"/en/docs/Algorithms/STL模板","h":"#pair","p":893},{"i":900,"t":"string a = \"Acwing\"; a.size(); // 获取string的大小 a.empty(); // 判断是否为空 a.clear(); // 清空 a += \"def\"; cout << a. substr(1,2) << endl; // 第一个参数起始位置,第二个参数是字符串长度","s":"string","u":"/en/docs/Algorithms/STL模板","h":"#string","p":893},{"i":902,"t":"query a; a.size(); a.empty(); a.push(1); // 队尾插入元素 a.front(); // 返回队头元素 a.back(); // 返回队尾元素 a.pop(); // 删除队头元素","s":"query","u":"/en/docs/Algorithms/STL模板","h":"#query","p":893},{"i":904,"t":"// 默认是大根堆 priority_queue heap; heap.clear(); heap.size(); heap.empty(); // 如何定义一个小根堆: 1. 插入负数 2. 直接定义 heap.push(-x); // 黑科技方法 priority_queue,greater> q;","s":"priority_queue","u":"/en/docs/Algorithms/STL模板","h":"#priority_queue","p":893},{"i":906,"t":"stack s; s.size(); s.empty(); s.push(); s.top(); s.pop();","s":"stack","u":"/en/docs/Algorithms/STL模板","h":"#stack","p":893},{"i":908,"t":"deque a; a.size(); a.empty(); a.clear(); a.front(); a.back(); a.push_back(); a.pop_back();","s":"deque","u":"/en/docs/Algorithms/STL模板","h":"#deque","p":893},{"i":910,"t":"set s; // 不能有重复元素 // s.begin()/end() multiset MS; // 可以有重复元素 s.insert(1); 插入一个数 s.size(); s.empty(); s.clear(); s.find(1); // 查找一个元素,如果不存在的话返回end迭代器 s.erase(1); // 输入是一个数x,输出所有x (2)输入一个迭代器,删除这个迭代器 // set 最核心的操作 s.lower_bound(); // 范围大于等于x的最小的数 s.upper_bound(); // 返回大于x的最小的数","s":"set/multiset","u":"/en/docs/Algorithms/STL模板","h":"#setmultiset","p":893},{"i":912,"t":"#include // 和python里面的字典非常的相似 map a; a[\"2\"] = 3; a.insert({\"1\",1}); a.erase({\"1\",1}); a.find({\"1\",1}); unordered_set, unordered_map, unordered_multiset, unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound()这样的操作 (哈希表的内部是无序的)","s":"map/multimap","u":"/en/docs/Algorithms/STL模板","h":"#mapmultimap","p":893},{"i":914,"t":"可以省下来8位的空间 bitset<10000> s; // 支持所有的基本操作: // 移位操作:<< >> // == != // count() 返回有多少个1 // any() 判断是否至少有一个1 // none() 判断是否全为0 // set(),把所有为置为1 // set(k,v), 将第k个变为v // reset(), 把所有位变成0 // flip(), 把所有位取反","s":"biset","u":"/en/docs/Algorithms/STL模板","h":"#biset","p":893},{"i":916,"t":"info 转载自Sonder的笔记本 [TOC]","s":"机试技巧与STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"","p":915},{"i":918,"t":"CTRL + J 列出成员 Ctrl+E,D 格式化全部代码 Ctrl+K,F 格式化选中的代码 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTRL + F12 转到声明 CTRL + ALT + J 对象浏览 CTRL + ALT + F1 帮助目录 CTRL + F1 动态帮助 CTRL + K, CTRL + C 注释选择的代码 CTRL + K, CTRL + U 取消对选择代码的注释 CTRL + U 转小写 CTRL + SHIFT + U 转大写 F5 运行调试 CTRL + F5 运行不调试 F10 跨过程序执行 F11 单步逐句执行","s":"vs2018 快捷键","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":915},{"i":921,"t":"头文件 说明 头文件 说明 头文件 说明 assert.h 断言相关 ctype.h 字符类型判断 errno.h 标准错误机制 float.h 浮点限制 limits.h 整形限制 locale.h 本地化接口 math.h 数学函数 setjmp.h 非本地跳转 signal.h 信号相关 stdarg.h 可变参数处理 stddef.h 宏和类型定义 stdio.h 标准I/O stdlib.h 标准工具库 string.h 字符串和内存处理 time.h 时间相关","s":"标准c库","u":"/en/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":915},{"i":923,"t":"using namespace std; 头文件 说明 头文件 说明 头文件 说明 algorithm 通用算法 deque 双端队列 vector 向量 iterator 迭代器 stack 栈 map 图(键值对) list 列表 string 字符串 set 集合 queue 队列 bitset bit类 numeric 数值算法","s":"c++ STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":915},{"i":925,"t":"#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;","s":"常用头","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用头","p":915},{"i":927,"t":"//求最大值和最小值 #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) //取余 #define mod(x) ((x)%MOD) //for循环 #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i) //返回数组元素的个数 #define ARR_SIZE(a) (sizeof((a))/sizeof((a[0]))) //初始化数组 #define MT(x,i) memset(x,i,sizeof(x)) #define MEM(a,b) memset((a),(b),sizeof(a)) //符号重定义 #define LL long long #define ull unsigned long long #define pii pair //常见常数 #define PI acos(-1.0) #define eps 1e-12 #define INF 0x3f3f3f3f //int最大值 const int INF_INT = 2147483647; const ll INF_LL = 9223372036854775807LL; const ull INF_ULL = 18446744073709551615Ull; const ll P = 92540646808111039LL; const ll maxn = 1e5 + 10, MOD = 1e9 + 7; const int Move[4][2] = {-1,0,1,0,0,1,0,-1}; const int Move_[8][2] = {-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};","s":"常用宏定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":915},{"i":930,"t":"struct InitMember { int first; double second; char* third; float four; };","s":"定义","u":"/en/docs/Algorithms/机试技巧与STL","h":"#定义","p":915},{"i":932,"t":"方法一:定义时赋值​ struct InitMember test = {-10,3.141590,\"method one\",0.25}; 方法二:定义后逐个赋值​ struct InitMember test; test.first = -10; test.second = 3.141590; test.third = \"method two\"; test.four = 0.25; 方法三:定义时乱序赋值(C++风格)​ struct InitMember test = { second:3.141590, third:\"method three\", first:-10, four:0.25 }; 方法四:构造函数​ //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { ... ... ... return true; } } Graph; Graph g(8, false);","s":"初始化","u":"/en/docs/Algorithms/机试技巧与STL","h":"#初始化","p":915},{"i":934,"t":"typedef struct{int id;int h;} node; bool operator <(const node& a,const node & b){return (a.h)<(b.h);}","s":"运算符重载","u":"/en/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":915},{"i":937,"t":"int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) int *a = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 char *b = new char[10]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p","s":"常规","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常规","p":915},{"i":939,"t":"//列值固定 const int MAXCOL = 3; cin>>row; //申请一维数据并将其转成二维数组指针 int *pp_arr = new int[nRow * MAXCOL]; int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr; //此时p[i][j]就可正常使用","s":"动态申请列大小固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":915},{"i":941,"t":"cin>>row>>col; int **p = new int*[row]; for (int i = 0; i < row; i ++) { p[i] = new int[col]; }","s":"动态申请大小不固定的二维数组","u":"/en/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":915},{"i":943,"t":"参考: https://blog.csdn.net/f_zyj/article/details/51594851 https://download.csdn.net/download/f_zyj/9988653","s":"常用STL","u":"/en/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":915},{"i":945,"t":"STL底层说明​ C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> ... 每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品. 4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 (stack和queue其实是适配器,而不叫容器,因为是对容器的再封装) 6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现 7.set 底层数据结构为红黑树,有序,不重复 8.multiset 底层数据结构为红黑树,有序,可重复 9.map 底层数据结构为红黑树,有序,不重复 10.multimap 底层数据结构为红黑树,有序,可重复 11.hash_set 底层数据结构为hash表,无序,不重复 12.hash_multiset 底层数据结构为hash表,无序,可重复 13.hash_map 底层数据结构为hash表,无序,不重复 14.hash_multimap 底层数据结构为hash表,无序,可重复 CCF 编译出错原因: 不允许C++STL容器嵌套(需要满足相应的格式)​ 就是要在后面的“>”之间,必须得有一个空格,如果有多层,那每层都得有一个空格。 map > user;","s":"简述","u":"/en/docs/Algorithms/机试技巧与STL","h":"#简述","p":915},{"i":947,"t":"头文件:lgorithm 函数参数,返回值以及具体的使用方法请自行去头文件找定义!!! 不修改内容的序列操作​ 函数 说明 adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素 all_ofC++11 检测在给定范围中是否所有元素都满足给定的条件 any_ofC++11 检测在给定范围中是否存在元素满足给定条件 count 返回值等价于给定值的元素的个数 count_if 返回值满足给定条件的元素的个数 equal 返回两个范围是否相等 find 返回第一个值等价于给定值的元素 find_end 查找范围A中与范围B等价的子范围最后出现的位置 find_first_of 查找范围A中第一个与范围B中任一元素等价的元素的位置 find_if 返回第一个值满足给定条件的元素 find_if_notC++11 返回第一个值不满足给定条件的元素 for_each 对范围中的每个元素调用指定函数 mismatch 返回两个范围中第一个元素不等价的位置 none_ofC++11 检测在给定范围中是否不存在元素满足给定的条件 search 在范围A中查找第一个与范围B等价的子范围的位置 search_n 在给定范围中查找第一个连续n个元素都等价于给定值的子范围的位置 修改内容的序列操作​ 函数 说明 copy 将一个范围中的元素拷贝到新的位置处 copy_backward 将一个范围中的元素按逆序拷贝到新的位置处 copy_ifC++11 将一个范围中满足给定条件的元素拷贝到新的位置处 copy_nC++11 拷贝 n 个元素到新的位置处 fill 将一个范围的元素赋值为给定值 fill_n 将某个位置开始的 n 个元素赋值为给定值 generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素 generate_n 将一个函数的执行结果保存到指定位置开始的 n 个元素中 iter_swap 交换两个迭代器(Iterator)指向的元素 moveC++11 将一个范围中的元素移动到新的位置处 move_backwardC++11 将一个范围中的元素按逆序移动到新的位置处 random_shuffle 随机打乱指定范围中的元素的位置 remove 将一个范围中值等价于给定值的元素删除 remove_if 将一个范围中值满足给定条件的元素删除 remove_copy 拷贝一个范围的元素,将其中值等价于给定值的元素删除 remove_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素删除 replace 将一个范围中值等价于给定值的元素赋值为新的值 replace_copy 拷贝一个范围的元素,将其中值等价于给定值的元素赋值为新的值 replace_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素赋值为新的值 replace_if 将一个范围中值满足给定条件的元素赋值为新的值 reverse 反转排序指定范围中的元素 reverse_copy 拷贝指定范围的反转排序结果 rotate 循环移动指定范围中的元素 rotate_copy 拷贝指定范围的循环移动结果 shuffleC++11 用指定的随机数引擎随机打乱指定范围中的元素的位置 swap 交换两个对象的值 swap_ranges 交换两个范围的元素 transform 对指定范围中的每个元素调用某个函数以改变元素的值 unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。 unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果 划分操作​ 函数 说明 is_partitionedC++11 检测某个范围是否按指定谓词(Predicate)划分过 partition 将某个范围划分为两组 partition_copyC++11 拷贝指定范围的划分结果 partition_pointC++11 返回被划分范围的划分点 stable_partition 稳定划分,两组元素各维持相对顺序 排序操作​ 函数 说明 is_sortedC++11 检测指定范围是否已排序 is_sorted_untilC++11 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序 partial_sort_copy 拷贝部分排序的结果 sort 排序 stable_sort 稳定排序 二分法查找操作​ 函数 说明 binary_search 判断范围中是否存在值等价于给定值的元素 equal_range 返回范围中值等于给定值的元素组成的子范围 lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器 upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器 集合操作​ 函数 说明 includes 判断一个集合是否是另一个集合的子集 inplace_merge 就绪合并 merge 合并 set_difference 获得两个集合的差集 set_intersection 获得两个集合的交集 set_symmetric_difference 获得两个集合的对称差 set_union 获得两个集合的并集 堆操作​ 函数 说明 is_heap 检测给定范围是否满足堆结构 is_heap_untilC++11 检测给定范围中满足堆结构的最大子范围 make_heap 用给定范围构造出一个堆 pop_heap 从一个堆中删除最大的元素 push_heap 向堆中增加一个元素 sort_heap 将满足堆结构的范围排序 最大/最小操作​ 函数 说明 is_permutationC++11 判断一个序列是否是另一个序列的一种排序 lexicographical_compare 比较两个序列的字典序 max 返回两个元素中值最大的元素 max_element 返回给定范围中值最大的元素 min 返回两个元素中值最小的元素 min_element 返回给定范围中值最小的元素 minmaxC++11 返回两个元素中值最大及最小的元素 minmax_elementC++11 返回给定范围中值最大及最小的元素 next_permutation 返回给定范围中的元素组成的下一个按字典序的排列 prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列","s":"algorithm","u":"/en/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":915},{"i":949,"t":"头文件:vector 在STL的vector头文件中定义了vector(向量容器模版类),vector容器以连续数组的方式存储元素序列,可以将vector看作是以顺序结构实现的线性表。当我们在程序中需要使用动态数组时,vector将会是理想的选择,vector可以在使用过程中动态地增长存储空间。 vector模版类需要两个模版参数,第一个参数是存储元素的数据类型,第二个参数是存储分配器的类型,其中第二个参数是可选的,如果不给出第二个参数,将使用默认的分配器 下面给出几个常用的定义vector向量对象的方法示例: vector s; // 定义一个空的vector对象,存储的是int类型的元素 vector s(n); // 定义一个含有n个int元素的vector对象 vector s(first, last); // 定义一个vector对象,并从由迭代器first和last定义的序列[first, last)中复制初值 vector的基本操作: s[i] // 直接以下标方式访问容器中的元素 s.front() // 返回首元素 s.back() // 返回尾元素 s.push_back(x) // 向表尾插入元素x s.size() // 返回表长 s.empty() // 表为空时,返回真,否则返回假 s.pop_back() // 删除表尾元素 s.begin() // 返回指向首元素的随机存取迭代器 s.end() // 返回指向尾元素的下一个位置的随机存取迭代器 s.insert(it, val) // 向迭代器it指向的元素前插入新元素val s.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val s.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 s.erase(it) // 删除由迭代器it所指向的元素 s.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) s.reserve(n) // 预分配缓冲空间,使存储空间至少可容纳n个元素 s.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 s.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 s.clear() // 删除容器中的所有元素 s.swap(v) // 将s与另一个vector对象进行交换 s.assign(first, last) // 将序列替换成由迭代器first和last所指定的序列[first, last),[first, last)不能是原序列中的一部分 // 要注意的是,resize操作和clear操作都是对表的有效元素进行的操作,但并不一定会改变缓冲空间的大小 // 另外,vector还有其他的一些操作,如反转、取反等,不再一一列举 // vector上还定义了序列之间的比较操作运算符(>、<、>=、<=、==、!=),可以按照字典序比较两个序列。 // 还是来看一些示例代码吧…… /* * 输入个数不定的一组整数,再将这组整数按倒序输出 */ #include #include using namespace std; int main() { vector L; int x; while(cin >> x) { L.push_back(x); } for (int i = L.size() - 1; i >= 0; i--) { cout << L[i] << \" \"; } cout << endl; return 0; }","s":"vector","u":"/en/docs/Algorithms/机试技巧与STL","h":"#vector","p":915},{"i":951,"t":"头文件:list 下面给出几个常用的定义list对象的方法示例: lista{1,2,3} lista(n) //声明一个n个元素的列表,每个元素都是0 lista(n, m) //声明一个n个元素的列表,每个元素都是m lista(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器 list的基本操作: a.begin() // 返回指向首元素的随机存取迭代器 a.end() // 返回指向尾元素的下一个位置的随机存取迭代器 a.push_front(x) // 向表头插入元素x a.push_back(x) // 向表尾插入元素x a.pop_back() // 删除表尾元素 a.pop_front() // 删除表头元素 a.size() // 返回表长 a.empty() // 表为空时,返回真,否则返回假 a.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 a.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 a.clear() // 删除容器中的所有元素 a.front() // 返回首元素 a.back() // 返回尾元素 a.swap(v) // 将a与另一个list对象进行交换 a.merge(b) // 调用结束后b变为空,a中元素包含原来a和b的元素 a.insert(it, val) // 向迭代器it指向的元素前插入新元素val a.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val a.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 a.erase(it) // 删除由迭代器it所指向的元素 a.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) a.remove(x) // 删除了a中所有值为x的元素 a.assign(n, val) // 将a中的所有元素替换成n个val元素 a.assign(b.begin(), b.end()) //将a变成b","s":"list","u":"/en/docs/Algorithms/机试技巧与STL","h":"#list","p":915},{"i":953,"t":"头文件:string string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。 string封装了char*,管理这个字符串,是一个char*型的容器。也就是说string是一个容器,里面元素的数据类型是char*。 string不用考虑内存释放和越界。 string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。 string提供了一系列的字符串操作函数 查找find,拷贝copy,删除erase,替换replace,插入insert. 构造和析构函数: 表达式 效果 string s 生成一个空字符串 string s(str) copy构造函数,生成一个str的复制品 string s(str,idx) 将string内始于位置idx的部分当作字符串s的初值 string s(str,idx,len) 将string内始于位置idx且长度最多为len的部分当作字符串s的初值 string s(cstr) 以C-string字符串cstr作为字符串s的初值 string s(cstr,len) 以C-string字符串cstr的前len个字符作为字符串s的初值 string s(num,c) 生成一个字符串,包含num个字符c string s(beg,end) 以区间[beg,end]内所有字符作为字符串s的初值 操作函数: 操作函数 效果 =,assign() 赋以新值 swap() 交换两个字符串的内容 +=, append(),push_back() 添加字符 insert() 插入字符 erase() 删除字符 clear() 移除全部字符 resize() 改变字符数量 replace() 替换字符 + 串联字符串 ==,!=,<,<=,>,>=,compare() 比较字符串内容 size(),length() 返回字符数量,等效函数 max_size() 返回字符的最大可能个数 empty() 判断字符串是否为空 capacity() 返回重新分配之前的字符容量 reserve() 保留一定量内存以容纳一定数量的字符 [ ],at() 存取单一字符 >>,getline() 从stream中读取某值 << 将某值写入stream copy() 将内容复制为一个C-string c_str() 将内容以C-string形式返回 data() 将内容以字符数组形式返回 substr() 返回某个子字符串 begin(),end() 提供正常的迭代器支持 rbegin(),rend() 提供逆向迭代器支持","s":"string","u":"/en/docs/Algorithms/机试技巧与STL","h":"#string","p":915},{"i":955,"t":"头文件:utility STL的utility头文件中描述了一个看上去非常简单的模版类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较运算符模版函数。 Example,想要定义一个对象表示一个平面坐标点,则可以: pair p; cin >> p.first >> p.second; pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second,分别表示首元素和尾元素。 在其中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。当然,也可以通过重载这几个运算符来重新指定自己的比较逻辑。 除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair需要两个参数,分别为元素对的首元素和尾元素。","s":"pair","u":"/en/docs/Algorithms/机试技巧与STL","h":"#pair","p":915},{"i":957,"t":"头文件:map 在STL的头文件中map中定义了模版类map和multimap,用有序二叉树表存储类型为pair的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key值必须是唯一的,multimap则允许有重复的Key值。 可以将map看作是由Key标识元素的元素集合,这类容器也被称为“关联容器”,可以通过一个Key值来快速决定一个元素,因此非常适合于需要按照Key值查找元素的容器。 map模版类需要四个模版参数,第一个是键值类型,第二个是元素类型,第三个是比较算子,第四个是分配器类型。其中键值类型和元素类型是必要的。 定义map对象的代码示例: map m; map的基本操作: /* 向map中插入元素 */ m[key] = value; // [key]操作是map很有特色的操作,如果在map中存在键值为key的元素对, 则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map中插入元素对或修改已经存在的元素对的值域部分。 m.insert(make_pair(key, value)); // 也可以直接调用insert方法插入元素对,insert操作会返回一个pair,当map中没有与key相匹配的键值时,其first是指向插入元素对的迭代器,其second为true;若map中已经存在与key相等的键值时,其first是指向该元素对的迭代器,second为false。 /* 查找元素 */ int i = m[key]; // 要注意的是,当与该键值相匹配的元素对不存在时,会创建键值为key(当另一个元素是整形时,m[key]=0)的元素对。 map::iterator it = m.find(key); // 如果map中存在与key相匹配的键值时,find操作将返回指向该元素对的迭代器,否则,返回的迭代器等于map的end()(参见vector中提到的begin()和end()操作)。 /* 删除元素 */ m.erase(key); // 删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。 m.erase(it); // 删除由迭代器it所指定的元素对,并返回指向下一个元素对的迭代器。 /* 其他操作 */ m.size(); // 返回元素个数 m.empty(); // 判断是否为空 m.clear(); // 清空所有元素","s":"map","u":"/en/docs/Algorithms/机试技巧与STL","h":"#map","p":915},{"i":959,"t":"头文件:stack stack模版类的定义在stack头文件中。 stack模版类需要两个模版参数,一个是元素类型,另一个是容器类型,但是只有元素类型是必要的,在不指定容器类型时,默认容器的类型为deque。 定义stack对象的示例代码如下: stack s; stack ss; stack的基本操作有: s.push(x); // 入栈 s.pop(); // 出栈 s.top(); // 访问栈顶 s.empty(); // 当栈空时,返回true s.size(); // 访问栈中元素个数","s":"stack","u":"/en/docs/Algorithms/机试技巧与STL","h":"#stack","p":915},{"i":961,"t":"头文件:queue queue模版类的定义在queue头文件中。 queue与stack相似,queue模版类也需要两个模版参数,一个元素类型,一个容器类型,元素类型时必须的,容器类型时可选的,默认为deque类型。 定义queue对象的示例代码必须如下: queue q; queue qq; queue的基本操作: q.push(x); // 入队列 q.pop(); // 出队列 q.front(); // 访问队首元素 q.back(); // 访问队尾元素 q.empty(); // 判断队列是否为空 q.size(); // 访问队列中的元素个数","s":"queue","u":"/en/docs/Algorithms/机试技巧与STL","h":"#queue","p":915},{"i":963,"t":"头文件:set set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。 定义set对象的示例代码如下: set s; set ss; set的基本操作: s.begin() // 返回指向第一个元素的迭代器 s.clear() // 清除所有元素 s.count() // 返回某个值元素的个数 s.empty() // 如果集合为空,返回true(真) s.end() // 返回指向最后一个元素之后的迭代器,不是最后一个元素 s.equal_range() // 返回集合中与给定值相等的上下限的两个迭代器 s.erase() // 删除集合中的元素 s.find() // 返回一个指向被查找到元素的迭代器 s.get_allocator() // 返回集合的分配器 s.insert() // 在集合中插入元素 s.lower_bound() // 返回指向大于(或等于)某值的第一个元素的迭代器 s.key_comp() // 返回一个用于元素间值比较的函数 s.max_size() // 返回集合能容纳的元素的最大限值 s.rbegin() // 返回指向集合中最后一个元素的反向迭代器 s.rend() // 返回指向集合中第一个元素的反向迭代器 s.size() // 集合中元素的数目 s.swap() // 交换两个集合变量 s.upper_bound() // 返回大于某个值元素的迭代器 s.value_comp() // 返回一个用于比较元素间的值的函数","s":"set","u":"/en/docs/Algorithms/机试技巧与STL","h":"#set","p":915},{"i":965,"t":"头文件:set 在set头文件中,还定义了另一个非常实用的模版类multiset(多重集合)。多重集合与集合的区别在于集合中不能存在相同元素,而多重集合中可以存在。 定义multiset对象的示例代码如下: multiset s; multiset ss; multiset和set的基本操作相似,需要注意的是,集合的count()能返回0(无)或者1(有),而多重集合是有多少个返回多少个。","s":"multiset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#multiset","p":915},{"i":967,"t":"头文件:bitset 在 STLSTL 的头文件中 bitset中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。 bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。 定义 bitsetbitset 对象的示例代码: const int MAXN = 32; bitset bt; // bt 包括 MAXN 位,下标 0 ~ MAXN - 1,默认初始化为 0 bitset bt1(0xf); // 0xf 表示十六进制数 f,对应二进制 1111,将 bt1 低 4 位初始化为 1 bitset bt2(012); // 012 表示八进制数 12,对应二进制 1010,即将 bt2 低 4 位初始化为 1010 bitset bt3(\"1010\"); // 将 bt3 低 4 位初始化为 1010 bitset bt4(s, pos, n);// 将 01 字符串 s 的 pos 位开始的 n 位初始化 bt4 bitsetbitset 基本操作: bt.any() // bt 中是否存在置为 1 的二进制位? bt.none() // bt 中不存在置为 1 的二进制位吗? bt.count() // bt 中置为 1 的二进制位的个数 bt.size() // bt 中二进制位的个数 bt[pos] // 访问 bt 中在 pos 处的二进制位 bt.test(pos) // bt 中在 pos 处的二进制位是否为 1 bt.set() // 把 bt 中所有二进制位都置为 1 bt.set(pos) // 把 bt 中在 pos 处的二进制位置为 1 bt.reset() // 把 bt 中所有二进制位都置为 0 bt.reset(pos) // 把 bt 中在pos处的二进制位置为0 bt.flip() // 把 bt 中所有二进制位逐位取反 bt.flip(pos) // 把 bt 中在 pos 处的二进制位取反 bt[pos].flip() // 同上 bt.to_ulong() // 用 bt 中同样的二进制位返回一个 unsigned long 值 os << bt // 把 bt 中的位集输出到 os 流","s":"bitset","u":"/en/docs/Algorithms/机试技巧与STL","h":"#bitset","p":915},{"i":970,"t":"#include #include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b) ) //定义图的定点 typedef struct Vertex { int id; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1) {} Vertex(int nid) : id(nid) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); } return true; } //广度优先搜索 vector BFS(int start) { set visited; vector g, rst; g.push_back(start); visited.insert(start); while(g.size() > 0) { int id = g[0]; g.erase(g.begin()); rst.push_back(id); for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); visited.insert(id1); } } } return rst; } //深度优先搜索 vector DFS(int start) { set visited; vector g, rst; g.push_back(start); //cout << \"push \" << start << \" \"; visited.insert(start); rst.push_back(start); bool found; while(g.size() > 0) { int id = g[g.size()-1]; found = false; for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); rst.push_back(id1); visited.insert(id1); //cout << \"push \" << id1 << \" \"; found = true; break; } } if (!found) { int id2 = g[g.size()-1]; rst.push_back(-1 * id2); //cout << \"pop \" << id2 << \" \"; g.pop_back(); } } //cout << endl; return rst; } } Graph; int main() { Graph g(8, false); g.addEdge(0, 1); g.addEdge(0, 3); g.addEdge(1, 2); g.addEdge(3, 4); g.addEdge(3, 5); g.addEdge(4, 5); g.addEdge(4, 6); g.addEdge(5, 6); g.addEdge(5, 7); g.addEdge(6, 7); vector bv = g.BFS(0); cout << \"宽度优先搜索节点顺序:\"; for(int j = 0; j < bv.size(); j++) cout << bv[j] << \" \"; cout << endl; cout << \"深度优先搜索节点顺序:\"; Graph g1(6, false); g1.addEdge(0, 1); g1.addEdge(0, 4); g1.addEdge(0, 5); g1.addEdge(1, 5); g1.addEdge(4, 5); g1.addEdge(5, 2); g1.addEdge(5, 3); g1.addEdge(2, 3); vector route = g1.DFS(0); for(int i = 0; i < route.size(); i++) cout << route[i] << \" \"; cout << endl; char ch; cin >> ch; return 0; }","s":"不带出入度的最简模板","u":"/en/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":915},{"i":972,"t":"#include #include #include #include #define MAX(a, b) ((a) > (b) ? (a) : (b) ) using namespace std; int n,m; vector inDegreelist,outDegreelist; //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); vertexs[id1].outDegree++; vertexs[id2].inDegree++; } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); vertexs[id1].outDegree++; vertexs[id1].inDegree++; vertexs[id2].outDegree++; vertexs[id2].inDegree++; } return true; } } Graph; Graph g; void init(){ cin>>n>>m; g=Graph(n, true); int src,dst; while(m--){ cin>>src>>dst; g.addEdge(src,dst); } vector::iterator it = g.vertexs.begin(); while(it!=g.vertexs.end()){ inDegreelist.push_back(it->inDegree); outDegreelist.push_back(it->outDegree); it++; } } int countin(int n){ return count(inDegreelist.begin(),inDegreelist.end(),n); } int countout(int n){ return count(outDegreelist.begin(),outDegreelist.end(),n); } bool Is_List(){ //有一个inDegree为0的头和一个outDegree为0的尾,且其余节点入度与出度都为1; return (countin(0)==1)&&(countout(0)==1)&&(countin(1)==n-1)&&(countout(1)==n-1); } bool Is_Tree(){ //有一个inDegree为0的头且其余节点inDegree均为1,且不是链表; return (countin(0)==1)&&(countin(1)==n-1); } bool topologicalSort(){//拓扑排序判断有环无环 int num=0;//记录加入拓扑排序的顶点数 queue q; for(int i=0;i #include #ifndef BASE #define BASE #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int bool; #endif #define VertexType char //点类型 #define VRType int //边类型 #define maxSize 100 void Visit(VertexType e) { printf(\"%c\", e); } #define MAX_VERTEX_NUM 20 typedef enum{DG, UDG} GraphKind; typedef struct ArcNode{ int adjV; //边指向的顶点 VRType weight; //权重 struct ArcNode *next; }ArcNode; //边 typedef struct VNode{ VertexType data; ArcNode *firstarc; }VNode, AdjList[MAX_VERTEX_NUM]; //顶点 typedef struct{ GraphKind kind; int vernum,arcnum; AdjList vers; }ALGraph; /*------------------------ |7.14 创建有向图的邻接表| ------------------------*/ Status InitGraph_AL(ALGraph *pG) { //初始化 int i; pG->arcnum = 0; pG->vernum = 0; for (i=0; ivers[i].firstarc = NULL; //VC++6.0中指针初始化为0xcccccccc return OK; } int LocateVex_AL(ALGraph G, VertexType e) { //定位值为e的元素下标 int i; for (i=0; i弧的数目->各顶点的信息->各条弧的信息 int i,a,b; char tmp[MAX_VERTEX_NUM]; char h,t; ArcNode *p, *q; InitGraph_AL(pG); //VC++6.0中指针初始化为0xcccccccc,如果不将指针初始化为NULL,会出错 //图的类型 pG->kind = DG; //顶点数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->vernum = i; //弧的数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->arcnum = i; //各顶点信息 scanf(\"%s\", tmp); for (i=0; ivernum; ++i) pG->vers[i].data=tmp[i]; //弧的信息 for (i=0; iarcnum; ++i) { scanf(\"%s\", tmp); h = tmp[0]; t = tmp[2]; a = LocateVex_AL(*pG, h); b = LocateVex_AL(*pG, t); if (a<0 || b<0) return ERROR; p = (ArcNode *)malloc(sizeof(ArcNode)); if (!p) exit(OVERFLOW); p->adjV=b;p->next=NULL; if (pG->vers[a].firstarc) { //已经有边了 for (q = pG->vers[a].firstarc; q->next; q=q->next) ; //找到最后一条 q->next = p; } else { //第一条边 pG->vers[a].firstarc = p; } } return OK; } /*---------------------------------------------------------------- |7.28 有向图-从u-v的所有简单路径 | ----------------------------------------------------------------*/ int visit[MAX_VERTEX_NUM]; //前面定义了 VertexType paths[maxSize][MAX_VERTEX_NUM]; //存放路径 int path[MAX_VERTEX_NUM]; //路径 int pathnum=0; //当前是第几条路径 void FindAllPath(ALGraph G, int u,int v,int k) { //u->v当前是第k个位置 int i; ArcNode *p; visit[u]=1; //走到了u path[k]=u; //添加到路径->下标位置为k的结点是u(第k+1个是u) if (u==v) { //找到了 for (i=0; i<=k; i++) {//复制到paths paths[pathnum][i] = G.vers[path[i]].data; } paths[pathnum][i]='\\0'; //结束符 pathnum++; //找下一条路径 } else { //u的邻边开始找 for (p=G.vers[u].firstarc; p; p=p->next) { if (visit[p->adjV]==0) FindAllPath(G, p->adjV, v, k+1); //去这个邻接点找 } } // 回溯到上一个结点 // 注意:回溯应该写在外面-->也就是不管有没有找到都要回溯 visit[u]=0; path[k]=0; } int main() { /*7.28 6 11 ABCDEF B,A B,D C,B C,F D,C D,E D,F E,A F,A F,B F,E B->A A->B D->A */ int i,j; int cnt; ALGraph G; char tmp[20]; CreateDG_AL(&G); while (1) { scanf(\"%s\", tmp); //A->B i = LocateVex_AL(G, tmp[0]); j = LocateVex_AL(G, tmp[3]); for (cnt=0; cnt #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; // 中序+先序=>二叉树 int mid_pr_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示先序遍历 { // 这里不能等于,因为假设:len==1,则la==ra,直接返回,但是实际上是有一个 rt 的,却没被建立 if(la>ra) return 0; int rt=pr[lb]; // 因为先序遍历第一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); // 左子树(锁定左子树范围的下标) T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); // 右子树(锁定右子树范围的下标) return rt; } // 中序+后序=>二叉树 int mid_po_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示后序遍历 { if(la>ra) return 0; int rt=po[rb]; // 因为后序遍历最后一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); // 左子树(锁定左子树范围的下标) T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); // 右子树(锁定右子树范围的下标) return rt; } // 求树高 int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } // 层序遍历 void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; int mid_pr_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=pr[lb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); return rt; } int mid_po_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=po[rb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); return rt; } int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a) #define ssclr(ss) ss.clear(), ss.str(\"\") #define INF 0x3f3f3f3f #define MOD 1000000007 using namespace std; typedef long long ll; const int maxn=5e4+1000; int f; int pre[maxn], in[maxn]; struct node { int l,r,d; }T[maxn]; int create(int l1,int r1,int l2,int r2) // in pre { if(l2>r2) return -1; int rt=l2; int p1=l1,p2; while(in[p1]!=pre[rt]) p1++; p2=p1-l1; T[rt].d=pre[rt]; T[rt].l=create(l1,p1-1,l2+1,l2+p2); T[rt].r=create(p1+1,r1,l2+p2+1,r2); return rt; } void postT(int rt) { if(rt==-1 || !f) return; postT(T[rt].l); postT(T[rt].r); if(f) f=0, printf(\"%d\\n\",T[rt].d); } int main() { int n; scanf(\"%d\",&n); for(int i=0;i using namespace std; int main() { string s; cin >> s; int maxx = 0, flag = 0; sort(s.begin(), s.end()); do { int now = 0; for (int i = 0; i < s.size(); i++) { now = now * 10 + s[i] - '0'; } if (now % 30 == 0) { flag = 1; maxx = max(maxx, now); } } while (next_permutation(s.begin(), s.end())); if (flag == 1) { cout << maxx << endl; return 0; } else { cout << -1 << endl; } }","s":"参考代码","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":982},{"i":987,"t":"使用C++ STL提供的排列组合模版 首先将代排列组合的字符串或数组进行排序 sort(list.begin(), list.end()); 使用排列组合模版 do { something(); } while (next_permutation(list.begin(), list.end())); 此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历","s":"题解","u":"/en/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":982},{"i":991,"t":"GeekOS是一个基于x86体系结构的微操作系统内核. 由美国马理兰大学的教师开发, 主要用于操作系统课程设计的教育. 出于教学目的, 这个系统内核设计简单, 却又兼备实用性, 它可以运行在真正的X86 PC硬件平台. 在下载好GeekOS后, 在geekos-version/src/目录下会存在project0-project6这7个文件夹, 分别代表GeekOS设计的7个学习任务. 在环境搭建完成之后, 我们进行的每一个项目的代码编写几乎都在geekos-version/src/projecti/src/geekos/文件夹下, 每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行, 即要在终端中通过cd进入该目录, 再执行make depend和make命令.","s":"GeekOS:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#geekos","p":988},{"i":993,"t":"bochs是一个x86硬件平台的模拟器. GeekOS运行依托于bochs. 在安装好Linux操作系统后需要安装bochs以及nasm, 以完成GeekOS环境的搭建.","s":"bochs:","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#bochs","p":988},{"i":995,"t":"GeekOS的开发环境可分为两部分, 一部分是编译环境, 一部分是运行环境. 在编译过程中, 使用Linux自带的编译环境以及编译命令对特定的GeekOS project进行编译即可. 首先在终端中通过cd命令进入geekos-version/src/projecti/build目录, 再执行make depend和make命令. 编译后生成bochs的镜像文件fd.img, 这是bochs运行所必须的文件,也是GeekOS运行环境的前置配置.","s":"二者之间的关系","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#二者之间的关系","p":988},{"i":997,"t":"安装其实非常简单, 这里主要花篇幅介绍安装后解决报错的配置.","s":"安装与配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装与配置","p":988},{"i":999,"t":"需要下载GeekOS Files, 安装bochs, nasm等. GeekOS直接下载压缩包, 解压即可. arch系用户通过以下命令即可完成bochs和nasm的安装. yay -S bochs nasm 其他发行版的安装方法这里不再赘述, 可选择从群文件里下载源文件并编译安装, 师兄师姐也在群文件里给了一些教程指导.","s":"安装","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装","p":988},{"i":1001,"t":"完成安装后, 我们就可以开始对project0中的代码进行完善了, 并在geekos-version/src/project0/build目录下执行make depend以及make命令, 目的是编译project0的代码, 生成bochs的镜像文件fd.img以构建GeekOS的运行环境. 但很多报错就是在make这一步产生的, 因此在安装完成后还需要进行配置. 配置分为两部分, 一个是对GeekOS中makefile的修改, 另一部分是对bochs的配置文件的修改. GeekOS中makefile的配置​ 综合网上很多师兄师姐的博客,这三个错误应该是每个人都会遇到的,所以当你不确定自己能不能运行时,请全部完成这三个步骤. 问题: warnings being treated as errors 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefile文件, 所以在每个项目编译前都要修改一次) // 修改第149行: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror // 修改后: CC_GENERAL_OPTS := $(GENERAL_OPTS) 问题: X86_64与i386输出不兼容 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Target C compiler. gcc 2.95.2 or later should work. 100行 TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32 # Host C compiler. This is used to compile programs to execute on # the host platform, not the target (x86) platform. On x86/ELF # systems, such as Linux and FreeBSD, it can generally be the same # as the target C compiler. 106行 HOST_CC := gcc -m32 # Target linker. GNU ld is probably to only one that will work.109行 TARGET_LD := $(TARGET_CC_PREFIX)ld -m elf_i386 问题: undefined reference to '__stack_chk_fail' 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Flags used for all C source files // 修改前:148行 GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) // 修改后: GENERAL_OPTS := -O -Wall -fno-stack-protector $(EXTRA_C_OPTS) bochs配置文件的修改​ 在geekos-version/src/projecti/build目录下创建.bochsrc文件 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 到此为止, 所有的配置工作已经完成, 可以正常的进行下一步的代码完善. 如果需要验证自己是否配置成功, 可以参照下一篇博客GeekOS project 0的实现, 在本篇博客中会有完整的C语言代码编写以及编译、使用bochs执行的过程.","s":"配置","u":"/en/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#配置","p":988},{"i":1003,"t":"tip 欢迎来到笔记本的课程学习部分","s":"Welcome","u":"/en/docs/Curriculum/intro","h":"","p":1002},{"i":1005,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Curriculum/intro","h":"#支持我","p":1002},{"i":1007,"t":"在上一篇博客中我们完成了GeekOS环境的配置,下面我们来验证环境配置的成功与否以及project 0的实现。","s":"GeekOS project 0的实现","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"","p":1006},{"i":1009,"t":"编写geekos-version/src/projecti/src/geekos/main.c文件 编写函数project0实现检测键盘输入Ctrl+d结束线程。 void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios!---------\\n\"); # 这里需要注意素质 Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } 在main函数中添加以下代码,实现自定义函数的调用,创建线程。 struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); 总体代码 /* * GeekOS C code entry point * Copyright (c) 2001,2003,2004 David H. Hovemeyer * Copyright (c) 2003, Jeffrey K. Hollingsworth * Copyright (c) 2004, Iulian Neamtiu * $Revision: 1.51 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file \"COPYING\". */ #include #include #include #include #include #include #include #include #include #include #include void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios! Motherfucker!---------\\n\"); Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } /* * Kernel C code entry point. * Initializes kernel subsystems, mounts filesystems, * and spawns init process. */ void Main(struct Boot_Info* bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); Init_TSS(); Init_Interrupts(); Init_Scheduler(); Init_Traps(); Init_Timer(); Init_Keyboard(); Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT)); Print(\"Welcome to GeekOS!\\n\"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); // TODO(\"Start a kernel thread to echo pressed keys and print counts\"); struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); /* Now this thread is done. */ Exit(0); }","s":"编写C语言代码","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":1006},{"i":1011,"t":"每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。 执行 make depend make 此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它! 目录下的文件应该是这样的结构: 下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 在这个目录下打开终端,执行 bochs 选择6,按下回车 可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入 c 即可完成bochs的正式启动,最终的效果","s":"使用Linux的编译系统对C语言代码进行编译","u":"/en/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":1006},{"i":1013,"t":"tip 在以前的文章图像生成模型中已经大概介绍了目前SOTA的图像生成模型的共同点,并初步了解了Diffusion Model,在这篇文章中将详细讲解扩散模型的数学原理等。","s":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"","p":1012},{"i":1015,"t":"首先回顾一下扩散模型的基本概念和生成过程,可以大概分为两步: Forward Process:对训练集中的图片不断加入与图片shape相同的、从某随机分布中sample出的噪声,直至图片可以被认为是从该随机分布中sample出的矩阵。 Forward Process又叫做Diffusion Process,在这一步中产生的噪声-加入噪声的图像对可以用来训练Noise Predictor,即从有噪声的图像中预测出其中的噪声,再从输入中减去噪声得到降噪后的图片。 图像生成的原理 这一步的目的也同样在之前的文章图像生成模型中提到过:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。 Reverse Process:使用Diffusion Process训练的Noise Predictor,根据文字Prompt对从随机分布中sample出的图片大小的噪声图片进行降噪,得到原图。 值得注意的是,变分自编码器(Variational Auto-Encoder, abbr. VAE)与Diffusion Model非常相似:VAE对训练集中的原始图像使用Encoder将其变换为某种Latent Representation,这种Latent Representation的分布也是符合某种随机分布的,VAE再通过Decoder将期待生成的目标域图像还原出来。 在下面的文章中我们也会学习一下VAE的数学原理,从VAE到Diffusion Model的具体数学推导,可以参考胡老师推荐的论文Understanding Diffusion Models: A Unified Perspective。 下面我们以DDPM论文中的原图来分析DDPM的训练与推理过程。","s":"基本概念","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":1012},{"i":1017,"t":"循环开始,重复以下步骤; 首先从数据集中sample出原始图像x0\\mathbf{x}_0x0​; ttt是从1,…,T1,\\ldots,T1,…,T范围中sample出的一个integer; ϵ\\epsilonϵ是从Normal Distribution中sample出的与x0\\mathbf{x}_0x0​相同大小的噪声; 根据如下规则进行梯度下降,训练Noise Predictor: ∇θ∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon}-\\boldsymbol{\\epsilon}_{\\theta}(\\sqrt{\\bar{\\alpha}_{t}}\\mathbf{x}_{0}+\\sqrt{1-\\bar{\\alpha}_{t}}\\boldsymbol{\\epsilon},t)\\right\\|^{2}\\tag{1}∇θ​∥∥​ϵ−ϵθ​(αˉt​​x0​+1−αˉt​​ϵ,t)∥∥​2(1) 首先对x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​做weighted sum产生加入噪声后的图像。通常来说,αˉ1\\bar{\\alpha}_1αˉ1​至αˉT\\bar{\\alpha}_TαˉT​是递减的,当在第2步中sample到的ttt越大,则原始图像x0\\mathbf{x}_0x0​对新图像的贡献越大。 ϵθ\\epsilon_{\\theta}ϵθ​是Noise Predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的Ground Truth就是第3步中sample出的噪声ϵ\\epsilonϵ; 直至噪声预测模型ϵθ\\epsilon_\\thetaϵθ​训练至收敛。","s":"训练过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":1012},{"i":1019,"t":"从Normal Distribution中sample出图片大小的噪声xT\\mathbf{x}_TxT​; ttt从T,…,1T,\\ldots,1T,…,1范围循环TTT次; 对与每一次以ttt计数的循环,若t>1t>1t>1,则从Normal Distribution中sample出z\\mathbf{z}z,否则z=0\\mathbf{z}=\\mathbf{0}z=0; 根据如下公式得到降噪后的图像: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtz(2)\\mathbf{x}_{t-1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t}-\\frac{1-\\alpha_{t}}{\\sqrt{1-\\bar{\\alpha}_{t}}}\\boldsymbol{\\epsilon}_{\\theta}(\\mathbf{x}_{t},t)\\right)+\\sigma_{t}\\mathbf{z}\\tag{2}xt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​,t))+σt​z(2) 其中,xt\\mathbf{x}_txt​代表上一步骤中输出的降噪后的图像,xt−1\\mathbf{x}_{t-1}xt−1​代表当前步骤即将输出的降噪后的图像,ϵθ\\epsilon_\\thetaϵθ​代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​以及α1,α2,...αT\\alpha_1,\\alpha_2,...\\alpha_Tα1​,α2​,...αT​是两组权重序列; 结束本次for循环; 当t=1t=1t=1时,得到x0\\mathbf{x}_0x0​,即最终降噪后的图像。","s":"推理过程","u":"/en/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":1012},{"i":1023,"t":"词法分析:分析输入串如何构成句子,得到单词序列 语法分析:分析单词序列如何构成程序,构造语法分析树 语义分析:审查语义错误,为代码生成收集类型信息 中间代码生成 代码优化 目标代码生成 表管理、错误检查和处理贯穿整个过程","s":"1.1 编译程序的逻辑结构","u":"/en/docs/Curriculum/编译原理/Note","h":"#11-编译程序的逻辑结构","p":1020},{"i":1025,"t":"前端是指与源语言有关、与目标机无关的部分 如词法分析、语法分析、语义分析、中间代码生成、代码优化中与机器无关的部分 后端是指与目标机有关的部分 如代码优化中与机器有关的部分、目标代码的生成","s":"1.2 前端和后端","u":"/en/docs/Curriculum/编译原理/Note","h":"#12-前端和后端","p":1020},{"i":1027,"t":"遍是指从头到尾扫描一遍源程序","s":"1.3 遍的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#13-遍的概念","p":1020},{"i":1030,"t":"若从文法的开始符号开始存在以下推导,则称α\\alphaα为该文法的一个句型,句型中既可以包含终结符,也可以包含非终结符,也可以是空串 S⇒∗α, α∈(VT∪VN)∗(1)S \\Rightarrow^* \\alpha,\\space \\alpha \\in (V_T \\cup V_N)^* \\tag{1}S⇒∗α, α∈(VT​∪VN​)∗(1)","s":"2.1 句型","u":"/en/docs/Curriculum/编译原理/Note","h":"#21-句型","p":1020},{"i":1032,"t":"S⇒∗β, β∈VT∗(2)S \\Rightarrow^* \\beta,\\space \\beta \\in V_T^* \\tag{2}S⇒∗β, β∈VT∗​(2) 则称β\\betaβ是该文法的句子","s":"2.2 句子:","u":"/en/docs/Curriculum/编译原理/Note","h":"#22-句子","p":1020},{"i":1034,"t":"0型文法,又称无限制文法、短语文法 1型文法,又称文有关文法 2型文法,又称上下文无关文法(Context-Free Grammar,CFG) 可用来构建语法树,语法树是上下文无关文法推导和规约的图形化表示 A→β, A∈VN, β∈(VT∪VN)∗(3)\\Alpha \\rightarrow \\beta,\\space \\Alpha \\in V_N, \\space \\beta \\in (V_T \\cup V_N)^* \\tag{3}A→β, A∈VN​, β∈(VT​∪VN​)∗(3) 3型文法,又称正规文法(Regular Grammar,RG) 左线性文法 右线性文法","s":"2.3 文法的分类:","u":"/en/docs/Curriculum/编译原理/Note","h":"#23-文法的分类","p":1020},{"i":1036,"t":"如果在推导的任何一步都是对产生式左部中的最左/右非终结符进行替换,则称为最左/右推导,其中最右推导也被成为规范推导","s":"2.4 最左/右推导:","u":"/en/docs/Curriculum/编译原理/Note","h":"#24-最左右推导","p":1020},{"i":1040,"t":"确定的有穷自动机(DFA) DFA的定义及组成 确定的含义:在状态转换的每一步,FA根据当前的状态及扫描的输入字符,便能唯一地知道FA的下一状态。 tip 在状态转换图中的直观体现就是,在确定行表示的当前状态以及列确定的路径后,得到的目的状态不会是元素个数大于1的集合。 DFA的可接受以及接受集的定义:从开始状态开始,经过该符号串表示的路径,若能到达终态则称该符号串可被改DFA接受。 不确定的有穷自动机(NFA) NFA的确定化,即将NFA转换为DFA(子集法) 步骤: 画出DFA转换表 tip 转换表中在状态一列中,状态包含原NFA终态的集合要标*,代表其为等价DFA的终态 计算move(T,a)move(T, a)move(T,a) 计算ϵ−closure(T)\\epsilon -closure(T)ϵ−closure(T) 为转换表中的状态重命名 确定初态和终态 DFA的最小化(分割法) 步骤如下: tip 考试时注意过程怎么写,下面使用需要三轮分割的列子演示步骤 在分割完成后,对可以化简的集合选出一个状态作为代表,删除其他多余状态,重新画图","s":"3.2 有穷自动机(FA)","u":"/en/docs/Curriculum/编译原理/Note","h":"#32-有穷自动机fa","p":1020},{"i":1044,"t":"描述程序语法结构的规则可以使用2型文法(上下文无关语法,CFG) 语法分析方法包含确定的和不确定的分析方法,确定的语法分析方法根据输入符号,唯一选择产生式 确定的自顶向下分析方法:根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导","s":"第四章:自顶向下语法分析方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#第四章自顶向下语法分析方法","p":1020},{"i":1047,"t":"tip FOLLOW集的求法可以按照下图技巧进行 若要求的非终结符是开始符号,则直接将#插入FOLLOW集中 在所有产生式的右部中找到要求的非终结符 看非终结符的右侧是什么元素 若无元素,则直接将该产生式左部的FOLLOW集加入到该非终结符的FOLLOW集中 若为终结符,直接将该终结符加入到FOLLOW集中 若为非终结符,将FIRST(该非终结符)减去ϵ\\epsilonϵ的所有终结符元素都加入至FOLLOW集中","s":"2. Follow集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-follow集的定义","p":1020},{"i":1049,"t":"tip 需要注意的是FIRST集、FOLLOW集是针对于符号串而言的,而SELECT集是针对于产生式而言的","s":"3. SELECT集的定义","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-select集的定义","p":1020},{"i":1052,"t":"tip 考试时注意书写过程,需要画出以下两张表","s":"5. LL(1)文法的判别","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-ll1文法的判别","p":1020},{"i":1054,"t":"预测分析表通过计算SELECT集得到,形如下表 行标为各非终结符,列标为输入符号,若从某一非终结符开始的产生式的SELECT集包含某一输入符号,则对应产生式就是行列确定的元素值。","s":"6. 预测分析表","u":"/en/docs/Curriculum/编译原理/Note","h":"#6-预测分析表","p":1020},{"i":1056,"t":"消除左公因子(回溯) caution 同一非终结符的多个产生式存在共同前缀,会导致回溯现象,需要消除 消除左递归 caution 左递归文法会使递归下降分析器陷入无限循环 消除直接左递归 消除间接左递归 通过代入法变成直接左递归再消除","s":"7. 非LL(1)文法到LL(1)文法的等价变换","u":"/en/docs/Curriculum/编译原理/Note","h":"#7-非ll1文法到ll1文法的等价变换","p":1020},{"i":1059,"t":"从的底部向顶部的方向构造语法分析树,采用最左归约的方式,即最右推导的逆过程 tip 注意辨别:自顶向下的语法分析采用最左推导的方式 最右推导是规范推导,最左归约是最右推导的逆过程,又称规范归约","s":"5.1 概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#51-概念","p":1020},{"i":1061,"t":"算符优先分析法 按照算符的优先关系和结合性质进行语法分析 LR分析法(重点) 规范规约:句柄作为可归约串","s":"5.2 方法","u":"/en/docs/Curriculum/编译原理/Note","h":"#52-方法","p":1020},{"i":1064,"t":"移入:将下一个输入符号移到栈顶 归约:被归约的符号串的右端处于栈顶,语法分析器在栈中确定这个串的左端非终结符来替换该串 接受:宣布语法分析过程成功完成 报错:发现一个语法错误,并调用错误恢复子程序","s":"5.4 移入-归约分析器的4种动作","u":"/en/docs/Curriculum/编译原理/Note","h":"#54-移入-归约分析器的4种动作","p":1020},{"i":1066,"t":"前导知识:4种项目状态 归约项目:·在最后 接受项目:拓广文法的开始符号的产生式,且·在最后 移进项目:·后面是终结符VTV_TVT​ 待约项目:·后面是非终结符VNV_NVN​ 移入-归约分析 LR(0)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1pL4y1E7RE/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,action的每一列都要写 SLR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV12u411S7Us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,只写产生式左部的FOLLOW集对应的action列 LR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1Vm4y1Q7XB/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在构造项目集时,要加入前向搜索符;并且,在写预测分析表的reduce项时只写前向搜索符对应的action列 LALR(1)分析表 / 构造其识别活前缀DFA 在构造项目集时,要加入前向搜索符,但是要合并同心集,把相同表达式但是不同前向搜索符的前向搜索符合并,并且在写预测分析表的reduce项时只写前向搜索符集对应的action列 https://www.bilibili.com/video/BV13r4y1m7sQ/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533","s":"5.5 重要题型","u":"/en/docs/Curriculum/编译原理/Note","h":"#55-重要题型","p":1020},{"i":1069,"t":"词法分析:从左到右扫描源程序,识别出各个单词,确定单词类型并形成单词序列,进行词法错误检查,对标识符进行登记,即符号表管理 语法分析:从词法分析输出的单词序列识别出各类短语,构造语法分析树,并进行语法错误检查 语义分析:审查程序是否具有语义错误,为代码生成阶段收集类型信息,不符合规范时报错(符号表是语义正确性检查的依据) 中间代码生成:生成中间代码,如三地址指令、四元式、波兰式、逆波兰式、树形结构等 代码优化:对代码进行等价变换以求提高执行效率,提高速度或节省空间 目标代码生成:将中间代码转化成目标机上的机器指令代码或汇编代码(符号表是对符号分配地址的依据)","s":"1 编译程序各阶段功能","u":"/en/docs/Curriculum/编译原理/Note","h":"#1-编译程序各阶段功能","p":1020},{"i":1071,"t":"就产生语法树的方向而言,可大致分为自顶向下的语法分析和自底向上的语法分析两大类。 自顶向下的语法分析方法:主流方法为递归下降分析法。根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导。 自底向上的语法分析方法:将输入串w归约为文法开始符号S的过程。 tip LR(0), SLR(1), LR(1) LR(0)文法可能存在移进-归约冲突、归约-归约冲突 SLR(1)文法在构造的过程中不存在归约-归约冲突,但有可能出现移进-归约冲突,可以由FOLLOW集解决的话则是SLR(1)文法","s":"2 语法分析方法的概念","u":"/en/docs/Curriculum/编译原理/Note","h":"#2-语法分析方法的概念","p":1020},{"i":1073,"t":"翻译模式是适合语法制导语义计算的另一种描述形式,可以体现一种合理调用语义动作的算法。 S-翻译模式: 仅涉及综合属性的翻译模式,通常将语义动作集合置于产生式右端末尾。 L-翻译模式: 既可以包含综合属性,也可以包含继承属性。","s":"3 翻译模式","u":"/en/docs/Curriculum/编译原理/Note","h":"#3-翻译模式","p":1020},{"i":1075,"t":"在文法基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作,称之为属性文法。 S-属性文法: 只包含综合属性的属性文法成为S-属性文法 L-属性文法: 可以包含综合属性,也可以包含继承属性,但要求产生式右部的文法符号的继承属性的计算只取决于该符号左边符号的属性","s":"4 属性文法","u":"/en/docs/Curriculum/编译原理/Note","h":"#4-属性文法","p":1020},{"i":1077,"t":"符号表是编译程序中用于收集标识符的属性信息的数据结构。 各阶段作用: 语义分析阶段:语义合法性检查的依据 目标代码生成阶段:对符号名进行地址分配的依据","s":"5 符号表","u":"/en/docs/Curriculum/编译原理/Note","h":"#5-符号表","p":1020},{"i":1079,"t":"tip 本笔记使用的教材是陈天华所著、清华大学出版社的《数字图像处理及应用:使用MATLAB分析与实现》。 Take me to church, I'll worship like a dog at the shrine of your lies. I'll tell you my sins, and you can sharpen your knife. Offer me that deathless death, good god, let me give you my life.","s":"数字图像处理复习笔记","u":"/en/docs/Curriculum/数字图像处理/Note","h":"","p":1078},{"i":1082,"t":"为了从模拟图像产生数字图像,需要进行采样与量化,即对模拟图像在空间(x,y)(x, y)(x,y)方向上以及亮度函数f(x,y)f(x, y)f(x,y)进行离散化处理。 采样: 模拟图像在空间(x,y)(x, y)(x,y)上的离散化称为采样。 若在x和y方向上均进行等间距的采样,则称为均匀采样。 采样点的多少以及采样的间隔直接影响着图像的质量。 量化: 模拟图像经过采样后,在时间和空间上被离散化为像素,但采样所得的像素点的像素值依然是连续量。量化过程就是以离散的灰度值信息代替连续的模拟量灰度信息的过程,是一对多的过程。 量化可以分为线性量化以及非线性量化。 灰度级一般以2的整数次幂表示,如大多图像为彩色RGB图像,256个灰度级,位深度为8(28=2562^8=25628=256),则对于分辨率为256×256的图像来说,需要256×256×3×8位表示,即每一个像素实际上使用24位表示。","s":"图像的采样与量化","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":1078},{"i":1084,"t":"4邻域N4(p)N_4(p)N4​(p)即该像素上下左右的四个点,8邻域N8(p)N_8(p)N8​(p),对角邻域ND(p)N_D(p)ND​(p)。 像素之间的距离度量必须满足三种关系: 非负性 对称性 三角不等式 三种距离度量: 已知,点ppp的坐标为(x,y)(x, y)(x,y),点qqq的坐标为(s,t)(s,t)(s,t)。 欧氏距离: De(p,q)=(x−s)2+(y−t)2(1)D_e(p,q)=\\sqrt{(x-s)^2+(y-t)^2}\\tag{1}De​(p,q)=(x−s)2+(y−t)2​(1) 城市距离 D4(p,q)=∣x−s∣+∣y−t∣(2)D_4(p,q)=\\vert x-s\\vert+\\vert y-t\\vert \\tag{2}D4​(p,q)=∣x−s∣+∣y−t∣(2) 棋盘距离 D8(p,q)=max(∣x−s∣,∣y−t∣)(3)D_8(p,q)=max(\\vert x-s\\vert,\\vert y-t\\vert)\\tag{3}D8​(p,q)=max(∣x−s∣,∣y−t∣)(3)","s":"距离度量","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":1078},{"i":1086,"t":"MSE越小代表待测图像与参考图像越接近,均方误差公式如下: MSE=1MN∑x=1M∑y=1N[f(x,y)−g(x,y)]2(4)MSE=\\frac{1}{MN}\\sum_{x=1}^{M}\\sum_{y=1}^{N}[f(x,y)-g(x,y)]^2\\tag{4}MSE=MN1​x=1∑M​y=1∑N​[f(x,y)−g(x,y)]2(4) SNR:参考图像像素值的平方均值与均方误差的比值的对数的10倍。越大代表图像质量越好 PSNR:峰值信噪比,图像所允许的最大像素值的平方与均方误差的比值的对数的10倍,这是信噪比的改良版本,消除了图像自身像素值对评价指标的影响。越大代表图像质量越好 SSIM为结构相似系数,越大代表图像质量越好","s":"图像质量评价","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":1078},{"i":1090,"t":"可以使用傅里叶变换的函数需要满足狄利克莱条件(Dirichlet Condition): 具有有限个间断点 具有有限个极值点 绝对可积 傅里叶变换的特性: info 傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 连续傅里叶变换​ 一维连续傅里叶变换 F(u)=∫−∞+∞f(x)e−j2πuxdx(5)F(u)=\\int_{-\\infty}^{+\\infty}f(x)e^{-j2\\pi ux}dx\\tag{5}F(u)=∫−∞+∞​f(x)e−j2πuxdx(5) 一维连续傅里叶逆变换 f(x)=∫−∞∞F(u)ej2πuxdu(6)f(x)=\\int_{-\\infty}^{\\infty}F(u)e^{j2\\pi ux}du\\tag{6}f(x)=∫−∞∞​F(u)ej2πuxdu(6) 二维连续傅里叶变换 F(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy)dxdy(7)F(u,v)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}f(x,y)e^{-j2\\pi (ux+vy)}dxdy\\tag{7}F(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7) 二维连续傅里叶逆变换 f(x,y)=∫−∞∞∫−∞∞F(u,v)ej2π(ux+vy)dudv(8)f(x,y)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}F(u,v)e^{j2\\pi (ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​F(u,v)ej2π(ux+vy)dudv(8) 离散傅里叶变换​ 一维离散傅里叶变换 F(u)=∑x=0N−1f(x)e−j2πuxN(9)F(u)=\\sum_{x=0}^{N-1}f(x)e^{-j\\frac{2\\pi ux}{N}}\\tag{9}F(u)=x=0∑N−1​f(x)e−jN2πux​(9) 一维离散傅里叶逆变换 f(x)=1N∑u=0N−1F(u)ej2πuxN(10)f(x)=\\frac{1}{N}\\sum_{u=0}^{N-1}F(u)e^{j\\frac{2\\pi ux}{N}}\\tag{10}f(x)=N1​u=0∑N−1​F(u)ejN2πux​(10) 二维离散傅里叶变换 F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−j2π(uxM+vyN)(11)F(u,v)=\\sum_{x=0}^{M-1}\\sum_{y=0}^{N-1}f(x,y)e^{-j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{11}F(u,v)=x=0∑M−1​y=0∑N−1​f(x,y)e−j2π(Mux​+Nvy​)(11) 二维离散傅里叶逆变换 f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(uxM+vyN)(12)f(x,y)=\\frac{1}{MN}\\sum_{u=0}^{M-1}\\sum_{v=0}^{N-1}F(u,v)e^{j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{12}f(x,y)=MN1​u=0∑M−1​v=0∑N−1​F(u,v)ej2π(Mux​+Nvy​)(12)","s":"傅里叶变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":1078},{"i":1093,"t":"下图展示了点运算的主要应用:对比度拉伸 主要应用: 对比度拉伸 光度学标定 显示标定 轮廓线 裁剪","s":"点运算","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":1078},{"i":1095,"t":"使用齐次坐标对图像进行比例缩放。 全比例缩放是指x方向和y方向使用相同的比例系数。 当对图像进行放大时,会产生之前没有的像素,此时需要使用插值来解决。","s":"比例缩放","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":1078},{"i":1097,"t":"最近邻法插值​ 双线性插值(Bilinear)​ 例题:","s":"灰度级插值","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":1078},{"i":1100,"t":"线性变换​ 是指将输入图像的灰度值的动态范围按线性关系变换至指定范围或灰度的整个动态范围。 按比例线性变换 均匀线性变换 限幅线性变换 分段线性拉伸 非线性变换​ 对数拉伸可以拉伸低亮度区域,压缩高亮度区域。 指数拉伸可以拉伸高亮度区域,压缩低亮度区域。 注意,上述的拉伸是指新的图像在该灰度范围内分布的更均匀,即出现的灰度级更多;压缩的意义是指新的图像在该灰度范围内分布的更狭窄,即出现的灰度级更少。 例题: 答:该图像存在较亮的问题,灰度直方图分布在较高的区域。从直接灰度变换增强法的角度,我们可以采用指数函数变换,对高灰度区进行扩展。 tip 分析:该图像中没有低灰度的像素,全部集中在高灰度部分,因此使用指数函数变换将原来的集中的高灰度区域进行拉伸,扩展其灰度分布的范围,从而起到增强效果。","s":"直接灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":1078},{"i":1102,"t":"直方图均衡化​ 目的: 将一非均匀灰度概率密度分布的图像,通过某种灰度变换,将其变成一幅具有均匀灰度概率密度分布的目的图像。 步骤: 根据原始图像计算原始灰度密度分布函数rkr_krk​ 计算变换函数,即累积密度分布函数sks_ksk​ 计算均衡化后的灰度级s(k)s(k)s(k),即使用以下公式进行均衡化映射: s(k)=ceil(sk×L−1)(13)s(k)=\\mathbf{ceil}(s_k\\times L-1)\\tag{13}s(k)=ceil(sk​×L−1)(13) 其中,LLL是原直方图中灰度级数。 画出最终均衡化后的直方图 例题: 直方图规定化​ 目的: 调整原始图像的直方图使其符合某一规定的直方图的要求。 思想: 将原始图像和规定图像进行均衡化后,二者的灰度概率密度分布相同,进行对应映射即可。 步骤: 对原始图像进行均衡化,得到映射后的s(k)s(k)s(k) 对规定的图像直方图进行均衡化,得到映射后的z(k)z(k)z(k) 由于s(k)s(k)s(k)和z(k)z(k)z(k)都是归一化后的均匀分布,使用二者之间的就近原则将s(k)s(k)s(k)对应到给出的规定直方图的灰度级 画出规定化后的直方图 例题: 此时已经获得了原始图像均衡化后的灰度级与目标规定化输出的图像的灰度级之间的映射关系,最后一步按照rkr_krk​画出目标规定化输出的图像直方图即可。","s":"直方图灰度变换","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":1078},{"i":1104,"t":"空域滤波可以根据作用分为平滑滤波以及锐化滤波。 平滑滤波​ info 噪声的特点: 随机性 叠加性 噪声与图像之间具有相关性 线性平滑滤波​ 邻域平均滤波 加权平均滤波 高斯滤波 非线性平滑滤波​ 中值滤波 最大值滤波 最小值滤波 锐化滤波​ 锐化滤波消除或减弱图像的低频分量从而增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。 梯度法 拉普拉斯算子,非线性滤波 定向滤波:检测特定方向边缘的滤波,通常在模板上表现为在该特定方向上模板值较大。 下面的表格展示了水平方向的定向锐化模板 -1 -1 -1 2 2 2 -1 -1 -1 下面的表格展示了对角方向的定向锐化模板 -1 2 -1 -1 2 -1 -1 2 -1","s":"空域滤波增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":1078},{"i":1106,"t":"图像从空域变换到频域后,低频分量对应图像中灰度值变化缓慢的区域,可能是图像的背景;高频分量表示图像中灰度值变化迅速的区域,可能是图像的噪声或物体的边缘。 在图像频谱(经过中心偏移的)中,中心代表低频信息,四周代表高频信息。","s":"第6章 图像频域增强","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":1078},{"i":1108,"t":"抑制、衰减高频分量,保留低频分量。 理想低通滤波器(ILPF)​ tip ILPF means Ideal Low Pass Filter. H(u,v)={1D(u,v)≤D00D(u,v)>D0(14)H(u,v)=\\begin{cases}1&D(u,v)\\leq D_0\\\\ 0&D(u,v)>D_0\\end{cases}\\tag{14}H(u,v)={10​D(u,v)≤D0​D(u,v)>D0​​(14) D(u,v)=u2+v2(15)D(u,v)=\\sqrt{u^2+v^2}\\tag{15}D(u,v)=u2+v2​(15) 在截止频率D0D_0D0​处垂直截止,通过频率和截止频率在D0D_0D0​处具有不连续性,通带和阻带之间没有过渡,会产生无限的振铃效应。 巴特沃斯低通滤波器(BLPF)​ 通带与阻带之间过度平坦,通过频率和截止频率之间没有明显的不连续性,不会出现振铃效应。 H(u,v)=11+(2−1)[D(u,v)D0]2n(16)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D(u,v)}{D_0}]^{2n}}\\tag{16}H(u,v)=1+(2​−1)[D0​D(u,v)​]2n1​(16) 其中,取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率D0D_0D0​。 即当D(u,v)D(u,v)D(u,v)达到截止频率时,D(u,v)D0=1\\frac{D(u,v)}{D_0}=1D0​D(u,v)​=1,此时H(u,v)=0.707H(u,v)=0.707H(u,v)=0.707。 指数低通滤波器(ELPF)​ 一般情况下,取H(u,v)H(u,v)H(u,v)下降到最大值的1/2时的D(u,v)D(u,v)D(u,v)作为截止频率。 H(u,v)=e−[D(u,v)D0]n(17)H(u,v)=e^{-[\\frac{D(u,v)}{D_0}]^n}\\tag{17}H(u,v)=e−[D0​D(u,v)​]n(17) 截止频率和通过频率之间具有更光滑的过渡,没有振铃现象。且指数低通滤波器比巴特沃斯低通滤波器衰减更快,处理后的图像更模糊。 梯形低通滤波器(TLPF)​ 由于在D0D_0D0​尾部包含高频分量D1D_1D1​,处理后图像的清晰度较理想低通滤波器有所改善,但会出现振铃效应, H(u,v)={1D(u,v)D1(18)H(u,v)=\\begin{cases}1&D(u,v)D_1\\end{cases}\\tag{18}H(u,v)=⎩⎨⎧​1D0​−D1​D(u,v)−D1​​0​D(u,v)D1​​(18)","s":"低通滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":1078},{"i":1110,"t":"抑制低频分量,保留高频分量。 理想高通滤波器(IHPF)​ H(u,v)={1D(u,v)>D00D(u,v)≤D0(19)H(u,v)=\\begin{cases}1&D(u,v)>D_0\\\\ 0&D(u,v)\\leq D_0\\end{cases}\\tag{19}H(u,v)={10​D(u,v)>D0​D(u,v)≤D0​​(19) 性质与理想低通滤波器一样,垂直截断,具有无限振铃效应。 巴特沃斯高通滤波器(BHPF)​ H(u,v)=11+(2−1)[D0D(u,v)]2n(20)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D_0}{D(u,v)}]^{2n}}\\tag{20}H(u,v)=1+(2​−1)[D(u,v)D0​​]2n1​(20) 通常采取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率,没有振铃效应。 指数高通滤波器(EHPF)​ H(u,v)=e−[D0D(u,v)]n(21)H(u,v)=e^{-[\\frac{D_0}{D(u,v)}]^n}\\tag{21}H(u,v)=e−[D(u,v)D0​​]n(21) 梯形高通滤波器(THPF)​ H(u,v)={1D(u,v)>D0D(u,v)−D1D0−D1D1≤D(u,v)≤D00D(u,v)D_0\\\\ \\\\ \\frac{D(u,v)-D_1}{D_0-D_1}&D_1\\leq D(u,v)\\leq D_0\\\\ \\\\ 0&D(u,v)D0​D1​≤D(u,v)≤D0​D(u,v)w2(24)H(u,v)=\\begin{cases}1&D(u,v) w_2\\end{cases}\\tag{24}H(u,v)=⎩⎨⎧​101​D(u,v)w2​​(24)","s":"带通和带阻滤波","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":1078},{"i":1115,"t":"伪彩色图像的增强一般用于B超、石油开采以及安检方面。","s":"伪彩色图像的处理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":1078},{"i":1119,"t":"退化原因​ 成像系统镜头聚焦不准产生的散焦 相机与景物之间的相对运动 成像系统存在的各种非线性因素以及系统本身的性能 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节 成像系统中存在的各种随机噪声 复原机理​ 图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。 图像复原与图像增强的区别和联系​ 联系:二者从表面上看都是为了提高图像的质量。 区别:二者在目的和过程上都有明显的区别。 在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。 在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。","s":"图像退化机理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":1078},{"i":1121,"t":"图像f(x,y)f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)g(x,y)。 退化系统的一般特性: 线性特性。 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。","s":"图像退化模型","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":1078},{"i":1124,"t":"最佳阈值法​ 假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\\muμ,背景像素的正态分布概率密度函数的均值为ν\\nuν,则最佳阈值法确定的阈值为 t=μ+ν2(25)t=\\frac{\\mu +\\nu}{2}\\tag{25}t=2μ+ν​(25) 判别分析法​ 通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。","s":"阈值分割法","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":1078},{"i":1126,"t":"什么是图像的边缘? 图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。 边缘信号的类型? 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。","s":"边缘检测的基本原理","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":1078},{"i":1128,"t":"Robert算子​ 一阶导数算子。 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。 对噪声敏感,不能抑制噪声。 Sobel算子​ 一阶导数算子。 先进行加权平均,然后进行微分运算。 对噪声具有一定的抑制能力。 Prewitt算子​ 一阶导数算子。 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘。 对噪声具有一定的抑制能力。 Laplace算子​ 二阶导数算子。 使噪声成分得到加强,对噪声更敏感。 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。 Canny边缘检测​ 使用高斯滤波平滑图像 计算梯度幅值和方向 NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值 使用双阈值方法确定强边界和弱边界 滞后边界跟踪","s":"边缘检测算子","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":1078},{"i":1130,"t":"傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 如何在频域实现图像平滑 利用傅里叶变换将图像从空域转换为频域; 将频域图像进行中心偏移,使得低频信息在频谱中央; 利用滤波函数生成一个与图像大小相同的二维频域矩阵; 将图像的频域与滤波器的频域相应相乘; 将相乘后的频域再次逆平移到频域的原始位置; 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。 一阶边缘检测算子与Laplace算子的异同。 相同点:都可以检测边缘并且对噪声敏感 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。 空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。 分析采样和量化的过程,以及它们对数字化图像质量的影响。 采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。 对数字化图像质量的影响: 采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。 量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。 图像噪声的特点。 随机性 叠加性 噪声与图像之间具有相关性 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况? 线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。 线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。 伪彩色图像处理可以应用在哪些方面? B超 石油开采 安检","s":"课后习题中的问答题","u":"/en/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":1078},{"i":1132,"t":"正确发音 How to pronounce Adversarial? /ˌædvərˈseriəl/","s":"生成式对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"","p":1131},{"i":1135,"t":"生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。","s":"将随机分布作为输入","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":1131},{"i":1137,"t":"当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。","s":"为什么要添加分布","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":1131},{"i":1139,"t":"GAN的工作原理: 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。 判别器训练: 判别器被训练来正确分类真实数据和生成数据。 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。 训练的目标: 生成器目标: 生成更逼真的数据,以欺骗判别器。 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。 GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。","s":"核心思想","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":1131},{"i":1141,"t":"GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。 GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。","s":"具体结构与作用","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":1131},{"i":1143,"t":"结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。 Unconditional Generation​ Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。 对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。 Conditional Generation​","s":"生成器(Generator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":1131},{"i":1145,"t":"结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。","s":"判别器(Discriminator)","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":1131},{"i":1147,"t":"首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。 第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。 为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数: Lossreal=−Ex∼pdata(x)[log⁡D(x)](1)Loss_{real}=-E_{x\\sim p_\\text{data}{(x)}}[\\log D(x)]\\tag{1}Lossreal​=−Ex∼pdata​(x)​[logD(x)](1) 其中,D(x)D(x)D(x)是判别器的输出,xxx是真实样本,EEE是数学期望。 Lossfake=−Ez∼pz(z)[log(1−D(G(z)))](2)Loss_{fake}=-E_{z\\sim p_z(z)}[log(1-D(G(z)))]\\tag{2}Lossfake​=−Ez∼pz​(z)​[log(1−D(G(z)))](2) 其中,G(z)G(z)G(z)是生成器的输出,zzz是随机噪声,EEE是数学期望。 将真实样本和生成样本的损失相加,形成判别器的总体损失。 Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\\tag{3}Lossdiscriminator​=Lossreal​+Lossfake​(3) 最小化损失函数,更新判别器的参数。 第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。 LG=−Ez∼pz(z)[log⁡D(G(z))](4)L_G=-E_{z\\sim p_z(z)}[\\log D(G(z))]\\tag{4}LG​=−Ez∼pz​(z)​[logD(G(z))](4) 其中,G(z)G(z)G(z)是生成器的输出,D(G(z))D(G(z))D(G(z))是生成样本输入到判别器后的输出,zzz是随机噪声,EEE是数学期望。","s":"训练算法","u":"/en/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":1131},{"i":1150,"t":"在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。","s":"回顾文字生成的两种方法","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":1148},{"i":1152,"t":"Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。 什么是ARM ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。 若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。","s":"自回归方法(AR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":1148},{"i":1154,"t":"若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。","s":"非自回归方法(NAR)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":1148},{"i":1156,"t":"VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。 大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(x∣y)P(x|y)P(x∣y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。 info 总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。","s":"目前图像生成模型的共同点","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":1148},{"i":1158,"t":"Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。","s":"生成模型的共同结构","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":1148},{"i":1160,"t":"目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。 Text Encoder:根据输入的text prompt进行嵌入表示 Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况: 具有视觉意义但经过压缩比较模糊的图像 不具备视觉特征的矩阵(Latent Representation) Decoder:以上述的“中间产物”作为输入,生成出高清图像 通用框架的三个组成部分如下图所示: 再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。 其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。 根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。 Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding","s":"通用框架概览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":1148},{"i":1162,"t":"下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。 FID(Fréchet Inception Distance)​ FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。 在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。 FID=∥μ1−μ2∥22+tr(Σ1+Σ2−2(Σ1Σ2)12)(1)\\mathrm{FID}=\\left\\|\\mu_1-\\mu_2\\right\\|_2^2+\\mathrm{tr}\\left(\\Sigma_1+\\Sigma_2-2\\left(\\Sigma_1\\Sigma_2\\right)^{\\frac12}\\right)\\tag{1}FID=∥μ1​−μ2​∥22​+tr(Σ1​+Σ2​−2(Σ1​Σ2​)21​)(1) 其中,μ1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;Σ1\\Sigma_1Σ1​和Σ2\\Sigma_2Σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr(⋅)表示矩阵的迹运算。 高斯分布的均值向量从观测到的数据中计算出来的。对于一个nnn-维高斯分布,其均值向量可以表示为一个长度为nnn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。 值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。 CLIP Score​ CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型。 具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。","s":"Benchmark","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":1148},{"i":1164,"t":"Generation Model​ Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor。 中间产物是压缩图像​ 当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。 中间产物是Latent Representation​ 中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation。 这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。 Decoder​ Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料。 中间产物是压缩图像​ 当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。 中间产物是Latent Representation​ 当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。 具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。","s":"通用框架解析","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":1148},{"i":1166,"t":"在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。","s":"常见图像生成模型速览","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":1148},{"i":1168,"t":"变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。 tip VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。","s":"变分自编码器(VAE)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":1148},{"i":1170,"t":"基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。 注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。","s":"基于流的生成模型(Flow-Based Generative Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":1148},{"i":1172,"t":"GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。","s":"生成对抗网络(GAN)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":1148},{"i":1174,"t":"扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。 以DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。 Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。","s":"扩散模型(Diffusion Model)","u":"/en/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":1148},{"i":1176,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"","p":1175},{"i":1178,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":1175},{"i":1181,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":1175},{"i":1183,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1175},{"i":1185,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":1175},{"i":1187,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":1175},{"i":1189,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 tip 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1175},{"i":1193,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":1175},{"i":1195,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1175},{"i":1197,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1175},{"i":1199,"t":"info 参考链接: Illustrated: Self-Attention 动图轻松理解Self-Attention(自注意力机制)","s":"自注意力(Self-Attention)","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"","p":1198},{"i":1202,"t":"CNN模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个CNN模型的架构,具有较强的固定性。 info 在视觉中,输入大多为数字图像,其形状可以大致分为由尺寸和通道数来决定。 从输入图像的尺寸看,当CNN中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如FCN(Fully Convolution Network),FCN通过最后通过反卷积将tensor还原到原始图像尺寸,即在CNN中,输入与输出(下游任务的要求)都影响着CNN网络的结构。 从通道数看,CNN本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的CNN模型,但在测试阶段分别使用通道数为 1 和 6 的数据进行推理的情形为例,进行分析: 通道数为1的测试集: 情况: 如果使用通道数为 1 的数据进行推理,即灰度图像,而模型在训练时是使用 RGB 数据集训练的,模型可能会受到一些影响。 解释: 模型可能在训练时学到了关于颜色的特定信息,而在测试时,如果输入是灰度图像,那些颜色信息将不可用。 建议: 在这种情况下,模型可能会失去对颜色信息的敏感性,可能需要进行进一步的调整或微调,以适应灰度图像的特性。 通道数为6的测试集: 情况: 如果使用通道数为 6 的数据进行推理,模型可能会面临额外的挑战,因为它在训练时只见过 3 个通道的数据。 解释: 模型在训练时学到的权重是基于 3 个通道的数据的,对于额外的通道,模型可能无法有效利用这些信息。 建议: 对于通道数不匹配的情况,可以考虑进行通道的适当组合或调整。这可能包括降低通道数(例如,只使用前 3 个通道),或者通过某种方式将 6 个通道映射到 3 个通道,例如通过某种特定的数据预处理。 当模型的输入更复杂(sophisticated),是长度不定的向量序列(sequence)时,CNN不能很好地处理,且不能解决输出由输入和模型自行决定的下游任务,如生成类任务。","s":"输入与输出的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":1198},{"i":1204,"t":"CNN中存在局部连接和权值共享的归纳偏置: 局部连接:CNN使用卷积层通过滑动卷积核在输入上进行局部感受野的操作。每个神经元只与输入的一小部分区域相连,这意味着每个神经元只能接触到局部的上下文信息。 权值共享: 权值共享的主要思想是,对于输入图像的不同位置使用相同的权重参数进行卷积操作。这意味着,无论卷积操作发生在图像的左上角、右下角,或者其他任何位置,都使用相同的卷积核进行权值计算。CNN的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得CNN具有更强的归纳偏置。 tip 在多通道卷积中,卷积核不同通道之间的权重参数是独立的。这使得网络能够学习不同通道之间的特征组合。这种设计有效地捕捉了输入数据中的多通道信息,提高了网络的表达能力。 CNN的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得CNN更适用于图像处理等任务。但也正是这种设计理念,使得CNN在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此Self-Attention应运而生,允许每个位置关注到序列中地所有其他位置。这种全局关联性质使得Transformer能够捕捉序列中的长距离依赖关系。","s":"关联上下文信息的局限性","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":1198},{"i":1207,"t":"A self-attention module takes in nnn inputs and returns nnn outputs. What happens in this module? In layman’s terms, the self-attention mechanism allows the inputs to interact with each other (“self”) and find out who they should pay more attention to (“attention”). The outputs are aggregates of these interactions and attention scores. Self-Attention接受任意向量数量的向量序列的输入,输出每一个向量所有向量(包括自身)的注意力分数。这使得Self-Attention在捕捉长距离依赖和处理序列中的全局关系时非常有效。","s":"什么是Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":1198},{"i":1209,"t":"自注意力机制的核心思想是为序列中的每个向量分配一个权重(即注意力分数),该权重表示该元素与其他元素的关联强度。这个权重是通过计算输入序列中所有元素与当前元素之间的关系来确定的。通常,这个计算过程使用一个可学习的权重矩阵来完成,即用来生成Key,Query以及Value的权重矩阵。","s":"Self-Attention的核心思想","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":1198},{"i":1211,"t":"info 定性分析详见文末。 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。 定义输入​ Self-Attention的输入是向量序列,其向量数量是任意的,计算每个输入向量之间的注意力分数。在本例中输入向量个数为3,同时为了统一性分析,计输入向量个数为batchbatchbatch个。 # define the input, which has a shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) 初始化权重矩阵​ 每个输入向量都会与3个权重向量做乘法得到3个新的向量,分别为key,query以及value。在本例中将新的向量维度设为3,由于输出的k、q、v矩阵大小均为(3,3)(3, 3)(3,3),因此每个权重矩阵的形状应该是(4,3)(4, 3)(4,3)。为了统一性分析,计key,query以及value各向量维度为numnumnum。 In a neural network setting, these weights are usually small numbers, initialised randomly using an appropriate random distribution like Gaussian, Xavier and Kaiming distributions. This initialisation is done once before training. 在实际应用中,权重通常是较小的数字,通过适当的随机分布(比如高斯、Xavier和Kaiming分布)进行随机初始化。 # define the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) 计算key,query以及value​ # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) 计算原始的注意力分数​ 我们要为每一个输入向量计算它对所有向量的注意力分数,包括对自身的。 原始注意力分数的计算方式为,使用自身的query分别与所有向量的key做内积(dot product),得到的scalar数量与输入向量个数相同,都为batchbatchbatch,即scores矩阵的形状应为(batch,batch)(batch, batch)(batch,batch)。 # compute raw self-attention scores scores = queries @ keys.T print(\"attention scores:\\n\", scores) 注意,代码中提供的是计算所有向量的注意力分数,而图中演示的只是计算input #1的注意力分数。 对每一个向量计算出的注意力分数做softmax​ # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) 将注意力分数与对应的value相乘​ 每一个输入向量对所有batchbatchbatch个向量计算得到的注意力分数,都要与其对应的value向量相乘,计算加权的注意力分数。最终的注意力分数矩阵的形状应为(batch,num)(batch, num)(batch,num)。 # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) 加权注意力分数求和​ 最后一步,对于每个向量得到的加权注意力分数进行求和,得到维度为numnumnum的注意力分数向量,考虑到有batchbatchbatch个输入向量,因此最终的注意力分数矩阵的形状为(batch,num)(batch, num)(batch,num)。 根据推导,显然,最终Self-Attention的输出向量维度与value向量的维度相同,输出向量的数量与输入向量的数量相同。 # compute outputs outputs = weighted_values.sum(dim=0) 总结​ As mentioned in the above paragraph, we don’t only use dot product to find relevance. But we scale it as well by a factor of the square root of key dimension dk. This helps in making sure that the dot-products between query and key don’t grow too large for dk. If the dot product becomes too large then the softmax output will be very small. To avoid this, we scale the dot product. 在计算dot product后,为了避免点积运算经过softmax后的输出太小,在点积后除以key向量维度的平方根来进行缩放。 Attention(Q,K,V)=softmax(QKTdk)V(1)Attention(Q,K,V)=\\textit{softmax}(\\frac{QK^T}{\\sqrt{d_k}})V \\tag{1}Attention(Q,K,V)=softmax(dk​​QKT​)V(1) 完整代码​ # simple code for Self-Attention import torch import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plot # define the input, which has the shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) # initialize the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) # compute raw self-attention score scores = queries @ keys.T print(\"attention scores:\\n\", scores) # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) # compute outputs outputs = weighted_values.sum(dim=0)","s":"Self-Attention的实现","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":1198},{"i":1213,"t":"多头自注意力机制是对自注意力机制的扩展,假设扩展成为nnn -head self-attention,则对每个输入向量生成对应的key,query和value后,再次使用nnn个可学习的权重矩阵生成nnn个不同的key0,...,keyn−1key^{0}, ..., key^{n-1}key0,...,keyn−1,query0,...,queryn−1query^{0}, ..., query^{n-1}query0,...,queryn−1以及value0,...,valuen−1value^{0}, ..., value^{n-1}value0,...,valuen−1。 在计算attention score时,使用每一个query查询对应的key,即query0query^{0}query0只与其他每一个输入向量的key0key^{0}key0做dot product。","s":"Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":1198},{"i":1215,"t":"Self-Attention可以看作是复杂化的CNN,CNN只能在感受野范围内考虑上下文信息,而Self-Attention可以自己学习感受野。","s":"Self-Attention与CNN的对比","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":1198},{"i":1217,"t":"自注意力机制(Self-Attention Mechanism)是深度学习领域中的一种重要机制,尤其在处理序列数据和图像特征时展现出了强大能力。下面将以一个典型的自注意力机制为例,使用 Transformer 架构中的多头自注意力(Multi-Head Self-Attention)来说明其计算过程,以帮助理解其工作原理。假设我们的输入是一个序列,比如文本序列,其长度为 LLL,每个词向量的维度为 DDD​。 info 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。","s":"Self Attention 的计算","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":1198},{"i":1219,"t":"假设我们有一个文本序列,长度为 LLL,每个词表示为一个 DDD 维的向量。那么,整个输入的形状可以表示为 L×DL \\times DL×D 的矩阵。","s":"输入形状","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":1198},{"i":1221,"t":"自注意力机制的核心思想是让序列中的每个元素(词向量)能够关注到序列中的其他元素,从而更好地理解它们之间的关系。具体来说,它通过计算三个向量——查询(Query,Q)、键(Key,K)和值(Value,V)来进行。 Query、Key、Value的生成: 首先,通过矩阵乘法,将输入的词向量矩阵分别与三个不同的权重矩阵相乘,生成 Q、K、V 三个矩阵。假设权重矩阵的维度均为 D×dkD \\times d_kD×dk​(其中 dkd_kdk​ 是查询和键的维度),那么 Q、K、V 的形状均为 L×dkL \\times d_kL×dk​。 计算注意力权重: 接下来,计算 Q 与 K 之间的相似度,通常使用点积(Dot Product)的方式,即每个查询向量 Q 与所有键向量 K 进行点积。点积的结果是一个 L×LL \\times LL×L 的矩阵,其中的每个元素表示查询向量与键向量之间的相似度。为了使这个矩阵中的元素处于同一尺度,通常会除以 dk\\sqrt{d_k}dk​​,以避免过大的点积值导致 softmax 函数饱和。 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。 加权求和: 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。","s":"自注意力机制的计算步骤","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":1198},{"i":1223,"t":"在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。","s":"多头自注意力","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":1198},{"i":1225,"t":"假设输入的文本序列长度为 L=5L=5L=5,每个词向量的维度为 D=512D=512D=512,dk=512d_k=512dk​=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \\times 5125×512。在计算注意力权重时,得到的矩阵形状为 5×55 \\times 55×5。最后的注意力输出形状同样为 5×5125 \\times 5125×512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。 自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。","s":"示例","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":1198},{"i":1227,"t":"tip 参考资料:https://blog.csdn.net/yeziyezi210/article/details/103864518 自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。 防止注意力机制关注填充(padding)标记 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中 在特定任务中屏蔽某些不相关的输入","s":"自注意力中的掩码 Mask","u":"/en/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":1198},{"i":1229,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"","p":1228},{"i":1232,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":1228},{"i":1234,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":1228},{"i":1236,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":1228},{"i":1240,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":1228},{"i":1242,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":1228},{"i":1244,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":1228},{"i":1246,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":1228},{"i":1248,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":1228},{"i":1250,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":1228},{"i":1253,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1228},{"i":1255,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":1228},{"i":1258,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1228},{"i":1260,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1228},{"i":1262,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1228},{"i":1264,"t":"参考资料:Sampling for Text Generation","s":"生成模型中的采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"","p":1263},{"i":1266,"t":"生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。 没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。","s":"引言","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":1263},{"i":1268,"t":"生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如: 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。","s":"为什么需要采样?","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":1263},{"i":1270,"t":"概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。 在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。 当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。","s":"长尾效应","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":1263},{"i":1272,"t":"为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。","s":"采样技巧","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":1263},{"i":1274,"t":"温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。 假设模型的原始概率分布为 p(xi)p(x_i)p(xi​),那么通过温度调整后的概率分布可以表示为: p′(xi)=exp⁡(log⁡(p(xi))T)∑jexp⁡(log⁡(p(xj))T)p'(x_i) = \\frac{\\exp\\left(\\frac{\\log(p(x_i))}{T}\\right)}{\\sum_j \\exp\\left(\\frac{\\log(p(x_j))}{T}\\right)}p′(xi​)=∑j​exp(Tlog(p(xj​))​)exp(Tlog(p(xi​))​)​ p(xi)p(x_i)p(xi​):表示原始模型对第 iii 个选项的预测概率。 TTT:温度参数,一般是一个正数。 当 T>1T > 1T>1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1T<1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。","s":"温度(Temperature)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":1263},{"i":1276,"t":"Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。 Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下: 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_kCk​ 对于 CkC_kCk​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项。 公式化表示如下: Ck={wi∣pi is among the top k probabilities in P}C_k=\\left\\{w_i \\mid p_i \\text{ is among the top k probabilities in }P\\right\\}Ck​={wi​∣pi​ is among the top k probabilities in P} pi′=pi∑wj∈Ckpj for wi∈Ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_k} p_j} \\text { for } w_i \\in C_kpi′​=∑wj​∈Ck​​pj​pi​​ for wi​∈Ck​ 其中, pi′p_i^{\\prime}pi′​​ 是重新归一化后的概率。","s":"Top-k 采样","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":1263},{"i":1278,"t":"Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),…,(wV,pV)}\\left\\{\\left(w_1, p_1\\right),\\left(w_2, p_2\\right), \\ldots,\\left(w_V, p_V\\right)\\right\\}{(w1​,p1​),(w2​,p2​),…,(wV​,pV​)} ,其中 p1≥p2≥…≥pVp_1 \\geq p_2 \\geq \\ldots \\geq p_Vp1​≥p2​≥…≥pV​ 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 ppp,设这些候选项的集合为 CpC_pCp​ 对于 CpC_pCp​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项 Cp={wi∣∑j=1ipj≥p}C_p=\\left\\{w_i \\mid \\sum_{j=1}^i p_j \\geq p\\right\\}Cp​={wi​∣j=1∑i​pj​≥p} pi′=pi∑wj∈Cppj for wi∈Cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_p} p_j} \\text { for } w_i \\in C_ppi′​=∑wj​∈Cp​​pj​pi​​ for wi​∈Cp​ 其中,pi′p_i^{\\prime}pi′​ 是重新归一化后的概率。","s":"Top-p 采样(Nucleus Sampling)","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":1263},{"i":1280,"t":"采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。","s":"结论","u":"/en/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":1263},{"i":1282,"t":"tip 在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。","s":"自监督学习(Self-Supervised Learning)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"","p":1281},{"i":1284,"t":"自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。 自监督学习的基本原理是,通过对输入数据进行某种变换或操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。","s":"介绍","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":1281},{"i":1286,"t":"下面以BERT为例,介绍自监督模型。","s":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":1281},{"i":1288,"t":"BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。 BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。 使用 BERT 的一般步骤包括: 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。","s":"结构","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":1281},{"i":1290,"t":"Masking Input​ BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。 BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。 L=−1N∑i=1Nyilog⁡(pi)(1)L=-\\frac1N\\sum_{i=1}^Ny_i\\log(p_i)\\tag{1}L=−N1​i=1∑N​yi​log(pi​)(1) 其中: NNN是输出的概率分布向量的维度。 yiy_{i}yi​是概率分布向量标签。 pip_{i}pi​是模型预测的概率分布向量。 Next Sentence Prediction​","s":"Self-Supervised Pretraining","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":1281},{"i":1292,"t":"在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。 首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。 Benchmark: GLUE​ GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。 MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。 QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。 QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。 RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。 STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。 CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。 MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。 SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。 WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。 GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。 Downstream Tasks​ Sentiment Analysis​ BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。 下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。 立场分析​ Extraction-based Question Answering​ BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。 具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。 其他应用​ 虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。","s":"Fine-tuning","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":1281},{"i":1294,"t":"BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding。 BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。 ——来自讯飞星火大模型 虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。 在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。 因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。 总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。 ——来自腾讯混元大模型","s":"Why does BERT work?","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":1281},{"i":1296,"t":"GPT的结构是Transformer的Decoder部分,可以承担生成的任务。 GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。","s":"GPT: Generative Pre-trained Transformer","u":"/en/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":1281},{"i":1298,"t":"tip 输入:shape为[5,5,3][5, 5, 3][5,5,3]的图像 输出要求:shape为[5,5,4][5, 5, 4][5,5,4]的feature map 使用3×33 \\times 33×3卷积核,padding=1,stride=1padding=1, stride=1padding=1,stride=1","s":"深度可分离卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"","p":1297},{"i":1300,"t":"卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3) 其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算 不考虑卷积偏置,参数量为 3×3×3×4=108(1)3 \\times 3 \\times 3 \\times 4 = 108 \\tag{1}3×3×3×4=108(1)","s":"常规卷积","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":1297},{"i":1302,"t":"使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为 3×3××3=27(2)3 \\times 3 \\times \\times 3 = 27 \\tag{2}3×3××3=27(2) 代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可","s":"逐通道卷积-Depthwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":1297},{"i":1304,"t":"使用1×11 \\times 11×1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为 1×1×3×4=12(3)1 \\times 1 \\times 3 \\times 4 = 12 \\tag{3}1×1×3×4=12(3) tip 图片源自知乎","s":"逐点卷积-Pointwise Convolution","u":"/en/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":1297},{"i":1308,"t":"σ(x)=11+e−x(1)\\sigma(x) = \\frac{1}{1 + e^{-x}} \\tag{1}σ(x)=1+e−x1​(1) dσdx=σ (1−σ)(2)\\frac{{\\rm d}\\sigma}{{\\rm d}x} = \\sigma \\space (1 - \\sigma) \\tag{2}dxdσ​=σ (1−σ)(2) 优点:可以将数据压缩至[0, 1)区间内,有较大实用意义 致命问题:在输入值较小或较大时,Sigmoid函数的梯度趋近于零,会导致网络参数长时间得不到更新,即梯度弥散问题 from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.sigmoid(x) # 当x为100时,sigmoid(x)就接近于0了","s":"Sigmoid函数 / Logistic函数","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":1305},{"i":1310,"t":"f(x)={0x<0xx≥0(3)f(x) = \\begin{cases} 0 & x < 0\\\\ x & x \\geq 0\\\\ \\end{cases} \\tag{3}f(x)={0x​x<0x≥0​(3) df(x)dx={0x<01x≥0(4)\\frac {{\\text d}f(x)}{{\\text d}x} = \\begin{cases} 0 & x < 0\\\\ 1 & x \\geq 0\\\\ \\end{cases} \\tag{4}dxdf(x)​={01​x<0x≥0​(4) from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.relu(x)","s":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":1305},{"i":1313,"t":"L2范数是对元素求平方和后再开根号,需要.pow(2)后才可作为损失函数 微小的误差可能对网络性能带来极大的影响 LossMSE=∑[y−f(x)]2(5)Loss_{MSE} = \\sum{[{y - f(x)]^2}} \\tag{5}LossMSE​=∑[y−f(x)]2(5) ∥y−f(x)∥2=∑[y−f(x)]22(6)\\Vert y - f(x) \\Vert_2 = \\sqrt[2]{\\sum{[y - f(x)]^2}} \\tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6)","s":"Mean Squared Error 均方误差","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":1305},{"i":1315,"t":"信息熵​ Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。 It's a measure of surprise, higher entrpoy means less information and higher uncertainty. 假设一个离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率为PiP_iPi​,则其信息熵的定义为 H(P)=−∑inPi log2(Pi)=∑inPi log2(1Pi)(7)\\begin{align} H(P) &= -\\sum_i^n{P_i}\\space{log_2(P_i)} \\\\ &= \\sum_i^n{P_i}\\space{log_2({\\frac{1}{P_i}}}) \\tag{7} \\end{align}H(P)​=−i∑n​Pi​ log2​(Pi​)=i∑n​Pi​ log2​(Pi​1​)​(7) KL散度​ 在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。 存在两个概率分布P和Q,其离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率分别为Pi,QiP_i,Q_iPi​,Qi​. KL散度是非对称的,即 DKL(P ∣∣ Q)≠DKL(Q ∣∣ P)(8)D_{KL}(P \\space || \\space Q) \\neq D_{KL}(Q \\space || \\space P)\\tag{8}DKL​(P ∣∣ Q)=DKL​(Q ∣∣ P)(8) DKL(P ∣∣ Q)=∑Pi [log2(Pi)−log2(Qi)](9)D_{KL}(P \\space || \\space Q) = \\sum{P_i\\space [log_2(P_i)-log_2(Q_i)]}\\tag{9}DKL​(P ∣∣ Q)=∑Pi​ [log2​(Pi​)−log2​(Qi​)](9) 特别的,DKL(PLabel ∣ QPred)D_{KL}(P_{Label} \\space | \\space Q_{Pred})DKL​(PLabel​ ∣ QPred​)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 交叉熵​ 衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为 H(P, Q)=H(P)+DKL(P ∣∣ Q)=−∑Pi log2(Qi)(10)\\begin{align} H(P, \\space Q) &= H(P) + D_{KL}(P\\space || \\space Q) \\\\ &= - \\sum{P_i}\\space{log_2({Q_i})} \\tag{10} \\end{align}H(P, Q)​=H(P)+DKL​(P ∣∣ Q)=−∑Pi​ log2​(Qi​)​(10) PyTorch中的CrossEntropyLoss​ torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss. import torch.nn as nn # 使用NLLLoss实现 nllloss = nn.NLLLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) predict = torch.log(torch.softmax(predict, dim=-1)) label = torch.tensor([1, 2]) nllloss(predict, label) # output: tensor(0.2684) # 使用CrossEntropyLoss实现 cross_loss = nn.CrossEntropyLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) label = torch.tensor([1, 2]) cross_loss(predict, label) # output: tensor(0.2684)","s":"Cross Entropy Loss 交叉熵损失","u":"/en/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":1305},{"i":1318,"t":"AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。 标志着新的一轮神经网络热潮的开始","s":"背景","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":1316},{"i":1320,"t":"ReLU激活函数 Dropout正则化、丢弃法 最大池化MaxPooling","s":"新的概念和技术","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":1316},{"i":1322,"t":"由于输入的图片更大,设置了更大的卷积核尺寸和步长 更大的池化窗口,使用最大池化 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式 激活函数从Sigmoid改成了ReLU,减缓梯度消失 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化 使用了数据增强data augmentation","s":"与LeNet比较","u":"/en/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":1316},{"i":1324,"t":"tip 正则化与权重衰退","s":"正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"","p":1323},{"i":1326,"t":"正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。 正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。 常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。 L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。","s":"什么是正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":1323},{"i":1328,"t":"min l(w,b) subject to ∥w∥12≤θ(1)min \\space l(w, b) \\space \\text{subject to} \\space \\Vert w \\Vert^2_1 \\leq \\theta \\tag{1}min l(w,b) subject to ∥w∥12​≤θ(1) L1正则化限制权重参数的L1范数小于某一特定的超参数 通常不限制偏移bbb 更小的超参数θ\\thetaθ意味着更强的正则项","s":"L1正则化","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":1323},{"i":1330,"t":"L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示: l(w,b)+λ2∥w∥12(2)l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\tag{2}l(w,b)+2λ​∥w∥12​(2) 其中,λ\\lambdaλ是一个正则化系数超参数 此时在更新梯度时,具有如下公式 ∂∂w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\partial w} \\big(l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\big) = \\frac{\\partial l(w, b)}{\\partial w} + \\lambda w \\tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3) wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1-\\eta \\lambda)w_t + \\eta \\frac{\\partial l(w_t, b_t)}{\\partial w_t} \\tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4) 通常ηλ<1\\eta \\lambda < 1ηλ<1,因此又叫做权重衰退","s":"L2正则化与权重衰退","u":"/en/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":1323},{"i":1333,"t":"K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kkk partitions, or folds, and then train and test the model kkk times, using a different fold for testing each time.","s":"What is k-fold cross-validation?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":1331},{"i":1335,"t":"In each iteration of k-fold cross-validation, one of the kkk folds is used as the test set, while the remaining k−1k-1k−1 folds are used as the training set. This process is repeated kkk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.","s":"How does k-fold cross-validation work?","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":1331},{"i":1337,"t":"train set: to train the model and do parameter update validation set: to choose hyperparameter test set: the final test, only used once","s":"Summary","u":"/en/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":1331},{"i":1340,"t":"kh=kw=1k_h=k_w=1kh​=kw​=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道 相当于输入形状为HW×ciHW \\times c_iHW×ci​,权重形状为co×cic_o \\times c_ico​×ci​的全连接层","s":"1x1 卷积","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":1338},{"i":1342,"t":"输入:ci×H×Wc_i \\times H \\times Wci​×H×W 核:co×ci×kh×kwc_o \\times c_i \\times k_h \\times k_wco​×ci​×kh​×kw​ 偏差:co×cic_o \\times c_ico​×ci​ 输出:co×H′×W′c_o \\times H' \\times W'co​×H′×W′ 输出H′以及W′H'以及W'H′以及W′的计算: shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(1)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1) 计算复杂度:O(co×ci×H×W×H′×W′)O(c_o \\times c_i \\times H \\times W \\times H' \\times W')O(co​×ci​×H×W×H′×W′) 总结: 输出的通道数是卷积层的超参数 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果 每个输出通道有独立的三维卷积核","s":"二维卷积层","u":"/en/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":1338},{"i":1345,"t":"卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。 假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。","s":"卷积对像素位置信息是敏感的","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":1343},{"i":1347,"t":"池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。 但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。","s":"池化层的作用","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":1343},{"i":1349,"t":"池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。 最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。","s":"池化的实现","u":"/en/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":1343},{"i":1352,"t":"LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。 LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。","s":"背景","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":1350},{"i":1354,"t":"import torch import numpy as np from torch import nn as nn from torch.nn import functional as F from d2l import torch as d2l from matplotlib import pyplot as plt import os os.environ['http_proxy'] = 'http://127.0.0.1:7890' os.environ['https_proxy'] = 'https://127.0.0.1:7890' class LeNetReshape(nn.Module): def __init__(self): super(LeNetReshape, self).__init__() def forward(self, x): return x.reshape(-1, 1, 28, 28) class LeNet5(nn.Module): def __init__(self): super(LeNet5, self).__init__() self.net = torch.nn.Sequential( LeNetReshape(), # 激活函数应为Sigmoid nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(), nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(), nn.Linear(120, 84), nn.Sigmoid(), nn.Linear(84, 10)) def forward(self, x): return self.net(x) def evaluate_accuracy_gpu(net, data_iter, device=None): if isinstance(net, torch.nn.Module): net.eval() if not device: device = next(iter(net.parameters())).device metric = d2l.Accumulator(2) for X, y in data_iter: if isinstance(X, list): X = [x.to(device) for x in X] else: X = X.to(device) y = y.to(device) metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计 return metric[0] / metric[1] def accuracy(y_hat, y): return torch.sum(y_hat.argmax(dim=1) == y) def train(net, train_iter, test_iter, num_epochs, lr, device): def init_weights(m): if type(m) == nn.Linear or type(m) == nn.Conv2d: nn.init.xavier_uniform_(m.weight) net.apply(init_weights) net.to(device) optimizer = torch.optim.SGD(net.parameters(), lr=lr) loss = torch.nn.CrossEntropyLoss() loss.to(device) animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], legend=['train loss', 'train acc', 'test acc']) timer, num_batches = d2l.Timer(), len(train_iter) metric = d2l.Accumulator(3) net.train() for epoch in range(num_epochs): for batch, (X, y) in enumerate(train_iter): timer.start() optimizer.zero_grad() X, y = X.to(device), y.to(device) y_hat = net(X) l = loss(y_hat, y) l.backward() optimizer.step() metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel()) timer.stop() train_l = metric[0] / metric[2] train_acc = metric[1] / metric[2] if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1: animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None)) test_acc = evaluate_accuracy_gpu(net, test_iter) animator.add(epoch + 1, (None, None, test_acc)) print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}') print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}') plt.show() batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) lr, num_epochs = 0.9, 10 lenet = LeNet5() train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())","s":"代码实现","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":1350},{"i":1356,"t":"在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。","s":"问题","u":"/en/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":1350},{"i":1359,"t":"现代图片具有较大的像素,使用全连接层导致参数爆炸 针对图片的特征提取和模式识别,应具备以下原则: 平移不变性 局部性","s":"卷积的诞生&核心特征","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":1357},{"i":1361,"t":"将全连接层的一维输入和输出变换为二维的矩阵,公式如下 其中i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w代表输入神经元的二维索引坐标 yi,j=∑h,wwi,j,h,w∗xh,w(1)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \\tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1) 进一步将权重以及输入的索引变形,公式如下 其中a,ba,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接 yi,j=∑h,wwi,j,h,w∗xh,w=∑a,bvi,j,a,b∗xi+a,j+b(2)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \\tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2) 在公式(2)中,当i,ji,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。 为了解决这一问题,将公式(2)变形为如下 此时参数权值共享,满足了平移不变性 yi,j=∑a,bvi,j,a,b∗xi+a,j+b=∑a,bva,b∗xi+a,j+b(3)y_{i,j}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \\tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3) 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,ba,b可缩小范围,并不用来实现全连接,此时a,ba,ba,b代表着卷积核的感受野,即kernel size 此时完成了全连接层到卷积层的转换","s":"重新考察全连接层","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":1357},{"i":1363,"t":"对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接 yi,j=∑a,bva,b∗xi+a,j+b=∑a=−ΔΔ∑b=−ΔΔva,b∗xia,j+b(4)y_{i,j}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\\sum_{a=-\\Delta}^{\\Delta}\\sum_{b=-\\Delta}^{\\Delta}{v_{a,b}*x_{i_a,j+b}} \\tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−Δ∑Δ​b=−Δ∑Δ​va,b​∗xia​,j+b​(4) 卷积层输出形状的计算 shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(5)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5)","s":"总结","u":"/en/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":1357},{"i":1366,"t":"感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。","s":"什么是感知机","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":1364},{"i":1368,"t":"输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n)x=(x1​,x2​,...,xn​),表示一个样本的各个特征值。 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n)w=(w1​,w2​,...,wn​),表示每个特征对应的权重。 偏置项:偏置项bbb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=w∗x+bz=w*x+bz=w∗x+b。 阈值函数:将输入信号zzz带入阈值函数,如符号函数sign(z)sign(z)sign(z),即可得到分类结果。 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即 L(y,z)=max(0,−y∗z)(1)L(y,z)=max(0,-y*z) \\tag{1}L(y,z)=max(0,−y∗z)(1) 其中yyy是样本的真实标签,zzz是预测值。 参数更新:根据当前样本误分类情况来对权值向量www和偏置项bbb进行迭代更新。 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。 感知机训练流程伪代码如下所示: initialize w = 0 and b = 0 repeat if yi * zi <= 0 then w = w + yi * xi and b = b + yi end if until all classified correctly","s":"详细原理","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":1364},{"i":1370,"t":"感知机是一个二分类模型,最早的AI模型之一 求解算法等价于使用批量大小为1的梯度下降 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬","s":"总结","u":"/en/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":1364},{"i":1372,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"","p":1371},{"i":1374,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":1371},{"i":1377,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":1371},{"i":1379,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":1371},{"i":1381,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":1371},{"i":1383,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":1371},{"i":1385,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 tip 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":1371},{"i":1389,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":1371},{"i":1391,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":1371},{"i":1393,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/en/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":1371},{"i":1396,"t":"concat与stack函数 stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度 concat函数对输入的张量在指定维度进行拼接,没有创建新的维度 # stack和concat函数 a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩 b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩 c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学) print(c.shape) # torch.Size([2, 4, 3]) d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩 print(d.shape) # torch.Size([4, 6]) list和tensor乘法不同之处 list的*乘法是复制元素,改变list的shape tensor的*乘法是对tensor中的元素进行点乘计算 a = torch.tensor([[3, 3, 3, 3]]) b = [3] # list的*乘是复制元素进行扩展 print(a * 3) # tensor([[9, 9, 9, 9]]) print(b * 3) # [3, 3, 3] 最大值 / 最小值索引:argmax / argmin 需要通过参数dim指定操作的维度,dim的理解 官方解释:The dimension to reduce 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度 # 最大值最小值索引 a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3] print(\"argmax output: \", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0]) Python zip函数 zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) c = zip(a, b) for i in c: print(i) ''' (tensor(1), tensor(4)) (tensor(2), tensor(5)) (tensor(3), tensor(6)) ''' a = torch.tensor([[1, 2, 3], [3, 2, 1]]) b = torch.tensor([[4, 5, 6], [6, 5, 4]]) c = zip(a, b) for i in c: print(i) ''' (tensor([1, 2, 3]), tensor([4, 5, 6])) (tensor([3, 2, 1]), tensor([6, 5, 4])) '''","s":"常用函数部分","u":"/en/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":1394},{"i":1399,"t":"Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。 逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。","s":"什么是Logistic Regression","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":1397},{"i":1401,"t":"线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。","s":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":1397},{"i":1403,"t":"从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。","s":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":1397},{"i":1405,"t":"逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。 逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。 acc=∑I(predi==yi)len(Y)(1)acc = \\frac{\\sum{I(pred_i==y_i)}}{len(Y)} \\tag{1}acc=len(Y)∑I(predi​==yi​)​(1) 如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况: gradient = 0 if accuracy unchanged but weights changed: xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5 print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15 print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python gradient not continuous since the number of correct is not continunous: 当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。","s":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/en/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":1397},{"i":1407,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":1406},{"i":1409,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1406},{"i":1411,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用 语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1406},{"i":1414,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1406},{"i":1416,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1406},{"i":1418,"t":"实战练习 Transformer实战练习,代码见Github仓库。 This is a practice of Transformer, follow the guide of Github Repo.","s":"Speaker Classification","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"","p":1417},{"i":1420,"t":"Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.","s":"Overview","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":1417},{"i":1422,"t":"The original dataset is VoxCeleb1. We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive. Arguments: data_dir: The path to the data directory. metadata_path: The path to the metadata. segment_len: The length of audio segment for training. The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data. data directory/ ├── mapping.json ├── metadata.json ├── testdata.json └── uttr-{random string}.pt","s":"Dataset","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":1417},{"i":1424,"t":"This is also the assignment solution of ML2021Spring HW4.","s":"Related","u":"/en/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":1417},{"i":1426,"t":"原文链接:https://arxiv.org/pdf/2406.11838 参考资料:何恺明:Autoregressive Image Generation without Vector Quantization.","s":"Autoregressive Image Generation without Vector Quantization","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"","p":1425},{"i":1428,"t":"Conventional wisdom holds that autoregressive models for image generation are typically accompanied by vector-quantized tokens. We observe that while a discrete-valued space can facilitate representing a categorical distribution, it is not a necessity for autoregressive modeling. In this work, we propose to model the per-token probability distribution using a diffusion procedure, which allows us to apply autoregressive models in a continuous-valued space. Rather than using categorical cross-entropy loss, we define a Diffusion Loss function to model the per-token probability. This approach eliminates the need for discrete-valued tokenizers. We evaluate its effectiveness across a wide range of cases, including standard autoregressive models and generalized masked autoregressive (MAR) variants. By removing vector quantization, our image generator achieves strong results while enjoying the speed advantage of sequence modeling. We hope this work will motivate the use of autoregressive generation in other continuous-valued domains and applications.","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":1425},{"i":1430,"t":"由于语言先天的离散性质,在自然语言领域的自回归模型都是在离散的隐空间中学习数据的概率分布。因此,当自回归模型推广到连续的数据空间(如图像生成)进行发展时,研究人员将主要的精力放在了如何更有效地将连续数据离散化上,如 VQGAN、VQVAE、VAR、MaskGIT 等。 然而,本文作者从 Autoregressive 模型的性质本身(即根据先前的 token 预测下一个 token)出发进行思考,产生了自回归模型是否有必要与向量量化(Vector Quantization)表示相结合的疑问,作者发现,自回归生成模型与 token 是离散表示的还是连续表示的并没有关系,真正需要解决的问题是如何对每个 token 的概率分布进行建模,同时该概率分布可以通过损失函数来学习和约束(训练),并用于从中进行采样(生成)。","s":"研究动机","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":1425},{"i":1432,"t":"本文提出的模型融合了目前图像生成领域的三大主流范式的思想,分别为自回归生成、掩码生成以及扩散生成: 模型首先根据自回归模型性质为每个 token 生成条件向量(conditional vector)zzz 之后使用扩散过程建模每个 token 的概率分布 最后结合掩码生成的思想加速训练和推理过程","s":"主要方法与实现","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":1425},{"i":1434,"t":"具体而言,如下图所示,假设连续值向量 x∈Rdx \\in \\mathbb{R}^dx∈Rd,是当前位置要预测的 token。自回归模型在这个位置产生一个条件向量 z∈RDz \\in \\mathbb{R}^Dz∈RD​​ 。 本文使用 Diffusion Loss 根据 zzz 对 xxx 建模概率分布 p(x∣z)p(x \\mid z)p(x∣z)​ 。 L(z,x)=Eε,t[∥ε−εθ(xt∣t,z)∥2]L(z, x)=\\mathbb{E}_{\\varepsilon, t}\\left[\\left\\|\\varepsilon-\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)\\right\\|^2\\right]L(z,x)=Eε,t​[∥ε−εθ​(xt​∣t,z)∥2] 其中: ε∈Rd\\varepsilon \\in \\mathbb{R}^dε∈Rd 是从 N(0,I)\\mathcal{N}(0, \\mathbf{I})N(0,I) 采样的噪声向量 xt=αˉtx+1−αˉtεx_t=\\sqrt{\\bar{\\alpha}_t x}+\\sqrt{1-\\bar{\\alpha}_t} \\varepsilonxt​=αˉt​x​+1−αˉt​​ε,其中 αˉt\\bar{\\alpha}_tαˉt​ 定义了一个 noise schedule ttt 是 noise schedule 的时间步 噪声预测网络 εθ\\varepsilon_\\thetaεθ​ 由参数 θ\\thetaθ 控制,是一个小型 MLP 网络,εθ(xt∣t,z)\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)εθ​(xt​∣t,z) 表示此网络将 xtx_txt​ 作为输入,并且以 ttt 和 zzz​​​ 作为条件。MLP 网络的具体组成如下所示: 对于扩散过程,作者采用了 cosine 函数作为 noise schedule,在训练过程中设定为 1000 步,在推理过程中设定为 100 步。同时,Diffusion Loss 原生支持 CFG 策略。","s":"Diffusion Loss","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":1425},{"i":1436,"t":"在推理时,需要从分布 p(x∣z)p(x \\mid z)p(x∣z) 中采样样本。采样是通过逆扩散过程进行的: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt∣t,z))+σtδx_{t-1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t-\\frac{1-\\alpha_t}{\\sqrt{1-\\bar{\\alpha}_t}} \\epsilon_\\theta\\left(x_t \\mid t, z\\right)\\right)+\\sigma_t \\deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt​δ 这里 δ\\deltaδ 是从高斯分布 N(0,I)\\mathcal{N}(0, I)N(0,I) 中采样的, σt\\sigma_tσt​ 是时间步 ttt 的噪声水平。以 xT∼N(0,I)x_T \\sim \\mathcal{N}(0, I)xT​∼N(0,I) 开始,此过程生成一个样本 x0x_0x0​ 使得 x0∼p(x∣z)x_0 \\sim p(x \\mid z)x0​∼p(x∣z)​。","s":"采样","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":1425},{"i":1439,"t":"本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。 掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。","s":"结合掩码生成模型的思想 MAR","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":1425},{"i":1446,"t":"对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。","s":"MAR 模型速度与效果的 trade-off","u":"/en/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":1425},{"i":1448,"t":"相关链接 论文:arXiv 代码:GitHub 参考文献: Latent Diffusion Models论文解读 Stable Diffusion就是在这篇文章的基础上,使用LDM进行开发的。","s":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/en/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"","p":1447},{"i":1451,"t":"相关链接 论文:CVPR 2023 open access 代码:Piscart-AI-Research 文章的命名风格借鉴了CVPR 2022的文章Few Shot Generative Model Adaption via Relaxed Spatial Structural Alignment","s":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"","p":1450},{"i":1453,"t":"本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征且适应目标域的prompt,从而指导目标域生成器的训练。 This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility. 训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。","s":"摘要","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":1450},{"i":1456,"t":"Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。 few-shot​ 对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。 然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。 相关文献方法 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019. 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020. 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021. 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021. zero-shot​ 对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。 此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。 然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。","s":"Generative Model Adaption","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":1450},{"i":1458,"t":"Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。 然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。 Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。","s":"Prompt Learning","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":1450},{"i":1461,"t":"IPL方法分两个阶段。 第一阶段:训练Latent Mapper​ 第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。 第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。 第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。 第二阶段:将Latent Mapper插入目标域生成器的训练过程​ 第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。","s":"概述","u":"/en/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":1450},{"i":1464,"t":"自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。","s":"图像生成:自回归模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"","p":1463},{"i":1466,"t":"自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。 假设有一个序列 x=(x1,x2,…,xT)x=\\left(x_1, x_2, \\ldots, x_T\\right)x=(x1​,x2​,…,xT​) ,自回归模型的目标是学习条件概率分布 p(xt∣x 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":1527},{"i":1549,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":1527},{"i":1552,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":1527},{"i":1554,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":1527},{"i":1557,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":1527},{"i":1559,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":1527},{"i":1561,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/en/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":1527},{"i":1563,"t":"原文链接:https://arxiv.org/pdf/2406.11838 参考资料:何恺明:Autoregressive Image Generation without Vector Quantization.","s":"自回归模型:MAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"","p":1562},{"i":1565,"t":"Conventional wisdom holds that autoregressive models for image generation are typically accompanied by vector-quantized tokens. We observe that while a discrete-valued space can facilitate representing a categorical distribution, it is not a necessity for autoregressive modeling. In this work, we propose to model the per-token probability distribution using a diffusion procedure, which allows us to apply autoregressive models in a continuous-valued space. Rather than using categorical cross-entropy loss, we define a Diffusion Loss function to model the per-token probability. This approach eliminates the need for discrete-valued tokenizers. We evaluate its effectiveness across a wide range of cases, including standard autoregressive models and generalized masked autoregressive (MAR) variants. By removing vector quantization, our image generator achieves strong results while enjoying the speed advantage of sequence modeling. We hope this work will motivate the use of autoregressive generation in other continuous-valued domains and applications.","s":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":1562},{"i":1567,"t":"由于语言先天的离散性质,在自然语言领域的自回归模型都是在离散的隐空间中学习数据的概率分布。因此,当自回归模型推广到连续的数据空间(如图像生成)进行发展时,研究人员将主要的精力放在了如何更有效地将连续数据离散化上,如 VQGAN、VQVAE、VAR、MaskGIT 等。 然而,本文作者从 Autoregressive 模型的性质本身(即根据先前的 token 预测下一个 token)出发进行思考,产生了自回归模型是否有必要与向量量化(Vector Quantization)表示相结合的疑问,作者发现,自回归生成模型与 token 是离散表示的还是连续表示的并没有关系,真正需要解决的问题是如何对每个 token 的概率分布进行建模,同时该概率分布可以通过损失函数来学习和约束(训练),并用于从中进行采样(生成)。","s":"研究动机","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":1562},{"i":1569,"t":"本文提出的模型融合了目前图像生成领域的三大主流范式的思想,分别为自回归生成、掩码生成以及扩散生成: 模型首先根据自回归模型性质为每个 token 生成条件向量(conditional vector)zzz 之后使用扩散过程建模每个 token 的概率分布 最后结合掩码生成的思想加速训练和推理过程","s":"主要方法与实现","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":1562},{"i":1571,"t":"具体而言,如下图所示,假设连续值向量 x∈Rdx \\in \\mathbb{R}^dx∈Rd,是当前位置要预测的 token。自回归模型在这个位置产生一个条件向量 z∈RDz \\in \\mathbb{R}^Dz∈RD​​ 。 本文使用 Diffusion Loss 根据 zzz 对 xxx 建模概率分布 p(x∣z)p(x \\mid z)p(x∣z)​ 。 L(z,x)=Eε,t[∥ε−εθ(xt∣t,z)∥2]L(z, x)=\\mathbb{E}_{\\varepsilon, t}\\left[\\left\\|\\varepsilon-\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)\\right\\|^2\\right]L(z,x)=Eε,t​[∥ε−εθ​(xt​∣t,z)∥2] 其中: ε∈Rd\\varepsilon \\in \\mathbb{R}^dε∈Rd 是从 N(0,I)\\mathcal{N}(0, \\mathbf{I})N(0,I) 采样的噪声向量 xt=αˉtx+1−αˉtεx_t=\\sqrt{\\bar{\\alpha}_t x}+\\sqrt{1-\\bar{\\alpha}_t} \\varepsilonxt​=αˉt​x​+1−αˉt​​ε,其中 αˉt\\bar{\\alpha}_tαˉt​ 定义了一个 noise schedule ttt 是 noise schedule 的时间步 噪声预测网络 εθ\\varepsilon_\\thetaεθ​ 由参数 θ\\thetaθ 控制,是一个小型 MLP 网络,εθ(xt∣t,z)\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)εθ​(xt​∣t,z) 表示此网络将 xtx_txt​ 作为输入,并且以 ttt 和 zzz​​​ 作为条件。MLP 网络的具体组成如下所示: 对于扩散过程,作者采用了 cosine 函数作为 noise schedule,在训练过程中设定为 1000 步,在推理过程中设定为 100 步。同时,Diffusion Loss 原生支持 CFG 策略。","s":"Diffusion Loss","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":1562},{"i":1573,"t":"在推理时,需要从分布 p(x∣z)p(x \\mid z)p(x∣z) 中采样样本。采样是通过逆扩散过程进行的: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt∣t,z))+σtδx_{t-1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t-\\frac{1-\\alpha_t}{\\sqrt{1-\\bar{\\alpha}_t}} \\epsilon_\\theta\\left(x_t \\mid t, z\\right)\\right)+\\sigma_t \\deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt​δ 这里 δ\\deltaδ 是从高斯分布 N(0,I)\\mathcal{N}(0, I)N(0,I) 中采样的, σt\\sigma_tσt​ 是时间步 ttt 的噪声水平。以 xT∼N(0,I)x_T \\sim \\mathcal{N}(0, I)xT​∼N(0,I) 开始,此过程生成一个样本 x0x_0x0​ 使得 x0∼p(x∣z)x_0 \\sim p(x \\mid z)x0​∼p(x∣z)​。","s":"采样","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":1562},{"i":1576,"t":"本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。 掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。","s":"结合掩码生成模型的思想 MAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":1562},{"i":1583,"t":"对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。","s":"MAR 模型速度与效果的 trade-off","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":1562},{"i":1585,"t":"介绍 欢迎来到笔记本的深度学习部分 若更新不及时,欢迎通过 GitHub 联系交流 有关论文笔记的说明 为了节省写作时间,论文笔记部分的文章通常只讲述文章的方法论,Introduction 以及 Related Work 详情可以参考论文原文","s":"Welcome","u":"/en/docs/Deep-Learning/intro","h":"","p":1584},{"i":1587,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Deep-Learning/intro","h":"#支持我","p":1584},{"i":1590,"t":"参考链接 原文 URL:Recent Advances in (Image) Generative Foundation Models","s":"图像生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#图像生成基座模型","p":1588},{"i":1592,"t":"GAN​ 使用对抗生成策略,判别器根据真实图像判断生成器生成的图像是否逼真,二者交替训练。 Autoregressive(AR)​ 自回归生成范式,利用输入自身之前各期 [x1,...,xt−1][x_1,...,x_{t-1}][x1​,...,xt−1​] 来预测本期 xtx_txt​​​ 的表现。在图像生成中,自回归模型可以逐像素或逐块生成图像,每一步的生成基于之前已经生成的部分。自回归模型的优点在于能够捕捉图像中的复杂依赖关系,从而生成更加逼真的图像。 代表模型:VAE、VQVAE(2017)​ 参考资料 VQ-VAE 的简明介绍:量子化子编码器 Variant AutoEncoder(VAE)和 VQ-VAE 学习笔记和代码 VAE 和 VQ-VAE 都通过学习数据分布的潜在表示来生成新的样本。VAE 使用高斯分布来表示潜在空间,而 VQ-VAE 使用离散的代码簿来表示潜在空间。 具体来说,VAE 的工作原理是通过一个编码器将输入数据映射到一个潜在空间,然后通过一个解码器将潜在空间中的向量重构为原始数据。在训练过程中,VAE 会学习到数据分布的潜在表示,并能够生成与训练数据类似的新样本。 VQ-VAE 的工作原理与 VAE 类似,但它使用离散的代码簿来表示潜在空间。VQ-VAE 首先将编码器输出的向量进行量化,将其映射到代码簿中的最近向量。然后,解码器使用代码簿中的向量来重构原始数据。VQ-VAE 的优势在于,它可以学习到数据中的离散结构和语义信息,并可以避免过拟合。 代表模型:VQGAN(2021)​ 代表模型:ViT-VQGAN(2022)​ VQ (Vector Quantization) 的改进:在原有的 VQ-VAE 基础上进行了改进,通过引入更复杂的量化器和更强大的解码器,使得生成的图像质量得到了显著提升。 GAN (Generative Adversarial Network) 的结合:将 VQ 和 GAN 结合,利用 Style-GAN 的判别器来提升生成图像的细节和逼真度。 Transformer 的使用:将 VQ-VAE 和 VQGAN 的 Encoder、Decoder 中原来使用的 CNN 结构替换为 ViT。一是因为数据量丰富,二是 CNN 的归纳偏置对模型的约束是有限的,三是计算效率和重建质量更显著。 代表模型:VAR​ 上图展示了不同方式的自回归生成模型,VAR 方法在每个时间序列节点上都根据之前各时间步的输出预测出当前时间步的,且每个时间步均预测出完整的目标图像,且分辨率随时间推移逐步提升至高清图像,即 next-resolution prediction。 Masked-prediction model(Non-AR)​ 参考资料 生成周刊·第一期 代表模型:MaskGIT: Masked Generative Image Transformer​ 这种生成模型依赖一个预训练好的 VQGAN,能将图片 tokenize 成一组量化后的 visual tokens。VQGAN 编码图片得到的 tokens 是离散的,所有可能的 tokens 构成一个 codebook,假设其中包含 KKK 个 token 选项。MVTM 训练就是指给定 masked tokens,让网络预测这些被 masked 掉的 tokens。对于每个被 masked 掉的 token,网络给出一个 KKK 维向量预测当前 token 属于 codebook 中每个 token 的可能性,类似于完成一个 KKK 分类任务。 上图展示了传统 AR 模型和 MaskGIT 在推理过程中的区别。与之前 SOTA 使用的 Autoregressive 方法——逐行再逐列依次生成 image token 不同,MaskGIT 在推理时的每次迭代从一组 masked tokens 中预测出每个位置出现 visual token 的可能性,然后仅保留那些置信度足够高的位置的 visual token,然后继续将当前预测结果再送入网络进行下一轮预测,直到所有位置的 visual token 都被预测出来。与之前常用的自回归方法不同,每轮预测都是基于对图片的全局感知,可以并行预测。这样网络仅需 8 次前向传播就能生成高质量的图片。 顺序解码与 MaskGIT 计划并行解码的比较。第 1 行和第 3 行是每次迭代时的输入潜在掩码,第 2 行和第 4 行是每次迭代时每个模型生成的样本。MaskGIT 的解码从所有未知代码(浅灰色标记)开始,逐渐用更多更分散的预测并行填充潜表征(深灰色标记),预测标记的数量随着迭代急剧增加。MaskGIT 只用了 8 次迭代就完成了解码,而顺序法需要 256 轮。 代表模型:MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis​ Diffusion Model​ 参考链接 深度理解变分自编码器(VAE) | 从入门到精通","s":"四种生成范式","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#四种生成范式","p":1588},{"i":1594,"t":"数据:Re-caption 与 text encoder(T5) 结构:从 U-Net 到纯 Transformer,代表论文 Scalable Diffusion Models with Transformers 训练范式:使用 Rectified Flow 加速生成过程,参考链接 Diffusion学习笔记(十二)——Rectified Flow","s":"如何训练优秀的生成基座模型?","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#如何训练优秀的生成基座模型","p":1588},{"i":1596,"t":"参考链接 原文 URL:Video and 3D Generation","s":"视频生成基座模型","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#视频生成基座模型","p":1588},{"i":1598,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"自回归模型:LlamaGen","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":1597},{"i":1600,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":1597},{"i":1602,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":1597},{"i":1605,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":1597},{"i":1607,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的 LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":1597},{"i":1609,"t":"告示栏的启用 在docusaurus.config.js的themeConfig中加入以下代码 announcementBar: { id: 'announcementBar-3', content: 'Welcome to my notebook!', isCloseable: false, }, 告示栏的背景个性化 在custom.css中加入以下代码 div[class^='announcementBar_'] { background: repeating-linear-gradient( -35deg, var(--ifm-color-primary-lighter), var(--ifm-color-primary-lighter) 20px, var(--ifm-color-primary-lightest) 10px, var(--ifm-color-primary-lightest) 40px ); font-weight: 700; }","s":"告示栏","u":"/en/docs/Others/博客搭建/告示栏","h":"","p":1608},{"i":1611,"t":"tip 欢迎来到笔记本的其他部分","s":"Welcome","u":"/en/docs/Others/intro","h":"","p":1610},{"i":1613,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Others/intro","h":"#支持我","p":1610},{"i":1615,"t":"info 这里记录着在学习过程中发现的理解或操作方面出现的错误,温故知新。","s":"查漏补缺","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"","p":1614},{"i":1617,"t":"进行广播的条件:两个矩阵的后缘维度相同或其中一方的维度为1。 后缘维度相同:A为(3,4,5)的三维数据,B为(4,5)的二维数组。由于A和B的后缘维度都为(4,5),所以可以进行广播。同理,当A为(3,4)的二维数组,B为(4,)的数组,他们的后缘维度都是4,所以可以进行广播。 后缘维度中有一方维度为1:A为(4,5)的二维数组,B为(4,1)的二维数组,其中一方维度为1,可以进行广播。 广播的原理:在运算过程中,Python逐步对数组进行广播,并不进行实际的复制操作,节省内存。 以下是举出具体例子进行分析: import numpy as np import torch x = torch.tensor(np.arange(9), dtype=torch.float32) x = torch.reshape(x, (3, 3)) print(x) x1 = x[:, :, None] # (3, 3, 1) print(x1) \"\"\" tensor([[[0.], [1.], [2.]], [[3.], [4.], [5.]], [[6.], [7.], [8.]]]) \"\"\" x2 = x[:, None] # (3, 1, 3) print(x2) \"\"\" tensor([[[0., 1., 2.]], [[3., 4., 5.]], [[6., 7., 8.]]]) \"\"\" output = x1 + x2 print(output) \"\"\" tensor([[[ 0., 1., 2.], [ 1., 2., 3.], [ 2., 3., 4.]], [[ 6., 7., 8.], [ 7., 8., 9.], [ 8., 9., 10.]], [[12., 13., 14.], [13., 14., 15.], [14., 15., 16.]]]) \"\"\" 由于x1与x2在第0维度上维度相同,所以Python可以直接进行逐元素相加,即依次进行如下运算 x1[0,:,:]+x2[0,:,:](1)x1[0, :, :] + x2[0, :, :] \\tag{1}x1[0,:,:]+x2[0,:,:](1) x1[1,:,:]+x2[1,:,:](2)x1[1, :, :] + x2[1, :, :] \\tag{2}x1[1,:,:]+x2[1,:,:](2) x1[2,:,:]+x2[2,:,:](3)x1[2, :, :] + x2[2, :, :] \\tag{3}x1[2,:,:]+x2[2,:,:](3) 但在第0维度的相加过程中出现了shape为(3, 1)的矩阵与shape为(1, 3)的矩阵相加的情况,此时进行广播,将(3, 1)的每一列复制三次为(3, 3),将(1, 3)的每一行复制三次为(3, 3),再进行逐元素相加。 其实,上述的过程还可以再细分为,x1[0, 0, :]与x2[0, 0, :]相加时出现了第一次广播,将x1[0, 0, :]复制了三次与x2[0,0, :]完成相加,这里不再赘述,最终想表达的原理是广播机制是在运算过程当中进行的,并非一次性将二者全部复制为对应的最小公倍数形状后再进行运算。","s":"Python的广播机制","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#python的广播机制","p":1614},{"i":1619,"t":"点积在Python中对应的运算符为*,进行矩阵之间的逐元素乘法。在点积运算中,运算矩阵二者形状不一样时可能涉及到广播机制; 矩阵乘法在Python中对应的运算符为@,进行常规矩阵乘法。遵守左矩阵的列数必须等于右矩阵的行数,且输出矩阵的行数等于左矩阵的行数、输出矩阵的列数等于右矩阵的列数的规则。","s":"点积(dot product)与矩阵乘法(matmul product)","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#点积dot-product与矩阵乘法matmul-product","p":1614},{"i":1621,"t":"当你有多个列表(或其他可迭代对象)时,zip函数可以将它们逐个配对成元组。而*操作符用于解压元组,将元组中的元素分别作为参数传递给函数。 以下是一个简单的例子: # zip函数的例子 list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] list3 = ['x', 'y', 'z'] # 使用zip将多个列表配对成元组 zipped_lists = zip(list1, list2, list3) # 打印配对后的元组 for item in zipped_lists: print(item) 输出: (1, 'a', 'x') (2, 'b', 'y') (3, 'c', 'z') 在这个例子中,zip将list1、list2和list3中相同位置的元素组合成元组。 接下来,我们可以使用 * 操作符解压这些元组: # *解压操作的例子 unzipped_lists = zip(*zipped_lists) # 打印解压后的列表 for item in unzipped_lists: print(item) 输出: (1, 2, 3) ('a', 'b', 'c') ('x', 'y', 'z') 在这个例子中,*操作符将先前由zip组合的元组解压,分别放回原始的列表。","s":"zip函数与解压操作*","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#zip函数与解压操作","p":1614},{"i":1623,"t":"参考资料 https://www.jianshu.com/p/41c15d301542 对于不同的网络层,输入的维度虽然不同,但是通常输入的第一个维度都是batch_size,比如torch.nn.Linear的输入(batch_size,in_features),torch.nn.Conv2d的输入(batch_size, C, H, W)。 而RNN的输入是(seq_len, batch_size, input_size),batch_size位于第二维度!虽然可以将batch_size和序列长度seq_len对换位置,此时只需令batch_first=True。 但是为什么RNN输入默认不是batch first=True?这是为了便于并行计算。 因为cuDNN中RNN的API就是batch_size在第二维度。进一步讲,batch first意味着模型的输入(一个Tensor)在内存中存储时,先存储第一个sequence,再存储第二个,而如果是seq_len first,模型的输入在内存中,先存储每一个sequence的第一个元素,然后是第二个元素,两种区别如下图所示: seq_len first意味着不同序列中同一个时刻对应的输入单元在内存中是毗邻的,这样才能做到真正的batch计算。","s":"对batch_first参数的理解","u":"/en/docs/Deep-Learning/Fill-The-Gaps","h":"#对batch_first参数的理解","p":1614},{"i":1625,"t":"原文链接:https://arxiv.org/pdf/2404.02905","s":"自回归模型:VAR","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"","p":1624},{"i":1627,"t":"We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.","s":"摘要","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":1624},{"i":1629,"t":"通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证 性能有待提升 上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。","s":"研究背景与动机","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":1624},{"i":1631,"t":"首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程: 输入 raw image,Encoder 得到对应的 feature map。 f=E(im)f=\\mathcal{E}(im)f=E(im) 输入feature map,Quantizer 得到对应的量化 image token。 q=Q(f)q=\\mathcal{Q}(f)q=Q(f) 在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZZ 中的 code。 q(i,j)=(arg⁡min⁡v∈[V]∥lookup(Z,v)−f(i,j)∥2)∈[V]q^{(i,j)}=\\left(\\arg\\min_{v\\in[V]}\\|\\text{lookup}(Z,v)-f^{(i,j)}\\|_2\\right)\\in[V]q(i,j)=(argv∈[V]min​∥lookup(Z,v)−f(i,j)∥2​)∈[V] Decoder 通过接收在 Codebook 中查找得到的 f^\\hat{f}f^​ 生成重构的图像。 f^=lookup⁡(Z,q)\\hat{f}=\\operatorname{lookup}(Z,q)f^​=lookup(Z,q) im^=D(f^)\\hat{im}=\\mathcal{D}(\\hat{f})im^=D(f^​) L=∥im−im^∥2+∥f−f^∥2+λPLP(im^)+λGLG(im^)\\mathcal{L}=\\|im-i\\hat{m}\\|_2+\\|f-\\hat{f}\\|_2+\\lambda_\\text{P}\\mathcal{L}_\\text{P}(i\\hat{m})+\\lambda_\\text{G}\\mathcal{L}_\\text{G}(i\\hat{m})L=∥im−im^∥2​+∥f−f^​∥2​+λP​LP​(im^)+λG​LG​(im^) 下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。 文章发现了目前传统 VAR 模型存在的三个问题。 VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_txt​ 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt−1)(x_1, x_2, ..., x_{t-1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。 作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。 作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。 This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,…,xn×n)x=(x_1,x_2,\\ldots,x_{n\\times n})x=(x1​,x2​,…,xn×n​) 的 token 序列,需要 O(n2)\\mathcal{O}(n^{2})O(n2) 的注意力步骤以及 O(n6)\\mathcal{O}(n^{6})O(n6) 的计算复杂度。","s":"问题发现与提出","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":1624},{"i":1634,"t":"本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction。 自回归过程从分辨率为 1×11\\times11×1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。 通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 f∈Rh×w×Cf \\in \\mathbb{R}^{h \\times w \\times C}f∈Rh×w×C 量化为 KKK 个多尺度标记图 (r1,r2,…,rK)(r_1, r_2, \\ldots, r_K)(r1​,r2​,…,rK​),每个图的分辨率 hk×wkh_k \\times w_khk​×wk​ 逐步增加,最终达到 rKr_KrK​ 与原始特征图的分辨率 h×wh \\times wh×w 匹配。自回归似然性公式为: p(r1,r2,…,rK)=∏k=1Kp(rk∣r1,r2,…,rk−1)p(r_1, r_2, \\ldots, r_K) = \\prod_{k=1}^{K} p(r_k \\mid r_1, r_2, \\ldots, r_{k-1})p(r1​,r2​,…,rK​)=k=1∏K​p(rk​∣r1​,r2​,…,rk−1​) 其中每个自回归单元 rk∈[V]hk×wkr_k \\in [V]^{h_k \\times w_k}rk​∈[V]hk​×wk​ 是包含 hk×wkh_k \\times w_khk​×wk​ 个标记的第 kkk 个尺度的标记图,而序列 (r1,r2,…,rk−1)(r_1, r_2, \\ldots, r_{k-1})(r1​,r2​,…,rk−1​) 作为 rkr_krk​ 的“前缀”。在第 kkk 个自回归步骤中,所有 rkr_krk​ 中的 h_k \\times w_k 标记的分布将并行生成,并以 rkr_krk​ 的前缀和关联的第 kkk 个位置嵌入图为条件。如下图所示。 请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_krk​ 只能关注其前缀 r≤kr_{\\leq k}r≤k​,从而满足 Autoregressive 模型的数学假设前提。 本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。","s":"主要方法","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":1624},{"i":1636,"t":"Multi-scale VQ quantizer​ 首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。 VAR Transformer​ 作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。 在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_kr1​,...,rk​ 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。 单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KKK​。","s":"模型主要结构","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":1624},{"i":1638,"t":"期待更好的 VQVAE tokenizer 可以提升 VAR 模型的能力。 本文只实现了 class-conditional generation,可以继续扩展为多模态任务,text-prompt generation。目前我认为比较常见的一个想法就是结合 T5 text-encoder,将文字 视频生成。可以将视频看作是 3D pyramids,尝试 3D next-scale prediction。 作者表示,与 Diffusion Model-based 的视频生成模型 SORA 相比,由于 VAR 模型在结构与上与 LLMs 更相似,可以更好地与 LLMs 的技术相结合。","s":"局限性与展望","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#局限性与展望","p":1624},{"i":1640,"t":"本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。 对文章开篇提出的问题的解决: 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2n2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\\mathcal{O}(n^2)O(n2) 次解码迭代和 O(n6)\\mathcal{O}(n^6)O(n6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\\mathcal{O}(log(n))O(log(n)) 次迭代和 O(n4)\\mathcal{O}(n^4)O(n4)​ 次总计算量。 文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力。","s":"总结","u":"/en/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":1624},{"i":1643,"t":"dock显示的图标是全局图标,程序启动器的desktop文件位于/usr/share/applications中,全局主题中图标主题的程序logo位于~/.local/share/icons/Mkos-Big-Sur-Night/128x128/apps(deppending on specific situation)中。在logo文件夹中挑选想要的logo,在desktop中的icon位置修改即可 应用更新的时候会同时更新.desktop文件,因此在更换图标是最好直接更换在主题文件中替换icon,而不是更改desktop的icon路径 Finder小组件中application title文字不能垂直居中,可以更换为Window title插件","s":"一、latte-dock","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#一latte-dock","p":1641},{"i":1645,"t":"Finder栏中Plasmoids左半部分从左至右依次为: kpple menu application title/window titile(if the text of application title can't be centered vertically) global menu 右半部分从左至右依次为: resources monitor (fork) mcOS BS Inline Battery 网络 Control Center(replace the icon with search icon) Control Center(replace the icom with menu icon) Better Inline Clock 安装方法: plasmpkg2 -u xxx.plasmoid","s":"二、Kde Plasmoids","u":"/en/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#二kde-plasmoids","p":1641},{"i":1647,"t":"通过编写脚本函数的方式,手动开启代理","s":"终端代理","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"","p":1646},{"i":1649,"t":"新建脚本文件terminal_proxy.sh # 开启代理 function proxy_on(){ export ALL_PROXY=socks5://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export https_proxy=https://127.0.0.1:7890 echo -e \"已开启代理\" } # 关闭代理 function proxy_off(){ unset ALL_PROXY unset http_proxy unset https_proxy echo -e \"已关闭代理\" }","s":"一、编写脚本","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#一编写脚本","p":1646},{"i":1651,"t":"fish的配置文件:~/.config/fish/config.fish zsh的配置文件:~/.zshrc bash的配置文件:~/.bashrc 在配置文件末尾添加以下代码 source /path/terminal_proxy.sh","s":"二、关联终端配置文件","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#二关联终端配置文件","p":1646},{"i":1653,"t":"在终端中输入以下命令即可开启代理 proxy_on 在终端中输入以下命令即可关闭代理 proxy_off","s":"三、使用","u":"/en/docs/Others/Linux/实用工具/终端代理","h":"#三使用","p":1646},{"i":1656,"t":"未知,可能是由Windows休眠模式导致","s":"一、发生原因","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#一发生原因","p":1654},{"i":1658,"t":"使用ntfsfix修复ntfs磁盘 安装ntfsfix yay -S ntfsfix 查看问题分区 df -h 修复 sudo ntfsfix /dev/your_partition 重启 reboot","s":"二、解决方案","u":"/en/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#二解决方案","p":1654},{"i":1661,"t":"树的性质: 一棵 N 个结点的树有 N-1 条边 树的总度数+1=树的结点数 树的度=树中度最大结点的度数 二叉树的性质: 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1 树转化为二叉树: 参考资料:知乎 加线。在所有的兄弟结点之间加一条线。 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子。 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。","s":"树","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":1659},{"i":1663,"t":"图的表示: 邻接矩阵 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性 邻接表的搜索 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。 Kruskal算法 Prim算法 最短路径 ​ ​","s":"图","u":"/en/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":1659},{"i":1665,"t":"tip 参考链接: 线性代数极简入门 《线性代数》高清教学视频 “惊叹号”系列 宋浩老师","s":"线性代数","u":"/en/docs/Tui-Mian/数学/线性代数","h":"","p":1664},{"i":1667,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1","s":"一、基础知识","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":1664},{"i":1669,"t":"线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 tip 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 tip 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"二、面试常考问题","u":"/en/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":1664},{"i":1671,"t":"tip 大数除法是指被除数大小超出long long范围,而导致必须使用字符串存储的除法,属于简单模拟的范畴","s":"大数除法","u":"/en/docs/Tui-Mian/机试/大数除法","h":"","p":1670},{"i":1673,"t":"通过模拟列竖式手动计算除法,实现使用字符串存储被除数的大数除法","s":"思路","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#思路","p":1670},{"i":1675,"t":"string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 }","s":"参考代码","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":1670},{"i":1677,"t":"将大数除法与进制转换相结合。 tip 北京大学机试真题,N诺链接 完整代码如下: #include using namespace std; string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 } int main() { string s; while (cin >> s) { vector vec; int len = s.size(); while (s != \"0\") { int remainder = (s[len - 1] - '0') % 2; vec.push_back(remainder); s = division(s, 2); len = s.size(); } if (vec.empty()) { cout << \"0\"; } else { for (auto it = vec.rbegin(); it != vec.rend(); it++) { cout << *it; } } cout << endl; } return 0; }","s":"扩展","u":"/en/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":1670},{"i":1680,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 tip P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"面试常考问题","u":"/en/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":1678},{"i":1682,"t":"tip 欢迎来到笔记本的推免复习部分","s":"Welcome","u":"/en/docs/Tui-Mian/intro","h":"","p":1681},{"i":1684,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/en/docs/Tui-Mian/intro","h":"#支持我","p":1681},{"i":1687,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1 线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 tip 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 tip 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"一、线性代数","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":1685},{"i":1689,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 tip P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"二、概率论","u":"/en/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":1685},{"i":1692,"t":"自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。 希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。 文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。","s":"前言","u":"/en/docs/Tui-Mian/Summary","h":"#前言","p":1690},{"i":1694,"t":"常见名词 含义解释 928/929 每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。 没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。 优营 优营就是夏令营的优秀营员。 不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。 wl/waiting list wl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。","s":"扫盲","u":"/en/docs/Tui-Mian/Summary","h":"#扫盲","p":1690},{"i":1696,"t":"本科学校:理工类普通一本(四非) 专业:计算机科学与技术CS rank:前1%(非rank 1 or 2的top选手) 英语:四级594 & 六级586 竞赛:非ACMer,一个CV类比赛国一,其他都是更不上台面的奖项了 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金 科研及论文:无正经科研经历,EI水会一篇 从某种程度上来说,本科出身和rank基本上决定了上限。","s":"个人情况","u":"/en/docs/Tui-Mian/Summary","h":"#个人情况","p":1690},{"i":1704,"t":"显著性目标检测Salient Object Detection,相当于语义分割中的二分类任务,只有前景和背景","s":"(一)SOD任务","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":1701},{"i":1706,"t":"下图为U-2-Net的整体结构 tip residual [rɪˈzɪdjuəl] 在encoder阶段,每个block之后使用maxpooling下采样两倍 在decoder阶段,每个block之后使用双线性插值上采样两倍 下图为Residual U-block的结构 tip 卷积是如何改变输出的通道数的? 卷积核的通道数等于输入的通道数,卷积核的个数等于输出的通道数 图片来源知乎 在特征融合阶段,每一层的encoder-decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的feature map通道数也为1。将每一层的feature map进行concat拼接,得到6通道的融合feature map,最后使用1x1卷积以及sigmoid激活函数得到最终的融合特征图输出","s":"(二)网络结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":1701},{"i":1708,"t":"损失函数是7个损失项的加权求和 共有6层encoder-decoder结构,将每一层对应的feature map与ground truth做BCE Loss得到6个损失项 第7个损失项是最终融合得到的feature map与ground truth的BCE Loss 在论文中,每个损失项的权重都为1 canny边缘检测: 使用高斯滤波进行平滑 计算像素梯度 非极大值抑制 双阈值检测强边缘、弱边缘 边缘连接","s":"(三)损失函数","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":1701},{"i":1710,"t":"深度可分离卷积的优点是可以在大致保持卷积效果的情况下减少参数量 在实现原理上可分为两个步骤:深度卷积(depth wise)以及逐点(point wise)卷积 深度卷积是一种在每个输入通道上分别进行卷积操作的卷积方法,每个输入通道只与对应的卷积核进行卷积。 逐点卷积通过使用1×11 \\times 11×1卷积对深度卷积的结果再次卷积","s":"(四)深度可分离卷积","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":1701},{"i":1713,"t":"PR曲线所围成的面积即使该类的AP值","s":"(一)mAP","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":1701},{"i":1715,"t":"tip 参考资料:【精读AI论文】YOLO V1目标检测,看我就够了 1.预测阶段​ 下图为YOLOv1的算法框架 下图为YOLOv1的网络结构 输入[448, 448, 3]图像,输出[7, 7, 30]的tensor(包含所有预测框的坐标、置信度和类别结果),通过解析输出的tensor得到预测结果 首先将输入图片划分为S×SS \\times SS×S个grid cell。在YOLOv1中S=7S=7S=7 每个grid cell预测出BBB个bounding box预测框(bbox),每个bbox的中心点都落在该grid cell中。在YOLOv1中B=2B=2B=2 每个bbox包含(x, y, h, w, c)五种信息,其中x, y为bbox左上角坐标,h, w为bbox的宽高,c为该bbox是否存在object的概率 同时每个grid cell预测出一组与数据集有关的条件类别概率。在YOLOv1论文使用的数据集Pascal VOC中,类别种类为20类,因此在预测阶段输出的[7, 7, 30]的tensor含义如下图所示 每个grid cell选出条件类别概率最大的类别,因此每个grid cell只能检测一个物体 tip 这也是YOLOv1小目标和密集目标识别能力差的原因 每个bbox的置信度与其父grid cell的类别概率相乘得到全概率,如下图所示 进行NMS后处理: 对某一特定类别,首先根据全概率置信度排序 将此时最大置信度的bbox与其他所有置信度更小的bbox做IoU判断,若IoU大于设置的阈值,则抹除置信度小的bbox 将剩余的次大的置信度重复步骤2,抹除所有置信度更小的其IoU超过阈值的bbox tip 非极大值抑制只在预测阶段进行 在训练阶段,所有bbox都会在Loss Function中起到更新的作用,因此不进行NMS 2. 训练过程的损失函数​","s":"(二)YOLOv1","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":1701},{"i":1717,"t":"1. BN层​ 2. 高分辨率训练​ 3. Anchor​ YOLOv2引入了anchor机制代替bbox,将图像划分为13×1313 \\times 1313×13个grid cell,每个grid cell生成5个anchor anchor是通过k-means聚类在数据集上生成的不同尺寸的先验框 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂","s":"(二)YOLOv2","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":1701},{"i":1719,"t":"1. 特征融合​ YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征 主干通过卷积和池化提取特征,形成不同尺寸的特征图 分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征 主干特征图通过卷积对通道数降维之后与分支在通道维度上concat tip 在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合 2. 前处理​ 对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度 3. 特征金字塔FCN​","s":"(三)YOLOv5","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":1701},{"i":1721,"t":"tip 有关CSP特征融合可以参考:https://blog.csdn.net/weixin_55073640/article/details/122614176 CBAM是通道+空间注意力机制(SENet是通道注意力机制)","s":"三、CBAM","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":1701},{"i":1723,"t":"通道注意力:原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘 空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘","s":"(一)总体结构","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":1701},{"i":1725,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图","s":"(二)通道注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":1701},{"i":1727,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,再将二者concat后通过7×77 \\times 77×7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图","s":"(三)空间注意力","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":1701},{"i":1729,"t":"作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \\times 77×7卷积与3×33 \\times 33×3卷积的消融实验发现,7×77 \\times 77×7卷积效果更好) 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好","s":"(四)其他注意事项","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":1701},{"i":1731,"t":"Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。 YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失","s":"四、Focal Loss","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":1701},{"i":1733,"t":"Squeeze and Excitation Squeeze挤压操作就是将[b,c,h,w][b, c, h, w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构 Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数","s":"五、SENet","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":1701},{"i":1735,"t":"自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量、键(Key)向量和值(Value)向量。 通过点积和缩放点积计算相似程度 通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。","s":"六、自注意力机制","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":1701},{"i":1738,"t":"This content has been encrypted.","s":"(一)英文自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":1701},{"i":1740,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(二)西电广研院自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":1701},{"i":1742,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(三)电子科技大学自我介绍","u":"/en/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":1701}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/874",[0,0.555,1,8.582,2,7.272]],["t/876",[0,0.539]],["t/878",[0,0.469,3,3.717]],["t/880",[0,0.533,4,6.808]],["t/882",[0,0.528,3,3.144,5,7.656,6,4.318,7,7.656,8,7.656,9,7.656]],["t/884",[0,0.591,6,3.568,10,2.161,11,2.932,12,1.816,13,2.259,14,2.259,15,4.132,16,2.259,17,2.44,18,3.656,19,3.755,20,4.342,21,5.109,22,4.768,23,5.109,24,3.656,25,3.656,26,2.353,27,3.656,28,6.86,29,6.528,30,5.668,31,3.656,32,2.117]],["t/886",[0,0.416,6,3.26,33,8.027,34,8.027,35,8.027,36,8.027,37,8.027,38,8.027,39,8.027]],["t/888",[3,3.717,40,9.051]],["t/890",[0,0.591,6,3.268,10,2.827,11,3.835,12,2.375,13,2.955,14,2.955,15,3.996,16,2.955,32,2.77,41,3.662,42,4.782,43,5.2,44,3.835,45,6.046,46,4.569,47,3.395,48,3.518]],["t/892",[0,0.592,6,3.454,15,3.668,26,1.815,43,5.028,45,5.076,46,5.227,49,5.291,50,2.846,51,7.206,52,3.531,53,4.483]],["t/894",[2,5.404,54,4.142,55,3.853,56,5.404,57,6.378,58,5.791,59,6.378,60,6.378,61,8.497,62,6.378,63,6.721,64,6.378,65,5.791,66,4.257,67,3.491,68,5.791,69,6.378,70,5.791,71,5.791,72,5.791,73,6.378,74,5.404]],["t/896",[0,0.591,17,5.079,19,3.025,47,5.403,55,4.597,75,5.526,76,5.526,77,4.233,78,5.526,79,4.233,80,4.433,81,4.433,82,4.433,83,5.018,84,4.683,85,5.526,86,5.526,87,5.526]],["t/898",[0,0.578,88,7.06,89,7.776,90,7.776,91,7.776,92,7.776]],["t/900",[0,0.589,47,4.774,48,4.947,77,5.149,79,5.149,80,5.392,93,5.962,94,6.723,95,5.392,96,6.723]],["t/902",[0,0.584,77,5.605,79,5.605,81,5.869,82,5.869,97,7.317,98,7.317,99,7.317]],["t/904",[0,0.578,26,2.371,43,4.086,100,6.91,101,6.91,102,6.91,103,6.91,104,6.91,105,3.12,106,6.91,107,6.91,108,4.751]],["t/906",[50,4.462,52,5.536,109,7.532,110,6.353,111,8.295,112,7.532,113,7.532]],["t/908",[77,6.249,79,6.249,80,6.544,81,6.544,82,6.544,83,7.408,84,6.913,114,8.159]],["t/910",[0,0.581,30,4.357,43,4.716,50,3.185,52,3.952,66,3.952,105,2.674,110,4.536,115,5.018,116,5.922,117,5.377,118,5.922,119,5.922,120,5.018,121,5.922,122,5.922,123,5.922,124,5.377,125,5.377]],["t/912",[0,0.514,10,4.264,67,3.947,70,6.548,71,6.548,72,6.548,126,5.12,127,7.211,128,7.211,129,3.814,130,7.211,131,7.211,132,7.211,133,7.211]],["t/914",[0,0.594,6,3.266,26,2.758,50,3.224,134,4.59,135,5.993,136,5.078,137,4.41,138,5.993,139,5.993,140,5.993,141,5.993,142,5.993]],["t/916",[2,7.532,54,5.772,143,8.889]],["t/918",[0,0.597,20,2.559,144,9.595,145,4.872,146,4.042,147,4.042,148,6.074,149,6.074,150,6.074,151,6.074,152,4.054,153,2.07,154,5.369,155,6.074,156,4.042,157,4.042]],["t/921",[0,0.598,158,5.589,159,5.589,160,5.589,161,5.589,162,5.589,163,5.589,164,5.589,165,5.589,166,5.589,167,5.589,168,5.589,169,5.589,170,5.589,171,5.589,172,5.589,173,5.589]],["t/923",[0,0.594,12,2.873,13,3.574,14,3.574,55,3.494,65,5.252,66,3.86,67,3.166,74,4.901,93,3.976,174,5.252,175,4.901,176,4.639,177,3.86,178,4.639,179,5.784,180,5.784]],["t/925",[12,3.481,13,4.331,14,4.331,181,7.008,182,7.008,183,7.008,184,7.008,185,7.008,186,7.008,187,7.008,188,7.008,189,7.008,190,5.621,191,7.008,192,7.008,193,7.008,194,7.008,195,7.008]],["t/927",[0,0.559,15,3.44,26,2.076,43,3.578,45,4.161,46,1.711,88,2.735,196,6.422,197,3.013,198,3.013,199,3.013,200,3.013,201,3.013,202,3.013,203,2.217,204,3.013,205,3.013,206,3.013,207,3.013,208,3.013,209,2.416,210,3.013,211,5.554,212,5.096,213,4.833,214,2.735,215,3.013,216,3.013,217,3.013,218,3.013,219,3.013,220,3.013,221,2.416,222,2.735,223,2.735,224,6.037,225,3.013,226,3.013,227,3.013,228,3.013,229,3.013,230,3.013,231,1.907,232,3.013,233,2.735,234,3.013,235,2.735,236,2.553,237,2.217,238,3.013,239,3.013,240,3.013,241,3.013,242,3.013,243,3.013,244,3.013]],["t/930",[0,0.488,15,3.803,245,5.11,246,6.951,247,5.263,248,6.951,249,7.656,250,5.864,251,7.656,252,6.951,253,7.656]],["t/932",[0,0.585,15,3.031,17,2.035,32,1.767,46,2.772,153,1.562,245,5.091,246,5.54,247,2.097,254,4.673,255,3.05,256,3.05,257,3.05,258,3.05,259,3.05,260,3.05,261,3.05,262,2.336,263,3.05,264,3.05,265,3.05,266,3.05,267,3.05,268,3.05,269,3.355,270,5.909,271,2.769,272,2.584,273,2.446,274,2.769,275,2.584,276,2.584,277,2.769,278,6.464,279,2.584,280,2.584,281,4.673,282,4.135,283,2.584,284,1.64,285,2.584,286,2.584,287,2.584,288,2.769,289,2.769,290,2.769,291,2.584,292,2.584,293,2.584,294,2.244,295,2.769,296,2.336]],["t/934",[0,0.385,224,5.273,269,5.106,281,5.688,297,7.427,298,7.427,299,4.701,300,8.063,301,7.427,302,7.427,303,7.427,304,7.427]],["t/937",[0,0.526,15,4.768,19,3.68,43,3.975,46,3.819,250,5.149,252,7.874,305,6.816,306,6.723,307,4.774,308,6.723,309,6.723,310,6.723]],["t/939",[0,0.559,15,4.799,129,3.604,224,4.839,305,4.839,311,8.748,312,6.815,313,6.815,314,6.815,315,6.815,316,6.815,317,6.815]],["t/941",[0,0.572,6,2.847,15,4.424,231,4.436,305,6.323,318,7.008,319,7.008,320,7.008,321,7.008,322,7.008]],["t/943",[0,0.461,323,8.889,324,8.889]],["t/945",[0,0.57,26,1.64,30,3.518,105,2.159,129,2.529,153,2.449,178,3.835,325,6.24,326,4.782,327,4.782,328,4.782,329,4.782,330,4.782,331,4.782,332,4.782,333,6.872,334,4.782,335,4.782,336,4.782,337,4.782,338,4.782,339,4.782,340,4.782,341,4.782,342,4.782,343,8.795,344,4.782,345,4.782,346,4.782,347,4.782,348,4.782,349,4.782,350,4.782]],["t/947",[0,0.603,10,1.148,136,1.645,175,1.645,284,2.828,351,1.941,352,1.941,353,1.941,354,1.941,355,1.941,356,1.941,357,1.941,358,1.487,359,1.941,360,1.941,361,1.941,362,1.941,363,1.941,364,1.941,365,1.941,366,1.941,367,1.941,368,1.763,369,1.941,370,1.941,371,1.645,372,1.941,373,1.941,374,1.941,375,1.941,376,1.941,377,0.888,378,1.941,379,1.941,380,1.941,381,1.941,382,1.941,383,1.645,384,1.941,385,1.941,386,1.941,387,1.763,388,1.941,389,1.941,390,1.941,391,1.763,392,1.941,393,1.941,394,1.941,395,1.941,396,1.763,397,1.941,398,0.937,399,3.35,400,1.941,401,1.941,402,1.941,403,1.763,404,1.941,405,1.941,406,1.941,407,1.941,408,1.941,409,1.941,410,1.941,411,1.941,412,1.941,413,1.941,414,1.941,415,1.941,416,1.941,417,1.941,418,1.941,419,1.941,420,1.941,421,1.941,422,1.941,423,1.941,424,1.941,425,1.941,426,1.941,427,1.941,428,1.941,429,1.941,430,1.941,431,1.941,432,1.941,433,1.941,434,1.763,435,1.941,436,1.941,437,1.941,438,1.941,439,1.941]],["t/949",[0,0.592,6,1.72,10,2.504,12,1.273,13,1.583,14,1.583,15,2.69,16,1.583,17,4.198,26,0.879,32,1.484,43,3.201,47,3.007,48,1.885,50,1.378,52,1.71,53,2.171,55,4.796,110,1.962,120,2.171,247,1.761,284,2.912,440,2.562,441,2.562,442,2.562,443,2.562,444,2.562,445,7.209,446,2.562,447,2.562,448,2.562,449,2.562,450,2.562,451,2.326,452,2.171,453,5.414,454,4.916,455,2.326,456,2.326,457,4.916,458,2.326,459,2.562,460,2.562,461,2.562,462,4.235,463,2.326,464,2.562,465,2.562,466,2.562,467,2.562,468,2.562,469,2.171,470,1.962,471,2.562,472,2.562,473,2.562,474,2.562]],["t/951",[0,0.583,43,3.235,77,2.701,79,2.701,80,2.828,81,2.828,82,2.828,84,2.988,177,4.475,247,2.424,284,2.943,445,6.862,454,6.862,455,3.201,456,3.201,457,4.968,458,3.201,463,3.201,475,3.526,476,5.472,477,3.526,478,2.828,479,3.526,480,3.526,481,3.526,482,3.526,483,3.526,484,3.526,485,3.526,486,3.526,487,5.472,488,3.526,489,3.526,490,3.526,491,3.526,492,6.705,493,3.526,494,3.526,495,3.526,496,3.526,497,3.526,498,3.526,499,3.526,500,3.526,501,3.526]],["t/953",[0,0.584,50,1.832,58,3.092,93,7.086,153,3.798,250,2.608,371,2.885,387,3.092,396,3.092,502,3.405,503,3.405,504,3.405,505,3.405,506,3.405,507,3.405,508,3.405,509,3.405,510,3.405,511,3.405,512,3.405,513,3.405,514,3.405,515,3.405,516,3.405,517,3.405,518,3.405,519,3.405,520,3.405,521,3.092,522,3.405,523,3.405,524,3.405,525,2.885,526,3.405,527,3.405,528,3.405,529,3.405,530,3.405,531,3.405,532,3.405,533,3.405,534,5.325,535,2.273,536,3.405,537,3.405,538,3.405]],["t/955",[0,0.479,231,4.701,248,6.743,539,7.427,540,7.427,541,6.293,542,7.427,543,5.957,544,7.427,545,7.427,546,7.427,547,7.427,548,7.427]],["t/957",[0,0.593,15,3.235,67,4.951,478,3.561,549,4.44,550,5.518,551,4.44,552,4.44,553,4.44,554,6.512,555,6.512,556,5.223,557,4.44,558,4.44,559,4.44,560,4.44,561,4.44,562,4.44,563,4.44,564,4.44,565,4.44,566,4.44,567,4.44,568,4.44,569,4.44]],["t/959",[0,0.576,50,3.475,52,4.312,109,5.866,110,4.948,112,5.866,113,5.866,176,7.553,294,4.754,570,6.461,571,6.461,572,6.461,573,5.475,574,6.461]],["t/961",[0,0.586,108,4.275,178,7.413,575,6.218,576,6.218,577,4.987,578,6.218,579,6.218,580,6.218,581,4.987,582,6.218,583,6.218,584,6.218,585,6.218]],["t/963",[0,0.602,50,2.267,52,2.812,66,4.992,110,3.227,115,3.571,120,3.571,124,3.826,125,3.826,294,3.101,451,3.826,452,3.571,573,3.571,586,4.214,587,4.214,588,4.214,589,4.214,590,4.214,591,4.214,592,4.214,593,4.214,594,4.214,595,4.214,596,4.214,597,4.214,598,4.214,599,4.214]],["t/965",[50,4.388,66,5.445,68,7.408,117,7.408,573,6.913,600,8.159,601,8.159,602,8.159]],["t/967",[0,0.598,6,1.957,15,1.083,26,2.659,50,1.172,74,3.135,212,1.604,214,1.979,221,1.748,224,1.548,233,4.375,284,1.99,603,2.18,604,6.359,605,3.699,606,2.18,607,6.359,608,9.61,609,2.18,610,2.18,611,1.604,612,2.18,613,2.18,614,3.05,615,2.18,616,2.18,617,4.819,618,2.18,619,2.18,620,2.18,621,2.18,622,6.911,623,2.18,624,2.18,625,2.18,626,2.18,627,2.18,628,2.18,629,2.18,630,2.18,631,2.18,632,2.18,633,2.18,634,2.18,635,2.18,636,2.18,637,2.18,638,2.18,639,2.18,640,3.359]],["t/970",[0,0.586,6,2.567,10,1.902,12,0.646,13,0.804,14,0.804,15,3.14,16,0.804,17,3.708,19,1.761,23,1.181,26,1.747,32,2.642,47,4.715,48,2.367,55,0.786,61,1.181,66,0.868,105,1.061,115,1.992,129,1.701,145,2.58,196,0.845,203,2.901,237,1.73,245,1.569,250,0.996,269,1.616,270,3.341,272,1.102,273,3.163,275,1.102,276,1.102,278,3.864,279,1.102,280,1.102,281,3.02,282,2.726,283,1.102,284,0.7,285,1.102,286,1.102,287,1.102,291,1.102,292,3.341,293,3.864,294,1.73,295,1.181,296,3.02,469,1.102,543,1.043,614,1.488,641,1.181,642,1.301,643,1.181,644,1.181,645,2.135,646,1.181,647,1.102,648,3.217,649,2.351,650,1.992,651,3.943,652,2.351,653,2.351,654,2.351,655,1.301,656,1.301,657,1.301,658,2.351,659,2.351,660,2.351,661,2.351,662,2.351,663,1.301,664,2.351,665,1.301,666,3.58,667,2.351,668,1.301,669,1.301,670,1.301,671,2.351,672,1.301,673,2.351,674,3.238,675,2.351,676,1.616,677,2.351,678,1.301,679,1.301,680,1.301,681,1.301,682,1.301,683,1.301,684,3.217,685,1.301,686,1.301,687,2.351,688,1.301,689,1.301,690,1.301,691,1.301,692,1.301,693,2.351]],["t/972",[0,0.571,6,0.748,10,2.998,12,0.914,13,1.137,14,1.137,15,4.011,16,1.137,17,2.135,19,2.322,26,1.097,32,4.35,55,1.112,108,1.265,174,1.671,178,1.476,196,1.195,203,2.354,245,2.135,269,2.199,270,4.296,271,1.671,272,1.56,273,1.476,274,1.671,275,1.56,276,1.56,277,1.671,278,4.865,279,1.56,280,1.56,281,4.823,282,3.595,283,1.56,284,2.282,285,1.56,286,1.56,287,1.56,288,1.671,289,1.671,290,1.671,291,1.56,292,1.56,293,2.711,294,2.354,296,2.45,469,1.56,577,1.476,581,1.476,641,1.671,643,1.671,644,1.671,645,2.905,646,1.671,650,1.56,694,1.841,695,1.841,696,3.199,697,3.199,698,1.841,699,1.841,700,1.354,701,2.905,702,1.841,703,1.841,704,1.841,705,1.841,706,1.841,707,1.841,708,1.841,709,1.841,710,1.841,711,1.841,712,1.841,713,1.841,714,1.841,715,1.841,716,1.841,717,1.841,718,1.841,719,1.841,720,1.841,721,1.841,722,1.841,723,1.841,724,1.841,725,1.841,726,1.841,727,1.841,728,1.476,729,1.841,730,1.841,731,1.56,732,1.841,733,1.841,734,1.841,735,1.841,736,1.841,737,1.841,738,1.841,739,1.841,740,1.841,741,1.841,742,1.841,743,1.841,744,1.841,745,1.841,746,1.841,747,1.841,748,1.841,749,1.841,750,1.841,751,3.199,752,1.841]],["t/974",[0,0.574,6,1.834,15,3.787,16,0.672,19,1.879,20,2.537,21,1.813,22,0.921,26,1.375,32,3.104,105,0.491,108,2.36,145,1.601,152,0.726,153,1.023,154,2.525,196,4.109,231,3.617,245,2.291,250,2.629,269,3.103,281,0.833,284,1.074,294,0.8,296,0.833,299,1.264,307,0.772,535,0.726,650,2.346,676,0.747,700,1.469,753,1.087,754,1.087,755,1.087,756,1.601,757,2.769,758,3.116,759,1.087,760,1.087,761,2.769,762,1.087,763,3.432,764,1.997,765,1.087,766,1.087,767,1.087,768,1.087,769,0.921,770,1.087,771,1.087,772,1.997,773,4.961,774,1.997,775,0.872,776,2.277,777,1.997,778,1.087,779,1.087,780,1.997,781,1.087,782,1.087,783,1.087,784,1.997,785,1.087,786,1.087,787,6.591,788,2.769,789,2.769,790,4.514,791,1.087,792,1.087,793,1.087,794,1.087,795,1.087,796,1.087,797,1.087,798,1.087,799,1.087,800,1.087,801,1.087,802,1.087,803,1.087,804,1.087,805,1.997,806,2.769,807,2.769,808,1.997,809,1.087,810,2.769,811,1.529,812,1.087,813,1.997,814,1.087,815,1.087,816,1.087,817,1.087,818,1.087,819,1.087,820,2.769,821,1.087,822,1.997,823,1.469,824,1.087,825,1.087,826,1.087,827,1.997,828,1.087,829,1.087,830,1.087,831,1.087,832,1.087,833,1.087,834,1.087,835,1.087,836,1.087,837,0.987,838,1.087,839,1.087,840,1.087,841,1.087,842,1.087,843,1.087,844,1.087,845,1.087,846,1.997,847,1.087,848,1.087,849,1.087,850,1.087,851,1.087,852,1.087,853,1.087,854,1.087,855,1.087,856,1.087,857,1.087,858,1.087,859,1.087,860,1.087,861,1.087,862,1.087,863,1.087,864,1.997,865,1.087,866,1.087,867,1.997,868,1.997,869,1.087,870,1.087,871,1.087,872,1.087,873,1.087,874,1.087,875,1.087,876,1.087,877,1.087,878,1.087,879,1.087]],["t/977",[0,0.588,6,1.899,12,0.815,13,1.014,14,1.014,15,4.398,16,1.014,17,1.095,26,1.604,32,4.301,108,1.128,190,1.315,196,1.065,203,3.441,209,1.315,211,1.315,212,2.128,224,1.164,245,1.095,247,1.128,269,1.128,284,0.882,300,1.315,577,1.315,581,1.315,647,1.39,700,3.441,728,3.111,731,1.39,823,1.207,880,1.39,881,1.39,882,1.489,883,1.489,884,1.489,885,1.39,886,1.489,887,2.626,888,2.626,889,2.626,890,2.626,891,2.892,892,2.892,893,1.64,894,5.73,895,2.626,896,1.489,897,2.626,898,2.626,899,2.45,900,2.45,901,2.626,902,1.489,903,1.489,904,1.489,905,1.489,906,1.489,907,1.489,908,1.489,909,1.489,910,1.489,911,4.246,912,1.489,913,1.489,914,1.489,915,1.489,916,1.489,917,1.489,918,1.489,919,1.489,920,1.489,921,1.489,922,1.489,923,1.489,924,1.489,925,3.521,926,3.521,927,1.489,928,1.489,929,1.489,930,1.489,931,1.489,932,1.39,933,1.39,934,1.39,935,1.489,936,1.489,937,1.489,938,1.489,939,1.489,940,1.489,941,2.45,942,1.489,943,1.489,944,1.489,945,3.286,946,1.39,947,1.489]],["t/979",[0,0.537,6,2.249,12,1.042,13,1.296,14,1.296,15,4.725,16,1.296,17,1.4,26,1.899,32,4.772,108,1.442,190,1.682,196,1.362,203,4.073,209,1.682,211,1.682,212,2.634,224,1.489,245,1.4,247,1.442,269,1.442,284,1.128,300,1.682,577,1.682,581,1.682,647,1.777,700,4.073,728,3.756,731,1.777,823,1.543,880,1.777,881,1.777,882,1.904,883,1.904,884,1.904,885,1.777,886,1.904,887,3.25,888,3.25,889,3.25,890,3.25,894,6.126,895,3.25,896,1.904,897,3.25,898,3.25,899,3.033,900,3.033,901,3.25,902,1.904,903,1.904,904,1.904,905,1.904,906,1.904,907,1.904,908,1.904,909,1.904,910,1.904,911,5.026,912,1.904,913,1.904,914,1.904,915,1.904,916,1.904,917,1.904,918,1.904,919,1.904,920,1.904,921,1.904,922,1.904,923,1.904,924,1.904,925,4.252,926,4.252,927,1.904,928,1.904,929,1.904,930,1.904,931,1.904,932,1.777,933,1.777,934,1.777,935,1.904,936,1.904,937,1.904,938,1.904,939,1.904,940,1.904,941,3.033,942,1.904,943,1.904,944,1.904,946,1.777,947,1.904]],["t/981",[0,0.485,6,1.328,12,1.625,13,2.021,14,2.021,15,4.764,16,2.021,26,2.192,32,4.202,190,2.623,196,4.711,203,3.796,209,2.623,211,2.623,212,3.796,222,2.97,223,2.97,224,2.322,235,2.97,245,2.183,269,2.248,284,1.759,300,2.623,611,3.796,700,2.407,728,4.138,880,2.771,881,2.771,885,2.771,894,4.372,899,2.771,900,2.771,932,2.771,933,2.771,934,2.771,941,2.771,946,2.771,948,3.271,949,3.271,950,3.271,951,3.271,952,3.271,953,3.271,954,3.271,955,3.271,956,3.271,957,3.271,958,3.271,959,3.271,960,3.271,961,2.771,962,3.271,963,3.271,964,3.271,965,3.271,966,3.271,967,3.271,968,3.271,969,3.271,970,3.271,971,3.271,972,3.271,973,3.271,974,3.271,975,3.271,976,3.271,977,3.271,978,3.271,979,3.271]],["t/983",[3,3.351,26,2.799,980,8.159,981,9.782,982,8.159,983,8.159,984,8.159]],["t/985",[0,0.589,6,3.757,10,2.227,11,3.021,12,1.871,13,2.328,14,2.328,15,3.887,16,2.328,26,2.397,32,2.182,46,2.139,47,4.088,48,4.236,50,3.097,52,2.514,53,3.192,93,2.589,452,4.878,543,3.021,985,6.988,986,6.345,987,3.767,988,7.655,989,3.767,990,3.767,991,3.767]],["t/987",[0,0.551,153,3.921,325,6.951,992,7.656,993,9.411,994,7.656,995,7.656,996,7.656]],["t/991",[0,0.557,997,6.723,998,6.104,999,6.723,1000,7.201,1001,6.723,1002,6.723,1003,6.723,1004,6.723,1005,6.104,1006,6.723,1007,4.774,1008,6.104]],["t/993",[1000,6.2,1009,8.732,1010,8.732,1011,8.732]],["t/995",[0,0.528,1000,5.436,1005,6.951,1007,5.436,1008,6.951,1012,7.656,1013,6.951,1014,7.656,1015,7.656,1016,7.656]],["t/997",[0,0.539]],["t/999",[0,0.545,50,3.995,1000,6.558,1017,5.688,1018,7.826,1019,9.236,1020,7.427,1021,6.743]],["t/1001",[0,0.569,6,0.795,12,2.208,134,1.499,153,2.707,176,1.569,307,1.389,377,0.895,478,1.569,541,1.658,758,1.777,986,1.777,998,1.777,1000,4.628,1007,1.389,1013,1.777,1017,2.583,1018,4.479,1022,3.062,1023,1.957,1024,1.957,1025,1.957,1026,3.373,1027,1.957,1028,1.777,1029,1.957,1030,1.957,1031,1.957,1032,3.373,1033,5.286,1034,1.957,1035,1.957,1036,3.373,1037,4.799,1038,5.286,1039,3.373,1040,1.957,1041,1.957,1042,1.389,1043,1.957,1044,1.957,1045,3.373,1046,3.373,1047,1.957,1048,1.957,1049,3.373,1050,1.957,1051,3.062,1052,1.658,1053,1.957,1054,1.957,1055,1.658,1056,1.957,1057,1.957,1058,1.957,1059,1.957,1060,1.957,1061,1.569,1062,1.777,1063,1.957,1064,1.957,1065,1.957,1066,1.957,1067,1.957,1068,1.957,1069,1.957,1070,1.44,1071,1.957,1072,3.373,1073,3.373,1074,3.373,1075,1.957,1076,1.957,1077,1.957,1078,1.777,1079,1.569,1080,1.569,1081,1.777,1082,1.777,1083,1.777,1084,1.777,1085,1.777,1086,3.062,1087,1.777,1088,1.777,1089,1.777,1090,1.777,1091,3.062,1092,1.777,1093,3.062,1094,1.777,1095,1.777,1096,3.062,1097,1.777,1098,1.777,1099,1.777,1100,1.777,1101,1.777,1102,4.036,1103,1.777,1104,1.777,1105,1.777,1106,1.777,1107,4.036,1108,1.777,1109,1.569,1110,1.777,1111,1.306,1112,1.658,1113,1.658,1114,1.777,1115,1.957]],["t/1003",[0,0.469,3,3.717]],["t/1005",[0,0.533,4,6.808]],["t/1007",[6,3.676,1116,9.051]],["t/1009",[0,0.579,10,4.591,12,0.831,15,1.462,16,1.034,136,1.418,144,2.672,152,1.117,153,2.767,245,1.964,284,2.551,299,1.059,371,1.418,550,1.418,700,2.899,701,1.519,988,1.519,1000,2.09,1017,1.282,1022,2.672,1113,3.338,1117,1.673,1118,1.673,1119,2.943,1120,2.943,1121,2.943,1122,2.943,1123,6.832,1124,2.943,1125,2.943,1126,2.943,1127,2.943,1128,2.943,1129,4.743,1130,2.943,1131,2.943,1132,2.943,1133,2.943,1134,2.943,1135,2.943,1136,2.943,1137,2.943,1138,2.943,1139,5.958,1140,2.943,1141,1.911,1142,2.943,1143,2.943,1144,3.94,1145,1.673,1146,1.673,1147,1.673,1148,1.673,1149,1.673,1150,1.673,1151,1.673,1152,1.673,1153,1.673,1154,1.673,1155,1.673,1156,1.673,1157,1.673,1158,1.673,1159,1.342,1160,1.673,1161,1.673,1162,1.673,1163,1.673,1164,1.673,1165,1.673,1166,1.673,1167,1.673,1168,1.673,1169,1.673,1170,1.673,1171,1.673,1172,1.673,1173,1.673,1174,1.673,1175,1.673,1176,1.673,1177,1.282,1178,1.673,1179,1.673,1180,1.673,1181,1.673,1182,1.342,1183,1.673,1184,1.673,1185,1.673,1186,1.673,1187,1.673,1188,1.673,1189,1.673,1190,1.673,1191,1.673,1192,1.673,1193,1.673,1194,1.673,1195,1.673,1196,2.943,1197,1.673,1198,1.673,1199,1.673,1200,1.673,1201,1.673,1202,1.519,1203,1.673,1204,1.673,1205,1.519,1206,1.673]],["t/1011",[0,0.555,12,1.871,134,2.885,153,1.929,541,3.192,676,2.589,1000,2.674,1007,4.088,1017,2.885,1018,6.63,1051,3.42,1078,3.42,1079,3.021,1080,3.021,1081,3.42,1082,3.42,1083,3.42,1084,3.42,1085,3.42,1086,5.227,1087,3.42,1088,3.42,1089,3.42,1090,3.42,1091,5.227,1092,3.42,1093,5.227,1094,3.42,1095,3.42,1096,5.227,1097,3.42,1098,3.42,1099,3.42,1100,3.42,1101,3.42,1102,6.345,1103,3.42,1104,3.42,1105,3.42,1106,3.42,1107,6.345,1108,3.42,1109,3.021,1110,3.42,1111,2.514,1112,3.192,1113,3.192,1114,3.42,1207,3.767,1208,3.192,1209,3.767,1210,3.767]],["t/1013",[3,3.651,1211,8.889,1212,3.822]],["t/1015",[0,0.413,391,5.377,1182,4.75,1212,2.546,1213,7.976,1214,5.922,1215,5.922,1216,4.75,1217,4.75,1218,5.377,1219,5.377,1220,3.66,1221,5.922,1222,5.922,1223,5.922,1224,5.018,1225,5.018,1226,3.033,1227,5.018,1228,5.922,1229,5.922,1230,5.922,1231,5.922,1232,5.922,1233,5.922,1234,2.986,1235,4.75,1236,5.922,1237,5.922]],["t/1017",[0,0.374,1216,5.784,1217,5.784,1238,7.211,1239,7.211,1240,7.211,1241,7.211,1242,7.211,1243,7.211,1244,7.211,1245,7.211,1246,7.211,1247,7.211,1248,7.211,1249,7.211,1250,7.211]],["t/1019",[0,0.379,1251,4.326,1252,7.317,1253,7.317,1254,7.317,1255,7.317,1256,7.317,1257,7.317,1258,6.2,1259,7.317,1260,7.317,1261,7.317,1262,7.317,1263,7.317,1264,7.317]],["t/1023",[0,0.593]],["t/1025",[0,0.576]],["t/1027",[0,0.478]],["t/1030",[50,4.182,1265,8.627,1266,7.776,1267,6.589,1268,7.776,1269,6.589,1270,7.06,1271,7.06,1272,7.776,1273,7.776]],["t/1032",[50,4.318,1267,6.802,1269,6.802,1274,8.027,1275,7.288,1276,7.769,1277,8.027,1278,8.027]],["t/1034",[0,0.488,6,2.624,26,2.216,1159,5.182,1265,5.866,1267,5.475,1269,5.475,1270,5.866,1271,7.673,1275,5.866,1276,5.182,1279,6.461,1280,6.461,1281,8.451,1282,6.461,1283,3.993,1284,6.461,1285,6.461,1286,6.461,1287,6.461]],["t/1036",[0,0.478]],["t/1040",[0,0.553,3,3.892,26,2.246,1288,9.115,1289,6.546,1290,6.546,1291,6.546,1292,6.546,1293,6.546,1294,6.546,1295,6.546,1296,6.546,1297,6.546]],["t/1044",[0,0.533,1298,8.889]],["t/1047",[0,0.507,3,3.351,1299,9.512,1300,8.159,1301,8.159]],["t/1049",[3,3.717,1302,9.051]],["t/1052",[0,0.469,3,3.717]],["t/1054",[1303,8.809]],["t/1056",[0,0.589,1304,9.686]],["t/1059",[0,0.559,3,3.586]],["t/1061",[0,0.559,1305,7.929]],["t/1064",[0,0.576]],["t/1066",[0,0.565,614,3.936,1288,8.934,1306,6.218,1307,6.218,1308,5.646,1309,6.218,1310,6.218,1311,5.646,1312,6.218,1313,6.218,1314,5.646,1315,6.218,1316,6.218,1317,6.218,1318,6.218,1319,6.218]],["t/1069",[0,0.589]],["t/1071",[0,0.563,3,3.097,1308,8.465,1311,8.465,1314,6.846,1320,7.54,1321,7.54]],["t/1073",[0,0.578,50,4.462,470,6.353]],["t/1075",[0,0.576,50,5.261,470,6.249]],["t/1077",[0,0.576]],["t/1079",[3,2.761,1322,6.723,1323,6.104,1324,6.723,1325,8.672,1326,6.723,1327,6.723,1328,6.723,1329,6.104,1330,6.723,1331,5.697,1332,6.723,1333,6.723,1334,6.723,1335,6.723,1336,6.723,1337,6.723,1338,6.723,1339,6.723,1340,6.723]],["t/1082",[0,0.566,1341,9.411,1342,7.656,1343,7.656,1344,7.656,1345,7.656,1346,7.656]],["t/1084",[0,0.568,43,4.954,45,5.761,1347,6.378,1348,6.378,1349,6.378,1350,6.378,1351,6.378,1352,6.378,1353,6.378,1354,6.378,1355,6.378,1356,6.378,1357,6.378,1358,6.378,1359,6.378]],["t/1086",[1360,7.659,1361,8.436,1362,8.436,1363,8.436,1364,8.436,1365,8.436]],["t/1090",[0,0.581,54,3.047,1366,4.691,1367,3.331,1368,4.691,1369,4.691,1370,7.959,1371,4.691,1372,4.691,1373,4.691,1374,4.691,1375,4.691,1376,6.778,1377,4.691,1378,4.691,1379,4.691,1380,4.691,1381,4.691,1382,4.691,1383,4.691,1384,4.691,1385,4.691,1386,4.691,1387,4.691,1388,4.691,1389,4.691,1390,4.691,1391,4.691,1392,4.691,1393,4.691,1394,4.691,1395,4.691,1396,4.691]],["t/1093",[0,0.593]],["t/1095",[0,0.533,1397,8.889]],["t/1097",[0,0.533,1398,8.889]],["t/1100",[0,0.603,3,3.05]],["t/1102",[0,0.594,470,4.885,1399,7.1,1400,6.378,1401,8.379,1402,6.378,1403,6.378,1404,5.404,1405,6.378,1406,6.378]],["t/1104",[0,0.596,26,3.784,54,3.473,105,4.542]],["t/1106",[0,0.539]],["t/1108",[0,0.512,3,2.295,1407,7.668,1408,4.736,1409,5.589,1410,5.589,1411,5.589,1412,5.589,1413,5.589,1414,5.074,1415,5.589,1416,5.589,1417,5.589,1418,5.589,1419,5.589,1420,5.589,1421,5.589,1422,5.589,1423,5.589,1424,5.589,1425,5.589,1426,5.589,1427,5.589,1428,5.589,1429,5.589,1430,5.074,1431,5.074,1432,5.589,1433,4.736,1434,5.589,1435,5.589]],["t/1110",[0,0.52,1414,5.944,1430,5.944,1431,5.944,1433,5.547,1436,6.546,1437,6.546,1438,6.546,1439,6.546,1440,6.546,1441,6.546,1442,6.546,1443,6.546,1444,6.546,1445,6.546,1446,6.546,1447,6.546,1448,6.546,1449,6.546,1450,6.546]],["t/1112",[0,0.565,1433,7.614,1451,7.108,1452,7.108,1453,7.108,1454,7.108,1455,7.108,1456,7.108,1457,7.108,1458,7.108,1459,7.108]],["t/1115",[19,5.046]],["t/1119",[0,0.604]],["t/1121",[0,0.559,1460,8.732]],["t/1124",[0,0.517,1461,8.436,1462,8.436,1463,8.436,1464,8.436]],["t/1126",[0,0.589]],["t/1128",[0,0.599,1465,6.633,1466,6.633,1467,6.633,1468,6.023,1469,6.633,1470,5.621,1471,6.023]],["t/1130",[0,0.61,19,3.203,1468,7.184]],["t/1132",[0,0.453,1472,8.732,1473,6.688,1474,8.732]],["t/1135",[1283,5.593,1475,9.051]],["t/1137",[0,0.478]],["t/1139",[0,0.604,1476,6.38]],["t/1141",[0,0.416,377,3.671,1283,4.961,1473,6.148,1476,5.699,1477,7.288,1478,8.027,1479,5.357,1480,6.802]],["t/1143",[0,0.525,377,4.968,1367,5.353,1481,4.896,1482,9.323,1483,7.54]],["t/1145",[0,0.555,1480,7.272,1481,5.573]],["t/1147",[0,0.555,1484,6.633,1485,6.633,1486,6.633,1487,6.633,1488,6.633,1489,6.633,1490,8.597,1491,6.633,1492,6.633,1493,6.633,1494,6.633,1495,6.633,1496,6.633,1497,6.633,1498,6.633]],["t/1150",[1499,9.219]],["t/1152",[398,3.938,1212,3.508,1227,6.913,1500,8.159,1501,8.159,1502,8.159,1503,8.159,1504,5.298]],["t/1154",[1505,9.219]],["t/1156",[54,5.213,1218,7.288,1219,7.288,1220,4.961,1251,4.746,1506,8.027,1507,8.027,1508,8.027,1509,8.027]],["t/1158",[1234,4.482,1510,6.808,1511,8.889]],["t/1160",[0,0.392,154,5.559,377,1.96,666,3.892,1212,2.728,1226,3.25,1234,3.2,1479,2.861,1510,4.86,1512,4.287,1513,5.161,1514,4.287,1515,2.306,1516,4.287,1517,4.287,1518,5.09,1519,2.713,1520,4.287,1521,4.287,1522,4.287,1523,4.287,1524,4.287,1525,4.287,1526,4.287,1527,4.287,1528,4.287,1529,4.287,1530,4.211,1531,8.094,1532,5.09,1533,2.649,1534,6.402,1535,3.632,1536,3.283,1537,3.283,1538,3.632,1539,4.287,1540,4.287,1541,1.96,1542,4.287,1543,3.154,1544,3.892]],["t/1162",[961,5.14,1541,2.774,1543,4.464,1545,6.066,1546,5.41,1547,6.066,1548,4.646,1549,4.646,1550,6.066,1551,6.066,1552,6.066,1553,6.066,1554,6.066,1555,6.066,1556,6.066,1557,6.066,1558,5.573,1559,6.066,1560,6.717,1561,6.066,1562,3.587,1563,6.066,1564,6.066,1565,6.066,1566,6.066]],["t/1164",[0,0.431,377,4.358,1212,2.182,1217,4.07,1479,6.03,1518,6.668,1519,3.212,1567,5.075,1568,5.075,1569,5.075,1570,5.075,1571,5.075,1572,5.075,1573,5.075,1574,5.075,1575,5.075,1576,5.075,1577,5.075,1578,5.075,1579,5.075,1580,5.075,1581,4.608,1582,5.075,1583,5.075,1584,5.075,1585,5.075,1586,5.075,1587,5.075,1588,5.075,1589,5.075,1590,5.075,1591,5.075,1592,5.075,1593,5.075]],["t/1166",[1234,4.564,1594,9.051]],["t/1168",[3,3.297,1224,6.802,1225,6.802,1226,4.111,1227,6.802,1251,4.746,1595,8.027,1596,8.027,1597,8.027]],["t/1170",[1226,4.635,1598,9.051]],["t/1172",[1599,9.219]],["t/1174",[1182,5.957,1217,5.957,1234,4.657,1600,7.427,1601,7.427,1602,7.427,1603,7.427,1604,7.427,1605,7.427,1606,7.427,1607,7.427,1608,7.427,1609,7.427]],["t/1176",[0,0.557,398,3.812,1610,6.336,1611,7.172,1612,7.172,1613,5.812,1614,7.172]],["t/1178",[1615,8.37]],["t/1181",[398,4.214,1251,5.163,1616,7.929,1617,7.929]],["t/1183",[1618,6.363,1619,6.363,1620,6.363,1621,6.363,1622,6.363,1623,6.363,1624,6.363,1625,6.363,1626,6.363,1627,6.363,1628,6.363,1629,6.363,1630,6.363,1631,6.363,1632,4.551,1633,4.677,1634,6.363,1635,6.363]],["t/1185",[1636,6.589,1637,7.06,1638,7.06,1639,5.521,1640,4.805,1641,7.06,1642,7.06,1643,7.06,1644,7.06,1645,7.06,1646,7.06]],["t/1187",[1647,7.659,1648,7.659,1649,7.659,1650,7.659,1651,7.659,1652,7.659]],["t/1189",[0,0.419,3,1.983,29,4.091,30,3.553,51,4.091,1639,6.272,1640,5.779,1653,4.384,1654,4.384,1655,4.384,1656,3.223,1657,4.384,1658,4.384,1659,2.984,1660,4.384,1661,4.384,1662,4.091,1663,4.384,1664,2.984,1665,5.561,1666,4.427,1667,4.384,1668,4.384,1669,6.283,1670,4.384,1671,4.384,1672,4.384,1673,4.384,1674,4.384,1675,4.384,1676,4.384,1677,4.384,1678,3.223,1679,4.384,1680,4.384,1681,4.384]],["t/1193",[0,0.594,398,4.441,1226,5.269,1519,6.513,1682,4.804,1683,3.893,1684,3.893]],["t/1195",[1685,7.532,1686,7.532,1687,6.653,1688,7.532,1689,7.532,1690,7.532,1691,7.532]],["t/1197",[0,0.522,6,3.24,26,2.031,137,4.357,236,5.018,1546,3.952,1558,4.071,1664,3.66,1666,3.241,1687,4.75,1692,5.377,1693,5.377,1694,5.377,1695,5.377,1696,5.377,1697,5.377,1698,5.377,1699,5.377,1700,5.377,1701,5.377,1702,5.377,1703,5.377,1704,5.377,1705,5.377,1706,5.377,1707,5.377]],["t/1199",[0,0.43,54,5.387,1640,6.105,1666,5.407,1708,8.295]],["t/1202",[0,0.598,26,2.901,54,3.4,129,4.844,676,6.297,1709,5.235,1710,5.235,1711,5.235,1712,5.235,1713,5.235,1714,5.235,1715,5.235]],["t/1204",[0,0.507,3,3.351,1716,8.289,1717,8.159,1718,8.159,1719,8.159]],["t/1207",[32,3.274,358,4.329,1111,5.158,1323,5.132,1532,4.533,1546,3.773,1558,5.313,1640,5.849,1666,5.601,1720,7.728,1721,6.548,1722,5.652,1723,5.652,1724,5.652,1725,5.132,1726,4.329,1727,7.728,1728,4.329,1729,4.789,1730,5.652,1731,5.652,1732,5.652]],["t/1209",[1733,8.37]],["t/1211",[0,0.548,6,3.83,12,0.879,26,3.287,54,0.619,66,0.637,105,1.858,129,3.9,137,2.274,196,1.607,284,0.952,358,0.73,550,4.745,556,5.481,611,0.702,614,1.12,775,2.914,823,0.702,1007,0.677,1111,2.425,1112,0.808,1141,0.619,1177,0.73,1205,0.866,1251,1.046,1303,1.499,1481,0.619,1530,0.986,1533,1.91,1546,4.109,1562,0.564,1640,2.245,1656,1.181,1666,1.989,1721,5.423,1733,0.866,1734,0.866,1735,1.419,1736,1.606,1737,0.866,1738,0.954,1739,1.769,1740,1.769,1741,4.479,1742,0.954,1743,0.954,1744,0.954,1745,0.954,1746,0.954,1747,1.769,1748,0.866,1749,1.769,1750,0.866,1751,0.954,1752,0.866,1753,0.954,1754,0.954,1755,0.954,1756,0.808,1757,0.954,1758,0.954,1759,5.89,1760,3.091,1761,3.091,1762,3.091,1763,1.499,1764,3.091,1765,4.933,1766,1.769,1767,1.769,1768,1.769,1769,0.954,1770,0.954,1771,0.954,1772,1.419,1773,1.769,1774,3.091,1775,1.769,1776,1.606,1777,4.115,1778,1.769,1779,1.606,1780,1.769,1781,1.985,1782,1.769,1783,0.954,1784,1.769,1785,1.769,1786,1.769,1787,1.769,1788,4.127,1789,3.487,1790,3.091,1791,1.769,1792,1.769,1793,0.954,1794,0.954,1795,1.769,1796,0.954,1797,0.954,1798,0.954,1799,1.769,1800,0.954,1801,0.808,1802,0.954,1803,0.954,1804,0.954,1805,1.769,1806,0.954,1807,0.954,1808,0.954,1809,0.954,1810,1.499,1811,0.954,1812,0.954,1813,0.954,1814,0.954,1815,0.954,1816,0.765,1817,0.702,1818,0.954,1819,0.808,1820,0.73,1821,0.954,1822,0.954]],["t/1213",[0,0.514,1558,4.958,1639,5.12,1640,4.457,1666,3.947,1789,6.11,1823,7.211,1824,7.211,1825,7.211,1826,7.211,1827,7.211,1828,7.211,1829,7.211,1830,7.211]],["t/1215",[1640,5.493,1666,4.865,1831,8.889]],["t/1217",[0,0.56,54,4.142,398,3.078,823,4.693,1404,5.404,1639,4.529,1640,5.178,1665,4.385,1666,4.586,1725,5.791,1734,5.791,1735,6.721,1736,7.608,1737,5.791,1832,5.791]],["t/1219",[0,0.543,1404,6.913,1832,7.408,1833,8.159,1834,4.315,1835,8.159]],["t/1221",[0,0.587,108,5.038,152,4.891,823,5.392,1776,6.654,1788,4.753,1789,4.436,1834,4.472,1836,5.235,1837,5.235,1838,6.654,1839,5.235,1840,5.235,1841,5.235,1842,5.235,1843,5.235,1844,5.235,1845,5.235,1846,5.235]],["t/1223",[1639,6.2,1665,6.003,1666,4.78,1838,7.929]],["t/1225",[0,0.539,398,3.48,1834,5.246,1847,7.211,1848,7.211,1849,9.068,1850,9.068,1851,7.211,1852,7.211]],["t/1227",[0,0.539,3,3.297,1519,5.081,1666,4.394,1853,8.027,1854,8.027,1855,5.699]],["t/1229",[0,0.532,377,3.556,1212,3.343,1856,6.014,1857,5.955,1858,5.721,1859,5.346,1860,6.589]],["t/1232",[284,4.388,1856,6.192,1861,7.846,1862,7.408,1863,7.408,1864,7.408]],["t/1234",[0,0.482,153,4.255,1861,5.051,1865,7.544,1866,5.718,1867,7.574,1868,7.88,1869,5.718,1870,5.718,1871,5.718,1872,7.041,1873,5.718,1874,5.718,1875,5.718,1876,5.718,1877,5.718]],["t/1236",[0,0.56,1878,6.148,1879,6.148,1880,7.288,1881,7.288,1882,7.288]],["t/1240",[0,0.59,1515,3.263,1883,6.501,1884,5.508,1885,6.328,1886,7.36,1887,7.36,1888,5.508,1889,5.508,1890,5.508]],["t/1242",[0,0.569,15,1.691,26,2.761,231,3.371,1515,2.864,1560,3.918,1885,4.259,1891,2.212,1892,4.835,1893,4.835,1894,3.092,1895,8.379,1896,4.835,1897,2.505,1898,4.835,1899,4.835,1900,6.734,1901,5.954,1902,4.835,1903,4.835,1904,4.835,1905,4.835,1906,4.835,1907,3.092,1908,2.505,1909,3.092,1910,3.092,1911,3.092,1912,3.092,1913,3.092,1914,2.885,1915,3.092,1916,3.092,1917,3.918,1918,4.835,1919,3.092,1920,3.092]],["t/1244",[0,0.577,1515,4.584,1885,5.535,1891,3.54,1897,6.973,1908,4.817,1921,3.955,1922,5.944,1923,5.944,1924,5.547]],["t/1246",[0,0.59,6,1.08,26,0.912,67,2.39,1283,2.698,1479,1.774,1481,2.835,1515,4.34,1632,1.726,1633,1.774,1659,1.643,1917,5.619,1921,2.637,1925,2.413,1926,2.413,1927,2.413,1928,2.413,1929,2.413,1930,2.252,1931,3.212,1932,2.413,1933,2.413,1934,7.537,1935,5.337,1936,4.614,1937,1.887,1938,2.413,1939,3.964,1940,3.964,1941,2.413,1942,2.413,1943,2.413,1944,3.964,1945,2.413,1946,2.413,1947,2.413,1948,2.413,1949,1.827,1950,2.132,1951,2.413,1952,2.413]],["t/1248",[0,0.587,6,1.355,55,2.016,105,1.506,177,2.227,1212,1.434,1251,1.973,1515,1.795,1541,1.526,1560,2.455,1562,1.973,1632,3.403,1633,3.498,1659,2.062,1859,3.603,1935,4.805,1936,3.403,1937,2.369,1949,2.294,1953,3.029,1954,3.029,1955,2.827,1956,5.877,1957,3.029,1958,3.029,1959,3.029,1960,5.877,1961,3.029,1962,3.029,1963,3.029,1964,3.029,1965,3.029,1966,4.759,1967,2.112,1968,3.029,1969,3.029,1970,3.029,1971,1.895,1972,2.676,1973,3.029,1974,3.029,1975,4.759,1976,4.204,1977,3.029,1978,3.029,1979,2.676,1980,3.029]],["t/1250",[0,0.582,20,1.759,41,2.866,46,2.125,67,0.858,1212,0.674,1476,1.113,1481,1.018,1541,0.717,1546,3.021,1548,5.973,1549,1.201,1656,1.046,1856,4.181,1878,1.201,1879,1.201,1921,1.679,1931,3.331,1936,2.43,1967,0.992,1981,5.201,1982,1.423,1983,1.113,1984,3.398,1985,1.423,1986,2.523,1987,1.423,1988,4.11,1989,1.423,1990,1.423,1991,1.423,1992,1.423,1993,1.257,1994,1.423,1995,1.423,1996,2.523,1997,2.753,1998,2.523,1999,4.11,2000,2.523,2001,1.423,2002,1.423,2003,1.423,2004,1.423,2005,3.001,2006,1.423,2007,1.423,2008,1.423,2009,3.72,2010,2.354,2011,2.523,2012,1.423,2013,1.423,2014,1.423,2015,1.328,2016,1.423,2017,1.328,2018,2.523,2019,1.423,2020,1.328,2021,1.201,2022,1.423,2023,1.423,2024,1.423,2025,1.423,2026,7.466,2027,2.523,2028,1.423,2029,1.423,2030,1.423,2031,2.523,2032,3.631,2033,1.423,2034,1.423,2035,1.423,2036,2.523,2037,2.523,2038,1.423,2039,1.423,2040,1.423,2041,2.523,2042,2.229,2043,2.523,2044,2.523,2045,2.523,2046,1.423,2047,1.423,2048,1.423,2049,5.201,2050,2.523,2051,2.523,2052,2.523,2053,1.423,2054,1.423]],["t/1253",[0,0.594,1141,4.785,1226,3.773,1479,4.918,1536,3.147,1935,4.185,1936,2.669,2055,5.583,2056,7.427,2057,3.731,2058,3.731,2059,5.583,2060,3.731,2061,3.731,2062,3.731,2063,5.583,2064,5.583,2065,4.71,2066,3.296,2067,3.731,2068,3.731,2069,3.731,2070,3.731]],["t/1255",[0,0.597,1226,2.928,1867,4.379,1936,5.058,2066,4.586,2071,5.191,2072,5.191,2073,5.191,2074,8.635,2075,5.191,2076,5.191,2077,5.191]],["t/1258",[0,0.576,95,3.068,398,3.806,1226,1.959,1251,2.261,1515,2.057,1659,2.364,1735,5.658,1917,2.814,1921,3.519,1935,2.172,1976,3.068,2078,2.629,2079,3.473,2080,3.473,2081,3.473,2082,3.473,2083,3.241,2084,5.289,2085,3.473,2086,3.241,2087,3.473,2088,3.473,2089,3.473,2090,3.473,2091,3.473,2092,3.473,2093,3.473,2094,3.473,2095,3.473,2096,3.473,2097,3.473,2098,3.473,2099,3.473,2100,3.473,2101,3.473,2102,3.473,2103,5.289,2104,5.289,2105,5.289,2106,3.473,2107,3.473,2108,3.473,2109,3.473,2110,3.473,2111,3.473]],["t/1260",[0,0.593,26,1.588,105,2.09,1220,2.861,1234,1.441,1510,2.188,1515,5.391,1541,3.07,1632,3.007,1633,3.09,1856,2.931,1883,6.673,1885,3.007,1897,2.102,1921,4.772,1949,3.183,1971,2.63,1979,2.291,2112,2.594,2113,6.096,2114,2.594,2115,4.296,2116,4.683,2117,2.594,2118,2.594,2119,2.594,2120,2.594,2121,2.102,2122,2.594]],["t/1262",[0,0.574,93,2.219,126,3.626,177,4.228,377,1.476,945,2.735,1055,2.735,1070,2.375,1111,2.155,1220,4.45,1513,1.995,1515,5.644,1541,2.335,1632,2.096,1684,2.375,1728,2.472,1856,3.232,1885,3.316,1908,2.375,1921,5.04,1950,2.589,1967,2.043,1971,2.9,1972,2.589,2042,2.589,2078,2.219,2115,3.757,2121,3.757,2123,2.931,2124,2.931,2125,2.931,2126,2.375,2127,2.931,2128,2.931,2129,2.931,2130,2.931,2131,2.931,2132,2.931,2133,2.931,2134,2.931,2135,2.096,2136,2.931]],["t/1264",[377,4.065,1513,5.493,1536,6.808]],["t/1266",[0,0.469,1536,6.932]],["t/1268",[0,0.576]],["t/1270",[0,0.563]],["t/1272",[0,0.478]],["t/1274",[0,0.582,2137,8.748,2138,6.815,2139,6.815,2140,6.815,2141,5.775,2142,5.22,2143,6.815,2144,6.815,2145,6.815,2146,6.815]],["t/1276",[0,0.575,26,1.551,63,7.308,152,6.721,231,2.862,1061,6.25,1513,4.078,2147,4.105,2148,4.105,2149,3.462,2150,4.105,2151,4.105,2152,6.598,2153,4.521,2154,4.521,2155,2.936,2156,4.521,2157,4.521,2158,4.521,2159,4.521,2160,4.521,2161,4.105,2162,4.105,2163,4.521,2164,4.521,2165,4.105]],["t/1278",[0,0.573,26,1.51,63,3.529,152,5.121,231,4.095,1513,2.719,2147,3.995,2148,5.874,2149,4.955,2150,3.995,2151,3.995,2155,2.858,2161,5.874,2162,3.995,2165,3.995,2166,4.4,2167,4.4,2168,4.4,2169,4.4,2170,4.4,2171,4.4,2172,4.4,2173,7.679,2174,4.4,2175,4.4,2176,6.47,2177,4.4,2178,4.4,2179,4.4,2180,4.4,2181,4.4,2182,4.4,2183,4.4,2184,4.4]],["t/1280",[0,0.547,63,7.924,152,5.536,231,5.251]],["t/1282",[0,0.469,3,3.717]],["t/1284",[0,0.539]],["t/1286",[2185,7.394]],["t/1288",[0,0.549,1226,3.539,1518,5.543,1683,5.085,1684,5.085,2126,5.085,2185,8.218,2186,6.91,2187,6.91,2188,6.91,2189,6.91,2190,5.543]],["t/1290",[0,0.363,776,3.98,1543,5.156,1558,4.818,1581,6.363,1662,5.938,1664,4.331,1721,5.938,2191,7.008,2192,7.008,2193,7.008,2194,7.008,2195,7.008,2196,7.008,2197,7.008,2198,7.008,2199,7.008,2200,4.143]],["t/1292",[0,0.484,56,3.632,756,3.438,961,3.632,1543,4.669,1544,3.892,2126,3.154,2185,5.09,2190,3.438,2201,4.287,2202,5.787,2203,6.346,2204,4.287,2205,4.287,2206,4.287,2207,4.287,2208,6.346,2209,4.287,2210,5.377,2211,4.287,2212,3.283,2213,4.287,2214,6.346,2215,4.287,2216,4.287,2217,4.287,2218,3.632,2219,4.287,2220,4.287,2221,4.287,2222,4.287,2223,3.892,2224,4.287,2225,4.287,2226,4.287,2227,4.287,2228,6.346,2229,4.287,2230,4.287,2231,4.287,2232,4.287,2233,4.287,2234,4.287,2235,4.287,2236,4.287,2237,4.287,2238,4.287,2239,4.287,2240,4.287]],["t/1294",[0,0.583,398,3.335,1636,5.855,1914,5.855,2185,8.218,2241,6.91,2242,6.91,2243,6.91]],["t/1296",[1971,4.874,2244,8.582,2245,8.582,2246,8.582,2247,7.272]],["t/1298",[3,3.144,67,4.19,674,6.682,1834,4.049,2248,7.656,2249,7.656,2250,7.656,2251,7.656,2252,7.656,2253,7.656,2254,7.656]],["t/1300",[0,0.483,129,4.931,614,4.773,1834,5.353,2255,7.54,2256,7.54,2257,7.54,2258,7.54,2259,7.54]],["t/1302",[0,0.403,129,5.025,1834,5.426,2260,7.776,2261,7.776,2262,7.776,2263,7.776,2264,7.776]],["t/1304",[0,0.47,3,2.962,26,2.474,67,3.947,129,3.814,221,5.784,614,4.565,1834,5.504,2265,6.548,2266,7.211,2267,7.211,2268,7.211]],["t/1308",[0,0.512,6,2.27,20,3.538,26,2.63,43,4.534,46,3.174,307,5.444,611,4.112,1283,3.454,1533,4.739,1817,4.112,2269,5.589,2270,5.589,2271,5.589,2272,5.589,2273,5.589,2274,5.589,2275,5.074,2276,6.497,2277,5.589,2278,5.589,2279,4.28,2280,4.482,2281,4.112,2282,5.074,2283,5.589,2284,5.589]],["t/1310",[0,0.546,6,4.005,26,1.723,43,5.83,46,2.853,307,5.054,611,3.696,1513,3.104,1533,4.399,1817,3.696,2173,6.463,2275,4.561,2280,4.029,2281,3.696,2282,4.561,2285,5.023,2286,7.118,2287,7.118,2288,5.023,2289,5.023,2290,5.023,2291,5.023,2292,5.023]],["t/1313",[0,0.518,45,5.031,2293,7.317,2294,7.317,2295,7.317,2296,9.151,2297,7.317,2298,7.317,2299,7.317,2300,7.317,2301,7.317,2302,7.317]],["t/1315",[0,0.569,26,1.732,44,3.13,105,1.762,108,4.066,129,3.128,237,2.872,1111,2.605,1283,5.293,1408,1.968,1533,1.435,1678,1.55,1779,2.109,1993,4.048,2200,2.984,2280,1.863,2303,2.323,2304,2.323,2305,2.323,2306,1.968,2307,3.903,2308,2.323,2309,2.323,2310,2.323,2311,2.323,2312,2.323,2313,2.323,2314,2.323,2315,2.323,2316,5.915,2317,2.323,2318,2.323,2319,2.323,2320,2.323,2321,2.323,2322,2.323,2323,2.323,2324,2.323,2325,2.323,2326,2.323,2327,3.903,2328,2.323,2329,2.323,2330,2.323,2331,2.323,2332,2.323,2333,2.323,2334,2.323,2335,3.903,2336,2.323,2337,2.323,2338,2.323,2339,2.323,2340,2.323,2341,2.323,2342,2.323,2343,2.323,2344,2.323,2345,2.323,2346,2.323,2347,3.903,2348,2.323,2349,2.323,2350,2.323,2351,2.323,2352,2.323,2353,2.323,2354,2.323,2355,2.323,2356,2.323,2357,2.323,2358,2.323,2359,2.109,2360,3.903,2361,2.323,2362,3.903,2363,2.323,2364,5.915,2365,3.307,2366,2.323,2367,3.903,2368,2.323,2369,2.323,2370,2.323,2371,2.323]],["t/1318",[0,0.445,2372,8.582,2373,8.582,2374,8.582,2375,8.582]],["t/1320",[2376,7.129,2377,8.071,2378,8.889]],["t/1322",[0,0.547,535,5.536,2377,7.532,2379,8.295,2380,7.532]],["t/1324",[0,0.469,3,3.717]],["t/1326",[2121,6.425,2381,8.732,2382,8.732,2383,8.732]],["t/1328",[19,3.631,434,6.023,1283,5.894,1935,3.768,2384,8.597,2385,8.597,2386,6.633,2387,6.023,2388,6.633,2389,6.023,2390,6.023,2391,6.633,2392,7.284,2393,6.633,2394,6.633,2395,6.633,2396,6.023]],["t/1330",[0,0.529,19,3.953,1935,5.434,2387,4.655,2389,6.557,2390,6.557,2397,5.127,2398,5.127,2399,7.222,2400,5.127,2401,8.361,2402,5.127,2403,5.127,2404,4.344,2405,7.222,2406,5.127,2407,5.127,2408,5.127,2409,7.222,2410,5.127,2411,5.127,2412,5.127,2413,5.127,2414,5.127,2415,5.127,2416,5.127]],["t/1333",[12,3.869,152,5.198,254,5.965,403,5.191,1212,3.348,1562,3.38,1678,5.198,1728,4.379,1834,4.119,2135,3.713,2417,8.635,2418,6.247,2419,5.717,2420,5.717,2421,4.845,2422,4.586,2423,5.717,2424,5.191,2425,5.717,2426,5.717,2427,5.191,2428,5.198,2429,5.717]],["t/1335",[12,4.224,66,5.676,152,3.531,175,6.256,254,5.655,1028,4.804,1062,4.804,1109,4.244,1182,4.244,1532,4.244,1562,3.128,1678,3.531,1728,6.513,1756,4.483,1834,2.798,2417,8.355,2418,4.244,2422,4.244,2428,4.928,2430,5.291,2431,5.291,2432,5.291,2433,4.483,2434,5.291,2435,4.052,2436,5.291,2437,5.291,2438,5.291,2439,5.291]],["t/1337",[12,3.582,66,6.62,254,6.945,1212,3.1,1562,5.361,1756,6.11,2418,5.784,2440,5.784,2441,7.211,2442,7.211,2443,7.211,2444,7.211]],["t/1340",[1834,5.277,2445,8.436,2446,8.436,2447,8.436,2448,7.659]],["t/1342",[0,0.502,299,5.825,1834,5.868,1935,3.005,2448,4.804,2449,5.291,2450,5.291,2451,5.291,2452,7.383,2453,5.291,2454,5.291,2455,5.291,2456,5.291,2457,5.291,2458,5.291,2459,5.291,2460,4.804,2461,4.804,2462,5.291,2463,5.291,2464,5.291]],["t/1345",[0,0.539]],["t/1347",[0,0.584]],["t/1349",[0,0.539]],["t/1352",[674,6.2,2465,8.732,2466,8.732,2467,7.929]],["t/1354",[0,0.544,6,0.592,26,1.879,32,2.486,43,3.967,45,4.613,46,1.479,95,5.095,137,2.597,177,0.973,254,1.994,470,1.116,611,1.072,640,1.323,674,2.506,676,1.002,1305,3.205,1533,3.674,1562,1.539,1817,2.597,1819,1.235,1820,1.116,1930,2.991,1931,1.072,1971,1.479,2010,1.235,2078,1.79,2083,2.206,2086,2.206,2279,1.116,2280,1.169,2281,1.072,2359,2.364,2467,1.323,2468,2.604,2469,1.457,2470,1.457,2471,1.457,2472,1.457,2473,1.457,2474,1.457,2475,1.457,2476,1.457,2477,1.457,2478,2.604,2479,1.457,2480,2.604,2481,1.457,2482,1.457,2483,1.457,2484,1.457,2485,1.457,2486,1.457,2487,2.604,2488,1.457,2489,3.529,2490,2.604,2491,2.604,2492,1.457,2493,1.169,2494,1.457,2495,1.457,2496,1.457,2497,1.457,2498,1.457,2499,1.457,2500,1.457,2501,2.604,2502,2.604,2503,1.457,2504,1.457,2505,1.457,2506,1.457,2507,1.457,2508,2.604,2509,1.457,2510,1.457,2511,3.529,2512,2.604,2513,1.457,2514,2.604,2515,1.323,2516,2.604,2517,2.604,2518,2.604,2519,1.457,2520,1.457,2521,3.529,2522,4.292,2523,4.932,2524,1.457,2525,2.604,2526,1.457,2527,1.457,2528,1.457,2529,1.457,2530,1.457,2531,1.235,2532,1.457,2533,1.457,2534,1.457,2535,1.457,2536,1.457,2537,1.457,2538,1.457,2539,1.457,2540,3.897,2541,1.457,2542,4.292,2543,1.457,2544,1.457,2545,1.457,2546,1.457,2547,1.323,2548,1.457,2549,4.292,2550,1.457,2551,1.457,2552,1.457,2553,1.457,2554,1.457,2555,1.457,2556,1.457,2557,1.457,2558,1.457,2559,1.457,2560,1.457,2561,2.604,2562,2.604,2563,2.604,2564,2.604,2565,2.604,2566,1.457,2567,1.457,2568,1.457,2569,1.457,2570,1.457,2571,1.457,2572,1.457,2573,1.457,2574,1.457,2575,1.323,2576,1.457,2577,1.323,2578,1.457,2579,1.457,2580,1.457]],["t/1356",[6,3.676,2581,9.051]],["t/1359",[0,0.576]],["t/1361",[0,0.539,105,3.256,1531,6.548,2582,7.211,2583,7.211,2584,7.211,2585,7.211,2586,7.211,2587,7.211,2588,7.211,2589,7.211,2590,7.211,2591,7.211]],["t/1363",[0,0.532,2460,7.06,2461,7.06,2592,7.776,2593,7.776,2594,7.776,2595,7.776,2596,7.776,2597,7.776]],["t/1366",[0,0.478]],["t/1368",[0,0.57,6,3.435,19,4.628,30,3.852,1177,4.01,1935,4.802,2396,4.753,2433,4.436,2598,5.235,2599,5.235,2600,5.235,2601,5.235,2602,5.235,2603,5.235,2604,5.235,2605,5.235,2606,5.235,2607,8.455,2608,5.235,2609,5.235,2610,5.235,2611,4.199,2612,5.235]],["t/1370",[26,3.049,2613,8.071,2614,8.889]],["t/1372",[0,0.557,398,3.812,1610,6.336,1611,7.172,1612,7.172,1613,5.812,1614,7.172]],["t/1374",[1615,8.37]],["t/1377",[398,4.214,1251,5.163,1616,7.929,1617,7.929]],["t/1379",[1618,6.363,1619,6.363,1620,6.363,1621,6.363,1622,6.363,1623,6.363,1624,6.363,1625,6.363,1626,6.363,1627,6.363,1628,6.363,1629,6.363,1630,6.363,1631,6.363,1632,4.551,1633,4.677,1634,6.363,1635,6.363]],["t/1381",[1636,6.589,1637,7.06,1638,7.06,1639,5.521,1640,4.805,1641,7.06,1642,7.06,1643,7.06,1644,7.06,1645,7.06,1646,7.06]],["t/1383",[1647,7.659,1648,7.659,1649,7.659,1650,7.659,1651,7.659,1652,7.659]],["t/1385",[0,0.419,3,1.983,29,4.091,30,3.553,51,4.091,1639,6.272,1640,5.779,1653,4.384,1654,4.384,1655,4.384,1656,3.223,1657,4.384,1658,4.384,1659,2.984,1660,4.384,1661,4.384,1662,4.091,1663,4.384,1664,2.984,1665,5.561,1666,4.427,1667,4.384,1668,4.384,1669,6.283,1670,4.384,1671,4.384,1672,4.384,1673,4.384,1674,4.384,1675,4.384,1676,4.384,1677,4.384,1678,3.223,1679,4.384,1680,4.384,1681,4.384]],["t/1389",[0,0.594,398,4.441,1226,5.269,1519,6.513,1682,4.804,1683,3.893,1684,3.893]],["t/1391",[1685,7.532,1686,7.532,1687,6.653,1688,7.532,1689,7.532,1690,7.532,1691,7.532]],["t/1393",[0,0.522,6,3.24,26,2.031,137,4.357,236,5.018,1546,3.952,1558,4.071,1664,3.66,1666,3.241,1687,4.75,1692,5.377,1693,5.377,1694,5.377,1695,5.377,1696,5.377,1697,5.377,1698,5.377,1699,5.377,1700,5.377,1701,5.377,1702,5.377,1703,5.377,1704,5.377,1705,5.377,1706,5.377,1707,5.377]],["t/1396",[0,0.565,6,1.514,19,4.26,22,1.863,26,1.664,44,3.89,105,3.34,126,1.561,129,5.094,153,3.273,176,1.764,177,1.468,614,3.615,674,4.538,676,4.394,1111,2.488,1763,1.863,1781,1.764,1924,3.158,2116,1.764,2365,1.863,2577,3.384,2615,2.199,2616,2.199,2617,3.727,2618,2.199,2619,2.199,2620,2.199,2621,2.199,2622,2.199,2623,2.199,2624,2.199,2625,2.199,2626,3.727,2627,2.199,2628,2.199,2629,2.199,2630,2.199,2631,2.199,2632,2.199,2633,2.199,2634,2.199,2635,2.199,2636,2.199,2637,2.199,2638,2.199,2639,2.199,2640,2.199,2641,2.199,2642,2.199,2643,2.199,2644,3.727,2645,2.199,2646,3.727,2647,2.199,2648,2.199,2649,2.199,2650,2.199,2651,2.199,2652,2.199,2653,4.85,2654,3.384,2655,1.997,2656,3.384,2657,3.727,2658,2.199,2659,2.199,2660,2.199,2661,2.199,2662,2.199,2663,2.199,2664,1.997,2665,1.997,2666,2.199,2667,1.997]],["t/1399",[2668,8.889,2669,8.889,2670,8.889]],["t/1401",[0,0.461,1360,8.071,2279,6.808]],["t/1403",[2671,9.219]],["t/1405",[0,0.519,6,1.669,26,1.41,105,3.954,129,3.897,674,6.218,676,4.227,775,3.296,1748,3.731,1763,3.482,2365,3.482,2515,3.731,2540,3.731,2655,3.731,2656,5.583,2664,3.731,2665,3.731,2667,3.731,2672,4.109,2673,4.109,2674,4.109,2675,4.109,2676,4.109,2677,5.583,2678,4.109,2679,4.109,2680,4.109,2681,4.109,2682,4.109,2683,4.109,2684,4.109,2685,4.109,2686,4.109,2687,4.109,2688,4.109,2689,4.109,2690,4.109,2691,4.109,2692,4.109,2693,4.109,2694,4.109,2695,4.109,2696,4.109,2697,3.482,2698,4.109,2699,4.109,2700,4.109]],["t/1407",[2701,8.37]],["t/1409",[26,0.853,105,1.122,129,1.314,262,1.903,305,1.765,377,3.75,535,1.659,614,1.573,776,1.412,1052,2.106,1070,1.829,1141,1.614,1212,3.773,1220,1.536,1234,1.253,1283,1.536,1367,2.932,1513,2.552,1530,1.385,1537,4.727,1541,3.892,1543,1.829,1562,2.442,1810,2.106,1891,2.201,1949,1.709,1997,3.039,2009,1.614,2021,1.903,2065,1.903,2078,1.709,2200,1.469,2202,3.163,2210,2.106,2212,1.903,2422,3.312,2440,3.312,2493,1.993,2531,2.106,2702,2.256,2703,1.993,2704,2.256,2705,1.993,2706,2.106,2707,1.993,2708,4.382,2709,2.256,2710,2.256,2711,2.256,2712,1.199,2713,2.256,2714,1.829,2715,1.829,2716,2.256,2717,2.256,2718,2.256,2719,4.25,2720,2.256,2721,2.256,2722,2.256,2723,2.256,2724,2.256,2725,1.765,2726,1.993,2727,2.256,2728,1.993,2729,2.256,2730,2.256,2731,1.993,2732,2.256,2733,2.256,2734,1.659,2735,2.256,2736,1.993,2737,2.256,2738,1.993,2739,2.256,2740,2.256,2741,2.256,2742,1.993,2743,1.993,2744,2.256,2745,2.256,2746,1.993,2747,2.256,2748,1.993,2749,1.993,2750,2.256,2751,2.256,2752,2.256,2753,2.256,2754,1.993,2755,1.993,2756,1.44,2757,1.993,2758,1.993,2759,1.829,2760,2.256,2761,2.256,2762,2.256,2763,1.993,2764,1.993,2765,2.106,2766,2.256,2767,2.256,2768,2.106]],["t/1411",[0,0.593,20,2.366,46,2.123,377,1.709,1212,2.991,1234,1.885,1504,5.062,1541,3.564,1664,2.31,1891,1.553,2200,2.21,2712,2.762,2714,2.751,2725,2.654,2734,2.495,2736,2.998,2748,2.998,2749,2.998,2756,4.515,2757,2.998,2758,2.998,2769,4.212,2770,3.394,2771,3.168,2772,2.863,2773,2.165,2774,3.394,2775,3.394,2776,3.394,2777,2.863,2778,3.394,2779,5.197,2780,3.394]],["t/1414",[0,0.586,1226,2.962,1251,3.42,1519,3.661,1541,3.59,1891,3.26,2428,3.86,2734,7.033,2781,3.976,2782,3.166,2783,5.252,2784,5.252]],["t/1416",[0,0.591,6,0.935,1159,3.106,1212,0.989,1251,1.36,1276,1.846,1331,1.95,1558,1.582,1659,2.393,1891,0.956,1983,4.175,2009,1.494,2141,3.281,2276,1.95,2279,1.762,2376,1.846,2611,1.846,2703,3.106,2712,1.11,2714,1.693,2756,2.243,2777,1.762,2785,5.956,2786,4.552,2787,1.95,2788,1.95,2789,2.089,2790,2.089,2791,2.089,2792,4.552,2793,2.089,2794,1.762,2795,2.089,2796,3.516,2797,2.089,2798,2.089,2799,2.089,2800,2.089,2801,2.089,2802,2.089,2803,2.089,2804,2.089,2805,3.516,2806,2.089,2807,2.089,2808,2.089,2809,2.089,2810,4.248,2811,2.089,2812,2.089,2813,2.089,2814,2.089,2815,2.089,2816,3.516,2817,2.089,2818,2.089,2819,2.089,2820,2.089,2821,2.089,2822,3.516,2823,3.516,2824,2.089,2825,2.089,2826,2.089,2827,2.089,2828,2.089,2829,2.089,2830,2.089,2831,2.089,2832,2.089,2833,2.089,2834,2.089,2835,2.089,2836,2.089,2837,2.089,2838,2.089,2839,2.089,2840,4.021,2841,2.089]],["t/1418",[0,0.423,398,3.938,1299,7.408,2842,8.159,2843,8.159,2844,8.159,2845,6.544,2846,8.159]],["t/1420",[12,3.924,398,4.63,1967,5,2135,5.13,2440,6.336,2611,6.336,2847,7.172,2848,7.899,2849,7.899]],["t/1422",[0,0.438,535,5.645,837,5.874,1017,3.37,1303,3.729,1562,2.602,1750,3.995,1752,5.874,1772,3.529,1867,3.37,1878,3.37,1879,3.37,2418,3.529,2427,6.966,2706,3.729,2847,3.995,2850,6.47,2851,4.4,2852,6.47,2853,4.4,2854,6.47,2855,6.47,2856,4.4,2857,4.4,2858,4.4,2859,7.672,2860,4.4,2861,4.4,2862,4.4,2863,4.4,2864,4.4,2865,4.4,2866,4.4,2867,4.4,2868,4.4,2869,6.47,2870,6.47,2871,3.729,2872,4.4,2873,4.4,2874,4.4,2875,4.4]],["t/1424",[521,7.929,2876,8.732,2877,8.732,2878,8.732]],["t/1426",[55,5.011,377,3.793,1541,3.793,2712,4.003,2715,6.104,2782,4.54,2879,7.532]],["t/1428",[10,1.973,12,3.215,55,3.166,196,2.167,377,3.354,383,2.827,556,5.882,1042,3.721,1061,4.204,1079,2.676,1212,3.804,1220,2.062,1234,2.643,1283,3.239,1541,2.397,1613,2.455,1656,3.498,1664,2.062,1678,2.227,1726,2.555,1891,3.046,1971,2.977,2247,2.827,2281,2.455,2421,2.827,2435,2.555,2697,4.441,2705,2.676,2712,4.083,2719,2.676,2738,2.676,2755,2.676,2759,2.455,2764,2.676,2782,2.869,2871,2.827,2880,3.029,2881,3.029,2882,3.029,2883,3.029,2884,3.029,2885,2.676,2886,4.759,2887,4.759,2888,3.029,2889,3.029,2890,4.759,2891,3.029,2892,3.029,2893,3.029,2894,3.029,2895,3.029,2896,2.676,2897,2.676,2898,2.676,2899,3.029,2900,3.029,2901,3.029,2902,3.029,2903,3.029,2904,2.827]],["t/1430",[0,0.58,1891,4.175,2712,3.584,2782,4.065,2905,6.743,2906,6.743]],["t/1432",[0,0.573,1367,5.699,1891,4.023,2907,7.288]],["t/1434",[0,0.582,41,2.929,307,2.716,811,4.461,1216,5.658,1234,2.937,1891,1.588,1971,3.308,1983,2.716,2142,4.461,2155,4.581,2392,3.241,2840,3.068,2908,3.473,2909,3.473,2910,3.473,2911,3.473,2912,4.672,2913,3.068,2914,3.068,2915,3.473,2916,3.473,2917,3.473,2918,3.473,2919,3.473,2920,3.473,2921,3.473,2922,3.068,2923,3.473,2924,3.473,2925,3.473,2926,3.068,2927,3.473,2928,3.473,2929,6.405,2930,3.473,2931,5.289,2932,3.473,2933,3.473,2934,2.814,2935,3.473]],["t/1436",[0,0.558,811,4.233,1258,4.683,2142,4.233,2155,5.651,2913,4.433,2914,4.433,2922,4.433,2926,4.433,2936,5.018,2937,5.018,2938,5.018,2939,5.018,2940,5.018,2941,5.018,2942,5.018,2943,5.018,2944,5.018,2945,5.018,2946,6.909,2947,5.018,2948,5.018,2949,5.018,2950,5.018,2951,5.018,2952,5.018]],["t/1439",[0,0.589,19,3.836,153,3.589,1519,4.436,1891,3.698,2772,5.367,2953,6.363,2954,5.621]],["t/1446",[0,0.571,1504,5.13,1891,3.281,2897,6.336,2954,6.336,2955,7.172]],["t/1448",[0,0.502,1212,3.451,1234,4.048,1479,5.357,1510,6.148,1610,6.438,2845,6.438,2956,8.027]],["t/1451",[0,0.358,377,3.16,1212,2.971,1858,5.085,1859,4.751,2020,5.855,2065,5.293,2223,6.274,2613,6.274,2765,5.855,2957,7.479,2958,6.274,2959,6.91,2960,6.91,2961,6.91,2962,6.274,2963,6.91,2964,6.91]],["t/1453",[56,5.547,377,2.993,1037,5.944,1109,5.25,1220,5.267,1515,3.521,1532,5.25,1541,3.897,1678,4.369,1859,4.5,2115,4.817,2965,6.546,2966,6.546,2967,6.546,2968,5.944,2969,6.546,2970,6.546,2971,6.546,2972,6.546,2973,6.546,2974,6.546]],["t/1456",[0,0.173,3,1.37,377,2.96,535,2.227,1212,1.434,1220,2.062,1329,3.029,1473,2.555,1476,3.721,1480,2.827,1481,2.167,1541,1.526,1562,1.973,1678,2.227,1683,3.856,1684,4.762,1816,2.676,1857,2.555,1858,4.762,1955,2.827,2015,2.827,2021,2.555,2121,2.455,2380,3.029,2957,5.484,2962,3.029,2975,3.336,2976,3.336,2977,5.241,2978,3.336,2979,3.336,2980,6.472,2981,3.336,2982,3.336,2983,3.336,2984,3.336,2985,5.241,2986,3.336,2987,3.336,2988,3.336,2989,3.336,2990,3.336,2991,3.336,2992,3.336,2993,2.827,2994,3.336,2995,3.336,2996,3.336,2997,3.336,2998,3.336,2999,3.336,3000,2.827,3001,3.336,3002,3.336,3003,3.336,3004,3.336,3005,3.336,3006,3.336,3007,3.336,3008,3.336,3009,3.336,3010,5.241,3011,5.241,3012,5.241,3013,5.241,3014,3.336,3015,3.336,3016,3.336,3017,5.241,3018,3.336,3019,3.336,3020,3.336,3021,3.336,3022,3.336,3023,3.336,3024,3.336,3025,3.336]],["t/1458",[0,0.416,2135,6.29,3026,8.027,3027,8.027,3028,8.027,3029,8.027,3030,8.027,3031,8.027]],["t/1461",[1479,6.535,1560,6.013,1856,3.888,1921,4.937,1971,3.488,2135,3.988,2968,5.576,3032,6.141,3033,6.141,3034,6.141,3035,6.141,3036,6.141,3037,6.141,3038,6.141,3039,6.141,3040,6.141,3041,6.141,3042,6.141,3043,6.141,3044,6.141,3045,6.141,3046,6.141,3047,6.141]],["t/1464",[1212,3.891,2712,4.368]],["t/1466",[0,0.569,145,4.384,1983,3.881,2149,5.784,2155,5.619,2934,4.022,3048,5.466,3049,5.466,3050,6.399,3051,5.466,3052,5.466,3053,5.466,3054,5.466,3055,4.631,3056,5.466,3057,5.466,3058,5.466,3059,5.466,3060,5.466,3061,5.466,3062,5.466,3063,5.466,3064,5.466,3065,5.466]],["t/1469",[0,0.445,3066,8.541,3067,10.079]],["t/1471",[0,0.453,1716,7.399,3066,7.399,3068,7.929]],["t/1473",[0,0.579,1224,6.256,2782,4.041,2898,4.244,3066,6.256,3068,6.703,3069,5.291,3070,3.757,3071,5.291,3072,6.46,3073,6.534,3074,7.383,3075,5.291,3076,7.383,3077,5.291]],["t/1475",[0,0.582,105,4.362,3070,4.839,3072,6.448,3073,6.86,3078,6.815]],["t/1477",[0,0.575,377,2.645,1473,6.012,1476,6.327,1477,5.252,1481,5.098,2781,5.396,2782,3.166,3072,6.378,3073,6.785,3079,5.784,3080,5.784]],["t/1479",[0,0.584,398,4.87,2782,3.631,3072,4.427,3073,4.71,3081,8.597,3082,6.633,3083,6.633,3084,6.633]],["t/1481",[0,0.591,20,5.688,398,4.337,3085,8.159,3086,7.108]],["t/1483",[0,0.588,20,4.565,398,3.48,2771,8.818,3085,6.548]],["t/1486",[10,2.373,247,1.651,262,1.839,305,1.705,377,3.322,398,2.495,525,2.035,535,1.603,769,2.035,776,2.936,1007,1.705,1080,1.926,1141,1.559,1177,1.839,1212,2.889,1234,2.024,1235,1.926,1504,3.357,1530,3.367,1533,1.484,1535,3.4,1537,1.839,1538,2.035,1541,2.762,1546,1.603,1548,3.074,1549,1.839,1656,1.603,1683,1.767,1726,1.839,1729,2.035,1781,1.926,1801,2.035,1816,1.926,1834,1.27,1857,3.074,1858,2.953,1891,0.997,1937,1.705,1997,1.767,2005,1.926,2009,1.559,2032,3.219,2126,1.767,2135,3.357,2190,1.926,2200,3.057,2202,1.839,2212,3.074,2218,2.035,2435,1.839,2707,1.926,2708,3.671,2712,2.495,2725,1.705,2726,1.926,2728,1.926,2742,1.926,2743,1.926,2746,1.926,2754,1.926,2756,2.325,2759,2.953,2763,1.926,2773,4.466,2794,1.839,2885,1.926,2896,1.926,2993,2.035,3087,2.18,3088,2.18,3089,1.926,3090,2.035,3091,2.18,3092,2.18,3093,2.18,3094,2.18,3095,2.18,3096,2.18,3097,1.926,3098,2.18,3099,2.18,3100,2.18,3101,2.18,3102,2.18,3103,2.18,3104,2.18,3105,2.18,3106,2.18,3107,2.18,3108,2.18,3109,2.18,3110,3.554,3111,2.18,3112,2.18,3113,2.18,3114,2.18,3115,2.18,3116,2.18,3117,2.18,3118,2.18,3119,2.18,3120,2.18,3121,2.18,3122,2.18,3123,2.18,3124,2.18]],["t/1488",[0,0.591,776,3.363,1504,5.857,1530,5.027,1891,2.459,2009,3.846,2708,4.205,2712,2.858,2756,3.43,2769,4.357,3110,6.2]],["t/1490",[0,0.575,12,2.035,67,2.242,153,1.26,358,1.885,776,3.484,1042,2.908,1141,1.598,1212,1.058,1226,1.26,1519,1.558,1530,1.371,1541,3.877,1562,1.455,1613,1.811,1640,3.251,1659,2.531,1664,2.531,1666,4.025,1772,1.974,1855,3.736,1891,3.728,1967,3.33,2200,3.111,2306,2.085,2712,2.96,2715,1.811,2731,1.974,2734,2.734,2769,1.811,2773,3.553,2781,3.617,2912,1.974,2934,1.811,3050,2.085,3055,2.085,3070,1.747,3073,3.736,3125,2.234,3126,2.234,3127,2.234,3128,2.234,3129,2.234,3130,2.234,3131,2.234,3132,2.234,3133,2.234,3134,2.234,3135,2.234,3136,2.234,3137,2.234,3138,2.234,3139,2.234,3140,2.234,3141,2.234,3142,2.234,3143,2.085,3144,2.234,3145,2.234,3146,2.234,3147,2.234]],["t/1493",[0,0.575,67,3.638,398,1.355,776,3.775,1399,6.197,1530,4.368,1665,1.931,1834,4.368,1891,3.255,1935,1.595,2149,5.091,2155,1.824,2200,3.93,2428,4.437,2712,1.355,2756,1.627,2773,1.627,2782,2.499,3072,3.048,3089,2.252,3110,1.931,3148,2.55,3149,2.55,3150,2.55,3151,2.55,3152,2.55,3153,2.55,3154,6.035,3155,2.55,3156,4.146,3157,4.146,3158,2.55,3159,2.55,3160,2.55,3161,2.55,3162,2.55,3163,2.55,3164,2.55,3165,4.146,3166,2.55,3167,2.55,3168,2.55,3169,2.55,3170,2.55,3171,2.55,3172,2.55,3173,2.55,3174,2.55,3175,2.55]],["t/1495",[0,0.579,67,4.571,105,1.935,398,3.062,1208,3.632,1226,2.195,1530,2.389,1665,2.947,1666,2.346,1855,3.044,1859,2.947,1891,3.702,1967,5.286,2428,2.861,2712,2.069,2773,4.376,2781,2.947,2782,3.473,3070,3.044,3072,5.95,3097,3.438,3176,3.892,3177,3.892,3178,3.892,3179,3.892,3180,3.892]],["t/1497",[0,0.595,67,2.778,776,2.882,1530,3.996,1541,3.279,1666,2.778,1855,3.603,1891,2.978,2712,4.012,2756,2.94,2773,4.153,2782,2.778,3110,3.489,3181,4.608,3182,4.608,3183,4.608,3184,4.608,3185,4.608]],["t/1499",[0,0.497,1212,3.396,1234,4.837,1610,6.336,2845,6.336,3186,7.899,3187,7.899,3188,7.899]],["t/1502",[0,0.565,19,3.203,3189,5.852,3190,5.852,3191,5.852,3192,5.852,3193,5.852,3194,5.852,3195,5.852,3196,5.852,3197,5.852,3198,7.912,3199,5.852,3200,5.852,3201,5.852,3202,5.852,3203,5.852,3204,5.852,3205,5.852,3206,5.852,3207,5.852,3208,5.852,3209,5.852]],["t/1504",[0,0.53,1993,4.155,2155,6.237,2810,6.164,3210,5.181,3211,6.605,3212,4.704,3213,4.704,3214,6.605,3215,5.181,3216,5.181,3217,4.704,3218,4.704,3219,5.181,3220,5.181,3221,5.181,3222,5.181,3223,5.181,3224,7.275,3225,7.275,3226,5.181,3227,5.181,3228,5.181,3229,5.181,3230,5.181,3231,5.181,3232,5.181,3233,5.181]],["t/1506",[3211,6.548,3212,6.548,3213,6.548,3214,8.233,3217,6.548,3218,8.233,3234,7.211,3235,7.211,3236,7.211,3237,7.211,3238,7.211,3239,7.211,3240,7.211,3241,7.211]],["t/1508",[0,0.58,1934,6.336,3242,7.899,3243,7.899,3244,7.899]],["t/1510",[0,0.358,377,4.036,756,5.543,1212,3.795,1234,4.451,2135,4.488,2404,5.855,2957,7.479,2958,6.274,3143,5.855,3245,8.826,3246,6.91,3247,6.91,3248,6.91]],["t/1512",[3,3.651,3249,8.889,3250,8.889]],["t/1514",[1868,7.532,1872,7.532,3251,7.129]],["t/1517",[0,0.437,126,5.99,478,6.766,3251,8.003,3252,8.436]],["t/1519",[0,0.569,6,2.464,1533,3.749,1971,3.446,2547,5.508,3251,7.322,3253,5.508,3254,6.066,3255,6.066,3256,8.289,3257,6.066,3258,6.066,3259,5.508,3260,7.36,3261,6.066,3262,6.066]],["t/1521",[0,0.501,6,3.553,1533,4.212,3251,7.749,3253,6.188,3256,7.943,3259,6.188,3260,6.188,3263,6.815,3264,6.815,3265,6.815,3266,6.815,3267,6.815,3268,6.815]],["t/1523",[0,0.578,1042,5.521,2017,6.589,2424,7.06,3269,7.06,3270,7.776]],["t/1526",[1533,5.593,1817,6.66]],["t/1528",[0,0.532,377,3.556,1212,3.343,1856,6.014,1857,5.955,1858,5.721,1859,5.346,1860,6.589]],["t/1531",[284,4.388,1856,6.192,1861,7.846,1862,7.408,1863,7.408,1864,7.408]],["t/1533",[0,0.482,153,4.255,1861,5.051,1865,7.544,1866,5.718,1867,7.574,1868,7.88,1869,5.718,1870,5.718,1871,5.718,1872,7.041,1873,5.718,1874,5.718,1875,5.718,1876,5.718,1877,5.718]],["t/1535",[0,0.56,1878,6.148,1879,6.148,1880,7.288,1881,7.288,1882,7.288]],["t/1539",[0,0.59,1515,3.263,1883,6.501,1884,5.508,1885,6.328,1886,7.36,1887,7.36,1888,5.508,1889,5.508,1890,5.508]],["t/1541",[0,0.569,15,1.691,26,2.761,231,3.371,1515,2.864,1560,3.918,1885,4.259,1891,2.212,1892,4.835,1893,4.835,1894,3.092,1895,8.379,1896,4.835,1897,2.505,1898,4.835,1899,4.835,1900,6.734,1901,5.954,1902,4.835,1903,4.835,1904,4.835,1905,4.835,1906,4.835,1907,3.092,1908,2.505,1909,3.092,1910,3.092,1911,3.092,1912,3.092,1913,3.092,1914,2.885,1915,3.092,1916,3.092,1917,3.918,1918,4.835,1919,3.092,1920,3.092]],["t/1543",[0,0.577,1515,4.584,1885,5.535,1891,3.54,1897,6.973,1908,4.817,1921,3.955,1922,5.944,1923,5.944,1924,5.547]],["t/1545",[0,0.59,6,1.08,26,0.912,67,2.39,1283,2.698,1479,1.774,1481,2.835,1515,4.34,1632,1.726,1633,1.774,1659,1.643,1917,5.619,1921,2.637,1925,2.413,1926,2.413,1927,2.413,1928,2.413,1929,2.413,1930,2.252,1931,3.212,1932,2.413,1933,2.413,1934,7.537,1935,5.337,1936,4.614,1937,1.887,1938,2.413,1939,3.964,1940,3.964,1941,2.413,1942,2.413,1943,2.413,1944,3.964,1945,2.413,1946,2.413,1947,2.413,1948,2.413,1949,1.827,1950,2.132,1951,2.413,1952,2.413]],["t/1547",[0,0.587,6,1.355,55,2.016,105,1.506,177,2.227,1212,1.434,1251,1.973,1515,1.795,1541,1.526,1560,2.455,1562,1.973,1632,3.403,1633,3.498,1659,2.062,1859,3.603,1935,4.805,1936,3.403,1937,2.369,1949,2.294,1953,3.029,1954,3.029,1955,2.827,1956,5.877,1957,3.029,1958,3.029,1959,3.029,1960,5.877,1961,3.029,1962,3.029,1963,3.029,1964,3.029,1965,3.029,1966,4.759,1967,2.112,1968,3.029,1969,3.029,1970,3.029,1971,1.895,1972,2.676,1973,3.029,1974,3.029,1975,4.759,1976,4.204,1977,3.029,1978,3.029,1979,2.676,1980,3.029]],["t/1549",[0,0.582,20,1.759,41,2.866,46,2.125,67,0.858,1212,0.674,1476,1.113,1481,1.018,1541,0.717,1546,3.021,1548,5.973,1549,1.201,1656,1.046,1856,4.181,1878,1.201,1879,1.201,1921,1.679,1931,3.331,1936,2.43,1967,0.992,1981,5.201,1982,1.423,1983,1.113,1984,3.398,1985,1.423,1986,2.523,1987,1.423,1988,4.11,1989,1.423,1990,1.423,1991,1.423,1992,1.423,1993,1.257,1994,1.423,1995,1.423,1996,2.523,1997,2.753,1998,2.523,1999,4.11,2000,2.523,2001,1.423,2002,1.423,2003,1.423,2004,1.423,2005,3.001,2006,1.423,2007,1.423,2008,1.423,2009,3.72,2010,2.354,2011,2.523,2012,1.423,2013,1.423,2014,1.423,2015,1.328,2016,1.423,2017,1.328,2018,2.523,2019,1.423,2020,1.328,2021,1.201,2022,1.423,2023,1.423,2024,1.423,2025,1.423,2026,7.466,2027,2.523,2028,1.423,2029,1.423,2030,1.423,2031,2.523,2032,3.631,2033,1.423,2034,1.423,2035,1.423,2036,2.523,2037,2.523,2038,1.423,2039,1.423,2040,1.423,2041,2.523,2042,2.229,2043,2.523,2044,2.523,2045,2.523,2046,1.423,2047,1.423,2048,1.423,2049,5.201,2050,2.523,2051,2.523,2052,2.523,2053,1.423,2054,1.423]],["t/1552",[0,0.594,1141,4.785,1226,3.773,1479,4.918,1536,3.147,1935,4.185,1936,2.669,2055,5.583,2056,7.427,2057,3.731,2058,3.731,2059,5.583,2060,3.731,2061,3.731,2062,3.731,2063,5.583,2064,5.583,2065,4.71,2066,3.296,2067,3.731,2068,3.731,2069,3.731,2070,3.731]],["t/1554",[0,0.597,1226,2.928,1867,4.379,1936,5.058,2066,4.586,2071,5.191,2072,5.191,2073,5.191,2074,8.635,2075,5.191,2076,5.191,2077,5.191]],["t/1557",[0,0.576,95,3.068,398,3.806,1226,1.959,1251,2.261,1515,2.057,1659,2.364,1735,5.658,1917,2.814,1921,3.519,1935,2.172,1976,3.068,2078,2.629,2079,3.473,2080,3.473,2081,3.473,2082,3.473,2083,3.241,2084,5.289,2085,3.473,2086,3.241,2087,3.473,2088,3.473,2089,3.473,2090,3.473,2091,3.473,2092,3.473,2093,3.473,2094,3.473,2095,3.473,2096,3.473,2097,3.473,2098,3.473,2099,3.473,2100,3.473,2101,3.473,2102,3.473,2103,5.289,2104,5.289,2105,5.289,2106,3.473,2107,3.473,2108,3.473,2109,3.473,2110,3.473,2111,3.473]],["t/1559",[0,0.593,26,1.588,105,2.09,1220,2.861,1234,1.441,1510,2.188,1515,5.391,1541,3.07,1632,3.007,1633,3.09,1856,2.931,1883,6.673,1885,3.007,1897,2.102,1921,4.772,1949,3.183,1971,2.63,1979,2.291,2112,2.594,2113,6.096,2114,2.594,2115,4.296,2116,4.683,2117,2.594,2118,2.594,2119,2.594,2120,2.594,2121,2.102,2122,2.594]],["t/1561",[0,0.574,93,2.219,126,3.626,177,4.228,377,1.476,945,2.735,1055,2.735,1070,2.375,1111,2.155,1220,4.45,1513,1.995,1515,5.644,1541,2.335,1632,2.096,1684,2.375,1728,2.472,1856,3.232,1885,3.316,1908,2.375,1921,5.04,1950,2.589,1967,2.043,1971,2.9,1972,2.589,2042,2.589,2078,2.219,2115,3.757,2121,3.757,2123,2.931,2124,2.931,2125,2.931,2126,2.375,2127,2.931,2128,2.931,2129,2.931,2130,2.931,2131,2.931,2132,2.931,2133,2.931,2134,2.931,2135,2.096,2136,2.931]],["t/1563",[55,5.011,377,3.793,1541,3.793,2712,4.003,2715,6.104,2782,4.54,2879,7.532]],["t/1565",[10,1.973,12,3.215,55,3.166,196,2.167,377,3.354,383,2.827,556,5.882,1042,3.721,1061,4.204,1079,2.676,1212,3.804,1220,2.062,1234,2.643,1283,3.239,1541,2.397,1613,2.455,1656,3.498,1664,2.062,1678,2.227,1726,2.555,1891,3.046,1971,2.977,2247,2.827,2281,2.455,2421,2.827,2435,2.555,2697,4.441,2705,2.676,2712,4.083,2719,2.676,2738,2.676,2755,2.676,2759,2.455,2764,2.676,2782,2.869,2871,2.827,2880,3.029,2881,3.029,2882,3.029,2883,3.029,2884,3.029,2885,2.676,2886,4.759,2887,4.759,2888,3.029,2889,3.029,2890,4.759,2891,3.029,2892,3.029,2893,3.029,2894,3.029,2895,3.029,2896,2.676,2897,2.676,2898,2.676,2899,3.029,2900,3.029,2901,3.029,2902,3.029,2903,3.029,2904,2.827]],["t/1567",[0,0.58,1891,4.175,2712,3.584,2782,4.065,2905,6.743,2906,6.743]],["t/1569",[0,0.573,1367,5.699,1891,4.023,2907,7.288]],["t/1571",[0,0.582,41,2.929,307,2.716,811,4.461,1216,5.658,1234,2.937,1891,1.588,1971,3.308,1983,2.716,2142,4.461,2155,4.581,2392,3.241,2840,3.068,2908,3.473,2909,3.473,2910,3.473,2911,3.473,2912,4.672,2913,3.068,2914,3.068,2915,3.473,2916,3.473,2917,3.473,2918,3.473,2919,3.473,2920,3.473,2921,3.473,2922,3.068,2923,3.473,2924,3.473,2925,3.473,2926,3.068,2927,3.473,2928,3.473,2929,6.405,2930,3.473,2931,5.289,2932,3.473,2933,3.473,2934,2.814,2935,3.473]],["t/1573",[0,0.558,811,4.233,1258,4.683,2142,4.233,2155,5.651,2913,4.433,2914,4.433,2922,4.433,2926,4.433,2936,5.018,2937,5.018,2938,5.018,2939,5.018,2940,5.018,2941,5.018,2942,5.018,2943,5.018,2944,5.018,2945,5.018,2946,6.909,2947,5.018,2948,5.018,2949,5.018,2950,5.018,2951,5.018,2952,5.018]],["t/1576",[0,0.589,19,3.836,153,3.589,1519,4.436,1891,3.698,2772,5.367,2953,6.363,2954,5.621]],["t/1583",[0,0.571,1504,5.13,1891,3.281,2897,6.336,2954,6.336,2955,7.172]],["t/1585",[0,0.585,1042,5.521,2845,6.237,3269,7.06,3271,7.776]],["t/1587",[0,0.533,4,6.808]],["t/1590",[0,0.507,377,3.731,1212,3.508,1541,3.731,2768,6.913,3272,8.159,3273,8.159]],["t/1592",[0,0.587,26,0.713,55,1.256,105,0.939,129,1.1,134,2.722,377,2.128,398,1.715,614,1.316,776,1.181,1212,0.894,1226,1.065,1234,1.049,1235,1.668,1473,1.593,1476,3.909,1481,1.35,1504,2.308,1518,1.668,1541,2.128,1664,4.449,1716,3.011,1891,3.762,1937,1.476,2135,1.35,2200,2.101,2428,3.106,2575,1.888,2708,3.909,2712,1.004,2734,2.372,2772,5.161,2773,2.058,2777,1.593,2781,2.443,2782,1.138,2898,1.668,2934,1.53,3072,5.648,3073,6.544,3090,1.762,3274,2.079,3275,2.079,3276,2.079,3277,2.079,3278,2.079,3279,2.079,3280,3.554,3281,2.079,3282,2.079,3283,2.079,3284,2.079,3285,2.079,3286,2.079,3287,2.079]],["t/1594",[0,0.546,154,5.015,398,4.222,1212,2.93,1234,3.437,1513,4.212,1534,5.775,2725,4.839,2787,5.775,3288,6.815,3289,6.815,3290,6.815,3291,8.748,3292,6.815]],["t/1596",[0,0.522,377,3.924,3293,8.582,3294,7.792]],["t/1598",[2701,8.37]],["t/1600",[26,0.853,105,1.122,129,1.314,262,1.903,305,1.765,377,3.75,535,1.659,614,1.573,776,1.412,1052,2.106,1070,1.829,1141,1.614,1212,3.773,1220,1.536,1234,1.253,1283,1.536,1367,2.932,1513,2.552,1530,1.385,1537,4.727,1541,3.892,1543,1.829,1562,2.442,1810,2.106,1891,2.201,1949,1.709,1997,3.039,2009,1.614,2021,1.903,2065,1.903,2078,1.709,2200,1.469,2202,3.163,2210,2.106,2212,1.903,2422,3.312,2440,3.312,2493,1.993,2531,2.106,2702,2.256,2703,1.993,2704,2.256,2705,1.993,2706,2.106,2707,1.993,2708,4.382,2709,2.256,2710,2.256,2711,2.256,2712,1.199,2713,2.256,2714,1.829,2715,1.829,2716,2.256,2717,2.256,2718,2.256,2719,4.25,2720,2.256,2721,2.256,2722,2.256,2723,2.256,2724,2.256,2725,1.765,2726,1.993,2727,2.256,2728,1.993,2729,2.256,2730,2.256,2731,1.993,2732,2.256,2733,2.256,2734,1.659,2735,2.256,2736,1.993,2737,2.256,2738,1.993,2739,2.256,2740,2.256,2741,2.256,2742,1.993,2743,1.993,2744,2.256,2745,2.256,2746,1.993,2747,2.256,2748,1.993,2749,1.993,2750,2.256,2751,2.256,2752,2.256,2753,2.256,2754,1.993,2755,1.993,2756,1.44,2757,1.993,2758,1.993,2759,1.829,2760,2.256,2761,2.256,2762,2.256,2763,1.993,2764,1.993,2765,2.106,2766,2.256,2767,2.256,2768,2.106]],["t/1602",[0,0.593,20,2.384,46,2.139,377,1.722,1212,3.005,1234,1.899,1504,5.082,1541,3.578,1664,2.328,1891,1.564,2200,2.227,2712,2.779,2714,2.771,2725,2.674,2734,2.514,2736,3.021,2748,3.021,2749,3.021,2756,4.533,2757,3.021,2758,3.021,2769,4.236,2770,3.42,2771,3.192,2772,2.885,2773,2.182,2774,3.42,2775,3.42,2776,3.42,2777,2.885,2778,3.42,2779,5.227,2780,3.42]],["t/1605",[0,0.586,1226,2.962,1251,3.42,1519,3.661,1541,3.59,1891,3.26,2428,3.86,2734,7.033,2781,3.976,2782,3.166,2783,5.252,2784,5.252]],["t/1607",[0,0.591,6,0.93,1159,3.094,1212,0.985,1251,1.354,1276,1.837,1331,1.941,1558,1.575,1659,2.384,1891,0.951,1983,4.163,2009,1.487,2141,3.268,2276,1.941,2279,1.754,2376,1.837,2611,1.837,2703,3.094,2712,1.105,2714,1.685,2756,2.234,2777,1.754,2785,5.941,2786,4.537,2787,1.941,2788,1.941,2789,2.08,2790,2.08,2791,2.08,2792,4.537,2793,2.08,2794,1.754,2795,2.08,2796,3.502,2797,2.08,2798,2.08,2799,2.08,2800,2.08,2801,2.08,2802,2.08,2803,2.08,2804,2.08,2805,3.502,2806,2.08,2807,2.08,2808,2.08,2809,2.08,2810,4.234,2811,2.08,2812,2.08,2813,2.08,2814,2.08,2815,2.08,2816,3.502,2817,2.08,2818,2.08,2819,2.08,2820,2.08,2821,2.08,2822,3.502,2823,3.502,2824,2.08,2825,2.08,2826,2.08,2827,2.08,2828,2.08,2829,2.08,2830,2.08,2831,2.08,2832,2.08,2833,2.08,2834,2.08,2835,2.08,2836,2.08,2837,2.08,2838,2.08,2839,2.08,2840,4.008,2841,2.08]],["t/1609",[0,0.519,129,2.553,273,3.873,296,3.698,775,3.873,2433,4.091,2677,4.384,2773,5.117,2794,3.698,3295,4.828,3296,6.92,3297,3.873,3298,4.828,3299,4.828,3300,4.828,3301,4.828,3302,4.828,3303,4.828,3304,4.828,3305,8.834,3306,8.834,3307,8.834,3308,6.92,3309,4.828,3310,6.92,3311,4.828,3312,4.828,3313,4.828,3314,4.828]],["t/1611",[0,0.469,3,3.717]],["t/1613",[0,0.533,4,6.808]],["t/1615",[0,0.469,54,5.878]],["t/1617",[0,0.574,6,2.547,26,2.717,43,3.707,44,3.383,46,1.448,105,3.136,126,1.81,129,4.803,134,5.32,137,3.103,221,2.044,237,4.613,614,3.415,674,2.995,676,3.709,1111,1.701,1533,2.606,1741,2.314,1817,1.876,1819,2.16,1820,1.952,2493,2.044,3315,2.549,3316,2.549,3317,2.549,3318,2.549,3319,2.549,3320,4.217,3321,2.549,3322,4.217,3323,4.217,3324,2.549,3325,2.549,3326,2.549,3327,4.217,3328,5.395,3329,4.217,3330,2.549,3331,2.549,3332,4.217,3333,2.549,3334,2.549,3335,2.549,3336,2.549,3337,2.549,3338,2.549,3339,2.549,3340,2.549,3341,2.549,3342,2.549,3343,2.549,3344,2.549,3345,2.549,3346,4.217,3347,2.549]],["t/1619",[126,7.381]],["t/1621",[0,0.577,19,4.135,26,2.592,43,4.467,45,5.194,105,3.411,129,3.996,153,3.869,1934,6.06,2654,7.583,3348,4.287,3349,6.346,3350,6.346,3351,6.346,3352,4.287,3353,6.346,3354,6.346,3355,4.287,3356,6.346,3357,4.287]],["t/1623",[0,0.374,153,3.693,299,4.565,1931,5.306,1935,4.096,3358,7.211,3359,7.211,3360,7.211,3361,7.211,3362,7.211,3363,7.211,3364,7.211,3365,7.211,3366,7.211,3367,7.211,3368,7.211]],["t/1625",[3369,9.219]],["t/1627",[10,2.373,247,1.651,262,1.839,305,1.705,377,3.322,398,2.495,525,2.035,535,1.603,769,2.035,776,2.936,1007,1.705,1080,1.926,1141,1.559,1177,1.839,1212,2.889,1234,2.024,1235,1.926,1504,3.357,1530,3.367,1533,1.484,1535,3.4,1537,1.839,1538,2.035,1541,2.762,1546,1.603,1548,3.074,1549,1.839,1656,1.603,1683,1.767,1726,1.839,1729,2.035,1781,1.926,1801,2.035,1816,1.926,1834,1.27,1857,3.074,1858,2.953,1891,0.997,1937,1.705,1997,1.767,2005,1.926,2009,1.559,2032,3.219,2126,1.767,2135,3.357,2190,1.926,2200,3.057,2202,1.839,2212,3.074,2218,2.035,2435,1.839,2707,1.926,2708,3.671,2712,2.495,2725,1.705,2726,1.926,2728,1.926,2742,1.926,2743,1.926,2746,1.926,2754,1.926,2756,2.325,2759,2.953,2763,1.926,2773,4.466,2794,1.839,2885,1.926,2896,1.926,2993,2.035,3087,2.18,3088,2.18,3089,1.926,3090,2.035,3091,2.18,3092,2.18,3093,2.18,3094,2.18,3095,2.18,3096,2.18,3097,1.926,3098,2.18,3099,2.18,3100,2.18,3101,2.18,3102,2.18,3103,2.18,3104,2.18,3105,2.18,3106,2.18,3107,2.18,3108,2.18,3109,2.18,3110,3.554,3111,2.18,3112,2.18,3113,2.18,3114,2.18,3115,2.18,3116,2.18,3117,2.18,3118,2.18,3119,2.18,3120,2.18,3121,2.18,3122,2.18,3123,2.18,3124,2.18]],["t/1629",[0,0.591,776,3.363,1504,5.857,1530,5.027,1891,2.459,2009,3.846,2708,4.205,2712,2.858,2756,3.43,2769,4.357,3110,6.2]],["t/1631",[0,0.575,12,2.035,67,2.242,153,1.26,358,1.885,776,3.484,1042,2.908,1141,1.598,1212,1.058,1226,1.26,1519,1.558,1530,1.371,1541,3.877,1562,1.455,1613,1.811,1640,3.251,1659,2.531,1664,2.531,1666,4.025,1772,1.974,1855,3.736,1891,3.728,1967,3.33,2200,3.111,2306,2.085,2712,2.96,2715,1.811,2731,1.974,2734,2.734,2769,1.811,2773,3.553,2781,3.617,2912,1.974,2934,1.811,3050,2.085,3055,2.085,3070,1.747,3073,3.736,3125,2.234,3126,2.234,3127,2.234,3128,2.234,3129,2.234,3130,2.234,3131,2.234,3132,2.234,3133,2.234,3134,2.234,3135,2.234,3136,2.234,3137,2.234,3138,2.234,3139,2.234,3140,2.234,3141,2.234,3142,2.234,3143,2.085,3144,2.234,3145,2.234,3146,2.234,3147,2.234]],["t/1634",[0,0.575,67,3.638,398,1.355,776,3.775,1399,6.197,1530,4.368,1665,1.931,1834,4.368,1891,3.255,1935,1.595,2149,5.091,2155,1.824,2200,3.93,2428,4.437,2712,1.355,2756,1.627,2773,1.627,2782,2.499,3072,3.048,3089,2.252,3110,1.931,3148,2.55,3149,2.55,3150,2.55,3151,2.55,3152,2.55,3153,2.55,3154,6.035,3155,2.55,3156,4.146,3157,4.146,3158,2.55,3159,2.55,3160,2.55,3161,2.55,3162,2.55,3163,2.55,3164,2.55,3165,4.146,3166,2.55,3167,2.55,3168,2.55,3169,2.55,3170,2.55,3171,2.55,3172,2.55,3173,2.55,3174,2.55,3175,2.55]],["t/1636",[0,0.579,67,4.571,105,1.935,398,3.062,1208,3.632,1226,2.195,1530,2.389,1665,2.947,1666,2.346,1855,3.044,1859,2.947,1891,3.702,1967,5.286,2428,2.861,2712,2.069,2773,4.376,2781,2.947,2782,3.473,3070,3.044,3072,5.95,3097,3.438,3176,3.892,3177,3.892,3178,3.892,3179,3.892,3180,3.892]],["t/1638",[0,0.573,377,2.585,756,4.533,776,3.21,1212,2.43,1226,2.894,1234,2.85,1367,4.013,1513,3.493,1515,3.04,1530,3.15,1891,2.347,2078,3.886,2200,3.342,2756,4.476,2773,4.476,3070,4.013,3294,7.016,3370,5.652,3371,5.652,3372,5.652,3373,5.652]],["t/1640",[0,0.595,67,2.778,776,2.882,1530,3.996,1541,3.279,1666,2.778,1855,3.603,1891,2.978,2712,4.012,2756,2.94,2773,4.153,2782,2.778,3110,3.489,3181,4.608,3182,4.608,3183,4.608,3184,4.608,3185,4.608]],["t/1643",[2115,5.812,2404,6.693,3374,7.899,3375,7.899,3376,7.899,3377,7.899,3378,7.899,3379,7.899,3380,7.899,3381,7.172]],["t/1645",[0,0.443,154,3.935,368,4.856,1513,3.305,1860,4.532,2788,4.532,2904,6.303,3381,4.856,3382,5.348,3383,5.348,3384,8.552,3385,5.348,3386,5.348,3387,5.348,3388,5.348,3389,5.348,3390,5.348,3391,5.348,3392,5.348,3393,5.348,3394,7.438,3395,5.348,3396,7.438,3397,7.438,3398,8.552,3399,5.348,3400,5.348,3401,5.348,3402,5.348,3403,5.348]],["t/1647",[0,0.478]],["t/1649",[0,0.562,20,5.131,1202,7.36,2281,5.964,3404,6.066,3405,5.508,3406,9.129,3407,6.066,3408,6.066,3409,6.066,3410,5.508,3411,9.129,3412,6.066,3413,6.066,3414,6.066]],["t/1651",[0,0.437,1070,6.207,3415,8.436,3416,8.436,3417,8.436,3418,8.436]],["t/1653",[0,0.528,3405,7.929,3410,7.929]],["t/1656",[3419,9.219]],["t/1658",[0,0.521,50,3.995,299,4.701,1021,6.743,3420,7.427,3421,10.052,3422,7.427,3423,7.427,3424,7.427,3425,7.427]],["t/1661",[0,0.599,26,3.409,105,2.879,284,4.507,3426,6.378,3427,6.378]],["t/1663",[0,0.592,3428,7.899,3429,7.899]],["t/1665",[0,0.581,3,3.465]],["t/1667",[0,0.528,3430,7.929,3431,7.929]],["t/1669",[0,0.604,3,3.302,284,4.88,3000,5.078,3432,5.442,3433,5.442]],["t/1671",[3,3.651,212,7.57]],["t/1673",[0,0.478]],["t/1675",[0,0.601,6,3.622,15,3.684,32,1.972,46,1.934,50,1.832,52,2.273,93,3.661,3434,3.092,3435,6.734,3436,5.954,3437,5.954,3438,6.734,3439,7.748,3440,3.092,3441,3.092,3442,4.835,3443,3.092,3444,3.092]],["t/1677",[0,0.599,3,0.949,6,3.57,10,1.367,11,1.854,12,1.148,13,1.429,14,1.429,15,3.763,16,1.429,17,1.543,26,0.793,32,2.252,46,1.313,47,3.572,48,1.701,50,3.538,52,3.358,93,3.458,105,1.755,284,1.243,543,1.854,1225,1.959,3434,2.099,3435,5.355,3436,4.567,3437,4.567,3438,5.972,3439,6.47,3440,2.099,3441,2.099,3442,3.53,3443,2.099,3444,2.099,3445,2.312,3446,3.887,3447,2.312,3448,2.312,3449,2.312,3450,2.312,3451,2.312,3452,2.312]],["t/1680",[0,0.6,3,2.15,19,4.628,231,4.639,1820,4.01,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753,3460,4.753,3461,4.753,3462,4.753,3463,4.753]],["t/1682",[0,0.469,3,3.717]],["t/1684",[0,0.533,4,6.808]],["t/1687",[0,0.604,3,3.199,284,4.764,3000,4.845,3430,5.191,3431,5.191,3432,5.191,3433,5.191]],["t/1689",[0,0.6,3,2.15,19,4.628,231,4.639,1820,4.01,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753,3460,4.753,3461,4.753,3462,4.753,3463,4.753]],["t/1692",[0,0.563]],["t/1694",[0,0.554,177,5.19,3464,9.501,3465,7.776,3466,7.776,3467,7.776,3468,7.776]],["t/1696",[0,0.488,26,2.626,3469,7.656,3470,7.656,3471,7.656,3472,7.656,3473,7.656,3474,7.656,3475,7.656,3476,7.656,3477,7.656]],["t/1704",[3478,8.889,3479,8.889,3480,8.889]],["t/1706",[0,0.501,3,3.593,105,3.077,154,6.437,1226,3.49,1534,5.775,3481,8.748,3482,6.815,3483,6.815,3484,6.815,3485,6.815,3486,6.815,3487,6.815,3488,6.815,3489,6.815]],["t/1708",[0,0.553,26,2.438,237,5.23,1470,6.023,1971,4.037,3490,7.108,3491,7.108,3492,8.986,3493,7.108,3494,7.108,3495,7.108,3496,7.108]],["t/1710",[0,0.507,1633,5.445,1834,4.315,2265,7.408,3497,8.159,3498,8.159,3499,8.159]],["t/1713",[3500,9.219]],["t/1715",[0,0.424,3,3.358,26,1.689,45,3.385,105,2.223,237,5.164,299,3.117,1471,4.471,1834,2.604,1935,2.797,3501,4.924,3502,4.924,3503,8.177,3504,7.018,3505,4.924,3506,4.924,3507,4.924,3508,4.924,3509,4.924,3510,8.177,3511,4.924,3512,4.924,3513,4.924,3514,4.924,3515,4.924,3516,4.924,3517,4.924,3518,4.924,3519,4.924,3520,4.924,3521,4.924,3522,7.018,3523,4.924,3524,4.924,3525,4.924,3526,4.924,3527,4.924]],["t/1717",[0,0.385,26,2.548,105,3.353,129,3.928,1408,6.293,1834,3.928,3528,7.427,3529,7.427,3530,7.427,3531,7.427,3532,7.427,3533,7.427,3534,7.427,3535,7.427]],["t/1719",[0,0.563,3,3.097,26,2.586,105,3.404,129,3.987,1470,6.389,2116,6.047,3536,7.54,3537,7.54]],["t/1721",[3,3.651,3538,8.889,3539,8.889]],["t/1723",[26,3.168,153,5.148,299,6.363,3540,7.826,3541,7.427,3542,7.427,3543,7.427,3544,7.427]],["t/1725",[26,2.846,153,5.059,299,5.251,3540,7.029,3545,8.295,3546,8.295]],["t/1727",[26,2.754,153,4.111,299,6.132,1834,4.245,3540,6.802,3547,8.027,3548,8.027,3549,8.027]],["t/1729",[0,0.423,1834,5.541,3550,8.159,3551,8.159,3552,8.159,3553,8.159]],["t/1731",[1971,5.784,3554,8.732,3555,8.732]],["t/1733",[0,0.397,26,2.626,153,4.819,299,4.846,2376,6.14,3556,7.656,3557,7.656,3558,7.656,3559,7.656,3560,7.656,3561,7.656]],["t/1735",[0,0.559,3562,8.732]],["t/1738",[3297,7.259,3563,7.669]],["t/1740",[0,0.507,26,2.799,105,3.683,3297,7.846,3563,8.289]],["t/1742",[0,0.507,26,2.799,105,3.683,3297,7.846,3563,8.289]]],"invertedIndex":[["",{"_index":0,"t":{"874":{"position":[[0,9],[21,6],[41,4]]},"876":{"position":[[0,39],[40,24]]},"878":{"position":[[4,12]]},"880":{"position":[[0,15],[21,2]]},"882":{"position":[[4,93],[98,5],[264,5]]},"884":{"position":[[57,1],[131,1],[139,2],[144,2],[149,2],[155,1],[164,1],[179,2],[182,6],[198,1],[204,1],[206,2],[209,6],[216,1],[218,2],[221,5],[238,1],[245,1],[267,1],[279,2],[297,1],[352,1],[364,2],[369,2],[376,2],[382,1],[391,1],[404,1],[415,2],[428,1],[457,1],[459,1],[471,1]]},"886":{"position":[[0,47]]},"890":{"position":[[57,1],[70,1],[80,2],[94,1],[102,1],[106,1],[113,1],[127,1],[132,1],[136,1],[140,1],[145,1],[149,1],[157,2],[164,1],[172,2],[178,1],[185,2],[190,2],[199,1],[201,1],[213,1]]},"892":{"position":[[0,20],[94,1],[99,1],[103,1],[107,1],[112,1],[116,1],[122,2],[125,5],[133,2],[140,1],[165,1],[181,1],[188,1],[205,1],[211,1],[217,1],[222,1],[230,1]]},"896":{"position":[[21,2],[58,2],[91,2],[125,2],[128,2],[142,2],[145,4],[160,2],[163,5],[184,2],[187,8],[210,2],[213,7],[221,2],[269,1],[279,2],[299,2]]},"898":{"position":[[19,1],[44,2],[47,7],[67,2],[70,7],[78,2]]},"900":{"position":[[9,1],[31,2],[57,2],[60,6],[78,2],[81,2],[86,2],[101,2],[119,2],[128,2],[131,21]]},"902":{"position":[[46,2],[49,6],[67,2],[70,6],[87,2],[90,6],[106,2],[109,6]]},"904":{"position":[[0,2],[3,6],[77,2],[80,10],[94,4],[102,4],[122,2],[125,5]]},"910":{"position":[[12,2],[15,7],[23,2],[60,2],[63,7],[84,5],[133,2],[171,2],[207,2],[214,6],[238,2],[271,2]]},"912":{"position":[[15,2],[62,1],[241,12]]},"914":{"position":[[28,2],[31,10],[42,2],[45,7],[53,2],[56,2],[59,2],[62,2],[65,2],[84,2],[104,2],[122,2],[139,2],[160,2],[180,2],[191,6]]},"918":{"position":[[5,1],[9,4],[23,7],[40,8],[54,1],[62,1],[66,6],[77,4],[87,1],[93,4],[103,1],[109,1],[113,4],[123,1],[129,1],[134,4],[144,1],[149,4],[159,1],[169,1],[173,7],[186,1],[196,1],[200,10],[216,1],[220,3],[229,1],[237,1],[241,3],[248,4],[258,1],[263,5],[273,6],[284,6]]},"921":{"position":[[0,3],[4,2],[7,3],[11,2],[14,3],[18,2],[30,4],[43,6],[58,6],[73,4],[87,4],[101,5],[114,4],[128,5],[143,4],[157,6],[173,6],[203,5],[218,8],[234,4]]},"923":{"position":[[21,3],[25,2],[28,3],[32,2],[35,3],[39,2],[52,4],[63,4],[75,2],[87,3],[97,1],[103,6],[115,2],[125,3],[133,2],[142,2],[165,4]]},"927":{"position":[[0,10],[39,1],[45,1],[75,1],[82,1],[88,1],[95,4],[194,11],[255,7],[344,7],[430,6],[527,1],[557,1],[600,1],[638,1],[675,1],[681,1],[691,1],[697,1],[723,1],[725,1],[768,1],[770,1]]},"930":{"position":[[18,1],[71,2]]},"932":{"position":[[0,10],[34,1],[36,1],[70,12],[118,1],[137,1],[160,1],[186,1],[237,1],[239,1],[301,2],[304,9],[314,8],[345,1],[398,15],[423,1],[457,2],[476,1],[511,2],[514,1],[561,1],[587,8],[610,8],[631,10],[667,1],[695,1],[716,1],[726,1],[750,1],[771,1],[773,8],[813,1],[815,3],[819,3],[823,3],[840,1],[842,1]]},"934":{"position":[[77,1]]},"937":{"position":[[7,1],[18,35],[61,1],[128,1]]},"939":{"position":[[0,6],[24,1],[39,19],[71,1],[86,1],[114,1]]},"941":{"position":[[23,1],[51,1],[58,1],[67,3],[71,1],[78,1],[94,1]]},"943":{"position":[[0,3]]},"945":{"position":[[17,4],[31,9],[41,9],[58,18],[205,1],[222,1],[224,3],[496,17],[525,17],[549,17],[579,17],[739,7],[773,39],[837,1]]},"947":{"position":[[13,30],[44,11],[56,2],[59,2],[121,22],[156,20],[183,15],[208,15],[230,10],[246,15],[344,15],[377,16],[403,15],[428,18],[460,22],[555,10],[566,2],[569,2],[577,17],[609,20],[643,23],[679,2],[684,9],[699,14],[721,8],[732,9],[751,34],[797,20],[820,4],[868,17],[905,20],[941,15],[964,18],[993,18],[1024,25],[1065,25],[1099,22],[1135,29],[1181,29],[1222,22],[1253,12],[1279,13],[1300,12],[1325,13],[1352,24],[1382,8],[1403,9],[1423,24],[1455,35],[1503,16],[1530,5],[1536,2],[1539,2],[1600,10],[1631,11],[1664,11],[1693,16],[1710,5],[1716,2],[1719,2],[1737,11],[1770,10],[1793,28],[1835,4],[1858,9],[1873,2],[1888,4],[1893,8],[1902,2],[1905,2],[1922,19],[1954,20],[1987,26],[2026,23],[2050,5],[2056,2],[2059,2],[2071,17],[2103,4],[2114,2],[2132,9],[2159,9],[2194,10],[2215,9],[2225,4],[2230,2],[2233,2],[2244,13],[2277,18],[2306,11],[2327,12],[2350,9],[2370,11],[2382,8],[2391,2],[2394,2],[2417,19],[2461,10],[2476,13],[2502,13],[2520,13],[2546,13],[2572,16],[2609,16],[2643,23],[2684,23]]},"949":{"position":[[274,2],[323,2],[377,2],[451,2],[454,15],[480,2],[483,5],[498,2],[501,5],[522,2],[543,2],[546,4],[561,2],[564,14],[592,2],[595,6],[612,2],[615,15],[639,2],[642,21],[682,2],[778,2],[843,2],[933,2],[971,2],[1043,2],[1106,2],[1109,10],[1130,2],[1174,2],[1242,2],[1298,2],[1335,2],[1394,2],[1397,13],[1411,2],[1414,1],[1416,23],[1440,2],[1513,1],[1547,2],[1553,1],[1571,1],[1584,1],[1602,2],[1611,1],[1613,1],[1620,2],[1628,2],[1631,1],[1633,2],[1636,1],[1643,2],[1662,1]]},"951":{"position":[[219,2],[222,15],[246,2],[249,21],[287,2],[314,2],[339,2],[342,6],[363,2],[366,6],[382,2],[385,4],[400,2],[403,14],[430,2],[502,2],[565,2],[568,10],[589,2],[592,5],[607,2],[610,5],[626,2],[657,2],[703,2],[799,2],[864,2],[953,2],[987,2]]},"953":{"position":[[329,8],[338,3],[342,2],[354,8],[676,5],[682,4],[687,2],[701,4],[713,10],[724,3],[749,4],[763,4],[776,4],[789,6],[805,6],[822,4],[827,1],[829,5],[861,7],[885,11],[908,11],[928,9],[949,13],[973,17],[991,1],[1000,6],[1033,2],[1104,12],[1126,8],[1149,10],[1176,9]]},"955":{"position":[[149,2],[160,2]]},"957":{"position":[[336,2],[349,2],[359,1],[368,2],[519,2],[664,2],[667,4],[672,2],[681,1],[691,2],[783,1],[798,2],[892,2],[895,4],[900,2],[917,2],[965,2],[1001,2],[1004,4],[1009,2],[1022,2],[1025,6],[1043,2],[1046,6],[1064,2],[1067,6]]},"959":{"position":[[179,2],[182,2],[194,2],[197,2],[209,2],[212,4],[228,2],[253,2],[256,8]]},"961":{"position":[[184,2],[187,3],[200,2],[203,3],[218,2],[221,6],[238,2],[241,6],[259,2],[262,8],[281,2],[284,10]]},"963":{"position":[[124,2],[127,13],[151,2],[154,6],[171,2],[174,10],[195,2],[223,2],[226,25],[268,2],[271,21],[303,2],[306,8],[324,2],[327,16],[362,2],[365,8],[385,2],[388,8],[413,2],[416,23],[453,2],[456,15],[485,2],[488,15],[515,2],[518,19],[547,2],[550,18],[578,2],[581,8],[599,2],[602,8],[627,2],[630,13],[659,2],[662,16]]},"967":{"position":[[11,1],[20,5],[89,11],[108,24],[146,24],[171,2],[187,8],[211,1],[234,2],[240,2],[248,4],[255,1],[298,2],[305,7],[332,1],[336,5],[367,2],[374,6],[402,1],[406,5],[443,2],[446,1],[452,1],[456,5],[498,1],[503,3],[509,1],[515,4],[522,4],[544,5],[559,2],[565,7],[575,6],[592,2],[598,6],[607,7],[626,2],[632,3],[638,8],[657,2],[663,8],[680,2],[683,2],[689,2],[696,6],[716,2],[722,2],[729,9],[750,2],[753,1],[758,10],[783,2],[786,1],[791,2],[798,8],[820,2],[823,1],[828,10],[855,2],[858,1],[888,2],[891,1],[896,11],[921,2],[924,1],[929,2],[936,8],[960,2],[963,2],[980,2],[983,1],[988,12],[1015,1],[1020,2],[1026,2],[1029,1],[1034,7],[1045,1]]},"970":{"position":[[97,1],[103,1],[109,1],[115,1],[117,8],[148,1],[182,15],[207,1],[216,2],[235,1],[245,2],[248,1],[295,1],[321,8],[344,8],[365,10],[401,1],[429,1],[450,1],[452,8],[492,1],[514,1],[558,1],[600,1],[607,1],[689,1],[704,1],[706,8],[742,1],[840,1],[845,1],[854,1],[911,1],[918,1],[956,1],[966,1],[1018,2],[1024,1],[1065,1],[1067,1],[1069,1],[1083,1],[1085,8],[1121,1],[1188,2],[1197,1],[1199,2],[1208,2],[1211,1],[1213,2],[1288,1],[1293,1],[1302,1],[1325,1],[1344,1],[1351,1],[1389,1],[1399,1],[1451,2],[1457,1],[1525,2],[1534,1],[1536,2],[1543,2],[1546,1],[1548,2],[1557,1],[1572,1],[1574,1],[1588,1],[1598,1],[1632,1],[1647,2],[1655,1],[1657,2],[1664,2],[1667,1],[1669,2],[1686,1],[1688,1],[1697,2],[1718,1],[1720,1],[1740,1],[1946,1],[1963,2],[1966,14],[1991,1],[1998,1],[2021,2],[2030,2],[2033,1],[2035,2],[2043,2],[2057,2],[2060,14],[2257,1],[2280,1],[2287,1],[2313,2],[2325,2],[2328,1],[2330,2],[2338,2],[2360,2],[2377,1]]},"972":{"position":[[99,1],[105,1],[111,1],[117,1],[189,8],[220,1],[273,15],[298,1],[332,2],[351,1],[386,2],[389,1],[436,1],[462,8],[485,8],[506,10],[542,1],[570,1],[591,1],[601,1],[625,1],[646,1],[648,8],[688,1],[710,1],[754,1],[847,1],[854,1],[1038,1],[1053,1],[1055,1],[1137,2],[1175,1],[1205,1],[1338,1],[1340,1],[1419,1],[1501,1],[1649,1],[1751,1],[1899,1],[1901,1],[2126,1],[2128,1],[2194,1],[2278,1],[2337,1],[2374,1],[2416,1],[2469,1],[2502,1],[2514,1]]},"974":{"position":[[234,5],[259,5],[310,1],[329,1],[424,8],[448,4],[485,3],[580,4],[660,2],[693,10],[728,2],[764,1],[766,5],[790,1],[806,1],[865,1],[911,1],[955,1],[1004,1],[1025,2],[1031,1],[1043,1],[1045,1],[1058,1],[1092,1],[1094,11],[1106,11],[1118,5],[1124,7],[1132,7],[1267,6],[1283,1],[1289,6],[1347,1],[1352,6],[1410,1],[1415,7],[1495,6],[1531,1],[1553,1],[1565,1],[1577,1],[1603,1],[1635,2],[1659,1],[1771,1],[1773,7],[1788,1],[1832,1],[1834,8],[1851,1],[1856,1],[1863,1],[1865,6],[1893,1],[1898,1],[1900,1],[1913,1],[1915,2],[1988,3],[2004,1],[2070,2],[2100,7],[2151,6],[2184,4],[2204,10],[2262,1],[2328,7],[2368,1],[2370,5],[2427,1],[2451,1],[2477,5],[2494,8],[2503,1],[2510,1],[2563,1],[2621,9],[2631,1],[2633,1],[2635,2],[2638,8],[2647,2],[2650,11],[2663,15],[2702,1],[2715,1],[2795,2],[2868,1],[2897,1],[2926,1],[3030,4],[3038,1],[3109,1],[3132,1],[3160,1],[3198,1],[3200,1],[3212,1]]},"977":{"position":[[197,1],[218,2],[221,10],[278,2],[307,1],[309,2],[357,7],[400,2],[403,13],[456,2],[459,11],[523,2],[526,15],[584,2],[587,15],[614,1],[616,2],[619,10],[676,2],[705,1],[742,2],[745,14],[799,2],[802,11],[866,2],[869,15],[927,2],[930,15],[957,1],[959,2],[962,3],[988,1],[1063,1],[1065,2],[1068,4],[1090,1],[1151,1],[1255,1],[1333,3],[1337,2],[1340,9],[1350,1],[1352,2],[1355,4],[1378,1],[1465,1],[1467,2],[1470,4],[1493,1],[1580,1],[1582,2],[1585,4],[1609,1],[1698,1],[1711,1],[1743,1],[1795,2],[1798,4],[1803,2],[1847,2],[1850,4],[1897,2],[1900,4],[1939,2],[1942,9],[1952,2],[1989,2],[1992,9],[2011,2],[2014,4],[2019,2],[2032,2],[2035,4],[2040,2],[2053,2],[2067,2],[2070,4],[2075,2],[2088,2],[2101,2],[2104,4],[2109,2],[2122,1],[2134,1]]},"979":{"position":[[197,1],[264,1],[445,1],[493,1],[674,1],[698,1],[773,1],[792,1],[853,1],[957,1],[1035,3],[1039,1],[1059,1],[1146,1],[1166,1],[1253,1],[1274,1],[1363,1],[1376,1],[1408,1],[1460,2],[1580,2],[1626,2],[1639,2],[1653,2],[1666,1],[1678,1]]},"981":{"position":[[277,1],[340,2],[350,1],[537,1],[558,1],[570,2],[652,1],[665,1],[827,1]]},"985":{"position":[[57,1],[73,2],[88,1],[98,1],[132,1],[142,1],[158,1],[165,1],[182,1],[188,1],[194,1],[199,1],[213,1],[223,1],[228,2],[234,1],[241,1],[251,1],[269,1],[271,1],[328,2],[334,1],[341,2],[349,2],[368,1],[375,1],[382,2],[388,2],[397,1],[399,1]]},"987":{"position":[[19,19],[71,8],[83,1],[98,1]]},"991":{"position":[[28,14],[43,16],[60,7],[68,11],[80,8],[195,10]]},"995":{"position":[[19,9],[29,9],[39,7]]},"997":{"position":[[0,9],[10,20]]},"999":{"position":[[49,5],[105,17],[123,19],[143,19]]},"1001":{"position":[[0,6],[167,16],[184,8],[258,58],[317,3],[354,5],[441,17],[459,2],[487,2],[514,2],[517,4],[538,2],[557,3],[578,5],[633,1],[702,2],[733,1],[799,1],[862,1],[929,1],[970,2],[982,1],[1060,2],[1097,3],[1143,5],[1198,1],[1234,2],[1259,2],[1287,2],[1290,4],[1308,2],[1421,1],[1449,1],[1570,1],[1572,14],[1643,1],[1645,14],[1774,1],[1803,1],[1878,1],[1905,1],[1963,1],[2023,1],[2080,5],[2086,12],[2099,16],[2116,15]]},"1003":{"position":[[4,14]]},"1005":{"position":[[0,15],[21,2]]},"1009":{"position":[[123,1],[159,1],[184,1],[200,1],[220,2],[232,1],[256,9],[266,1],[282,1],[292,1],[315,1],[347,2],[374,1],[415,1],[417,8],[441,1],[472,1],[479,1],[493,1],[495,1],[497,1],[499,1],[501,1],[572,1],[630,4],[635,2],[638,1],[666,1],[736,1],[805,1],[863,1],[881,1],[883,1],[885,1],[936,1],[1002,2],[1335,1],[1371,1],[1396,1],[1412,1],[1432,2],[1444,1],[1468,9],[1478,1],[1494,1],[1504,1],[1527,1],[1559,2],[1586,1],[1656,1],[1687,1],[1694,1],[1708,1],[1710,1],[1712,1],[1714,1],[1716,1],[1718,2],[1721,1],[1750,1],[1803,1],[1830,2],[1871,1],[2145,2],[2254,1],[2312,2],[2340,2],[2352,1]]},"1011":{"position":[[67,2],[225,15],[365,1],[393,1],[514,1],[516,14],[587,1],[589,14],[718,1],[747,1],[822,1],[849,1],[907,1],[967,1],[1024,13],[1053,36]]},"1015":{"position":[[0,30],[232,7]]},"1017":{"position":[[0,12]]},"1019":{"position":[[187,15]]},"1023":{"position":[[0,23],[24,25],[50,23],[74,6],[81,4],[86,6],[93,17]]},"1025":{"position":[[0,20],[21,36],[58,13],[72,22]]},"1027":{"position":[[0,14]]},"1034":{"position":[[72,31],[277,5],[283,5]]},"1036":{"position":[[0,57]]},"1040":{"position":[[234,3],[370,11],[382,7],[403,5],[413,28],[442,39]]},"1044":{"position":[[33,44],[78,47]]},"1047":{"position":[[55,19],[75,13]]},"1052":{"position":[[4,19]]},"1056":{"position":[[0,10],[19,31],[51,5],[65,20],[86,7],[94,7],[102,15]]},"1059":{"position":[[0,37],[42,23],[66,30]]},"1061":{"position":[[0,7],[8,20],[39,13]]},"1064":{"position":[[0,15],[16,43],[60,15],[76,22]]},"1066":{"position":[[12,9],[22,24],[90,2],[93,4],[107,1],[270,1],[444,1],[631,1]]},"1069":{"position":[[0,61],[62,42],[105,56],[162,39],[202,32],[235,47]]},"1071":{"position":[[0,40],[41,61],[174,7],[182,4],[208,13]]},"1073":{"position":[[0,42],[45,5],[51,32],[86,5],[92,20]]},"1075":{"position":[[0,46],[49,5],[71,4],[78,5],[84,54]]},"1077":{"position":[[0,27],[28,6],[35,17],[53,22]]},"1082":{"position":[[86,3],[151,24],[176,3],[180,84],[265,18]]},"1084":{"position":[[77,18],[96,3],[100,3],[104,5],[110,7],[171,5],[266,4],[363,4]]},"1090":{"position":[[45,8],[54,8],[63,4],[68,9],[83,10],[94,64],[159,56],[216,54],[271,8],[280,9],[399,10],[513,9],[694,10],[873,8],[882,9],[1004,10],[1143,9],[1339,10]]},"1093":{"position":[[0,19],[20,5],[26,5],[32,5],[38,4],[43,3],[47,2]]},"1095":{"position":[[0,16],[42,33]]},"1097":{"position":[[0,7],[25,3]]},"1100":{"position":[[0,5],[6,39],[46,7],[54,6],[61,6],[68,6],[75,6],[82,22],[105,22],[128,73],[202,3],[206,64],[275,74]]},"1102":{"position":[[0,7],[8,3],[12,50],[63,3],[261,12],[274,3],[278,7],[286,3],[290,26],[317,3],[321,40],[362,3],[509,10],[520,3]]},"1104":{"position":[[0,23],[24,5],[35,6],[42,3],[46,3],[50,12],[63,7],[71,6],[78,6],[85,4],[90,8],[99,4],[104,5],[110,5],[116,5],[122,53],[176,3],[180,12],[193,39],[233,19],[277,19]]},"1106":{"position":[[0,76],[77,34]]},"1108":{"position":[[0,17],[359,42],[885,60],[1114,2],[1169,2]]},"1110":{"position":[[0,14],[169,27],[630,2],[685,2]]},"1112":{"position":[[0,5],[6,38],[45,13],[359,5],[365,40],[406,13]]},"1119":{"position":[[0,5],[6,15],[22,12],[35,23],[59,29],[89,14],[104,5],[110,84],[195,16],[212,22],[235,20],[256,77],[334,90]]},"1121":{"position":[[99,10],[110,5],[116,39]]},"1124":{"position":[[0,6],[160,6]]},"1126":{"position":[[0,9],[10,45],[56,8],[65,30],[96,26],[123,27]]},"1128":{"position":[[10,7],[18,34],[53,13],[76,7],[84,17],[102,13],[127,7],[135,37],[173,13],[198,7],[206,17],[272,10],[283,9],[326,16],[343,6]]},"1130":{"position":[[0,10],[11,64],[76,56],[133,54],[188,11],[200,19],[220,24],[245,25],[271,18],[290,21],[312,26],[362,18],[433,35],[469,38],[508,27],[536,49],[586,12],[599,46],[646,68],[715,8],[724,3],[728,3],[732,12],[745,25],[771,46],[818,56],[875,17],[896,4],[901,2]]},"1132":{"position":[[0,4]]},"1137":{"position":[[0,137]]},"1139":{"position":[[10,8],[19,19],[39,15],[55,21],[77,6],[84,21],[106,6],[113,52],[166,3],[170,32],[203,6],[210,6],[217,16],[234,6],[241,26]]},"1141":{"position":[[244,51]]},"1143":{"position":[[0,3],[87,3],[91,53]]},"1145":{"position":[[0,3],[96,3],[100,53]]},"1147":{"position":[[0,32],[33,82],[116,43],[504,27],[663,17],[681,118]]},"1160":{"position":[[201,18],[285,17],[562,26]]},"1164":{"position":[[256,10],[917,5],[923,10]]},"1176":{"position":[[0,4],[14,5],[66,3],[113,40]]},"1189":{"position":[[0,5],[389,4],[812,13]]},"1193":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"1197":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"1199":{"position":[[5,5]]},"1202":{"position":[[90,35],[366,1],[370,18],[400,3],[404,8],[415,24],[444,19],[464,3],[468,48],[517,3],[521,51],[584,3],[588,8],[599,31],[633,7],[641,3],[645,14],[662,31],[694,3],[698,47],[748,14],[765,6],[774,19]]},"1204":{"position":[[100,5],[286,81]]},"1211":{"position":[[5,9],[15,40],[56,13],[74,1],[78,3],[88,14],[131,4],[144,2],[176,5],[281,1],[336,1],[388,1],[432,8],[899,1],[955,1],[1045,1],[1135,1],[1237,1],[1277,1],[1286,1],[1302,1],[1311,1],[1328,1],[1337,1],[1370,1],[1408,1],[1444,1],[1453,11],[1465,33],[1646,1],[1689,1],[1699,1],[1819,1],[1865,1],[1893,1],[2125,1],[2191,1],[2248,1],[2266,1],[2287,2],[2342,10],[2543,1],[2569,1],[2598,3],[3190,5],[3196,1],[3326,1],[3383,1],[3435,1],[3479,1],[3539,1],[3629,1],[3719,1],[3801,1],[3841,1],[3850,1],[3866,1],[3875,1],[3892,1],[3901,1],[3934,1],[3972,1],[4008,1],[4017,1],[4059,1],[4069,1],[4115,1],[4161,1],[4189,1],[4284,1],[4350,1],[4407,1],[4425,1],[4446,2],[4501,1],[4527,1]]},"1213":{"position":[[130,4],[190,4],[257,4]]},"1217":{"position":[[212,40],[253,13],[271,1],[275,3],[285,14],[328,4],[341,2]]},"1219":{"position":[[0,15],[33,20],[71,4]]},"1221":{"position":[[127,36],[170,16],[221,12],[240,5],[269,8],[278,6],[287,1],[331,6],[340,13],[371,51],[460,5],[466,13],[488,51],[540,5],[546,15],[564,27],[594,29]]},"1225":{"position":[[0,12],[88,5],[239,100],[352,13]]},"1227":{"position":[[69,37],[187,1],[189,16]]},"1229":{"position":[[0,8],[13,13],[74,11]]},"1234":{"position":[[0,3],[19,2],[30,9]]},"1236":{"position":[[0,13],[27,2],[45,8],[69,5]]},"1240":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"1242":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"1244":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"1246":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"1248":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"1250":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"1253":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"1255":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"1258":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"1260":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"1262":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"1266":{"position":[[102,50]]},"1268":{"position":[[0,171],[172,34],[207,31],[239,41]]},"1270":{"position":[[0,100],[101,123],[225,116]]},"1272":{"position":[[0,41]]},"1274":{"position":[[0,75],[76,12],[181,1],[357,9],[385,1],[392,1],[399,36],[441,1],[448,37]]},"1276":{"position":[[6,35],[44,28],[79,20],[102,27],[130,11],[212,3],[220,7],[228,8],[239,15],[264,2],[276,31],[310,21],[332,8],[596,1],[602,1],[649,3],[674,11]]},"1278":{"position":[[6,6],[21,24],[48,18],[69,10],[80,11],[162,3],[170,7],[178,28],[356,3],[417,5],[431,14],[470,2],[482,31],[516,20],[705,1],[711,1],[781,11]]},"1280":{"position":[[0,61],[68,1],[76,51]]},"1282":{"position":[[4,33]]},"1284":{"position":[[0,89],[90,157]]},"1288":{"position":[[191,2],[199,8],[242,16],[286,31],[354,31]]},"1290":{"position":[[361,3]]},"1292":{"position":[[12,34],[225,28],[821,29],[856,41],[1154,5],[1388,5]]},"1294":{"position":[[302,11],[314,2],[322,49],[372,1],[379,32],[424,65],[498,87],[594,40],[635,11]]},"1300":{"position":[[106,12],[162,1]]},"1302":{"position":[[95,1]]},"1304":{"position":[[107,1],[137,6]]},"1308":{"position":[[24,1],[37,1],[116,1],[307,1],[352,1]]},"1310":{"position":[[22,1],[40,1],[44,1],[52,1],[158,1],[176,1],[180,1],[188,1],[296,1]]},"1313":{"position":[[37,19],[89,1],[189,1]]},"1315":{"position":[[0,4],[317,2],[353,2],[356,2],[707,2],[719,2],[743,2],[777,2],[803,2],[817,2],[832,2],[880,2],[893,1],[948,2],[1001,1],[1033,1],[1064,1],[1121,4],[1176,2],[1228,2],[1236,1],[1253,2],[1266,2],[1269,2],[1345,2],[1442,1],[1454,1],[1496,1],[1518,1],[1541,1],[1588,1],[1638,1],[1685,1],[1710,1],[1744,1],[1776,1],[1821,1],[1871,1]]},"1318":{"position":[[139,16]]},"1322":{"position":[[0,24],[25,14],[40,32]]},"1324":{"position":[[4,8]]},"1330":{"position":[[72,1],[161,15],[253,1],[297,1],[335,1],[452,1],[564,1]]},"1342":{"position":[[271,1],[494,3],[498,14],[513,32],[546,15]]},"1345":{"position":[[0,88],[89,62]]},"1347":{"position":[[0,115],[116,80],[197,64],[262,47],[310,50]]},"1349":{"position":[[0,78],[79,65]]},"1354":{"position":[[197,1],[249,1],[503,1],[542,1],[771,1],[775,1],[1022,1],[1067,1],[1137,1],[1173,1],[1190,1],[1252,1],[1285,1],[1358,2],[1459,2],[1483,2],[1580,1],[1628,1],[1683,1],[1803,1],[1841,1],[1991,1],[2026,1],[2037,1],[2097,1],[2163,1],[2175,1],[2197,1],[2209,1],[2231,1],[2236,1],[2251,2],[2257,2],[2271,2],[2310,1],[2319,1],[2324,1],[2376,1],[2435,1],[2564,1],[2577,1],[2650,1],[2678,1],[2735,1],[2751,1]]},"1359":{"position":[[0,24],[25,23],[49,5],[55,3]]},"1361":{"position":[[0,26],[179,20],[495,17],[801,16]]},"1363":{"position":[[0,31],[261,10],[341,1]]},"1366":{"position":[[0,150]]},"1368":{"position":[[335,30],[498,38],[537,15],[566,1],[576,1],[593,1],[598,2],[610,1],[614,1],[619,1],[630,1],[634,1]]},"1372":{"position":[[0,4],[14,5],[66,3],[113,40]]},"1385":{"position":[[0,5],[389,4],[812,13]]},"1389":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"1393":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"1396":{"position":[[83,1],[102,1],[121,1],[141,1],[160,1],[180,1],[209,1],[267,1],[293,1],[323,1],[388,1],[485,1],[518,1],[524,1],[551,1],[556,1],[589,1],[594,1],[606,3],[610,1],[625,1],[714,1],[762,1],[764,8],[775,1],[862,1],[893,2],[930,1],[1041,1],[1069,1],[1097,1],[1130,3],[1203,3],[1209,1],[1250,1],[1291,1],[1324,3],[1406,3]]},"1401":{"position":[[0,35]]},"1405":{"position":[[89,38],[158,1],[306,1],[369,1],[397,1],[425,1],[540,1],[582,1],[624,1]]},"1411":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,2],[730,8],[766,15]]},"1414":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"1416":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[985,10],[1074,60],[1330,7],[1342,4],[1361,3],[1369,23],[1398,36],[1435,8],[1449,11],[1553,33],[1709,6],[1731,1],[1751,5],[1761,8],[1779,1],[1789,13],[1803,1],[1811,4],[1831,4],[1855,60],[1925,6],[1974,5],[1980,5],[1986,68],[2055,5],[2061,4],[2092,11],[2125,1],[2134,1],[2173,3],[2408,15],[2441,5],[2493,23]]},"1418":{"position":[[0,4]]},"1422":{"position":[[518,3],[535,3],[553,3],[571,3]]},"1430":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"1432":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"1434":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"1436":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"1439":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"1446":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"1448":{"position":[[0,4],[24,5]]},"1451":{"position":[[0,4]]},"1456":{"position":[[213,6]]},"1458":{"position":[[157,19]]},"1466":{"position":[[123,7],[199,18],[268,1],[270,10],[367,10],[387,1],[389,9],[403,23],[565,25],[657,8],[684,1]]},"1469":{"position":[[72,40]]},"1471":{"position":[[0,4]]},"1473":{"position":[[0,4],[37,7],[91,10],[109,4],[123,1],[134,4],[139,1],[150,1],[253,56],[429,5],[435,27],[463,29],[493,9],[510,1]]},"1475":{"position":[[8,1],[17,61],[93,62],[156,5],[162,29],[192,35],[228,4],[233,3],[253,26]]},"1477":{"position":[[6,3],[79,21],[172,8],[235,5],[241,20],[262,4],[274,1],[280,19],[300,4],[305,3],[324,25]]},"1479":{"position":[[75,36],[187,27],[215,5],[221,22],[244,2],[259,19],[279,4],[284,3],[295,1],[318,28]]},"1481":{"position":[[12,1],[21,7],[41,31],[73,45],[119,5],[125,19],[145,9],[167,18],[186,4],[211,38]]},"1483":{"position":[[78,24],[114,5],[132,61],[194,5],[200,24],[225,30],[256,4],[261,3],[287,22]]},"1488":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"1490":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"1493":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"1495":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"1497":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"1499":{"position":[[0,4],[24,5]]},"1502":{"position":[[0,8],[81,6],[90,7],[98,11],[176,3],[249,6],[561,6],[627,20],[753,3]]},"1504":{"position":[[0,10],[264,14],[377,2],[402,2],[405,2],[474,2],[477,2]]},"1508":{"position":[[122,1],[126,1],[139,3],[143,33],[177,17],[195,14]]},"1510":{"position":[[0,5]]},"1517":{"position":[[29,7]]},"1519":{"position":[[30,1],[41,1],[43,3],[47,1],[181,1],[183,22],[206,1],[278,1],[353,1]]},"1521":{"position":[[30,1],[152,1],[154,22]]},"1523":{"position":[[0,32],[46,24],[77,46],[124,19],[150,6],[162,4]]},"1528":{"position":[[0,8],[13,13],[74,11]]},"1533":{"position":[[0,3],[19,2],[30,9]]},"1535":{"position":[[0,13],[27,2],[45,8],[69,5]]},"1539":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"1541":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"1543":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"1545":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"1547":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"1549":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"1552":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"1554":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"1557":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"1559":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"1561":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"1567":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"1569":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"1571":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"1573":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"1576":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"1583":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"1585":{"position":[[0,2],[3,14],[18,11],[37,4],[42,9],[95,2],[111,10]]},"1587":{"position":[[0,15],[21,2]]},"1590":{"position":[[0,4],[5,2]]},"1592":{"position":[[5,40],[66,18],[131,5],[148,84],[255,4],[267,13],[314,7],[326,1],[361,15],[384,16],[475,31],[514,6],[614,35],[715,8],[731,46],[815,5],[824,1],[830,5],[846,19],[878,5],[891,1],[899,1],[917,6],[928,5],[955,31],[1019,72],[1153,4],[1158,8],[1218,15],[1254,7],[1282,7],[1297,10],[1315,4],[1340,1],[1356,7],[1394,2],[1417,2],[1437,7],[1451,2],[1463,3],[1473,12],[1490,5],[1496,7],[1507,3],[1519,13],[1538,3],[1557,13],[1594,12],[1621,10],[1645,22],[1726,51],[1780,16],[1797,5],[1811,11],[1825,3],[1831,16],[1850,3],[1951,3],[1957,16],[1978,2],[2089,4],[2110,1],[2112,6]]},"1594":{"position":[[14,1],[33,4],[44,2],[108,7],[131,11]]},"1596":{"position":[[0,4],[5,2]]},"1602":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,10],[765,15]]},"1605":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"1607":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[971,5],[986,10],[1075,60],[1331,7],[1343,4],[1362,3],[1370,23],[1399,36],[1436,8],[1450,11],[1554,33],[1710,6],[1732,1],[1752,5],[1762,8],[1780,1],[1790,13],[1804,1],[1812,4],[1832,4],[1856,60],[1926,6],[1975,5],[1981,5],[1987,68],[2056,5],[2062,4],[2093,11],[2126,1],[2135,1],[2174,3],[2409,15],[2442,5],[2494,23]]},"1609":{"position":[[0,6],[65,1],[148,2],[151,9],[211,1],[412,2],[433,1]]},"1611":{"position":[[4,12]]},"1613":{"position":[[0,15],[21,2]]},"1615":{"position":[[5,32]]},"1617":{"position":[[244,14],[293,1],[345,1],[384,1],[391,2],[400,1],[422,3],[495,3],[502,1],[515,1],[537,3],[598,3],[609,1],[614,1],[633,3],[661,1],[676,1],[692,2],[708,1],[723,1],[794,3],[874,2],[877,2],[880,1],[888,2],[891,2],[952,2],[955,2],[958,1],[966,2],[969,2],[1030,2],[1033,2],[1036,1],[1044,2],[1047,2],[1272,69]]},"1621":{"position":[[69,11],[81,1],[98,1],[116,1],[140,1],[158,1],[189,1],[216,1],[218,8],[265,3],[354,10],[365,1],[367,10],[378,1],[380,8],[404,1],[425,1],[427,8],[476,3]]},"1623":{"position":[[0,4]]},"1629":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"1631":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"1634":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"1636":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"1638":{"position":[[0,5],[22,4],[31,6],[38,6],[149,13],[204,6],[233,7],[246,5],[256,8],[270,10],[286,7]]},"1640":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"1645":{"position":[[148,12],[209,2],[330,5]]},"1647":{"position":[[0,18]]},"1649":{"position":[[24,1],[26,4],[183,7],[191,1],[193,1],[195,4],[281,7],[289,1]]},"1651":{"position":[[75,13]]},"1653":{"position":[[0,16],[26,16]]},"1658":{"position":[[43,6],[56,2],[92,2]]},"1661":{"position":[[0,5],[6,2],[11,6],[22,2],[39,14],[54,7],[62,9],[74,5],[86,1],[91,1],[95,8],[104,7],[112,18],[131,41],[173,43],[217,45]]},"1663":{"position":[[0,5],[6,4],[11,30],[42,6],[49,40],[107,4],[112,1],[114,1]]},"1665":{"position":[[4,5],[10,8],[19,12],[32,7],[40,4]]},"1667":{"position":[[0,51],[52,16]]},"1669":{"position":[[0,12],[13,4],[18,10],[29,12],[42,9],[52,63],[120,14],[135,13],[149,15],[233,20],[258,72],[331,13],[345,43],[389,68],[458,87],[546,14],[561,9],[571,49],[621,12],[634,28],[663,14],[789,55]]},"1673":{"position":[[0,31]]},"1675":{"position":[[39,1],[41,2],[44,1],[46,23],[70,2],[90,2],[93,1],[103,1],[108,2],[111,17],[143,1],[148,2],[151,2],[163,1],[179,1],[191,1],[193,2],[196,13],[215,1],[227,1],[232,1],[250,2],[276,2],[288,1],[290,2],[347,1],[357,1],[375,1],[382,1],[393,1],[400,1],[402,2],[405,9],[438,1],[440,2],[502,1],[514,1],[522,2],[525,26],[552,1],[561,2],[564,6],[571,1],[595,1],[597,2],[648,1],[667,2],[670,6],[677,1]]},"1677":{"position":[[0,14],[33,7],[126,1],[128,2],[131,1],[133,23],[157,2],[177,2],[180,1],[190,1],[195,2],[198,17],[230,1],[235,2],[238,2],[250,1],[266,1],[278,1],[280,2],[283,13],[302,1],[314,1],[319,1],[337,2],[363,2],[375,1],[377,2],[434,1],[444,1],[462,1],[469,1],[480,1],[487,1],[489,2],[492,9],[525,1],[527,2],[589,1],[601,1],[609,2],[612,26],[639,1],[648,2],[651,6],[658,1],[682,1],[684,2],[735,1],[754,2],[757,6],[764,1],[777,1],[800,2],[806,1],[833,1],[854,2],[862,1],[878,1],[899,1],[932,1],[954,1],[966,1],[985,1],[992,2],[1000,1],[1007,1],[1022,1],[1041,2],[1062,1],[1069,2],[1077,1],[1079,1],[1086,2],[1095,1],[1107,1]]},"1680":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[764,5]]},"1682":{"position":[[4,14]]},"1684":{"position":[[0,15],[21,2]]},"1687":{"position":[[0,51],[52,16],[128,12],[141,4],[146,10],[157,12],[170,9],[180,63],[248,14],[263,13],[277,15],[361,20],[386,72],[459,13],[473,43],[517,68],[586,87],[674,14],[689,9],[699,49],[749,12],[762,28],[791,14],[917,55]]},"1689":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[764,5]]},"1692":{"position":[[0,59],[60,30],[91,30]]},"1694":{"position":[[0,4],[5,4],[193,2],[196,13]]},"1696":{"position":[[0,16],[69,1]]},"1706":{"position":[[140,15],[156,30],[187,6]]},"1708":{"position":[[162,10],[173,6],[180,6],[187,12],[200,4]]},"1710":{"position":[[0,31],[81,48]]},"1715":{"position":[[600,20],[725,14],[789,10]]},"1717":{"position":[[11,7]]},"1719":{"position":[[3,5],[62,24],[87,33],[198,4],[203,28]]},"1729":{"position":[[134,38]]},"1733":{"position":[[146,6]]},"1735":{"position":[[0,48],[105,15],[121,91]]},"1740":{"position":[[3,7],[47,7]]},"1742":{"position":[[3,7],[47,7]]}}}],["0",{"_index":6,"t":{"882":{"position":[[161,24],[186,3],[257,2],[260,3]]},"884":{"position":[[86,3],[142,1],[152,2],[367,1],[379,2],[468,2]]},"886":{"position":[[48,22]]},"890":{"position":[[115,2],[129,2],[210,2]]},"892":{"position":[[96,2],[167,2],[183,2]]},"914":{"position":[[114,7],[172,7]]},"941":{"position":[[53,2]]},"949":{"position":[[1605,2],[1659,2]]},"967":{"position":[[253,1],[273,1],[839,1]]},"970":{"position":[[842,2],[913,2],[1021,2],[1290,2],[1346,2],[1454,2],[1993,2],[2282,2],[2374,2]]},"972":{"position":[[2511,2]]},"974":{"position":[[92,1],[121,1],[792,2],[808,2],[3089,3],[3209,2]]},"977":{"position":[[382,2],[724,2],[1007,2],[2131,2]]},"979":{"position":[[283,2],[512,2],[717,2],[1675,2]]},"981":{"position":[[824,2]]},"985":{"position":[[90,2],[100,2],[144,2],[160,2],[208,4],[231,2],[365,2]]},"1001":{"position":[[2156,5]]},"1007":{"position":[[50,5]]},"1034":{"position":[[0,17]]},"1197":{"position":[[1518,39],[1631,2]]},"1211":{"position":[[343,2],[349,3],[353,3],[360,2],[975,2],[989,3],[993,3],[1000,3],[1011,4],[1065,2],[1076,2],[1079,3],[1083,3],[1087,2],[1094,3],[1158,3],[1162,3],[1169,3],[1177,2],[1191,4],[3390,2],[3396,3],[3400,3],[3407,2],[3559,2],[3573,3],[3577,3],[3584,3],[3595,4],[3649,2],[3660,2],[3663,3],[3667,3],[3671,2],[3678,3],[3742,3],[3746,3],[3753,3],[3761,2],[3775,4]]},"1246":{"position":[[1279,2]]},"1248":{"position":[[223,2]]},"1308":{"position":[[169,14]]},"1310":{"position":[[38,1],[46,3],[61,3],[174,1],[182,3],[197,3]]},"1354":{"position":[[2260,1]]},"1356":{"position":[[44,74]]},"1368":{"position":[[568,1],[578,1],[601,1]]},"1393":{"position":[[1518,39],[1631,2]]},"1396":{"position":[[958,2],[982,3]]},"1405":{"position":[[308,1]]},"1416":{"position":[[303,1]]},"1519":{"position":[[131,5]]},"1521":{"position":[[56,5],[62,5]]},"1545":{"position":[[1279,2]]},"1547":{"position":[[223,2]]},"1607":{"position":[[303,1]]},"1617":{"position":[[648,3],[1217,2],[1229,2],[1253,2]]},"1675":{"position":[[105,2],[145,2],[165,2],[244,5],[359,5],[443,33],[600,25]]},"1677":{"position":[[192,2],[232,2],[252,2],[331,5],[446,5],[530,33],[687,25],[857,4],[894,4],[995,4],[1104,2]]}}}],["0&d(u,v)d0​d1​≤d(u,v)≤d0​d(u,v)d_0\\end{cases}\\tag{14}h(u,v)={10​d(u,v)≤d0​d(u,v)>d0​​(14",{"_index":1415,"t":{"1108":{"position":[[142,67]]}}}],["0&d(u,v)>d_1\\end{cases}\\tag{18}h(u,v)=⎩⎨⎧​1d0​−d1​d(u,v)−d1​​0​d(u,v)d1​​(18",{"_index":1435,"t":{"1108":{"position":[[1172,102]]}}}],["0&d(u,v)\\leq",{"_index":1438,"t":{"1110":{"position":[[97,12]]}}}],["0.1",{"_index":2646,"t":{"1396":{"position":[[826,5],[850,4]]}}}],["0.1959",{"_index":2004,"t":{"1250":{"position":[[1195,8]]},"1549":{"position":[[1195,8]]}}}],["0.2",{"_index":2649,"t":{"1396":{"position":[[855,6]]}}}],["0.2042",{"_index":2002,"t":{"1250":{"position":[[1175,7]]},"1549":{"position":[[1175,7]]}}}],["0.25",{"_index":264,"t":{"932":{"position":[[188,5]]}}}],["0.3",{"_index":2643,"t":{"1396":{"position":[[802,5]]}}}],["0.7",{"_index":2647,"t":{"1396":{"position":[[832,4]]}}}],["0.8",{"_index":2644,"t":{"1396":{"position":[[814,4],[837,5]]}}}],["0.88",{"_index":2648,"t":{"1396":{"position":[[843,6]]}}}],["0.9",{"_index":2577,"t":{"1354":{"position":[[2737,4]]},"1396":{"position":[[797,4],[808,5]]}}}],["0.94",{"_index":2732,"t":{"1409":{"position":[[630,4]]},"1600":{"position":[[630,4]]}}}],["0.99",{"_index":2645,"t":{"1396":{"position":[[819,6]]}}}],["0.998",{"_index":3115,"t":{"1486":{"position":[[1036,6]]},"1627":{"position":[[1036,6]]}}}],["01",{"_index":623,"t":{"967":{"position":[[500,2]]}}}],["012",{"_index":616,"t":{"967":{"position":[[370,3]]}}}],["0x3f3f3f3f",{"_index":223,"t":{"927":{"position":[[489,10]]},"981":{"position":[[131,10]]}}}],["0xf",{"_index":610,"t":{"967":{"position":[[301,3]]}}}],["0xff;//d",{"_index":1130,"t":{"1009":{"position":[[294,8],[1506,8]]}}}],["0维度的相加过程中出现了shape为(3",{"_index":3340,"t":{"1617":{"position":[[1080,24]]}}}],["0阶矩和1",{"_index":1464,"t":{"1124":{"position":[[167,33]]}}}],["1",{"_index":26,"t":{"884":{"position":[[200,2],[240,2],[293,3]]},"892":{"position":[[63,21]]},"904":{"position":[[91,2]]},"914":{"position":[[76,7],[93,10]]},"927":{"position":[[742,3],[772,2],[775,2]]},"945":{"position":[[198,4]]},"949":{"position":[[1597,2]]},"967":{"position":[[264,8],[342,1],[573,1],[605,1],[636,1],[739,1],[769,1],[807,1]]},"970":{"position":[[213,2],[1315,3],[1611,3],[1630,1],[1774,3],[2109,3]]},"972":{"position":[[1645,3],[1747,3]]},"974":{"position":[[76,1],[105,1],[143,1],[1055,2],[2864,3]]},"977":{"position":[[862,3],[923,3],[1935,3],[1985,3]]},"979":{"position":[[617,3],[659,3],[1576,3],[1613,3]]},"981":{"position":[[370,2],[568,1],[797,3]]},"983":{"position":[[64,1]]},"985":{"position":[[243,2],[331,2],[386,1]]},"1034":{"position":[[18,12]]},"1040":{"position":[[78,57]]},"1104":{"position":[[254,1],[257,1],[260,1],[269,1],[272,1],[275,1],[298,1],[303,1],[306,1],[311,1],[314,1],[319,1]]},"1197":{"position":[[1669,2]]},"1202":{"position":[[364,1],[389,10],[413,1]]},"1211":{"position":[[338,4],[346,2],[367,3],[371,2],[374,2],[377,3],[978,3],[982,3],[986,2],[997,2],[1004,3],[1008,2],[1068,3],[1072,3],[1090,3],[1098,2],[1101,4],[1173,3],[1184,3],[1188,2],[1784,9],[1890,2],[3385,4],[3393,2],[3414,3],[3418,2],[3421,2],[3424,3],[3562,3],[3566,3],[3570,2],[3581,2],[3588,3],[3592,2],[3652,3],[3656,3],[3674,3],[3682,2],[3685,4],[3757,3],[3768,3],[3772,2],[4186,2]]},"1242":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"1246":{"position":[[957,1]]},"1260":{"position":[[336,1],[955,12]]},"1276":{"position":[[308,1]]},"1278":{"position":[[514,1]]},"1304":{"position":[[87,1]]},"1308":{"position":[[132,2],[184,13]]},"1310":{"position":[[186,1]]},"1315":{"position":[[1564,3],[1628,3],[1799,3]]},"1354":{"position":[[404,2],[407,2],[2233,2],[2288,2],[2321,2],[2437,2]]},"1370":{"position":[[22,20]]},"1393":{"position":[[1669,2]]},"1396":{"position":[[961,3],[1243,4],[1382,4]]},"1405":{"position":[[721,4]]},"1409":{"position":[[552,3]]},"1541":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"1545":{"position":[[957,1]]},"1559":{"position":[[336,1],[955,12]]},"1592":{"position":[[1823,1]]},"1600":{"position":[[552,3]]},"1617":{"position":[[0,30],[409,2],[441,5],[521,2],[555,3],[652,3],[663,3]]},"1621":{"position":[[100,3],[269,3],[480,3]]},"1661":{"position":[[20,1],[25,13],[93,1],[263,37]]},"1677":{"position":[[889,2]]},"1696":{"position":[[46,1]]},"1708":{"position":[[134,16]]},"1715":{"position":[[35,7]]},"1717":{"position":[[0,2]]},"1719":{"position":[[0,2]]},"1723":{"position":[[70,2],[190,2]]},"1725":{"position":[[84,2]]},"1727":{"position":[[91,2]]},"1733":{"position":[[100,2]]},"1740":{"position":[[0,2]]},"1742":{"position":[[0,2]]}}}],["1)&&(countout(1)==n",{"_index":722,"t":{"972":{"position":[[1625,19]]}}}],["1),indegree(0),outdegree(0",{"_index":274,"t":{"932":{"position":[[429,27]]},"972":{"position":[[304,27]]}}}],["1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点e的下一个索引为e+1的元素值由于−1",{"_index":35,"t":{"886":{"position":[[193,51]]}}}],["1)[\\frac{d(u,v)}{d_0}]^{2n}}\\tag{16}h(u,v)=1+(2​−1)[d0​d(u,v)​]2n1​(16",{"_index":1420,"t":{"1108":{"position":[[461,71]]}}}],["1)[\\frac{d_0}{d(u,v)}]^{2n}}\\tag{20}h(u,v)=1+(2​−1)[d(u,v)d0​​]2n1​(20",{"_index":1442,"t":{"1110":{"position":[[273,71]]}}}],["1)\\tag{13}s(k)=ceil(sk​×l−1)(13",{"_index":1403,"t":{"1102":{"position":[[210,32]]}}}],["1)的每一列复制三次为(3",{"_index":3343,"t":{"1617":{"position":[[1144,14]]}}}],["1)的矩阵与shape为(1",{"_index":3341,"t":{"1617":{"position":[[1105,15]]}}}],["1+max(getheight(t[rt].l),getheight(t[rt].r",{"_index":912,"t":{"977":{"position":[[1017,45]]},"979":{"position":[[727,45]]}}}],["1,0",{"_index":241,"t":{"927":{"position":[[778,4]]}}}],["1,0,1,0,0,1,0",{"_index":239,"t":{"927":{"position":[[727,14]]}}}],["1,0,1,1",{"_index":243,"t":{"927":{"position":[[790,8]]}}}],["1,0,n",{"_index":941,"t":{"977":{"position":[[1929,5],[1979,5]]},"979":{"position":[[1570,5],[1607,5]]},"981":{"position":[[791,5]]}}}],["1,1,0",{"_index":242,"t":{"927":{"position":[[783,6]]}}}],["1,1,0,1,1",{"_index":244,"t":{"927":{"position":[[799,11]]}}}],["1,l2+1,l2+p2",{"_index":969,"t":{"981":{"position":[[475,14]]}}}],["1,lb+1,lb+p2",{"_index":903,"t":{"977":{"position":[[508,14]]},"979":{"position":[[377,14]]}}}],["1,lb,lb+p2",{"_index":908,"t":{"977":{"position":[[851,10]]},"979":{"position":[[606,10]]}}}],["1.0",{"_index":218,"t":{"927":{"position":[[454,4]]}}}],["1.51",{"_index":1158,"t":{"1009":{"position":[[876,4]]}}}],["1.73",{"_index":3100,"t":{"1486":{"position":[[635,5]]},"1627":{"position":[[635,5]]}}}],["1.vector",{"_index":326,"t":{"945":{"position":[[22,8]]}}}],["10",{"_index":46,"t":{"890":{"position":[[142,2],[151,3],[160,3]]},"892":{"position":[[109,2],[118,3],[136,3],[219,2]]},"927":{"position":[[683,3]]},"932":{"position":[[121,3],[287,3]]},"937":{"position":[[144,33]]},"985":{"position":[[196,2]]},"1250":{"position":[[353,2],[894,2],[918,2]]},"1308":{"position":[[335,3]]},"1310":{"position":[[324,3]]},"1354":{"position":[[850,4],[2742,2]]},"1411":{"position":[[685,2]]},"1549":{"position":[[353,2],[894,2],[918,2]]},"1602":{"position":[[685,2]]},"1617":{"position":[[733,6]]},"1675":{"position":[[229,2]]},"1677":{"position":[[316,2]]}}}],["10,3.141590,\"method",{"_index":255,"t":{"932":{"position":[[38,19]]}}}],["10.multimap",{"_index":341,"t":{"945":{"position":[[567,11]]}}}],["100",{"_index":307,"t":{"937":{"position":[[77,42]]},"974":{"position":[[281,3]]},"1001":{"position":[[687,4]]},"1308":{"position":[[325,4],[330,4]]},"1310":{"position":[[314,4],[319,4]]},"1434":{"position":[[874,3]]},"1571":{"position":[[874,3]]}}}],["1000",{"_index":41,"t":{"890":{"position":[[72,5]]},"1250":{"position":[[136,4],[326,18],[1023,4]]},"1434":{"position":[[857,4]]},"1549":{"position":[[136,4],[326,18],[1023,4]]},"1571":{"position":[[857,4]]}}}],["10000",{"_index":1987,"t":{"1250":{"position":[[320,5]]},"1549":{"position":[[320,5]]}}}],["1000000007",{"_index":951,"t":{"981":{"position":[[154,10]]}}}],["1010",{"_index":617,"t":{"967":{"position":[[390,7],[412,4],[462,4]]}}}],["106",{"_index":1056,"t":{"1001":{"position":[[957,4]]}}}],["108",{"_index":2258,"t":{"1300":{"position":[[164,3]]}}}],["10px",{"_index":3311,"t":{"1609":{"position":[[367,5]]}}}],["10的vector,初始化为3",{"_index":76,"t":{"896":{"position":[[24,23]]}}}],["11",{"_index":850,"t":{"974":{"position":[[2726,2]]}}}],["11.hash_set",{"_index":342,"t":{"945":{"position":[[597,11]]}}}],["1111",{"_index":612,"t":{"967":{"position":[[321,6]]}}}],["111m",{"_index":2739,"t":{"1409":{"position":[[760,4]]},"1600":{"position":[[760,4]]}}}],["1125",{"_index":1901,"t":{"1242":{"position":[[195,5],[211,5],[467,5]]},"1541":{"position":[[195,5],[211,5],[467,5]]}}}],["11×1",{"_index":3499,"t":{"1710":{"position":[[150,18]]}}}],["11×1卷积核,每个filter对上一步的featur",{"_index":2266,"t":{"1304":{"position":[[14,28]]}}}],["12",{"_index":221,"t":{"927":{"position":[[474,2]]},"967":{"position":[[381,8]]},"1304":{"position":[[109,2]]},"1617":{"position":[[740,6]]}}}],["12.hash_multiset",{"_index":344,"t":{"945":{"position":[[629,16]]}}}],["120",{"_index":2496,"t":{"1354":{"position":[[780,5]]}}}],["120,210都是30的倍数,由于要找最大的,所以答案是210",{"_index":983,"t":{"983":{"position":[[108,33]]}}}],["13",{"_index":3327,"t":{"1617":{"position":[[747,4],[758,5]]}}}],["13.hash_map",{"_index":345,"t":{"945":{"position":[[666,11]]}}}],["1313×13个grid",{"_index":3531,"t":{"1717":{"position":[[75,12]]}}}],["14",{"_index":3328,"t":{"1617":{"position":[[752,5],[764,4],[775,5]]}}}],["14.hash_multimap",{"_index":346,"t":{"945":{"position":[[698,16]]}}}],["148",{"_index":1071,"t":{"1001":{"position":[[1237,8]]}}}],["149",{"_index":1031,"t":{"1001":{"position":[[462,8]]}}}],["15",{"_index":3329,"t":{"1617":{"position":[[769,5],[781,4]]}}}],["16",{"_index":2493,"t":{"1354":{"position":[[669,3]]},"1409":{"position":[[600,3]]},"1600":{"position":[[600,3]]},"1617":{"position":[[786,7]]}}}],["18.65",{"_index":3099,"t":{"1486":{"position":[[626,5]]},"1627":{"position":[[626,5]]}}}],["18446744073709551615ull",{"_index":230,"t":{"927":{"position":[[602,24]]}}}],["1?'\\n",{"_index":923,"t":{"977":{"position":[[1324,8]]},"979":{"position":[[1026,8]]}}}],["1\\eta",{"_index":2415,"t":{"1330":{"position":[[545,10]]}}}],["1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;σ1\\sigma_1σ1​和σ2\\sigma_2σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr",{"_index":1557,"t":{"1162":{"position":[[592,119]]}}}],["1][b,c,1,1]的tensor",{"_index":3542,"t":{"1723":{"position":[[73,43]]}}}],["1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid",{"_index":3546,"t":{"1725":{"position":[[87,72]]}}}],["1][b,c,1,1]的tensor,该tensor",{"_index":3560,"t":{"1733":{"position":[[103,37]]}}}],["1]])12b",{"_index":2690,"t":{"1405":{"position":[[574,7]]}}}],["1],即reduce了dim=1",{"_index":2641,"t":{"1396":{"position":[[742,19]]}}}],["1_44=fd.img",{"_index":1092,"t":{"1001":{"position":[[1685,12]]},"1011":{"position":[[629,12]]}}}],["1_44=fd_aug.img",{"_index":1094,"t":{"1001":{"position":[[1724,16]]},"1011":{"position":[[668,16]]}}}],["1a",{"_index":2681,"t":{"1405":{"position":[[366,2]]}}}],["1e",{"_index":220,"t":{"927":{"position":[[471,2]]}}}],["1e5",{"_index":234,"t":{"927":{"position":[[677,3]]}}}],["1e9",{"_index":236,"t":{"927":{"position":[[693,3]]},"1197":{"position":[[1635,4]]},"1393":{"position":[[1635,4]]}}}],["1k−1",{"_index":2432,"t":{"1335":{"position":[[117,4]]}}}],["1t<1",{"_index":2146,"t":{"1274":{"position":[[443,4]]}}}],["1t>1",{"_index":2144,"t":{"1274":{"position":[[394,4]]}}}],["1})(r1​,r2​,…,rk−1",{"_index":3171,"t":{"1493":{"position":[[949,20]]},"1634":{"position":[[949,20]]}}}],["1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirect",{"_index":3139,"t":{"1490":{"position":[[1163,48]]},"1631":{"position":[[1163,48]]}}}],["1})p(r1​,r2​,…,rk​)=k=1∏k​p(rk​∣r1​,r2​,…,rk−1",{"_index":3166,"t":{"1493":{"position":[[745,48]]},"1634":{"position":[[745,48]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t",{"_index":2937,"t":{"1436":{"position":[[97,37]]},"1573":{"position":[[97,37]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t",{"_index":1257,"t":{"1019":{"position":[[254,50]]}}}],["1}\\right)x>n>>m",{"_index":702,"t":{"972":{"position":[[1086,10]]}}}],["cin>>row",{"_index":312,"t":{"939":{"position":[[29,9]]}}}],["cin>>row>>col",{"_index":318,"t":{"941":{"position":[[0,14]]}}}],["cin>>src>>dst",{"_index":706,"t":{"972":{"position":[[1140,14]]}}}],["ci×h×wc_i",{"_index":2449,"t":{"1342":{"position":[[0,12]]}}}],["ck={wi∣pi",{"_index":2153,"t":{"1276":{"position":[[341,9]]}}}],["ckc_kck",{"_index":2152,"t":{"1276":{"position":[[255,8],[267,8]]}}}],["class",{"_index":2078,"t":{"1258":{"position":[[72,5]]},"1262":{"position":[[614,6]]},"1354":{"position":[[276,5],[418,5]]},"1409":{"position":[[705,5]]},"1557":{"position":[[72,5]]},"1561":{"position":[[614,6]]},"1600":{"position":[[705,5]]},"1638":{"position":[[45,5]]}}}],["classifi",{"_index":2611,"t":{"1368":{"position":[[656,10]]},"1416":{"position":[[2269,11]]},"1420":{"position":[[0,8]]},"1607":{"position":[[2270,11]]}}}],["clear",{"_index":525,"t":{"953":{"position":[[781,7]]},"1486":{"position":[[930,5]]},"1627":{"position":[[930,5]]}}}],["clip",{"_index":1560,"t":{"1162":{"position":[[912,4],[924,4],[1000,9]]},"1242":{"position":[[588,4],[680,4]]},"1248":{"position":[[1019,4]]},"1461":{"position":[[639,4],[885,4]]},"1541":{"position":[[588,4],[680,4]]},"1547":{"position":[[1019,4]]}}}],["clip_directional_loss",{"_index":1972,"t":{"1248":{"position":[[1033,34]]},"1262":{"position":[[1162,21]]},"1547":{"position":[[1033,34]]},"1561":{"position":[[1162,21]]}}}],["clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtyp",{"_index":1916,"t":{"1242":{"position":[[872,75]]},"1541":{"position":[[872,75]]}}}],["clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtyp",{"_index":1920,"t":{"1242":{"position":[[1024,75]]},"1541":{"position":[[1024,75]]}}}],["clock",{"_index":3401,"t":{"1645":{"position":[[324,5]]}}}],["closure(t)\\epsilon",{"_index":1296,"t":{"1040":{"position":[[323,22]]}}}],["closure(t)ϵ−closure(t",{"_index":1297,"t":{"1040":{"position":[[347,22]]}}}],["cloud",{"_index":1881,"t":{"1236":{"position":[[39,5]]},"1535":{"position":[[39,5]]}}}],["cnn",{"_index":1716,"t":{"1204":{"position":[[0,21],[22,77]]},"1471":{"position":[[29,42]]},"1592":{"position":[[924,3],[951,3]]}}}],["cnn中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如fcn(fulli",{"_index":1710,"t":{"1202":{"position":[[126,68]]}}}],["cnn本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的cnn",{"_index":1713,"t":{"1202":{"position":[[280,83]]}}}],["cnn模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个cnn",{"_index":1709,"t":{"1202":{"position":[[0,84]]}}}],["cnn的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得cnn",{"_index":1717,"t":{"1204":{"position":[[106,175]]}}}],["cnn的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得cnn更适用于图像处理等任务。但也正是这种设计理念,使得cnn在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此self",{"_index":1718,"t":{"1204":{"position":[[368,106]]}}}],["cnt",{"_index":864,"t":{"974":{"position":[[2811,4],[2985,6]]}}}],["cntd0​d(u,v)≤d0​​(19",{"_index":1439,"t":{"1110":{"position":[[110,58]]}}}],["d_1",{"_index":1434,"t":{"1108":{"position":[[1163,5]]}}}],["d_1}&d_0\\leq",{"_index":1432,"t":{"1108":{"position":[[1139,12]]}}}],["d_1}&d_1\\leq",{"_index":1449,"t":{"1110":{"position":[[655,12]]}}}],["d_1}{d_0",{"_index":1431,"t":{"1108":{"position":[[1130,8]]},"1110":{"position":[[646,8]]}}}],["d_kd×dk",{"_index":1840,"t":{"1221":{"position":[[200,11]]}}}],["d_kl×dk",{"_index":1843,"t":{"1221":{"position":[[259,9]]}}}],["d_model",{"_index":1736,"t":{"1211":{"position":[[103,8],[136,7]]},"1217":{"position":[[300,8],[333,7]]}}}],["d_{kl}(p\\space",{"_index":2349,"t":{"1315":{"position":[[1238,14]]}}}],["d_{kl}(q",{"_index":2331,"t":{"1315":{"position":[[761,8]]}}}],["dall",{"_index":3085,"t":{"1481":{"position":[[0,9],[191,17]]},"1483":{"position":[[265,4]]}}}],["data",{"_index":535,"t":{"953":{"position":[[1097,6]]},"974":{"position":[[522,5]]},"1322":{"position":[[145,11]]},"1409":{"position":[[493,4]]},"1422":{"position":[[238,4],[453,4],[496,5],[502,4]]},"1456":{"position":[[773,4]]},"1486":{"position":[[865,4]]},"1600":{"position":[[493,4]]},"1627":{"position":[[865,4]]}}}],["data_dir",{"_index":2858,"t":{"1422":{"position":[[212,9]]}}}],["data_it",{"_index":2502,"t":{"1354":{"position":[[927,10],[1100,10]]}}}],["dataset",{"_index":2427,"t":{"1333":{"position":[[166,7]]},"1422":{"position":[[13,7],[174,7],[370,7]]}}}],["daveho@cs.umd.edu",{"_index":1148,"t":{"1009":{"position":[[716,19]]}}}],["david",{"_index":1146,"t":{"1009":{"position":[[697,5]]}}}],["ddd",{"_index":1832,"t":{"1217":{"position":[[201,5]]},"1219":{"position":[[29,3]]}}}],["ddpm",{"_index":3188,"t":{"1499":{"position":[[109,8]]}}}],["ddpm论文中的原图来分析ddpm",{"_index":1237,"t":{"1015":{"position":[[854,31]]}}}],["ddpm(denois",{"_index":1603,"t":{"1174":{"position":[[137,15]]}}}],["de(p,q)=(x−s)2+(y−t)2(1)d_e(p,q)=\\sqrt{(x",{"_index":1350,"t":{"1084":{"position":[[177,41]]}}}],["death",{"_index":1336,"t":{"1079":{"position":[[204,6]]}}}],["deathless",{"_index":1335,"t":{"1079":{"position":[[194,9]]}}}],["debug",{"_index":1107,"t":{"1001":{"position":[[1941,9],[2036,9],[2058,7]]},"1011":{"position":[[885,9],[980,9],[1002,7]]}}}],["decod",{"_index":1519,"t":{"1160":{"position":[[254,30]]},"1164":{"position":[[762,8]]},"1193":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"1227":{"position":[[179,7]]},"1389":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"1414":{"position":[[33,7]]},"1439":{"position":[[109,7]]},"1490":{"position":[[452,7]]},"1576":{"position":[[109,7]]},"1605":{"position":[[33,7]]},"1631":{"position":[[452,7]]}}}],["decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用teach",{"_index":1690,"t":{"1195":{"position":[[215,82]]},"1391":{"position":[[215,82]]}}}],["decoder来说,它的输入是中间产物(即gener",{"_index":1583,"t":{"1164":{"position":[[806,39]]}}}],["decoder每一步的输出是一个经过softmax的prob",{"_index":1655,"t":{"1189":{"position":[[119,37]]},"1385":{"position":[[119,37]]}}}],["decoder的任务是生成输出,可以根据是否一次性生成输出分为autoregressive(自回归,abbr",{"_index":1647,"t":{"1187":{"position":[[0,55]]},"1383":{"position":[[0,55]]}}}],["decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的decod",{"_index":1671,"t":{"1189":{"position":[[988,68]]},"1385":{"position":[[988,68]]}}}],["decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向decoder的输出中加入end符号的生成,即每一次输出除了词汇表的所有词汇外还有end符号的概率,当end",{"_index":1663,"t":{"1189":{"position":[[610,155]]},"1385":{"position":[[610,155]]}}}],["decoder的结构训练生成模型的decod",{"_index":1590,"t":{"1164":{"position":[[1134,25]]}}}],["decoder结构,将每一层对应的featur",{"_index":3491,"t":{"1708":{"position":[[28,24]]}}}],["decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。nat的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于at",{"_index":1652,"t":{"1187":{"position":[[252,158]]},"1383":{"position":[[252,158]]}}}],["decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的featur",{"_index":3486,"t":{"1706":{"position":[[214,62]]}}}],["decoder阶段,每个block",{"_index":3484,"t":{"1706":{"position":[[80,32]]}}}],["decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token",{"_index":1651,"t":{"1187":{"position":[[101,150]]},"1383":{"position":[[101,150]]}}}],["decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(encoder)的输出。特别地,首个时间步的输入是begin符号以及编码器(encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(encod",{"_index":1657,"t":{"1189":{"position":[[230,158]]},"1385":{"position":[[230,158]]}}}],["decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,encod",{"_index":1682,"t":{"1193":{"position":[[359,50]]},"1389":{"position":[[359,50]]}}}],["deep",{"_index":1542,"t":{"1160":{"position":[[873,4]]}}}],["def",{"_index":95,"t":{"900":{"position":[[89,6]]},"1258":{"position":[[286,3]]},"1354":{"position":[[307,3],[364,3],[443,3],[855,3],[896,3],[1297,3],[1364,3],[1427,3]]},"1557":{"position":[[286,3]]}}}],["defin",{"_index":196,"t":{"927":{"position":[[11,7],[52,7],[100,7],[133,7],[206,7],[263,7],[301,7],[352,7],[373,7],[404,7],[437,7],[459,7],[477,7]]},"970":{"position":[[74,7]]},"972":{"position":[[76,7]]},"974":{"position":[[50,7],[63,7],[78,7],[94,7],[107,7],[123,7],[145,7],[210,7],[240,7],[265,7],[331,7]]},"977":{"position":[[40,7]]},"979":{"position":[[40,7]]},"981":{"position":[[40,7],[78,7],[119,7],[142,7]]},"1211":{"position":[[283,6],[901,6],[3328,6]]},"1428":{"position":[[513,6]]},"1565":{"position":[[513,6]]}}}],["delta",{"_index":2942,"t":{"1436":{"position":[[294,8]]},"1573":{"position":[[294,8]]}}}],["deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt",{"_index":2941,"t":{"1436":{"position":[[236,54]]},"1573":{"position":[[236,54]]}}}],["delta}^{\\delta}\\sum_{b",{"_index":2593,"t":{"1363":{"position":[[131,24]]}}}],["delta}^{\\delta}{v_{a,b}*x_{i_a,j+b",{"_index":2594,"t":{"1363":{"position":[[156,37]]}}}],["demonstr",{"_index":2752,"t":{"1409":{"position":[[1039,13]]},"1600":{"position":[[1039,13]]}}}],["denois",{"_index":3246,"t":{"1510":{"position":[[26,9]]}}}],["denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从gaussian",{"_index":1606,"t":{"1174":{"position":[[362,56]]}}}],["depend",{"_index":1208,"t":{"1011":{"position":[[75,6]]},"1495":{"position":[[597,16]]},"1636":{"position":[[597,16]]}}}],["depend以及mak",{"_index":1024,"t":{"1001":{"position":[[79,15]]}}}],["depend和mak",{"_index":1008,"t":{"991":{"position":[[346,14]]},"995":{"position":[[152,14]]}}}],["deploy",{"_index":2072,"t":{"1255":{"position":[[20,10]]},"1554":{"position":[[20,10]]}}}],["depth",{"_index":3497,"t":{"1710":{"position":[[32,24]]}}}],["dequ",{"_index":65,"t":{"894":{"position":[[176,10]]},"923":{"position":[[57,5]]}}}],["dequed1(18)h(u,v)=\\begin{cases}1&d(u,v)w2(24)h(u,v)=\\begin{cases}1&d(u,v)d00d(u,v)≤d0(19)h(u,v)=\\begin{cases}1&d(u,v)>d_0",{"_index":1437,"t":{"1110":{"position":[[30,66]]}}}],["h(u,v)={1d(u,v)>d0d(u,v)−d1d0−d1d1≤d(u,v)≤d00d(u,v)d_0",{"_index":1448,"t":{"1110":{"position":[[537,92]]}}}],["h(u,v)={1d(u,v)≤d00d(u,v)>d0(14)h(u,v)=\\begin{cases}1&d(u,v)\\leq",{"_index":1413,"t":{"1108":{"position":[[71,64]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v",{"_index":1443,"t":{"1110":{"position":[[345,68]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v)作为截止频率d0d_0d0",{"_index":1421,"t":{"1108":{"position":[[533,69]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的1/2时的d(u,v)d(u,v)d(u,v",{"_index":1424,"t":{"1108":{"position":[[729,62]]}}}],["h,t",{"_index":801,"t":{"974":{"position":[[1182,4]]}}}],["h_k",{"_index":3172,"t":{"1493":{"position":[[1018,3]]},"1634":{"position":[[1018,3]]}}}],["han",{"_index":2979,"t":{"1456":{"position":[[220,8]]}}}],["happen",{"_index":1722,"t":{"1207":{"position":[[74,7]]}}}],["hash",{"_index":343,"t":{"945":{"position":[[609,19],[646,19],[678,19],[715,19]]}}}],["hat{f}\\|_2+\\lambda_\\text{p}\\mathcal{l}_\\text{p}(i\\hat{m})+\\lambda_\\text{g}\\mathcal{l}_\\text{g}(i\\hat{m})l=∥im−im^∥2​+∥f−f^​∥2​+λp​lp​(im^)+λg​lg​(im",{"_index":3136,"t":{"1490":{"position":[[691,151]]},"1631":{"position":[[691,151]]}}}],["head",{"_index":1639,"t":{"1185":{"position":[[57,4]]},"1189":{"position":[[790,4],[913,4],[968,4],[1363,4]]},"1213":{"position":[[31,4]]},"1217":{"position":[[122,4]]},"1223":{"position":[[24,4]]},"1381":{"position":[[57,4]]},"1385":{"position":[[790,4],[913,4],[968,4],[1363,4]]}}}],["heap",{"_index":101,"t":{"904":{"position":[[30,5]]}}}],["heap.clear",{"_index":102,"t":{"904":{"position":[[36,13]]}}}],["heap.empti",{"_index":104,"t":{"904":{"position":[[63,13]]}}}],["heap.push",{"_index":106,"t":{"904":{"position":[[107,10]]}}}],["heap.siz",{"_index":103,"t":{"904":{"position":[[50,12]]}}}],["help",{"_index":1806,"t":{"1211":{"position":[[2769,5]]}}}],["hhfq",{"_index":2119,"t":{"1260":{"position":[[705,4]]},"1559":{"position":[[705,4]]}}}],["high",{"_index":2750,"t":{"1409":{"position":[[1007,4]]},"1600":{"position":[[1007,4]]}}}],["higher",{"_index":2307,"t":{"1315":{"position":[[90,6],[132,6]]}}}],["highest",{"_index":1780,"t":{"1211":{"position":[[1906,7],[4202,7]]}}}],["hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,alexnet的表现远远超过了其他参赛的网络模型,并且在imagenet",{"_index":2375,"t":{"1318":{"position":[[55,83]]}}}],["hit",{"_index":1121,"t":{"1009":{"position":[[114,3],[1326,3]]}}}],["hk×wkh_k",{"_index":3156,"t":{"1493":{"position":[[543,8],[862,8]]},"1634":{"position":[[543,8],[862,8]]}}}],["hold",{"_index":2882,"t":{"1428":{"position":[[20,5]]},"1565":{"position":[[20,5]]}}}],["hollings@cs.umd.edu",{"_index":1152,"t":{"1009":{"position":[[783,21]]}}}],["hollingsworth",{"_index":1151,"t":{"1009":{"position":[[769,13]]}}}],["honglak",{"_index":2984,"t":{"1456":{"position":[[270,7]]}}}],["hope",{"_index":2902,"t":{"1428":{"position":[[940,4]]},"1565":{"position":[[940,4]]}}}],["host",{"_index":1046,"t":{"1001":{"position":[[735,4],[805,4]]}}}],["host_cc",{"_index":1057,"t":{"1001":{"position":[[962,7]]}}}],["hovemey",{"_index":1147,"t":{"1009":{"position":[[706,9]]}}}],["html",{"_index":2076,"t":{"1255":{"position":[[120,4]]},"1554":{"position":[[120,4]]}}}],["http://127.0.0.1:7890",{"_index":2473,"t":{"1354":{"position":[[199,23]]}}}],["http_proxi",{"_index":3413,"t":{"1649":{"position":[[244,10]]}}}],["http_proxy=http://127.0.0.1:7890",{"_index":3408,"t":{"1649":{"position":[[100,32]]}}}],["https://127.0.0.1:7890",{"_index":2475,"t":{"1354":{"position":[[251,24]]}}}],["https://arxiv.org/pdf/2404.02905",{"_index":3369,"t":{"1625":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.06525",{"_index":2701,"t":{"1407":{"position":[[0,37]]},"1598":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.11838",{"_index":2879,"t":{"1426":{"position":[[0,37]]},"1563":{"position":[[0,37]]}}}],["https://blog.csdn.net/f_zyj/article/details/51594851",{"_index":323,"t":{"943":{"position":[[4,52]]}}}],["https://blog.csdn.net/yeziyezi210/article/details/103864518",{"_index":1853,"t":{"1227":{"position":[[4,64]]}}}],["https://download.csdn.net/download/f_zyj/9988653",{"_index":324,"t":{"943":{"position":[[57,48]]}}}],["https://www.bilibili.com/video/bv12u411s7us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1312,"t":{"1066":{"position":[[284,107]]}}}],["https://www.bilibili.com/video/bv13r4y1m7sq/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1319,"t":{"1066":{"position":[[732,107]]}}}],["https://www.bilibili.com/video/bv1pl4y1e7re/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1309,"t":{"1066":{"position":[[121,107]]}}}],["https://www.bilibili.com/video/bv1vm4y1q7xb/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1315,"t":{"1066":{"position":[[458,107]]}}}],["https://www.jianshu.com/p/41c15d301542",{"_index":3358,"t":{"1623":{"position":[[5,38]]}}}],["https_proxi",{"_index":3414,"t":{"1649":{"position":[[261,11]]}}}],["https_proxy=https://127.0.0.1:7890",{"_index":3409,"t":{"1649":{"position":[[140,34]]}}}],["hung",{"_index":3015,"t":{"1456":{"position":[[702,4]]}}}],["hw4",{"_index":2878,"t":{"1424":{"position":[[53,4]]}}}],["hw×cihw",{"_index":2446,"t":{"1340":{"position":[[51,15]]}}}],["hyperparamet",{"_index":2443,"t":{"1337":{"position":[[80,14]]}}}],["hyperstyl",{"_index":2055,"t":{"1253":{"position":[[20,10],[180,10]]},"1552":{"position":[[20,10],[180,10]]}}}],["h×wh",{"_index":3158,"t":{"1493":{"position":[[600,4]]},"1634":{"position":[[600,4]]}}}],["h′以及w′h'以及w'h′以及w",{"_index":2458,"t":{"1342":{"position":[[177,24]]}}}],["i'll",{"_index":1325,"t":{"1079":{"position":[[73,4],[125,4]]}}}],["i)n(0,i",{"_index":2943,"t":{"1436":{"position":[[331,8]]},"1573":{"position":[[331,8]]}}}],["i)xt​∼n(0,i",{"_index":2948,"t":{"1436":{"position":[[410,12]]},"1573":{"position":[[410,12]]}}}],["i+1",{"_index":878,"t":{"974":{"position":[[3182,4]]}}}],["i,a,b",{"_index":799,"t":{"974":{"position":[[1144,6]]}}}],["i,j",{"_index":863,"t":{"974":{"position":[[2802,4]]}}}],["i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w",{"_index":2582,"t":{"1361":{"position":[[27,49]]}}}],["i/o",{"_index":170,"t":{"921":{"position":[[188,5]]}}}],["i440fxsupport",{"_index":1104,"t":{"1001":{"position":[[1880,14]]},"1011":{"position":[[824,14]]}}}],["i<0",{"_index":805,"t":{"974":{"position":[[1316,5],[1379,5]]}}}],["i<=k",{"_index":836,"t":{"974":{"position":[[2386,5]]}}}],["ir2",{"_index":962,"t":{"981":{"position":[[352,9]]}}}],["if(la>ra",{"_index":895,"t":{"977":{"position":[[365,9],[707,9]]},"979":{"position":[[266,9],[495,9]]}}}],["if(n==0||m==0",{"_index":743,"t":{"972":{"position":[[2300,15]]}}}],["if(num==n",{"_index":741,"t":{"972":{"position":[[2196,10]]}}}],["if(read_key(&keycod",{"_index":1125,"t":{"1009":{"position":[[161,22],[1373,22]]}}}],["if(rt",{"_index":971,"t":{"981":{"position":[[560,7]]}}}],["if(rt==0",{"_index":911,"t":{"977":{"position":[[990,9],[1380,9],[1495,9],[1611,9]]},"979":{"position":[[700,9],[1061,9],[1168,9],[1276,9]]}}}],["if(t[w].l!=0",{"_index":916,"t":{"977":{"position":[[1195,13]]},"979":{"position":[[897,13]]}}}],["if(t[w].r!=0",{"_index":918,"t":{"977":{"position":[[1225,13]]},"979":{"position":[[927,13]]}}}],["if(topologicalsort",{"_index":749,"t":{"972":{"position":[[2423,22]]}}}],["ifm",{"_index":3305,"t":{"1609":{"position":[[266,3],[300,3],[339,3],[379,3]]}}}],["ifndef",{"_index":755,"t":{"974":{"position":[[37,7]]}}}],["ihpf",{"_index":1436,"t":{"1110":{"position":[[15,14]]}}}],["iii",{"_index":2141,"t":{"1274":{"position":[[353,3]]},"1416":{"position":[[1338,3],[1365,3]]},"1607":{"position":[[1339,3],[1366,3]]}}}],["illustr",{"_index":1708,"t":{"1199":{"position":[[11,12]]}}}],["ilpf",{"_index":1407,"t":{"1108":{"position":[[18,14],[37,4]]}}}],["im^=d(f^)\\hat{im}=\\mathcal{d}(\\hat{f})im^=d(f",{"_index":3133,"t":{"1490":{"position":[[569,48]]},"1631":{"position":[[569,48]]}}}],["imag",{"_index":1541,"t":{"1160":{"position":[[845,5]]},"1162":{"position":[[977,5]]},"1248":{"position":[[1104,5]]},"1250":{"position":[[1724,5]]},"1260":{"position":[[282,5],[366,5],[513,5],[844,5]]},"1262":{"position":[[45,35],[128,8]]},"1409":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"1411":{"position":[[353,5],[382,5],[417,5],[569,5]]},"1414":{"position":[[66,5],[244,5]]},"1426":{"position":[[62,5]]},"1428":{"position":[[57,5],[840,5]]},"1453":{"position":[[0,10],[202,5]]},"1456":{"position":[[610,5]]},"1486":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"1490":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"1497":{"position":[[224,5],[294,5]]},"1547":{"position":[[1104,5]]},"1549":{"position":[[1724,5]]},"1559":{"position":[[282,5],[366,5],[513,5],[844,5]]},"1561":{"position":[[45,35],[128,8]]},"1563":{"position":[[62,5]]},"1565":{"position":[[57,5],[840,5]]},"1590":{"position":[[31,7]]},"1592":{"position":[[1199,5],[1571,5],[2055,5]]},"1600":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"1602":{"position":[[353,5],[382,5],[417,5],[569,5]]},"1605":{"position":[[66,5],[244,5]]},"1627":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"1631":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"1640":{"position":[[224,5],[294,5]]}}}],["imagenet",{"_index":1997,"t":{"1250":{"position":[[1009,8],[1327,10],[1364,8]]},"1409":{"position":[[669,8],[807,8]]},"1486":{"position":[[509,8]]},"1549":{"position":[[1009,8],[1327,10],[1364,8]]},"1600":{"position":[[669,8],[807,8]]},"1627":{"position":[[509,8]]}}}],["imagen将压缩版本的图片作为gener",{"_index":1522,"t":{"1160":{"position":[[353,28]]}}}],["imagen的实验结果,相对于decoder即diffus",{"_index":1526,"t":{"1160":{"position":[[447,34]]}}}],["image数据,在传入visdom时仍需要先转化为numpi",{"_index":3262,"t":{"1519":{"position":[[355,35]]}}}],["image,encod",{"_index":3125,"t":{"1490":{"position":[[83,13]]},"1631":{"position":[[83,13]]}}}],["impact",{"_index":1539,"t":{"1160":{"position":[[791,9]]}}}],["import",{"_index":1533,"t":{"1160":{"position":[[623,9]]},"1211":{"position":[[3229,6],[3242,6],[3274,6],[3293,6]]},"1308":{"position":[[269,6],[292,6]]},"1310":{"position":[[258,6],[281,6]]},"1315":{"position":[[1474,6]]},"1354":{"position":[[0,6],[13,6],[43,6],[73,6],[105,6],[141,6],[162,6]]},"1486":{"position":[[1250,9]]},"1519":{"position":[[12,6]]},"1521":{"position":[[12,6]]},"1526":{"position":[[0,6]]},"1617":{"position":[[259,6],[278,6]]},"1627":{"position":[[1250,9]]}}}],["improv",{"_index":1535,"t":{"1160":{"position":[[702,8]]},"1486":{"position":[[555,7],[578,9]]},"1627":{"position":[[555,7],[578,9]]}}}],["in[maxn",{"_index":954,"t":{"981":{"position":[[255,9]]}}}],["incept",{"_index":1548,"t":{"1162":{"position":[[57,9]]},"1250":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"1486":{"position":[[596,9],[641,9]]},"1549":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"1627":{"position":[[596,9],[641,9]]}}}],["includ",{"_index":10,"t":{"884":{"position":[[0,8]]},"890":{"position":[[0,8]]},"912":{"position":[[0,8]]},"947":{"position":[[2062,8]]},"949":{"position":[[1443,8],[1463,8]]},"970":{"position":[[0,8],[20,8],[38,8]]},"972":{"position":[[0,8],[21,8],[41,8],[59,8]]},"985":{"position":[[0,8]]},"1009":{"position":[[1005,8],[1034,8],[1061,8],[1088,8],[1112,8],[1138,8],[1162,8],[1186,8],[1214,8],[1239,8],[1265,8]]},"1428":{"position":[[708,9]]},"1486":{"position":[[823,9],[1137,9]]},"1565":{"position":[[708,9]]},"1627":{"position":[[823,9],[1137,9]]},"1677":{"position":[[41,8]]}}}],["include::iter",{"_index":562,"t":{"957":{"position":[[765,14]]}}}],["int[col",{"_index":322,"t":{"941":{"position":[[84,9]]}}}],["int[nrow",{"_index":314,"t":{"939":{"position":[[77,8]]}}}],["interact",{"_index":1727,"t":{"1207":{"position":[[167,8],[303,12]]}}}],["interpol",{"_index":3176,"t":{"1495":{"position":[[143,11]]},"1636":{"position":[[143,11]]}}}],["introduc",{"_index":2702,"t":{"1409":{"position":[[3,9]]},"1600":{"position":[[3,9]]}}}],["introduct",{"_index":3271,"t":{"1585":{"position":[[52,42]]}}}],["intuit",{"_index":3094,"t":{"1486":{"position":[[281,9]]},"1627":{"position":[[281,9]]}}}],["invers",{"_index":2062,"t":{"1253":{"position":[[355,9]]},"1552":{"position":[[355,9]]}}}],["ios::sync_with_stdio(fals",{"_index":39,"t":{"886":{"position":[[346,28]]}}}],["iostream",{"_index":469,"t":{"949":{"position":[[1452,10]]},"970":{"position":[[9,10]]},"972":{"position":[[30,10]]}}}],["ipl",{"_index":1856,"t":{"1229":{"position":[[9,3],[27,3]]},"1232":{"position":[[16,3],[46,3]]},"1250":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"1260":{"position":[[2,3],[927,3]]},"1262":{"position":[[914,3],[1189,3]]},"1461":{"position":[[0,11]]},"1528":{"position":[[9,3],[27,3]]},"1531":{"position":[[16,3],[46,3]]},"1549":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"1559":{"position":[[2,3],[927,3]]},"1561":{"position":[[914,3],[1189,3]]}}}],["ipl独立于生成模型,可以自由选择diffus",{"_index":2973,"t":{"1453":{"position":[[286,64]]}}}],["is=exp⁡(ex[kl(p(y∣x)∣∣p(y))])is=\\exp\\left(\\mathbb{e}_x[kl(p(y|x)||p(y))]\\right)is=exp(ex​[kl(p(y∣x)∣∣p(i",{"_index":1990,"t":{"1250":{"position":[[627,108]]},"1549":{"position":[[627,108]]}}}],["is_heap",{"_index":424,"t":{"947":{"position":[[2236,7]]}}}],["is_heap_untilc++11",{"_index":425,"t":{"947":{"position":[[2258,18]]}}}],["is_list",{"_index":719,"t":{"972":{"position":[[1508,10]]}}}],["is_partitionedc++11",{"_index":401,"t":{"947":{"position":[[1542,19]]}}}],["is_permutationc++11",{"_index":430,"t":{"947":{"position":[[2397,19]]}}}],["is_sorted_untilc++11",{"_index":408,"t":{"947":{"position":[[1749,20]]}}}],["is_sortedc++11",{"_index":407,"t":{"947":{"position":[[1722,14]]}}}],["is_tre",{"_index":723,"t":{"972":{"position":[[1656,10]]}}}],["isclos",{"_index":3300,"t":{"1609":{"position":[[128,12]]}}}],["isdag",{"_index":282,"t":{"932":{"position":[[624,6],[660,6]]},"970":{"position":[[358,6],[394,6],[550,7]]},"972":{"position":[[499,6],[535,6],[746,7]]}}}],["isdag(1",{"_index":289,"t":{"932":{"position":[[741,8]]},"972":{"position":[[616,8]]}}}],["isdag(isdag",{"_index":286,"t":{"932":{"position":[[682,12]]},"970":{"position":[[416,12]]},"972":{"position":[[557,12]]}}}],["isinstance(net",{"_index":2504,"t":{"1354":{"position":[[955,15]]}}}],["isinstance(train_lay",{"_index":1962,"t":{"1248":{"position":[[347,24]]},"1547":{"position":[[347,24]]}}}],["isinstance(x",{"_index":2510,"t":{"1354":{"position":[[1114,13]]}}}],["is(incept",{"_index":2025,"t":{"1250":{"position":[[2084,12]]},"1549":{"position":[[2084,12]]}}}],["it'",{"_index":2304,"t":{"1315":{"position":[[62,4]]}}}],["item",{"_index":3353,"t":{"1621":{"position":[[231,4],[440,4]]}}}],["iter",{"_index":175,"t":{"923":{"position":[[78,8]]},"947":{"position":[[835,22]]},"1335":{"position":[[8,9],[272,9]]}}}],["iter_swap",{"_index":379,"t":{"947":{"position":[[825,9]]}}}],["it指向的元素前插入n个新元素val",{"_index":456,"t":{"949":{"position":[[729,22]]},"951":{"position":[[750,22]]}}}],["it指向的元素前插入新元素val",{"_index":455,"t":{"949":{"position":[[685,20]]},"951":{"position":[[706,20]]}}}],["iulian",{"_index":1154,"t":{"1009":{"position":[[827,6]]}}}],["j",{"_index":145,"t":{"918":{"position":[[7,1],[111,1]]},"970":{"position":[[1989,1],[1996,1],[2011,4]]},"974":{"position":[[2924,1],[3086,2]]},"1466":{"position":[[617,2]]}}}],["j2\\pi",{"_index":1370,"t":{"1090":{"position":[[353,5],[626,5],[1247,5]]}}}],["j\\frac{2\\pi",{"_index":1384,"t":{"1090":{"position":[[948,11]]}}}],["jae",{"_index":3004,"t":{"1456":{"position":[[559,3]]}}}],["jeffrey",{"_index":1150,"t":{"1009":{"position":[[758,7]]}}}],["jingwan",{"_index":2999,"t":{"1456":{"position":[[526,7]]}}}],["jinwoo",{"_index":2991,"t":{"1456":{"position":[[393,6]]}}}],["j}\\right)p(xi,j​∣xa(first",{"_index":480,"t":{"951":{"position":[[126,17]]}}}],["lista(n",{"_index":476,"t":{"951":{"position":[[51,13],[87,13]]}}}],["lista{1,2,3",{"_index":475,"t":{"951":{"position":[[33,17]]}}}],["list和tensor",{"_index":2630,"t":{"1396":{"position":[[409,17]]}}}],["list和vector",{"_index":331,"t":{"945":{"position":[[228,45]]}}}],["list或deque实现,封闭头部即可,不用vector",{"_index":333,"t":{"945":{"position":[[282,51],[342,51]]}}}],["list的*乘法是复制元素,改变list的shap",{"_index":2631,"t":{"1396":{"position":[[427,26]]}}}],["ll",{"_index":211,"t":{"927":{"position":[[360,2],[547,2],[633,2],[667,2]]},"977":{"position":[[118,3]]},"979":{"position":[[118,3]]},"981":{"position":[[204,3]]}}}],["llama",{"_index":2714,"t":{"1409":{"position":[[246,6]]},"1411":{"position":[[602,5]]},"1416":{"position":[[34,5]]},"1600":{"position":[[246,6]]},"1602":{"position":[[602,5]]},"1607":{"position":[[34,5]]}}}],["llamagen",{"_index":2703,"t":{"1409":{"position":[[13,9]]},"1416":{"position":[[971,13],[1916,8]]},"1600":{"position":[[13,9]]},"1607":{"position":[[977,8],[1917,8]]}}}],["lll",{"_index":1404,"t":{"1102":{"position":[[243,17]]},"1217":{"position":[[187,13]]},"1219":{"position":[[16,12]]}}}],["llm",{"_index":2756,"t":{"1409":{"position":[[1150,3]]},"1411":{"position":[[211,4],[288,4],[500,4],[739,3]]},"1416":{"position":[[112,4],[1444,4]]},"1486":{"position":[[988,5],[1274,5]]},"1488":{"position":[[84,4]]},"1493":{"position":[[1305,4]]},"1497":{"position":[[518,4]]},"1600":{"position":[[1150,3]]},"1602":{"position":[[211,4],[288,4],[500,4],[738,3]]},"1607":{"position":[[112,4],[1445,4]]},"1627":{"position":[[988,5],[1274,5]]},"1629":{"position":[[84,4]]},"1634":{"position":[[1305,4]]},"1638":{"position":[[265,4],[281,4]]},"1640":{"position":[[518,4]]}}}],["ll×l",{"_index":1845,"t":{"1221":{"position":[[366,4]]}}}],["locale.h",{"_index":163,"t":{"921":{"position":[[92,8]]}}}],["locatevex_al(*pg",{"_index":813,"t":{"974":{"position":[[1579,17],[1605,17]]}}}],["locatevex_al(algraph",{"_index":795,"t":{"974":{"position":[[917,20]]}}}],["locatevex_al(g",{"_index":867,"t":{"974":{"position":[[2899,15],[2928,15]]}}}],["log",{"_index":1095,"t":{"1001":{"position":[[1757,4]]},"1011":{"position":[[701,4]]}}}],["log2(1pi)(7)\\begin{align",{"_index":2315,"t":{"1315":{"position":[[286,25]]}}}],["log2(pi)=∑inpi",{"_index":2314,"t":{"1315":{"position":[[271,14]]}}}],["log2(pi)−log2(qi)](9)d_{kl}(p",{"_index":2336,"t":{"1315":{"position":[[842,30]]}}}],["log2(qi)(10)\\begin{align",{"_index":2348,"t":{"1315":{"position":[[1187,25]]}}}],["log2​(pi​)=i∑n​pi",{"_index":2321,"t":{"1315":{"position":[[437,18]]}}}],["log2​(pi​)−log2​(qi​)](9",{"_index":2340,"t":{"1315":{"position":[[959,26]]}}}],["log2​(pi​1​)​(7",{"_index":2322,"t":{"1315":{"position":[[456,16]]}}}],["log2​(qi​)​(10",{"_index":2354,"t":{"1315":{"position":[[1357,15]]}}}],["log_2(p_i",{"_index":2338,"t":{"1315":{"position":[[910,11]]}}}],["log_2(q_i)]}\\tag{9}dkl​(p",{"_index":2339,"t":{"1315":{"position":[[922,25]]}}}],["logist",{"_index":2668,"t":{"1399":{"position":[[0,8]]}}}],["logit",{"_index":2827,"t":{"1416":{"position":[[2074,5]]},"1607":{"position":[[2075,5]]}}}],["logit提供的通用信息,同时保留条件logit",{"_index":2839,"t":{"1416":{"position":[[2327,80]]},"1607":{"position":[[2328,80]]}}}],["logit,即不考虑任何条件信息时生成的logit",{"_index":2836,"t":{"1416":{"position":[[2233,31]]},"1607":{"position":[[2234,31]]}}}],["logit,即基于输入文本提示的信息生成的logit",{"_index":2834,"t":{"1416":{"position":[[2189,31]]},"1607":{"position":[[2190,31]]}}}],["long",{"_index":212,"t":{"927":{"position":[[363,4],[368,4],[394,4],[399,4]]},"967":{"position":[[1010,4]]},"977":{"position":[[108,4],[113,4]]},"979":{"position":[[108,4],[113,4]]},"981":{"position":[[194,4],[199,4]]},"1671":{"position":[[4,17],[22,32]]}}}],["loss",{"_index":1971,"t":{"1248":{"position":[[1024,4]]},"1260":{"position":[[790,4],[886,4]]},"1262":{"position":[[24,8],[40,4]]},"1296":{"position":[[139,10]]},"1354":{"position":[[1623,4],[1751,6]]},"1428":{"position":[[504,5],[532,4]]},"1434":{"position":[[127,4],[893,4]]},"1461":{"position":[[890,39]]},"1519":{"position":[[280,8]]},"1547":{"position":[[1024,4]]},"1559":{"position":[[790,4],[886,4]]},"1561":{"position":[[24,8],[40,4]]},"1565":{"position":[[504,5],[532,4]]},"1571":{"position":[[127,4],[893,4]]},"1708":{"position":[[129,4]]},"1731":{"position":[[6,43],[87,14]]}}}],["loss(y_hat",{"_index":2555,"t":{"1354":{"position":[[2039,11]]}}}],["loss.to(devic",{"_index":2535,"t":{"1354":{"position":[[1658,15]]}}}],["lossdiscriminator=lossreal+lossfake(3)loss_{discriminator}=loss_{real}+loss_{fake}\\tag{3}lossdiscriminator​=lossreal​+lossfake​(3",{"_index":1494,"t":{"1147":{"position":[[532,130]]}}}],["lossfake=−ez∼pz(z)[log(1−d(g(z)))](2)loss_{fak",{"_index":1489,"t":{"1147":{"position":[[332,49]]}}}],["lossmse=∑[y−f(x)]2(5)loss_{ms",{"_index":2294,"t":{"1313":{"position":[[57,31]]}}}],["lossreal=−ex∼pdata(x)[log⁡d(x)](1)loss_{r",{"_index":1484,"t":{"1147":{"position":[[160,46]]}}}],["loss得到6",{"_index":3494,"t":{"1708":{"position":[[74,11]]}}}],["loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的lat",{"_index":3045,"t":{"1461":{"position":[[644,71]]}}}],["loss的输入来约束从源域中学习到的prompt",{"_index":3040,"t":{"1461":{"position":[[346,33]]}}}],["loss的输入,约束学习到的prompt",{"_index":3044,"t":{"1461":{"position":[[555,31]]}}}],["lot",{"_index":1110,"t":{"1001":{"position":[[1992,3]]},"1011":{"position":[[936,3]]}}}],["low",{"_index":1410,"t":{"1108":{"position":[[54,3]]}}}],["lower_bound",{"_index":416,"t":{"947":{"position":[[1975,11]]}}}],["lr",{"_index":1305,"t":{"1061":{"position":[[29,9]]},"1354":{"position":[[1414,3],[2720,3],[2810,3]]}}}],["lr(0",{"_index":1308,"t":{"1066":{"position":[[98,8]]},"1071":{"position":[[139,6],[160,13]]}}}],["lr(1",{"_index":1314,"t":{"1066":{"position":[[435,8]]},"1071":{"position":[[154,5]]}}}],["lr=lr",{"_index":2533,"t":{"1354":{"position":[[1616,6]]}}}],["lr_mul=0.01",{"_index":2104,"t":{"1258":{"position":[[843,12],[986,12]]},"1557":{"position":[[843,12],[986,12]]}}}],["lr_mul=lr_mlp",{"_index":1945,"t":{"1246":{"position":[[684,14]]},"1545":{"position":[[684,14]]}}}],["lu",{"_index":3000,"t":{"1456":{"position":[[534,3]]},"1669":{"position":[[678,57]]},"1687":{"position":[[806,57]]}}}],["l×dkl",{"_index":1842,"t":{"1221":{"position":[[246,5]]}}}],["l×dl",{"_index":1833,"t":{"1219":{"position":[[54,4]]}}}],["l×ll",{"_index":1844,"t":{"1221":{"position":[[354,4]]}}}],["m",{"_index":478,"t":{"951":{"position":[[101,2]]},"957":{"position":[[323,2]]},"1001":{"position":[[1086,1]]},"1517":{"position":[[52,1]]}}}],["m.clear",{"_index":569,"t":{"957":{"position":[[1053,10]]}}}],["m.empti",{"_index":568,"t":{"957":{"position":[[1032,10]]}}}],["m.erase(it",{"_index":566,"t":{"957":{"position":[[952,12]]}}}],["m.erase(key",{"_index":565,"t":{"957":{"position":[[903,13]]}}}],["m.find(key",{"_index":563,"t":{"957":{"position":[[785,12]]}}}],["m.insert(make_pair(key",{"_index":559,"t":{"957":{"position":[[486,23]]}}}],["m.size",{"_index":567,"t":{"957":{"position":[[1012,9]]}}}],["m32",{"_index":1045,"t":{"1001":{"position":[[729,3],[978,3]]}}}],["m[key",{"_index":555,"t":{"957":{"position":[[352,6],[683,7]]}}}],["machin",{"_index":2420,"t":{"1333":{"position":[[47,7]]}}}],["mae",{"_index":2953,"t":{"1439":{"position":[[15,3]]},"1576":{"position":[[15,3]]}}}],["mage",{"_index":3286,"t":{"1592":{"position":[[1981,10]]}}}],["main",{"_index":16,"t":{"884":{"position":[[50,6]]},"890":{"position":[[50,6]]},"949":{"position":[[1506,6]]},"970":{"position":[[1733,6]]},"972":{"position":[[2284,7]]},"974":{"position":[[2708,6]]},"977":{"position":[[1704,6]]},"979":{"position":[[1369,6]]},"981":{"position":[[658,6]]},"985":{"position":[[50,6]]},"1009":{"position":[[503,31]]},"1677":{"position":[[770,6]]}}}],["main(struct",{"_index":1183,"t":{"1009":{"position":[[1838,11]]}}}],["make",{"_index":1007,"t":{"991":{"position":[[338,7]]},"995":{"position":[[144,7]]},"1001":{"position":[[147,19]]},"1011":{"position":[[70,4],[82,4]]},"1211":{"position":[[2778,6]]},"1486":{"position":[[428,5]]},"1627":{"position":[[428,5]]}}}],["make_heap",{"_index":426,"t":{"947":{"position":[[2296,9]]}}}],["malloc(sizeof(arcnod",{"_index":816,"t":{"974":{"position":[[1670,26]]}}}],["man",{"_index":3020,"t":{"1456":{"position":[[758,3]]}}}],["map",{"_index":67,"t":{"894":{"position":[[192,4]]},"912":{"position":[[9,5]]},"923":{"position":[[99,3]]},"957":{"position":[[0,7],[223,68],[292,13],[326,9],[339,9]]},"1246":{"position":[[470,12],[566,10]]},"1250":{"position":[[1940,3]]},"1298":{"position":[[83,3]]},"1304":{"position":[[43,21]]},"1490":{"position":[[111,4],[1270,3]]},"1493":{"position":[[213,3],[265,4],[289,4],[386,14]]},"1495":{"position":[[104,3],[136,3],[171,6],[186,3]]},"1497":{"position":[[236,14]]},"1545":{"position":[[470,12],[566,10]]},"1549":{"position":[[1940,3]]},"1631":{"position":[[111,4],[1270,3]]},"1634":{"position":[[213,3],[265,4],[289,4],[386,14]]},"1636":{"position":[[104,3],[136,3],[171,6],[186,3]]},"1640":{"position":[[236,14]]}}}],["map、<=、>=、==、!=,其规则是先比较first,first相等时再比较second",{"_index":547,"t":{"955":{"position":[[246,110]]}}}],["pair也能进行sort",{"_index":92,"t":{"898":{"position":[[81,12]]}}}],["pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair",{"_index":548,"t":{"955":{"position":[[357,92]]}}}],["pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second",{"_index":546,"t":{"955":{"position":[[173,72]]}}}],["paper",{"_index":2017,"t":{"1250":{"position":[[1810,5]]},"1523":{"position":[[71,5]]},"1549":{"position":[[1810,5]]}}}],["paradigm",{"_index":2707,"t":{"1409":{"position":[[107,8]]},"1486":{"position":[[66,8]]},"1600":{"position":[[107,8]]},"1627":{"position":[[66,8]]}}}],["paragraph",{"_index":1798,"t":{"1211":{"position":[[2628,10]]}}}],["paramet",{"_index":2440,"t":{"1337":{"position":[[37,9]]},"1409":{"position":[[773,11],[953,11]]},"1420":{"position":[[87,10]]},"1600":{"position":[[773,11],[953,11]]}}}],["paraphras",{"_index":2224,"t":{"1292":{"position":[[677,10]]}}}],["parti",{"_index":2771,"t":{"1411":{"position":[[90,5]]},"1483":{"position":[[0,5],[6,71],[103,10],[272,14]]},"1602":{"position":[[90,5]]}}}],["partial_sort",{"_index":410,"t":{"947":{"position":[[1822,12]]}}}],["partial_sort_copi",{"_index":411,"t":{"947":{"position":[[1840,17]]}}}],["partit",{"_index":403,"t":{"947":{"position":[[1590,9]]},"1333":{"position":[[183,11]]}}}],["partition_copyc++11",{"_index":404,"t":{"947":{"position":[[1611,19]]}}}],["partition_pointc++11",{"_index":405,"t":{"947":{"position":[[1643,20]]}}}],["pass",{"_index":1411,"t":{"1108":{"position":[[58,4]]}}}],["patch",{"_index":2954,"t":{"1439":{"position":[[68,5]]},"1446":{"position":[[26,5]]},"1576":{"position":[[68,5]]},"1583":{"position":[[26,5]]}}}],["path",{"_index":837,"t":{"974":{"position":[[2397,11]]},"1422":{"position":[[226,4],[273,4]]}}}],["path/terminal_proxy.sh",{"_index":3418,"t":{"1651":{"position":[[96,23]]}}}],["path[k]=0",{"_index":849,"t":{"974":{"position":[[2691,10]]}}}],["path[k]=u",{"_index":833,"t":{"974":{"position":[[2317,10]]}}}],["path[max_vertex_num",{"_index":826,"t":{"974":{"position":[[2162,21]]}}}],["pathnum",{"_index":841,"t":{"974":{"position":[[2483,10]]}}}],["pathnum=0",{"_index":827,"t":{"974":{"position":[[2193,10],[3006,10]]}}}],["pathnum==0",{"_index":873,"t":{"974":{"position":[[3096,12]]}}}],["paths[i",{"_index":879,"t":{"974":{"position":[[3187,10]]}}}],["paths[maxsize][max_vertex_num",{"_index":825,"t":{"974":{"position":[[2119,31]]}}}],["paths[pathnum][i",{"_index":838,"t":{"974":{"position":[[2409,17]]}}}],["paths[pathnum][i]='\\0",{"_index":840,"t":{"974":{"position":[[2453,23]]}}}],["pay",{"_index":1730,"t":{"1207":{"position":[[230,3]]}}}],["pc",{"_index":999,"t":{"991":{"position":[[102,7]]}}}],["pe(k,2i)\\\\pe(pos+k,2i+1)=pe(pos,2i+1)\\tim",{"_index":1627,"t":{"1183":{"position":[[836,43]]},"1379":{"position":[[836,43]]}}}],["pe(k,2i)\\end{array",{"_index":1630,"t":{"1183":{"position":[[908,19]]},"1379":{"position":[[908,19]]}}}],["pe(k,2i+1",{"_index":1628,"t":{"1183":{"position":[[880,10]]},"1379":{"position":[[880,10]]}}}],["pe(k,2i+1)+pe(pos,2i+1)\\tim",{"_index":1626,"t":{"1183":{"position":[[806,29]]},"1379":{"position":[[806,29]]}}}],["pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)(3)\\begin{array}{l}pe(pos+k,2i)=pe(pos,2i)\\tim",{"_index":1625,"t":{"1183":{"position":[[643,162]]},"1379":{"position":[[643,162]]}}}],["pe(pos,2i)=sin(pos100002i/dmodel)(1)pe_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1620,"t":{"1183":{"position":[[212,96]]},"1379":{"position":[[212,96]]}}}],["pe(pos,2i)\\tim",{"_index":1629,"t":{"1183":{"position":[[891,16]]},"1379":{"position":[[891,16]]}}}],["pe(pos,2i+1)=cos(pos100002i/dmodel)(2)pe_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1622,"t":{"1183":{"position":[[356,100]]},"1379":{"position":[[356,100]]}}}],["penalti",{"_index":2381,"t":{"1326":{"position":[[151,48]]}}}],["per",{"_index":2890,"t":{"1428":{"position":[[319,3],[559,3]]},"1565":{"position":[[319,3],[559,3]]}}}],["perform",{"_index":2422,"t":{"1333":{"position":[[80,11]]},"1335":{"position":[[354,12]]},"1409":{"position":[[342,11],[1065,11]]},"1600":{"position":[[342,11],[1065,11]]}}}],["permit",{"_index":1161,"t":{"1009":{"position":[[918,9]]}}}],["perspect",{"_index":1236,"t":{"1015":{"position":[[841,12]]}}}],["pg",{"_index":787,"t":{"974":{"position":[[759,4],[779,2],[795,2],[844,2],[1087,4],[1274,2],[1336,2],[1399,2],[1470,2],[1748,3],[1790,2],[1872,2]]}}}],["photo",{"_index":1885,"t":{"1240":{"position":[[44,5],[225,16],[244,5],[255,18]]},"1242":{"position":[[139,5],[150,5],[414,5]]},"1244":{"position":[[72,5],[94,5]]},"1260":{"position":[[59,5],[687,5]]},"1262":{"position":[[621,5],[649,6]]},"1539":{"position":[[44,5],[225,16],[244,5],[255,18]]},"1541":{"position":[[139,5],[150,5],[414,5]]},"1543":{"position":[[72,5],[94,5]]},"1559":{"position":[[59,5],[687,5]]},"1561":{"position":[[621,5],[649,6]]}}}],["photo.’或‘a",{"_index":1923,"t":{"1244":{"position":[[83,10]]},"1543":{"position":[[83,10]]}}}],["photorealist",{"_index":1540,"t":{"1160":{"position":[[822,14]]}}}],["photo→anim",{"_index":2031,"t":{"1250":{"position":[[2171,11],[2518,11]]},"1549":{"position":[[2171,11],[2518,11]]}}}],["photo→cartoon",{"_index":2050,"t":{"1250":{"position":[[2365,13],[2658,13]]},"1549":{"position":[[2365,13],[2658,13]]}}}],["photo→cub",{"_index":2052,"t":{"1250":{"position":[[2407,12],[2700,12]]},"1549":{"position":[[2407,12],[2700,12]]}}}],["photo→disney",{"_index":2027,"t":{"1250":{"position":[[2135,12],[2491,12]]},"1549":{"position":[[2135,12],[2491,12]]}}}],["photo→pixar",{"_index":2041,"t":{"1250":{"position":[[2277,11],[2588,11]]},"1549":{"position":[[2277,11],[2588,11]]}}}],["photo→pointil",{"_index":2051,"t":{"1250":{"position":[[2384,17],[2677,17]]},"1549":{"position":[[2384,17],[2677,17]]}}}],["photo→tolkien",{"_index":2043,"t":{"1250":{"position":[[2304,13],[2615,13]]},"1549":{"position":[[2304,13],[2615,13]]}}}],["photo→ukiyo",{"_index":2037,"t":{"1250":{"position":[[2240,11],[2569,11]]},"1549":{"position":[[2240,11],[2569,11]]}}}],["photo→wal",{"_index":2036,"t":{"1250":{"position":[[2215,10],[2544,10]]},"1549":{"position":[[2215,10],[2544,10]]}}}],["photo→werewolf",{"_index":2045,"t":{"1250":{"position":[[2327,14],[2638,14]]},"1549":{"position":[[2327,14],[2638,14]]}}}],["pi",{"_index":216,"t":{"927":{"position":[[445,2]]}}}],["pii",{"_index":215,"t":{"927":{"position":[[412,3]]}}}],["pip",{"_index":1872,"t":{"1234":{"position":[[124,3],[158,3]]},"1514":{"position":[[0,3]]},"1533":{"position":[[124,3],[158,3]]}}}],["pip_{i}pi",{"_index":2199,"t":{"1290":{"position":[[404,23]]}}}],["piscart",{"_index":2960,"t":{"1451":{"position":[[30,10]]}}}],["pixelcnn",{"_index":3068,"t":{"1471":{"position":[[14,14]]},"1473":{"position":[[114,8],[141,8]]}}}],["pixelnorm",{"_index":1939,"t":{"1246":{"position":[[516,9],[597,13]]},"1545":{"position":[[516,9],[597,13]]}}}],["pixelnorm以及全连接层,将每个点归一化(除以模长),避免输入nois",{"_index":2100,"t":{"1258":{"position":[[725,54]]},"1557":{"position":[[725,54]]}}}],["pixelnorm,防止与transformer中的lay",{"_index":2081,"t":{"1258":{"position":[[185,38]]},"1557":{"position":[[185,38]]}}}],["pixelrnn",{"_index":3066,"t":{"1469":{"position":[[0,8],[52,19]]},"1471":{"position":[[5,8]]},"1473":{"position":[[125,8],[152,8]]}}}],["pi′=pi∑wj∈ckpj",{"_index":2158,"t":{"1276":{"position":[[518,14]]}}}],["pi′=pi∑wj∈cppj",{"_index":2180,"t":{"1278":{"position":[[627,14]]}}}],["pi′p_i^{\\prime}pi",{"_index":2165,"t":{"1276":{"position":[[653,20]]},"1278":{"position":[[758,22]]}}}],["plasmpkg2",{"_index":3402,"t":{"1645":{"position":[[336,9]]}}}],["platform",{"_index":1049,"t":{"1001":{"position":[[810,9],[841,9]]}}}],["pleas",{"_index":1786,"t":{"1211":{"position":[[2193,6],[4352,6]]}}}],["plot",{"_index":1822,"t":{"1211":{"position":[[3321,4]]}}}],["plt",{"_index":2471,"t":{"1354":{"position":[[158,3]]}}}],["plt.show",{"_index":2574,"t":{"1354":{"position":[[2628,10]]}}}],["po",{"_index":622,"t":{"967":{"position":[[487,4],[511,3],[692,3],[725,3],[794,3],[932,3]]}}}],["point",{"_index":1143,"t":{"1009":{"position":[[660,5],[1743,6]]}}}],["polynomi",{"_index":3462,"t":{"1680":{"position":[[753,10]]},"1689":{"position":[[753,10]]}}}],["pop",{"_index":61,"t":{"894":{"position":[[100,5],[141,5],[170,5]]},"970":{"position":[[1650,4]]}}}],["pop_heap",{"_index":427,"t":{"947":{"position":[[2318,8]]}}}],["popular",{"_index":2744,"t":{"1409":{"position":[[854,7]]},"1600":{"position":[[854,7]]}}}],["portrait",{"_index":2132,"t":{"1262":{"position":[[738,10]]},"1561":{"position":[[738,10]]}}}],["pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1",{"_index":1624,"t":{"1183":{"position":[[506,136]]},"1379":{"position":[[506,136]]}}}],["posit",{"_index":2807,"t":{"1416":{"position":[[1017,8]]},"1607":{"position":[[1018,8]]}}}],["pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel",{"_index":1619,"t":{"1183":{"position":[[57,154]]},"1379":{"position":[[57,154]]}}}],["postt(int",{"_index":932,"t":{"977":{"position":[[1595,9]]},"979":{"position":[[1260,9]]},"981":{"position":[[544,9]]}}}],["postt(rt",{"_index":946,"t":{"977":{"position":[[2056,10]]},"979":{"position":[[1642,10]]},"981":{"position":[[806,10]]}}}],["postt(t[rt].l",{"_index":933,"t":{"977":{"position":[[1629,15]]},"979":{"position":[[1294,15]]},"981":{"position":[[585,15]]}}}],["postt(t[rt].r",{"_index":934,"t":{"977":{"position":[[1645,15]]},"979":{"position":[[1310,15]]},"981":{"position":[[601,15]]}}}],["pos处的二进制位置为0",{"_index":635,"t":{"967":{"position":[[863,14]]}}}],["power",{"_index":3109,"t":{"1486":{"position":[[936,5]]},"1627":{"position":[[936,5]]}}}],["pp_arr",{"_index":313,"t":{"939":{"position":[[63,7]]}}}],["ppp",{"_index":2175,"t":{"1278":{"position":[[446,14]]}}}],["ppp的坐标为(x,y)(x",{"_index":1348,"t":{"1084":{"position":[[118,19]]}}}],["practic",{"_index":2843,"t":{"1418":{"position":[[44,8]]}}}],["pre",{"_index":961,"t":{"981":{"position":[[346,3]]},"1162":{"position":[[983,3]]},"1292":{"position":[[1023,6]]}}}],["pre[maxn",{"_index":953,"t":{"981":{"position":[[244,10]]}}}],["pre_stylegan",{"_index":1882,"t":{"1236":{"position":[[54,14]]},"1535":{"position":[[54,14]]}}}],["precis",{"_index":2967,"t":{"1453":{"position":[[150,7]]}}}],["predic",{"_index":402,"t":{"947":{"position":[[1562,27]]}}}],["predict",{"_index":2200,"t":{"1290":{"position":[[442,11]]},"1315":{"position":[[1533,7],[1580,7],[1768,7]]},"1409":{"position":[[95,11]]},"1411":{"position":[[172,10]]},"1486":{"position":[[158,11],[190,12],[255,12]]},"1490":{"position":[[32,10],[946,10],[996,11]]},"1493":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"1592":{"position":[[1108,11],[1127,10]]},"1600":{"position":[[95,11]]},"1602":{"position":[[172,10]]},"1627":{"position":[[158,11],[190,12],[255,12]]},"1631":{"position":[[32,10],[946,10],[996,11]]},"1634":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"1638":{"position":[[192,11]]}}}],["prediction,图(b",{"_index":3137,"t":{"1490":{"position":[[903,25]]},"1631":{"position":[[903,25]]}}}],["predictor",{"_index":1217,"t":{"1015":{"position":[[185,46]]},"1017":{"position":[[185,10]]},"1164":{"position":[[245,10]]},"1174":{"position":[[568,14]]}}}],["predictor中。从随机分布中sample出的噪声就是nois",{"_index":1579,"t":{"1164":{"position":[[703,34]]}}}],["predictor中,而需要预测出的噪声分布的ground",{"_index":1573,"t":{"1164":{"position":[[407,29]]}}}],["predictor对噪声denois",{"_index":1602,"t":{"1174":{"position":[[107,29]]}}}],["predictor的ground",{"_index":1580,"t":{"1164":{"position":[[738,16]]}}}],["predictor预测出的噪声,αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​以及α1,α2,...αt\\alpha_1,\\alpha_2,...\\alpha_tα1​,α2​,...αt",{"_index":1263,"t":{"1019":{"position":[[592,158]]}}}],["predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的ground",{"_index":1248,"t":{"1017":{"position":[[717,65]]}}}],["predictor,根据文字prompt对从随机分布中sampl",{"_index":1223,"t":{"1015":{"position":[[490,54]]}}}],["predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的nois",{"_index":1601,"t":{"1174":{"position":[[58,48]]}}}],["predit",{"_index":2008,"t":{"1250":{"position":[[1402,9]]},"1549":{"position":[[1402,9]]}}}],["preprocess",{"_index":2852,"t":{"1422":{"position":[[88,10],[161,12]]}}}],["present",{"_index":3087,"t":{"1486":{"position":[[3,7]]},"1627":{"position":[[3,7]]}}}],["press",{"_index":1203,"t":{"1009":{"position":[[2184,7]]}}}],["pret(int",{"_index":924,"t":{"977":{"position":[[1365,8]]},"979":{"position":[[1046,8]]}}}],["pret(rt",{"_index":944,"t":{"977":{"position":[[2022,9]]},"979":{"position":[[1629,9]]}}}],["pret(t[rt].l",{"_index":927,"t":{"977":{"position":[[1435,14]]},"979":{"position":[[1116,14]]}}}],["pret(t[rt].r",{"_index":928,"t":{"977":{"position":[[1450,14]]},"979":{"position":[[1131,14]]}}}],["pretrain",{"_index":2189,"t":{"1288":{"position":[[208,28]]}}}],["prev_permut",{"_index":439,"t":{"947":{"position":[[2667,16]]}}}],["prewitt",{"_index":1467,"t":{"1128":{"position":[[116,10]]}}}],["prim",{"_index":3429,"t":{"1663":{"position":[[100,6]]}}}],["primari",{"_index":3307,"t":{"1609":{"position":[[276,7],[310,7],[349,7],[389,7]]}}}],["print",{"_index":1204,"t":{"1009":{"position":[[2201,5]]}}}],["print(\"%c\",(asciicode=='\\r",{"_index":1137,"t":{"1009":{"position":[[443,28],[1658,28]]}}}],["print(\"\\n",{"_index":1134,"t":{"1009":{"position":[[376,9],[1588,9]]}}}],["print(\"argmax",{"_index":2650,"t":{"1396":{"position":[[871,13]]}}}],["print(\"attent",{"_index":1774,"t":{"1211":{"position":[[1708,16],[1924,16],[4078,16],[4220,16]]}}}],["print(\"keys:\\n",{"_index":1766,"t":{"1211":{"position":[[1347,16],[3911,16]]}}}],["print(\"queries:\\n",{"_index":1767,"t":{"1211":{"position":[[1379,19],[3943,19]]}}}],["print(\"to",{"_index":1119,"t":{"1009":{"position":[[99,9],[1311,9]]}}}],["print(\"values:\\n",{"_index":1768,"t":{"1211":{"position":[[1417,18],[3981,18]]}}}],["print(\"weight",{"_index":1792,"t":{"1211":{"position":[[2296,15],[4455,15]]}}}],["print(\"welcom",{"_index":1198,"t":{"1009":{"position":[[2075,14]]}}}],["print(a",{"_index":2634,"t":{"1396":{"position":[[543,7]]}}}],["print(b",{"_index":2636,"t":{"1396":{"position":[[581,7]]}}}],["print(c.shap",{"_index":2623,"t":{"1396":{"position":[[252,14]]}}}],["print(d.shap",{"_index":2628,"t":{"1396":{"position":[[373,14]]}}}],["print(f'loss",{"_index":2566,"t":{"1354":{"position":[[2464,12]]}}}],["print(f'{metric[2",{"_index":2570,"t":{"1354":{"position":[[2545,18]]}}}],["print(i",{"_index":2657,"t":{"1396":{"position":[[1121,8],[1315,8]]}}}],["print(i)16'''17(tensor([1",{"_index":2694,"t":{"1405":{"position":[[651,26]]}}}],["print(i)6'''7(tensor(1",{"_index":2686,"t":{"1405":{"position":[[450,24]]}}}],["print(item",{"_index":3354,"t":{"1621":{"position":[[253,11],[464,11]]}}}],["print(output",{"_index":3325,"t":{"1617":{"position":[[619,13]]}}}],["print(x",{"_index":3319,"t":{"1617":{"position":[[372,8]]}}}],["print(x1",{"_index":3321,"t":{"1617":{"position":[[412,9]]}}}],["print(x2",{"_index":3324,"t":{"1617":{"position":[[527,9]]}}}],["printf(\"%c",{"_index":767,"t":{"974":{"position":[[312,12]]}}}],["printf(\"%d%c\",v[i],i==len",{"_index":922,"t":{"977":{"position":[[1298,25]]},"979":{"position":[[1000,25]]}}}],["printf(\"%d\\n",{"_index":31,"t":{"884":{"position":[[430,14]]}}}],["printf(\"%d\\n\",t[rt].d",{"_index":974,"t":{"981":{"position":[[628,23]]}}}],["printf(\"7.28",{"_index":872,"t":{"974":{"position":[[3017,12]]}}}],["printf(\"\\t",{"_index":874,"t":{"974":{"position":[[3111,10]]}}}],["printf(\"\\t%d",{"_index":876,"t":{"974":{"position":[[3162,12]]}}}],["printf(first?first=0,\"%d",{"_index":925,"t":{"977":{"position":[[1398,27],[1528,27],[1661,27]]},"979":{"position":[[1079,27],[1201,27],[1326,27]]}}}],["priority_queue,greater1t",{"_index":2143,"t":{"1274":{"position":[[387,4]]}}}],["t>的元素对序列。序列中的元素以const",{"_index":551,"t":{"957":{"position":[[68,21]]}}}],["t[maxn",{"_index":885,"t":{"977":{"position":[[208,9]]},"979":{"position":[[208,9]]},"981":{"position":[[290,9]]}}}],["t[rt].d=pre[rt",{"_index":967,"t":{"981":{"position":[[437,16]]}}}],["t[rt].l=create(l1,p1",{"_index":968,"t":{"981":{"position":[[454,20]]}}}],["t[rt].l=mid_po_build(la,p1",{"_index":907,"t":{"977":{"position":[[824,26]]},"979":{"position":[[579,26]]}}}],["t[rt].l=mid_pr_build(la,p1",{"_index":902,"t":{"977":{"position":[[481,26]]},"979":{"position":[[350,26]]}}}],["t[rt].r=create(p1+1,r1,l2+p2+1,r2",{"_index":970,"t":{"981":{"position":[[490,35]]}}}],["t[rt].r=mid_po_build(p1+1,ra,lb+p2,rb",{"_index":909,"t":{"977":{"position":[[885,37]]},"979":{"position":[[621,37]]}}}],["t[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb",{"_index":904,"t":{"977":{"position":[[542,41]]},"979":{"position":[[392,41]]}}}],["t\\bar{\\alpha}_tαˉt",{"_index":2928,"t":{"1434":{"position":[[551,21]]},"1571":{"position":[[551,21]]}}}],["t\\sigma_tσt",{"_index":2944,"t":{"1436":{"position":[[346,13]]},"1573":{"position":[[346,13]]}}}],["t\\vert",{"_index":1355,"t":{"1084":{"position":[[325,6]]}}}],["t\\vert)\\tag{3}d8​(p,q)=max(∣x−s∣,∣y−t∣)(3",{"_index":1359,"t":{"1084":{"position":[[431,42]]}}}],["tag{10",{"_index":2351,"t":{"1315":{"position":[[1304,8]]}}}],["tag{1}",{"_index":1272,"t":{"1030":{"position":[[144,12]]}}}],["tag{1}3×3×3×4=108(1",{"_index":2259,"t":{"1300":{"position":[[168,21]]}}}],["tag{1}acc=len(y)∑i(predi​==yi​)​(1",{"_index":2676,"t":{"1405":{"position":[[196,36]]}}}],["tag{1}attention(q,k,v)=softmax(dk​​qkt​)v(1",{"_index":1815,"t":{"1211":{"position":[[3144,45]]}}}],["tag{1}l(y,z)=max(0,−y∗z)(1",{"_index":2604,"t":{"1368":{"position":[[406,28]]}}}],["tag{1}min",{"_index":2393,"t":{"1328":{"position":[[113,10]]}}}],["tag{1}pe(pos,2i)​=sin(100002i/dmodel​pos​)(1",{"_index":1621,"t":{"1183":{"position":[[309,46]]},"1379":{"position":[[309,46]]}}}],["tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1",{"_index":2462,"t":{"1342":{"position":[[328,65]]}}}],["tag{1}x1[0,:,:]+x2[0,:,:](1",{"_index":3333,"t":{"1617":{"position":[[894,29]]}}}],["tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1",{"_index":2584,"t":{"1361":{"position":[[142,36]]}}}],["tag{1}σ(x)=1+e−x1​(1",{"_index":2271,"t":{"1308":{"position":[[47,22]]}}}],["tag{2}",{"_index":1277,"t":{"1032":{"position":[[59,12]]}}}],["tag{2}3×3××3=27(2",{"_index":2263,"t":{"1302":{"position":[[100,19]]}}}],["tag{2}d4​(p,q)=∣x−s∣+∣y−t∣(2",{"_index":1356,"t":{"1084":{"position":[[332,30]]}}}],["tag{2}dxd",{"_index":2277,"t":{"1308":{"position":[[145,14]]}}}],["tag{2}l(w,b)+2λ​∥w∥12​(2",{"_index":2400,"t":{"1330":{"position":[[110,26]]}}}],["tag{2}pe(pos,2i+1)​=cos(100002i/dmodel​pos​)(2",{"_index":1623,"t":{"1183":{"position":[[457,48]]},"1379":{"position":[[457,48]]}}}],["tag{2}x1[1,:,:]+x2[1,:,:](2",{"_index":3336,"t":{"1617":{"position":[[972,29]]}}}],["tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2",{"_index":2587,"t":{"1361":{"position":[[364,61]]}}}],["tag{3}1×1×3×4=12(3",{"_index":2268,"t":{"1304":{"position":[[112,20]]}}}],["tag{3}a",{"_index":1284,"t":{"1034":{"position":[[210,11]]}}}],["tag{3}f(x)={0x​x<0x≥0​(3",{"_index":2288,"t":{"1310":{"position":[[77,26]]}}}],["tag{3}pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)​(3",{"_index":1631,"t":{"1183":{"position":[[928,125]]},"1379":{"position":[[928,125]]}}}],["tag{3}x1[2,:,:]+x2[2,:,:](3",{"_index":3339,"t":{"1617":{"position":[[1050,29]]}}}],["tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3",{"_index":2590,"t":{"1361":{"position":[[636,61]]}}}],["tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3",{"_index":2407,"t":{"1330":{"position":[[347,46]]}}}],["tag{4}dxdf(x)​={01​x<0x≥0​(4",{"_index":2291,"t":{"1310":{"position":[[213,30]]}}}],["tag{4}inputembedding(pos,i)=wordembedding(pos,i)+positionencoding(pos,i)(4",{"_index":1635,"t":{"1183":{"position":[[1234,76]]},"1379":{"position":[[1234,76]]}}}],["tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4",{"_index":2414,"t":{"1330":{"position":[[501,43]]}}}],["tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−δ∑δ​b=−δ∑δ​va,b​∗xia​,j+b​(4",{"_index":2595,"t":{"1363":{"position":[[194,66]]}}}],["tag{5}lossmse​=∑[y−f(x)]2(5",{"_index":2297,"t":{"1313":{"position":[[112,29]]}}}],["tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5",{"_index":2597,"t":{"1363":{"position":[[398,65]]}}}],["tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6",{"_index":1700,"t":{"1197":{"position":[[732,57]]},"1393":{"position":[[732,57]]}}}],["tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6",{"_index":2302,"t":{"1313":{"position":[[220,33]]}}}],["tag{7",{"_index":2319,"t":{"1315":{"position":[[403,7]]}}}],["tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7",{"_index":1702,"t":{"1197":{"position":[[1026,52]]},"1393":{"position":[[1026,52]]}}}],["take",{"_index":1323,"t":{"1079":{"position":[[54,4]]},"1207":{"position":[[24,5]]}}}],["target",{"_index":1037,"t":{"1001":{"position":[[635,6],[828,6],[938,6],[984,6]]},"1453":{"position":[[227,6]]}}}],["target_cc",{"_index":1043,"t":{"1001":{"position":[[692,9]]}}}],["target_cc_prefix)gcc",{"_index":1044,"t":{"1001":{"position":[[705,22]]}}}],["target_cc_prefix)ld",{"_index":1065,"t":{"1001":{"position":[[1063,21]]}}}],["target_class",{"_index":2128,"t":{"1262":{"position":[[634,14]]},"1561":{"position":[[634,14]]}}}],["target_direct",{"_index":1977,"t":{"1248":{"position":[[1160,16]]},"1547":{"position":[[1160,16]]}}}],["target_direction:mapp",{"_index":1978,"t":{"1248":{"position":[[1186,23]]},"1547":{"position":[[1186,23]]}}}],["target_embed",{"_index":1919,"t":{"1242":{"position":[[1005,16]]},"1541":{"position":[[1005,16]]}}}],["target_ld",{"_index":1064,"t":{"1001":{"position":[[1050,9]]}}}],["target_prompt",{"_index":1889,"t":{"1240":{"position":[[115,14]]},"1539":{"position":[[115,14]]}}}],["target_prompts]).to(devic",{"_index":1907,"t":{"1242":{"position":[[369,27]]},"1541":{"position":[[369,27]]}}}],["target_tokenized_prompt",{"_index":1906,"t":{"1242":{"position":[[305,24],[784,24]]},"1541":{"position":[[305,24],[784,24]]}}}],["task",{"_index":2126,"t":{"1262":{"position":[[585,4]]},"1288":{"position":[[337,11]]},"1292":{"position":[[909,6]]},"1486":{"position":[[1131,5]]},"1561":{"position":[[585,4]]},"1627":{"position":[[1131,5]]}}}],["teacher",{"_index":1687,"t":{"1195":{"position":[[146,11]]},"1197":{"position":[[429,19]]},"1391":{"position":[[146,11]]},"1393":{"position":[[429,19]]}}}],["techniqu",{"_index":2419,"t":{"1333":{"position":[[29,9]]}}}],["tell",{"_index":1330,"t":{"1079":{"position":[[130,4]]}}}],["temp",{"_index":3439,"t":{"1675":{"position":[[158,4],[210,4],[253,13],[270,5],[377,4],[516,5]]},"1677":{"position":[[245,4],[297,4],[340,13],[357,5],[464,4],[603,5]]}}}],["templat",{"_index":2113,"t":{"1260":{"position":[[103,25],[632,9],[647,9],[739,18]]},"1559":{"position":[[103,25],[632,9],[647,9],[739,18]]}}}],["tensor",{"_index":3326,"t":{"1617":{"position":[[637,10]]}}}],["tensor(0.2684",{"_index":2367,"t":{"1315":{"position":[[1695,14],[1881,14]]}}}],["tensor(1",{"_index":2658,"t":{"1396":{"position":[[1134,11]]}}}],["tensor(2",{"_index":2660,"t":{"1396":{"position":[[1157,11]]}}}],["tensor(3",{"_index":2662,"t":{"1396":{"position":[[1180,11]]}}}],["tensor(4",{"_index":2659,"t":{"1396":{"position":[[1146,10]]}}}],["tensor(4))8(tensor(2",{"_index":2687,"t":{"1405":{"position":[[475,22]]}}}],["tensor(5",{"_index":2661,"t":{"1396":{"position":[[1169,10]]}}}],["tensor(5))9(tensor(3",{"_index":2688,"t":{"1405":{"position":[[498,22]]}}}],["tensor(6",{"_index":2663,"t":{"1396":{"position":[[1192,10]]}}}],["tensor(6))10'''11a",{"_index":2689,"t":{"1405":{"position":[[521,18]]}}}],["tensor([1",{"_index":2653,"t":{"1396":{"position":[[947,10],[965,10],[1328,11]]}}}],["tensor([3",{"_index":2666,"t":{"1396":{"position":[[1367,11]]}}}],["tensor([4",{"_index":2665,"t":{"1396":{"position":[[1348,10]]},"1405":{"position":[[686,10]]}}}],["tensor([6",{"_index":2667,"t":{"1396":{"position":[[1387,10]]},"1405":{"position":[[726,10]]}}}],["tensor([[9",{"_index":2635,"t":{"1396":{"position":[[558,11]]}}}],["tensor([[[0",{"_index":3322,"t":{"1617":{"position":[[426,14],[541,13]]}}}],["tensorflow框架,可以使用tensorboard",{"_index":3249,"t":{"1512":{"position":[[4,36]]}}}],["tensor的*乘法是对tensor",{"_index":2632,"t":{"1396":{"position":[[454,28]]}}}],["term",{"_index":1724,"t":{"1207":{"position":[[110,6]]}}}],["terminal_proxy.sh",{"_index":3404,"t":{"1649":{"position":[[0,23]]}}}],["test",{"_index":254,"t":{"932":{"position":[[29,4],[101,5],[232,4]]},"1333":{"position":[[224,4],[277,7]]},"1335":{"position":[[82,4],[240,4]]},"1337":{"position":[[95,4],[115,5]]},"1354":{"position":[[1771,5],[2519,4]]}}}],["test.first",{"_index":257,"t":{"932":{"position":[[107,10]]}}}],["test.four",{"_index":263,"t":{"932":{"position":[[176,9]]}}}],["test.second",{"_index":258,"t":{"932":{"position":[[125,11]]}}}],["test.third",{"_index":260,"t":{"932":{"position":[[149,10]]}}}],["test_acc",{"_index":2565,"t":{"1354":{"position":[[2367,8],[2453,10]]}}}],["test_acc:.3f",{"_index":2569,"t":{"1354":{"position":[[2528,16]]}}}],["test_it",{"_index":2522,"t":{"1354":{"position":[[1391,10],[2405,10],[2668,9],[2787,10]]}}}],["testdata.json",{"_index":2875,"t":{"1422":{"position":[[557,13]]}}}],["text",{"_index":1513,"t":{"1160":{"position":[[78,4],[597,4],[748,4],[837,4]]},"1262":{"position":[[669,4]]},"1264":{"position":[[18,4]]},"1276":{"position":[[413,6],[590,5]]},"1278":{"position":[[699,5]]},"1310":{"position":[[130,7]]},"1409":{"position":[[903,4],[1099,4]]},"1561":{"position":[[669,4]]},"1594":{"position":[[16,4]]},"1600":{"position":[[903,4],[1099,4]]},"1638":{"position":[[132,4]]},"1645":{"position":[[80,4]]}}}],["text_direct",{"_index":2118,"t":{"1260":{"position":[[616,15]]},"1559":{"position":[[616,15]]}}}],["text_featur",{"_index":1979,"t":{"1248":{"position":[[1230,13]]},"1260":{"position":[[243,13]]},"1547":{"position":[[1230,13]]},"1559":{"position":[[243,13]]}}}],["textual",{"_index":2214,"t":{"1292":{"position":[[455,7],[522,7]]}}}],["text{subject",{"_index":2388,"t":{"1328":{"position":[[58,13]]}}}],["theta",{"_index":2392,"t":{"1328":{"position":[[106,6],[192,23]]},"1434":{"position":[[655,8]]},"1571":{"position":[[655,8]]}}}],["third",{"_index":251,"t":{"930":{"position":[[52,6]]}}}],["third:\"method",{"_index":266,"t":{"932":{"position":[[258,13]]}}}],["those",{"_index":3111,"t":{"1486":{"position":[[970,5]]},"1627":{"position":[[970,5]]}}}],["thpf",{"_index":1447,"t":{"1110":{"position":[[522,14]]}}}],["thread",{"_index":1139,"t":{"1009":{"position":[[556,8],[565,6],[2169,6],[2238,8],[2247,6],[2324,6]]}}}],["three",{"_index":267,"t":{"932":{"position":[[272,7]]}}}],["time",{"_index":1834,"t":{"1219":{"position":[[59,6]]},"1221":{"position":[[193,6],[252,6],[359,6]]},"1225":{"position":[[101,6],[141,6],[174,6]]},"1298":{"position":[[94,6]]},"1300":{"position":[[135,6],[144,6],[153,6]]},"1302":{"position":[[70,6],[79,6],[86,6]]},"1304":{"position":[[7,6],[80,6],[89,6],[98,6]]},"1333":{"position":[[243,6],[290,5]]},"1335":{"position":[[187,6]]},"1340":{"position":[[67,6],[98,6]]},"1342":{"position":[[13,6],[22,6],[55,6],[66,6],[77,6],[115,6],[148,6],[158,6],[424,6],[435,6],[444,6],[453,6],[463,6]]},"1486":{"position":[[422,5]]},"1493":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"1627":{"position":[[422,5]]},"1634":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"1710":{"position":[[143,6]]},"1715":{"position":[[167,6]]},"1717":{"position":[[68,6]]},"1727":{"position":[[134,6]]},"1729":{"position":[[70,6],[89,6],[115,6]]}}}],["time.h",{"_index":173,"t":{"921":{"position":[[227,6]]}}}],["timer",{"_index":2541,"t":{"1354":{"position":[[1784,6]]}}}],["timer.start",{"_index":2551,"t":{"1354":{"position":[[1950,13]]}}}],["timer.stop",{"_index":2560,"t":{"1354":{"position":[[2142,12]]}}}],["timer.sum():.1f",{"_index":2571,"t":{"1354":{"position":[[2579,16]]}}}],["tip",{"_index":3,"t":{"878":{"position":[[0,3]]},"882":{"position":[[0,3]]},"888":{"position":[[0,3]]},"983":{"position":[[0,3]]},"1003":{"position":[[0,3]]},"1013":{"position":[[0,3]]},"1040":{"position":[[74,3],[247,3],[409,3]]},"1047":{"position":[[0,3]]},"1049":{"position":[[0,3]]},"1052":{"position":[[0,3]]},"1059":{"position":[[38,3]]},"1071":{"position":[[135,3]]},"1079":{"position":[[0,3]]},"1100":{"position":[[271,3]]},"1108":{"position":[[33,3]]},"1168":{"position":[[126,3]]},"1189":{"position":[[1335,3]]},"1204":{"position":[[282,3]]},"1227":{"position":[[0,3]]},"1282":{"position":[[0,3]]},"1298":{"position":[[0,3]]},"1304":{"position":[[133,3]]},"1324":{"position":[[0,3]]},"1385":{"position":[[1335,3]]},"1456":{"position":[[809,4]]},"1512":{"position":[[0,3]]},"1611":{"position":[[0,3]]},"1665":{"position":[[0,3]]},"1669":{"position":[[116,3],[254,3]]},"1671":{"position":[[0,3]]},"1677":{"position":[[15,3]]},"1680":{"position":[[736,3]]},"1682":{"position":[[0,3]]},"1687":{"position":[[244,3],[382,3]]},"1689":{"position":[[736,3]]},"1706":{"position":[[16,3],[136,3]]},"1715":{"position":[[0,3],[519,3],[721,3]]},"1719":{"position":[[154,3]]},"1721":{"position":[[0,3]]}}}],["titile(if",{"_index":3386,"t":{"1645":{"position":[[66,9]]}}}],["titl",{"_index":3381,"t":{"1643":{"position":[[321,7]]},"1645":{"position":[[100,5]]}}}],["title/window",{"_index":3385,"t":{"1645":{"position":[[53,12]]}}}],["title文字不能垂直居中,可以更换为window",{"_index":3380,"t":{"1643":{"position":[[295,25]]}}}],["tlpf",{"_index":1427,"t":{"1108":{"position":[[946,14]]}}}],["tmp",{"_index":807,"t":{"974":{"position":[[1435,5],[1545,5],[2882,5]]}}}],["tmp[0",{"_index":810,"t":{"974":{"position":[[1555,7],[2915,8],[3051,7]]}}}],["tmp[2",{"_index":812,"t":{"974":{"position":[[1567,7]]}}}],["tmp[20",{"_index":865,"t":{"974":{"position":[[2832,8]]}}}],["tmp[3",{"_index":868,"t":{"974":{"position":[[2944,8],[3059,8]]}}}],["tmp[max_vertex_num",{"_index":800,"t":{"974":{"position":[[1156,20]]}}}],["toc",{"_index":143,"t":{"916":{"position":[[19,5]]}}}],["todo(\"start",{"_index":1201,"t":{"1009":{"position":[[2148,11]]}}}],["token",{"_index":1891,"t":{"1242":{"position":[[20,9],[577,8]]},"1244":{"position":[[44,8],[179,8]]},"1409":{"position":[[89,5],[411,11],[565,9]]},"1411":{"position":[[575,9]]},"1414":{"position":[[72,12],[250,9]]},"1416":{"position":[[2066,7]]},"1428":{"position":[[120,7],[323,5],[563,5],[636,11]]},"1430":{"position":[[174,5],[261,5],[302,5]]},"1432":{"position":[[67,5],[116,5]]},"1434":{"position":[[56,24]]},"1439":{"position":[[76,5],[137,5]]},"1446":{"position":[[34,5]]},"1486":{"position":[[249,5]]},"1488":{"position":[[37,5]]},"1490":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"1493":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"1495":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"1497":{"position":[[230,5],[300,6]]},"1541":{"position":[[20,9],[577,8]]},"1543":{"position":[[44,8],[179,8]]},"1565":{"position":[[120,7],[323,5],[563,5],[636,11]]},"1567":{"position":[[174,5],[261,5],[302,5]]},"1569":{"position":[[67,5],[116,5]]},"1571":{"position":[[56,24]]},"1576":{"position":[[76,5],[137,5]]},"1583":{"position":[[34,5]]},"1592":{"position":[[1245,8],[1290,6],[1308,6],[1342,5],[1371,15],[1397,12],[1420,12],[1445,5],[1467,5],[1577,5],[1614,6],[1639,5],[1675,37],[1720,5]]},"1600":{"position":[[89,5],[411,11],[565,9]]},"1602":{"position":[[575,9]]},"1605":{"position":[[72,12],[250,9]]},"1607":{"position":[[2067,7]]},"1627":{"position":[[249,5]]},"1629":{"position":[[37,5]]},"1631":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"1634":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"1636":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"1638":{"position":[[12,9]]},"1640":{"position":[[230,5],[300,6]]}}}],["tokenizer、quant",{"_index":2776,"t":{"1411":{"position":[[388,19]]},"1602":{"position":[[388,19]]}}}],["tokenize后为tensor",{"_index":1898,"t":{"1242":{"position":[[161,19],[433,19]]},"1541":{"position":[[161,19],[433,19]]}}}],["tokens。vqgan",{"_index":3284,"t":{"1592":{"position":[[1269,12]]}}}],["token或random",{"_index":2192,"t":{"1290":{"position":[[92,12]]}}}],["token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做dot",{"_index":2238,"t":{"1292":{"position":[[1264,57]]}}}],["token进行遮挡后,喂入encoder中。对于每个被mask掉的词汇,bert",{"_index":2193,"t":{"1290":{"position":[[105,68]]}}}],["token)出发进行思考,产生了自回归模型是否有必要与向量量化(vector",{"_index":2906,"t":{"1430":{"position":[[186,38]]},"1567":{"position":[[186,38]]}}}],["top",{"_index":63,"t":{"894":{"position":[[134,6],[163,6]]},"1276":{"position":[[0,3],[73,3],[364,3],[433,3],[492,3]]},"1278":{"position":[[0,3]]},"1280":{"position":[[62,3],[70,3]]}}}],["topologicalsort",{"_index":726,"t":{"972":{"position":[[1758,30]]}}}],["torch",{"_index":1817,"t":{"1211":{"position":[[3236,5]]},"1308":{"position":[[299,5]]},"1310":{"position":[[288,5]]},"1354":{"position":[[7,5],[37,5],[112,5]]},"1526":{"position":[[7,5]]},"1617":{"position":[[285,5]]}}}],["torch.cat([clip.tokenize(p",{"_index":1893,"t":{"1242":{"position":[[57,27],[332,27]]},"1541":{"position":[[57,27],[332,27]]}}}],["torch.concat((a",{"_index":2625,"t":{"1396":{"position":[[295,16]]}}}],["torch.linspac",{"_index":2282,"t":{"1308":{"position":[[309,15]]},"1310":{"position":[[298,15]]}}}],["torch.log",{"_index":2357,"t":{"1315":{"position":[[1444,9]]}}}],["torch.log(torch.softmax(predict",{"_index":2363,"t":{"1315":{"position":[[1590,32]]}}}],["torch.nn",{"_index":2280,"t":{"1308":{"position":[[260,8]]},"1310":{"position":[[249,8]]},"1315":{"position":[[1481,8]]},"1354":{"position":[[64,8]]}}}],["torch.nn.crossentropyloss",{"_index":2534,"t":{"1354":{"position":[[1630,27]]}}}],["torch.nn.crossentropyloss相当于torch.softmax",{"_index":2356,"t":{"1315":{"position":[[1400,41]]}}}],["torch.nn.funct",{"_index":1818,"t":{"1211":{"position":[[3249,19]]}}}],["torch.nn.modul",{"_index":2505,"t":{"1354":{"position":[[971,17]]}}}],["torch.nn.nllloss",{"_index":2358,"t":{"1315":{"position":[[1456,17]]}}}],["torch.nn.sequenti",{"_index":2484,"t":{"1354":{"position":[[505,20]]}}}],["torch.optim.sgd(net.paramet",{"_index":2532,"t":{"1354":{"position":[[1582,33]]}}}],["torch.rand(4",{"_index":2617,"t":{"1396":{"position":[[104,13],[143,13]]}}}],["torch.reshape(x",{"_index":3318,"t":{"1617":{"position":[[347,16]]}}}],["torch.size([2",{"_index":2624,"t":{"1396":{"position":[[269,14]]}}}],["torch.size([4",{"_index":2629,"t":{"1396":{"position":[[390,14]]}}}],["torch.stack((a",{"_index":2620,"t":{"1396":{"position":[[182,15]]}}}],["torch.sum(y_hat.argmax(dim=1",{"_index":2519,"t":{"1354":{"position":[[1328,29]]}}}],["torch.tensor([1",{"_index":2365,"t":{"1315":{"position":[[1640,16],[1823,16]]},"1396":{"position":[[1043,16]]},"1405":{"position":[[371,16]]}}}],["torch.tensor([4",{"_index":2655,"t":{"1396":{"position":[[1071,16]]},"1405":{"position":[[399,16]]}}}],["torch.tensor([[0",{"_index":1761,"t":{"1211":{"position":[[957,17],[1137,17],[3541,17],[3721,17]]}}}],["torch.tensor([[0.1",{"_index":2642,"t":{"1396":{"position":[[777,19]]}}}],["torch.tensor([[1",{"_index":1763,"t":{"1211":{"position":[[1047,17],[3631,17]]},"1396":{"position":[[1211,17]]},"1405":{"position":[[542,17]]}}}],["torch.tensor([[2",{"_index":2362,"t":{"1315":{"position":[[1543,17],[1778,17]]}}}],["torch.tensor([[3",{"_index":2633,"t":{"1396":{"position":[[487,17]]}}}],["torch.tensor([[4",{"_index":2664,"t":{"1396":{"position":[[1252,17]]},"1405":{"position":[[584,17]]}}}],["torch.tensor(input",{"_index":1740,"t":{"1211":{"position":[[390,20],[3437,20]]}}}],["torch.tensor(np.arange(9",{"_index":3317,"t":{"1617":{"position":[[295,26]]}}}],["torchaudio",{"_index":1870,"t":{"1234":{"position":[[74,10]]},"1533":{"position":[[74,10]]}}}],["torchvis",{"_index":1869,"t":{"1234":{"position":[[62,11]]},"1533":{"position":[[62,11]]}}}],["tqdm",{"_index":1875,"t":{"1234":{"position":[[147,4]]},"1533":{"position":[[147,4]]}}}],["trace",{"_index":3270,"t":{"1523":{"position":[[144,5]]}}}],["trade",{"_index":2841,"t":{"1416":{"position":[[2451,29]]},"1607":{"position":[[2452,29]]}}}],["train",{"_index":1562,"t":{"1162":{"position":[[987,12]]},"1211":{"position":[[830,9]]},"1248":{"position":[[334,5]]},"1333":{"position":[[214,5]]},"1335":{"position":[[144,8]]},"1337":{"position":[[0,5],[14,5]]},"1354":{"position":[[1758,6],[2492,5]]},"1409":{"position":[[484,8],[980,8]]},"1422":{"position":[[340,9]]},"1456":{"position":[[799,9]]},"1490":{"position":[[1518,7]]},"1547":{"position":[[334,5]]},"1600":{"position":[[484,8],[980,8]]},"1631":{"position":[[1518,7]]}}}],["train(lenet",{"_index":2579,"t":{"1354":{"position":[[2762,12]]}}}],["train(net",{"_index":2520,"t":{"1354":{"position":[[1368,10]]}}}],["train_acc",{"_index":2563,"t":{"1354":{"position":[[2187,9],[2349,10]]}}}],["train_acc:.3f",{"_index":2568,"t":{"1354":{"position":[[2502,16]]}}}],["train_it",{"_index":2521,"t":{"1354":{"position":[[1379,11],[2656,11],[2775,11]]}}}],["train_l",{"_index":2561,"t":{"1354":{"position":[[2155,7],[2339,9]]}}}],["train_l:.3f",{"_index":2567,"t":{"1354":{"position":[[2477,14]]}}}],["train_lay",{"_index":1960,"t":{"1248":{"position":[[280,12],[379,12],[394,14]]},"1547":{"position":[[280,12],[379,12],[394,14]]}}}],["trained的cnn,该cnn通常使用预训练的incept",{"_index":1551,"t":{"1162":{"position":[[89,33]]}}}],["training&fin",{"_index":2234,"t":{"1292":{"position":[[1030,13]]}}}],["tran",{"_index":3013,"t":{"1456":{"position":[[691,5],[707,5]]}}}],["transform",{"_index":398,"t":{"947":{"position":[[1413,9]]},"1152":{"position":[[0,11]]},"1176":{"position":[[20,23]]},"1181":{"position":[[0,11]]},"1193":{"position":[[2,11],[104,11],[486,18],[609,11]]},"1217":{"position":[[93,11]]},"1225":{"position":[[340,11]]},"1258":{"position":[[114,14],[240,13],[463,20],[587,16]]},"1294":{"position":[[412,11]]},"1372":{"position":[[20,23]]},"1377":{"position":[[0,11]]},"1389":{"position":[[2,11],[104,11],[486,18],[609,11]]},"1418":{"position":[[56,12]]},"1420":{"position":[[57,11],[101,12]]},"1479":{"position":[[154,20],[175,11],[247,11],[306,11]]},"1481":{"position":[[29,11],[155,11]]},"1483":{"position":[[120,11]]},"1486":{"position":[[330,12],[472,12],[782,11]]},"1493":{"position":[[217,28]]},"1495":{"position":[[270,12],[320,11]]},"1557":{"position":[[114,14],[240,13],[463,20],[587,16]]},"1592":{"position":[[866,11],[1205,12]]},"1594":{"position":[[47,16],[95,12]]},"1627":{"position":[[330,12],[472,12],[782,11]]},"1634":{"position":[[217,28]]},"1636":{"position":[[270,12],[320,11]]}}}],["transformer_lay",{"_index":2091,"t":{"1258":{"position":[[484,17]]},"1557":{"position":[[484,17]]}}}],["transformerencoder(transformer_lay",{"_index":2097,"t":{"1258":{"position":[[631,37]]},"1557":{"position":[[631,37]]}}}],["transformerencoderlayer(d_model=512",{"_index":2092,"t":{"1258":{"position":[[504,36]]},"1557":{"position":[[504,36]]}}}],["transformermapperv2(nn.modul",{"_index":2079,"t":{"1258":{"position":[[78,31]]},"1557":{"position":[[78,31]]}}}],["transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。bert",{"_index":2188,"t":{"1288":{"position":[[98,92]]}}}],["transformer中有lay",{"_index":2089,"t":{"1258":{"position":[[413,18]]},"1557":{"position":[[413,18]]}}}],["transformer实战练习,代码见github",{"_index":2842,"t":{"1418":{"position":[[5,28]]}}}],["transformer是sequ",{"_index":1612,"t":{"1176":{"position":[[70,20]]},"1372":{"position":[[70,20]]}}}],["transformer由encoder和decoder组成,编码器和解码器都包含6个block",{"_index":1615,"t":{"1178":{"position":[[0,58]]},"1374":{"position":[[0,58]]}}}],["transformer的推理阶段,自回归类型的decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(error",{"_index":1685,"t":{"1195":{"position":[[0,131]]},"1391":{"position":[[0,131]]}}}],["transformer训练时采取的teach",{"_index":1667,"t":{"1189":{"position":[[826,33]]},"1385":{"position":[[826,33]]}}}],["transformer(residu",{"_index":3083,"t":{"1479":{"position":[[120,20]]}}}],["treat",{"_index":1029,"t":{"1001":{"position":[[336,7]]}}}],["treebank",{"_index":2229,"t":{"1292":{"position":[[747,33]]}}}],["true",{"_index":294,"t":{"932":{"position":[[834,5]]},"959":{"position":[[231,11]]},"963":{"position":[[198,16]]},"970":{"position":[[698,5],[1559,5]]},"972":{"position":[[1047,5],[1108,6]]},"974":{"position":[[71,4]]}}}],["true;//加入拓扑排序的顶点为n",{"_index":742,"t":{"972":{"position":[[2214,30]]}}}],["truncat",{"_index":1913,"t":{"1242":{"position":[[725,19]]},"1541":{"position":[[725,19]]}}}],["trung",{"_index":3012,"t":{"1456":{"position":[[685,5],[730,5]]}}}],["truth",{"_index":1581,"t":{"1164":{"position":[[755,6]]},"1290":{"position":[[248,21]]}}}],["truth一次性喂到decod",{"_index":1689,"t":{"1195":{"position":[[176,38]]},"1391":{"position":[[176,38]]}}}],["truth做bc",{"_index":3493,"t":{"1708":{"position":[[64,9]]}}}],["truth做cross",{"_index":2246,"t":{"1296":{"position":[[119,11]]}}}],["truth对nois",{"_index":1609,"t":{"1174":{"position":[[556,11]]}}}],["truth就是sampl",{"_index":1574,"t":{"1164":{"position":[[437,18]]}}}],["truth就是第3步中sample出的噪声ϵ\\epsilon",{"_index":1249,"t":{"1017":{"position":[[783,32]]}}}],["truth的bc",{"_index":3496,"t":{"1708":{"position":[[119,9]]}}}],["truth的策略,但是还额外需要一个encoder来产生lat",{"_index":1576,"t":{"1164":{"position":[[553,34]]}}}],["tsinghua",{"_index":1880,"t":{"1236":{"position":[[30,8]]},"1535":{"position":[[30,8]]}}}],["ttt",{"_index":2142,"t":{"1274":{"position":[[367,17]]},"1434":{"position":[[594,3],[772,3]]},"1436":{"position":[[365,3]]},"1571":{"position":[[594,3],[772,3]]},"1573":{"position":[[365,3]]}}}],["ttt从t,…,1t,\\ldots,1t,…,1范围循环ttt",{"_index":1253,"t":{"1019":{"position":[[54,33]]}}}],["ttt是从1,…,t1,\\ldots,t1,…,t范围中sample出的一个integ",{"_index":1239,"t":{"1017":{"position":[[50,46]]}}}],["ttt计数的循环,若t>1t>1t>1,则从normal",{"_index":1254,"t":{"1019":{"position":[[88,34]]}}}],["tune",{"_index":1684,"t":{"1193":{"position":[[580,28]]},"1262":{"position":[[1119,9]]},"1288":{"position":[[267,13]]},"1389":{"position":[[580,28]]},"1456":{"position":[[139,10],[158,54],[459,6]]},"1561":{"position":[[1119,9]]}}}],["tuning范式与scratch范式的训练效果做了对比,其中scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(converg",{"_index":2235,"t":{"1292":{"position":[[1044,109]]}}}],["tutori",{"_index":3245,"t":{"1510":{"position":[[16,9],[95,9]]}}}],["two",{"_index":262,"t":{"932":{"position":[[170,5]]},"1409":{"position":[[970,3]]},"1486":{"position":[[1246,3]]},"1600":{"position":[[970,3]]},"1627":{"position":[[1246,3]]}}}],["tx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon",{"_index":1242,"t":{"1017":{"position":[[196,71]]}}}],["type(m",{"_index":2525,"t":{"1354":{"position":[[1451,7],[1475,7]]}}}],["typedef",{"_index":269,"t":{"932":{"position":[[323,7],[540,7]]},"934":{"position":[[0,7]]},"970":{"position":[[126,7],[274,7]]},"972":{"position":[[198,7],[415,7]]},"974":{"position":[[165,7],[185,7],[357,7],[390,7],[489,7],[585,7]]},"977":{"position":[[100,7]]},"979":{"position":[[100,7]]},"981":{"position":[[186,7]]}}}],["typic",{"_index":2883,"t":{"1428":{"position":[[78,9]]},"1565":{"position":[[78,9]]}}}],["t}\\left[\\left\\|\\varepsilon",{"_index":2917,"t":{"1434":{"position":[[240,26]]},"1571":{"position":[[240,26]]}}}],["u",{"_index":154,"t":{"918":{"position":[[198,1],[218,1],[239,1]]},"974":{"position":[[1992,2],[2264,3],[2310,6],[2512,9]]},"1160":{"position":[[638,1],[696,1],[810,1]]},"1594":{"position":[[38,1]]},"1645":{"position":[[347,1]]},"1706":{"position":[[0,4],[125,1]]}}}],["u,int",{"_index":829,"t":{"974":{"position":[[2247,5]]}}}],["u==v",{"_index":835,"t":{"974":{"position":[[2361,6]]}}}],["u=q.front();//取队首顶点u",{"_index":732,"t":{"972":{"position":[[1926,20]]}}}],["u\\ell_uℓu",{"_index":2835,"t":{"1416":{"position":[[2221,11]]},"1607":{"position":[[2222,11]]}}}],["udg",{"_index":771,"t":{"974":{"position":[[374,4]]}}}],["ui",{"_index":2074,"t":{"1255":{"position":[[43,2],[241,2],[266,12],[279,2]]},"1554":{"position":[[43,2],[241,2],[266,12],[279,2]]}}}],["ull",{"_index":213,"t":{"927":{"position":[[381,3],[588,3]]}}}],["uncertainti",{"_index":2311,"t":{"1315":{"position":[[139,12]]}}}],["unchang",{"_index":2678,"t":{"1405":{"position":[[322,9]]}}}],["uncom",{"_index":1105,"t":{"1001":{"position":[[1907,9]]},"1011":{"position":[[851,9]]}}}],["uncondit",{"_index":1482,"t":{"1143":{"position":[[145,13],[171,13]]}}}],["undefin",{"_index":1067,"t":{"1001":{"position":[[1101,9]]}}}],["understand",{"_index":1544,"t":{"1160":{"position":[[887,13]]},"1292":{"position":[[125,13]]}}}],["unfreez",{"_index":1956,"t":{"1248":{"position":[[161,8],[271,8],[507,8]]},"1547":{"position":[[161,8],[271,8],[507,8]]}}}],["unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.zssgan.zssgan.determine_opt_lay",{"_index":1954,"t":{"1248":{"position":[[70,77]]},"1547":{"position":[[70,77]]}}}],["unifi",{"_index":1235,"t":{"1015":{"position":[[833,7]]},"1486":{"position":[[1431,7]]},"1592":{"position":[[2021,5]]},"1627":{"position":[[1431,7]]}}}],["uniqu",{"_index":399,"t":{"947":{"position":[[1448,6],[1520,9]]}}}],["unique_copi",{"_index":400,"t":{"947":{"position":[[1491,11]]}}}],["unit",{"_index":2795,"t":{"1416":{"position":[[544,6]]},"1607":{"position":[[544,6]]}}}],["unordered_map",{"_index":71,"t":{"894":{"position":[[255,14]]},"912":{"position":[[136,14]]}}}],["unordered_multimap",{"_index":73,"t":{"894":{"position":[[290,22]]}}}],["unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound",{"_index":133,"t":{"912":{"position":[[171,69]]}}}],["unordered_multiset",{"_index":72,"t":{"894":{"position":[[270,19]]},"912":{"position":[[151,19]]}}}],["unordered_set",{"_index":70,"t":{"894":{"position":[[240,14]]},"912":{"position":[[121,14]]}}}],["unset",{"_index":3411,"t":{"1649":{"position":[[222,5],[238,5],[255,5]]}}}],["unsign",{"_index":214,"t":{"927":{"position":[[385,8]]},"967":{"position":[[1001,8]]}}}],["until",{"_index":2610,"t":{"1368":{"position":[[646,5]]}}}],["unzipped_list",{"_index":3356,"t":{"1621":{"position":[[389,14],[448,15]]}}}],["up",{"_index":3107,"t":{"1486":{"position":[[907,2]]},"1627":{"position":[[907,2]]}}}],["updat",{"_index":2441,"t":{"1337":{"position":[[47,6]]}}}],["update='append",{"_index":3260,"t":{"1519":{"position":[[261,16],[336,16]]},"1521":{"position":[[227,16]]}}}],["upper_bound",{"_index":417,"t":{"947":{"position":[[2014,11]]}}}],["url:rec",{"_index":3272,"t":{"1590":{"position":[[8,10]]}}}],["url:video",{"_index":3293,"t":{"1596":{"position":[[8,9]]}}}],["us",{"_index":12,"t":{"884":{"position":[[25,5]]},"890":{"position":[[25,5]]},"923":{"position":[[0,5]]},"925":{"position":[[250,5]]},"949":{"position":[[1481,5]]},"970":{"position":[[53,5]]},"972":{"position":[[119,5]]},"977":{"position":[[79,5]]},"979":{"position":[[79,5]]},"981":{"position":[[165,5]]},"985":{"position":[[25,5]]},"1001":{"position":[[760,4],[1206,4],[2025,6]]},"1009":{"position":[[931,4]]},"1011":{"position":[[969,6]]},"1211":{"position":[[700,5],[2653,3]]},"1333":{"position":[[39,4],[250,5]]},"1335":{"position":[[70,4],[132,4],[215,4]]},"1337":{"position":[[126,4]]},"1420":{"position":[[53,3]]},"1428":{"position":[[354,5],[472,5],[973,3]]},"1490":{"position":[[1628,4],[1730,4]]},"1565":{"position":[[354,5],[472,5],[973,3]]},"1631":{"position":[[1628,4],[1730,4]]},"1677":{"position":[[66,5]]}}}],["usag",{"_index":2735,"t":{"1409":{"position":[[653,5]]},"1600":{"position":[[653,5]]}}}],["user",{"_index":350,"t":{"945":{"position":[[839,5]]}}}],["usual",{"_index":1746,"t":{"1211":{"position":[[656,7]]}}}],["util",{"_index":539,"t":{"955":{"position":[[0,11]]}}}],["utils/text_templates.pi",{"_index":2112,"t":{"1260":{"position":[[76,23]]},"1559":{"position":[[76,23]]}}}],["utkarsh",{"_index":2996,"t":{"1456":{"position":[[497,12]]}}}],["uttr",{"_index":2869,"t":{"1422":{"position":[[410,4],[575,4]]}}}],["ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​f(u,v)ej2π(ux+vy)dudv(8",{"_index":1381,"t":{"1090":{"position":[[812,60]]}}}],["ux+vy)}dxdy\\tag{7}f(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7",{"_index":1378,"t":{"1090":{"position":[[632,61]]}}}],["ux}du\\tag{6}f(x)=∫−∞∞​f(u)ej2πuxdu(6",{"_index":1374,"t":{"1090":{"position":[[475,37]]}}}],["ux}dx\\tag{5}f(u)=∫−∞+∞​f(x)e−j2πuxdx(5",{"_index":1371,"t":{"1090":{"position":[[359,39]]}}}],["ux}{n}}\\tag{10}f(x)=n1​u=0∑n−1​f(u)ejn2πux​(10",{"_index":1388,"t":{"1090":{"position":[[1095,47]]}}}],["ux}{n}}\\tag{9}f(u)=x=0∑n−1​f(x)e−jn2πux​(9",{"_index":1385,"t":{"1090":{"position":[[960,43]]}}}],["v",{"_index":823,"t":{"974":{"position":[[1995,8],[2612,2]]},"977":{"position":[[1118,2]]},"979":{"position":[[820,2]]},"1211":{"position":[[76,1]]},"1217":{"position":[[273,1]]},"1221":{"position":[[562,1],[592,1]]}}}],["v,int",{"_index":830,"t":{"974":{"position":[[2253,5]]}}}],["v.push_back(w",{"_index":915,"t":{"977":{"position":[[1179,15]]},"979":{"position":[[881,15]]}}}],["v1",{"_index":3502,"t":{"1715":{"position":[[22,12]]}}}],["v3",{"_index":1984,"t":{"1250":{"position":[[126,2],[1319,2],[1348,2]]},"1549":{"position":[[126,2],[1319,2],[1348,2]]}}}],["v3模型。在计算fid时,生成图像和真实图像分别输入到预训练的cnn中,提取出各自的特征表示向量(representation)。这两个represent",{"_index":1552,"t":{"1162":{"position":[[123,105]]}}}],["v=g.vertexs[u].connectors[i];//u的后继节点v",{"_index":734,"t":{"972":{"position":[[2011,38]]}}}],["v]^{h_k",{"_index":3168,"t":{"1493":{"position":[[823,8]]},"1634":{"position":[[823,8]]}}}],["v_n",{"_index":1271,"t":{"1030":{"position":[[137,6]]},"1034":{"position":[[171,4],[203,6]]}}}],["v_t",{"_index":1269,"t":{"1030":{"position":[[127,4]]},"1032":{"position":[[53,5]]},"1034":{"position":[[193,4]]}}}],["vae",{"_index":3073,"t":{"1473":{"position":[[87,3],[105,3],[249,3],[506,3]]},"1475":{"position":[[13,3],[87,3],[247,3]]},"1477":{"position":[[13,3],[168,3],[270,3],[312,3]]},"1479":{"position":[[291,3]]},"1490":{"position":[[1388,3],[1686,4],[1721,3]]},"1592":{"position":[[263,3],[310,3],[322,3],[331,3],[335,25],[380,3],[401,8],[410,64],[510,3],[521,3],[549,3],[610,3],[727,3],[887,3],[2094,15]]},"1631":{"position":[[1388,3],[1686,4],[1721,3]]}}}],["vaes(vari",{"_index":3077,"t":{"1473":{"position":[[512,16]]}}}],["vae、gan以及diffus",{"_index":1506,"t":{"1156":{"position":[[0,18]]}}}],["vae、vqvae(2017",{"_index":3277,"t":{"1592":{"position":[[233,21]]}}}],["vae在训练过程中,期待ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g",{"_index":1596,"t":{"1168":{"position":[[130,47]]}}}],["vae的数学原理,从vae到diffus",{"_index":1232,"t":{"1015":{"position":[[735,38]]}}}],["vae(vector",{"_index":3074,"t":{"1473":{"position":[[177,10],[318,10]]}}}],["vae)与diffus",{"_index":1228,"t":{"1015":{"position":[[591,14]]}}}],["vae)的训练策略是使用encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为decoder的输入,加上文字prompt",{"_index":1595,"t":{"1168":{"position":[[39,86]]}}}],["vae,vq",{"_index":3078,"t":{"1475":{"position":[[240,6]]}}}],["val",{"_index":454,"t":{"949":{"position":[[677,4],[722,6],[1038,4]]},"951":{"position":[[497,4],[698,4],[743,6],[982,4]]}}}],["valid",{"_index":2418,"t":{"1333":{"position":[[13,10],[139,10]]},"1335":{"position":[[34,11]]},"1337":{"position":[[54,10]]},"1422":{"position":[[474,5]]}}}],["valu",{"_index":556,"t":{"957":{"position":[[361,6],[510,8]]},"1211":{"position":[[942,6],[1265,6],[1321,6],[1436,7],[1988,18],[2148,6],[2184,6],[2250,9],[3526,6],[3829,6],[3885,6],[4000,7],[4307,6],[4343,6],[4409,9]]},"1428":{"position":[[161,6],[446,6],[629,6],[1026,6]]},"1565":{"position":[[161,6],[446,6],[629,6],[1026,6]]}}}],["value^{n",{"_index":1828,"t":{"1213":{"position":[[262,8]]}}}],["vanilla",{"_index":2711,"t":{"1409":{"position":[[209,7]]},"1600":{"position":[[209,7]]}}}],["var",{"_index":2773,"t":{"1411":{"position":[[192,3]]},"1486":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"1490":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"1493":{"position":[[1092,3]]},"1495":{"position":[[266,3],[292,3],[316,3]]},"1497":{"position":[[413,3],[506,3]]},"1592":{"position":[[987,9],[997,21]]},"1602":{"position":[[192,3]]},"1609":{"position":[[260,4],[294,4],[333,4],[373,4]]},"1627":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"1631":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"1634":{"position":[[1092,3]]},"1636":{"position":[[266,3],[292,3],[316,3]]},"1638":{"position":[[27,3],[252,3]]},"1640":{"position":[[413,3],[506,3]]}}}],["varepsilon_\\theta",{"_index":2930,"t":{"1434":{"position":[[627,23]]},"1571":{"position":[[627,23]]}}}],["varepsilon_\\theta\\left(x_t",{"_index":2918,"t":{"1434":{"position":[[267,27]]},"1571":{"position":[[267,27]]}}}],["varepsilonxt​=αˉt​x​+1−αˉt",{"_index":2927,"t":{"1434":{"position":[[517,33]]},"1571":{"position":[[517,33]]}}}],["variant",{"_index":2898,"t":{"1428":{"position":[[793,9]]},"1473":{"position":[[5,7]]},"1565":{"position":[[793,9]]},"1592":{"position":[[281,7]]}}}],["variat",{"_index":1224,"t":{"1015":{"position":[[545,25]]},"1168":{"position":[[0,18]]},"1473":{"position":[[198,11],[339,11]]}}}],["vc++6.0中指针初始化为0xcccccccc",{"_index":794,"t":{"974":{"position":[[873,26]]}}}],["vc++6.0中指针初始化为0xcccccccc,如果不将指针初始化为null",{"_index":803,"t":{"974":{"position":[[1221,45]]}}}],["vec",{"_index":3445,"t":{"1677":{"position":[[820,4]]}}}],["vec.empti",{"_index":3450,"t":{"1677":{"position":[[971,13]]}}}],["vec.push_back(remaind",{"_index":3448,"t":{"1677":{"position":[[904,25]]}}}],["vec.rbegin",{"_index":3451,"t":{"1677":{"position":[[1024,13]]}}}],["vec.rend",{"_index":3452,"t":{"1677":{"position":[[1044,11]]}}}],["vector",{"_index":55,"t":{"894":{"position":[[19,17]]},"896":{"position":[[94,19],[224,12]]},"923":{"position":[[68,6]]},"949":{"position":[[0,10],[149,81],[231,27],[433,12],[1301,33],[1338,55],[1472,8]]},"970":{"position":[[29,8]]},"972":{"position":[[50,8]]},"1248":{"position":[[845,10]]},"1426":{"position":[[87,6]]},"1428":{"position":[[103,6],[815,6]]},"1547":{"position":[[845,10]]},"1563":{"position":[[87,6]]},"1565":{"position":[[103,6],[815,6]]},"1592":{"position":[[693,7]]}}}],["vector::iter",{"_index":708,"t":{"972":{"position":[[1177,24]]}}}],["vector为底层容器,堆heap",{"_index":337,"t":{"945":{"position":[[448,41]]}}}],["vector对象,存储的是int",{"_index":441,"t":{"949":{"position":[[277,27]]}}}],["vector对象,并从由迭代器first和last定义的序列[first",{"_index":446,"t":{"949":{"position":[[380,41]]}}}],["vector的s",{"_index":78,"t":{"896":{"position":[[61,18]]}}}],["vector)zzz",{"_index":2907,"t":{"1432":{"position":[[92,10]]},"1569":{"position":[[92,10]]}}}],["ver",{"_index":783,"t":{"974":{"position":[[644,5]]}}}],["veri",{"_index":1112,"t":{"1001":{"position":[[2018,4]]},"1011":{"position":[[962,4]]},"1211":{"position":[[2932,4]]}}}],["verifi",{"_index":2754,"t":{"1409":{"position":[[1122,6]]},"1486":{"position":[[738,8]]},"1600":{"position":[[1122,6]]},"1627":{"position":[[738,8]]}}}],["vernum",{"_index":789,"t":{"974":{"position":[[798,7],[1339,7],[1456,8]]}}}],["vernum,arcnum",{"_index":781,"t":{"974":{"position":[[621,14]]}}}],["vers[a].firstarc",{"_index":820,"t":{"974":{"position":[[1752,18],[1793,18],[1875,17]]}}}],["vers[i].data=tmp[i",{"_index":809,"t":{"974":{"position":[[1473,21]]}}}],["vers[i].firstarc",{"_index":792,"t":{"974":{"position":[[847,17]]}}}],["version/src/project0/build目录下执行mak",{"_index":1023,"t":{"1001":{"position":[[43,35]]}}}],["version/src/projecti/build",{"_index":1005,"t":{"991":{"position":[[287,33]]},"995":{"position":[[114,29]]}}}],["version/src/projecti/build文件夹下进行,即要在终端中通过cd",{"_index":1207,"t":{"1011":{"position":[[17,49]]}}}],["version/src/projecti/build目录下创建.bochsrc",{"_index":1077,"t":{"1001":{"position":[[1379,41]]}}}],["version/src/projecti/build目录下的makefi",{"_index":1036,"t":{"1001":{"position":[[593,39],[1158,39]]}}}],["version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefil",{"_index":1030,"t":{"1001":{"position":[[369,71]]}}}],["version/src/projecti/src/geeko",{"_index":1004,"t":{"991":{"position":[[232,37]]}}}],["version/src/projecti/src/geekos/main.c",{"_index":1117,"t":{"1009":{"position":[[9,40]]}}}],["version/src/目录下会存在project0",{"_index":1001,"t":{"991":{"position":[[131,26]]}}}],["vert",{"_index":2389,"t":{"1328":{"position":[[83,5]]},"1330":{"position":[[92,5],[273,5]]}}}],["vert^2_1",{"_index":2390,"t":{"1328":{"position":[[91,9]]},"1330":{"position":[[100,9],[281,9]]}}}],["vert_2",{"_index":2300,"t":{"1313":{"position":[[181,7]]}}}],["vertex",{"_index":270,"t":{"932":{"position":[[338,6],[414,8],[516,7],[578,8]]},"970":{"position":[[141,6],[198,8],[250,7],[312,8]]},"972":{"position":[[213,6],[289,8],[391,7],[453,8]]}}}],["vertex(int",{"_index":275,"t":{"932":{"position":[[460,10]]},"970":{"position":[[219,10]]},"972":{"position":[[335,10]]}}}],["vertexs.resize(1",{"_index":290,"t":{"932":{"position":[[752,18]]},"972":{"position":[[627,18]]}}}],["vertexs.resize(n",{"_index":287,"t":{"932":{"position":[[697,18]]},"970":{"position":[[431,18]]},"972":{"position":[[572,18]]}}}],["vertexs.s",{"_index":644,"t":{"970":{"position":[[516,16]]},"972":{"position":[[712,16]]}}}],["vertexs[id1].connectors.push_back(id2",{"_index":645,"t":{"970":{"position":[[560,39],[609,39]]},"972":{"position":[[756,39],[856,39]]}}}],["vertexs[id1].indegre",{"_index":698,"t":{"972":{"position":[[962,24]]}}}],["vertexs[id1].outdegre",{"_index":696,"t":{"972":{"position":[[796,25],[936,25]]}}}],["vertexs[id2].connectors.push_back(id1",{"_index":646,"t":{"970":{"position":[[649,39]]},"972":{"position":[[896,39]]}}}],["vertexs[id2].indegre",{"_index":697,"t":{"972":{"position":[[822,24],[1013,24]]}}}],["vertexs[id2].outdegre",{"_index":699,"t":{"972":{"position":[[987,25]]}}}],["vertexs[id].connectors.s",{"_index":658,"t":{"970":{"position":[[920,30],[1353,30]]}}}],["vertexs[id].connectors[i",{"_index":659,"t":{"970":{"position":[[968,26],[1401,26]]}}}],["vertextyp",{"_index":763,"t":{"974":{"position":[[218,10],[511,10],[941,10],[2108,10]]}}}],["vertic",{"_index":3388,"t":{"1645":{"position":[[124,11]]}}}],["vga_update_interv",{"_index":1099,"t":{"1001":{"position":[[1805,20]]},"1011":{"position":[[749,20]]}}}],["vgaromimag",{"_index":1083,"t":{"1001":{"position":[[1509,12]]},"1011":{"position":[[453,12]]}}}],["vi",{"_index":3253,"t":{"1519":{"position":[[26,3]]},"1521":{"position":[[26,3]]}}}],["via",{"_index":2962,"t":{"1451":{"position":[[110,3]]},"1456":{"position":[[627,3]]}}}],["video",{"_index":3143,"t":{"1490":{"position":[[1680,5]]},"1510":{"position":[[121,5]]},"1631":{"position":[[1680,5]]}}}],["viet",{"_index":3014,"t":{"1456":{"position":[[697,4]]}}}],["vis.line([0",{"_index":3255,"t":{"1519":{"position":[[116,14]]}}}],["vis.line([[0",{"_index":3263,"t":{"1521":{"position":[[41,14]]}}}],["vis.line([loss.item",{"_index":3261,"t":{"1519":{"position":[[289,23]]}}}],["visdom",{"_index":3251,"t":{"1514":{"position":[[12,6]]},"1517":{"position":[[0,28],[37,6]]},"1519":{"position":[[5,6],[19,6],[32,8]]},"1521":{"position":[[5,6],[19,6],[32,8]]}}}],["visdom.serv",{"_index":3252,"t":{"1517":{"position":[[54,13]]}}}],["visit",{"_index":649,"t":{"970":{"position":[[753,8],[1132,8]]}}}],["visit(vertextyp",{"_index":766,"t":{"974":{"position":[[290,16]]}}}],["visit[cnt]=0",{"_index":871,"t":{"974":{"position":[[2992,13]]}}}],["visit[max_vertex_num",{"_index":824,"t":{"974":{"position":[[2077,22]]}}}],["visit[p",{"_index":844,"t":{"974":{"position":[[2568,8]]}}}],["visit[u]=0",{"_index":848,"t":{"974":{"position":[[2679,11]]}}}],["visit[u]=1",{"_index":832,"t":{"974":{"position":[[2298,11]]}}}],["visited.count(id1",{"_index":660,"t":{"970":{"position":[[998,19],[1431,19]]}}}],["visited.insert(id1",{"_index":662,"t":{"970":{"position":[[1044,20],[1497,20]]}}}],["visited.insert(start",{"_index":653,"t":{"970":{"position":[[802,22],[1216,22]]}}}],["visual",{"_index":2708,"t":{"1409":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"1486":{"position":[[11,6],[352,6],[1409,6]]},"1488":{"position":[[168,6]]},"1592":{"position":[[1262,6],[1632,6],[1668,6],[1713,6]]},"1600":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"1627":{"position":[[11,6],[352,6],[1409,6]]},"1629":{"position":[[168,6]]}}}],["vit",{"_index":3280,"t":{"1592":{"position":[[668,8],[934,16]]}}}],["viz.line([[y1",{"_index":3267,"t":{"1521":{"position":[[177,14]]}}}],["viz.line([real_y_data",{"_index":3258,"t":{"1519":{"position":[[208,23]]}}}],["vllm",{"_index":2780,"t":{"1411":{"position":[[761,4]]},"1602":{"position":[[760,4]]}}}],["vnode",{"_index":777,"t":{"974":{"position":[[504,6],[547,7]]}}}],["vnv_nvn",{"_index":1307,"t":{"1066":{"position":[[68,21]]}}}],["voc1voc_1voc1​词汇向量输入时,在decoder中,voc1voc_1voc1",{"_index":1696,"t":{"1197":{"position":[[177,87]]},"1393":{"position":[[177,87]]}}}],["vocabulari",{"_index":1653,"t":{"1189":{"position":[[6,16]]},"1385":{"position":[[6,16]]}}}],["vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(nlp",{"_index":1654,"t":{"1189":{"position":[[23,95]]},"1385":{"position":[[23,95]]}}}],["voc中,类别种类为20类,因此在预测阶段输出的[7",{"_index":3519,"t":{"1715":{"position":[[423,27]]}}}],["void",{"_index":700,"t":{"972":{"position":[[1073,4]]},"974":{"position":[[285,4],[2215,4]]},"977":{"position":[[1073,4],[1360,4],[1475,4],[1590,4]]},"979":{"position":[[775,4],[1041,4],[1148,4],[1255,4]]},"981":{"position":[[539,4]]},"1009":{"position":[[82,4],[1294,4],[1833,4]]}}}],["voxceleb1",{"_index":2850,"t":{"1422":{"position":[[24,10],[72,10]]}}}],["vq",{"_index":3072,"t":{"1473":{"position":[[78,8],[102,2],[161,15],[310,7],[503,2]]},"1475":{"position":[[10,2],[79,7],[237,2]]},"1477":{"position":[[10,2],[165,2],[267,2],[309,2]]},"1479":{"position":[[288,2]]},"1493":{"position":[[1241,2],[1261,2]]},"1495":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]},"1592":{"position":[[260,2],[307,2],[328,2],[377,2],[507,2],[525,23],[553,56],[690,2],[724,2],[821,2],[884,2]]},"1634":{"position":[[1241,2],[1261,2]]},"1636":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]}}}],["vqgan",{"_index":2781,"t":{"1414":{"position":[[5,5]]},"1477":{"position":[[0,5],[63,15]]},"1490":{"position":[[1033,5],[1212,5],[1331,5]]},"1495":{"position":[[346,5]]},"1592":{"position":[[893,5],[1234,10]]},"1605":{"position":[[5,5]]},"1631":{"position":[[1033,5],[1212,5],[1331,5]]},"1636":{"position":[[346,5]]}}}],["vqgan、vqvae、var、maskgit",{"_index":2905,"t":{"1430":{"position":[[108,23]]},"1567":{"position":[[108,23]]}}}],["vqgan(2021",{"_index":3279,"t":{"1592":{"position":[[650,17]]}}}],["vqgan(2022",{"_index":3281,"t":{"1592":{"position":[[677,12]]}}}],["vqgan(vector",{"_index":3079,"t":{"1477":{"position":[[101,17]]}}}],["vqgan,rq",{"_index":3084,"t":{"1479":{"position":[[297,8]]}}}],["vqvae",{"_index":3070,"t":{"1473":{"position":[[31,5]]},"1475":{"position":[[0,5]]},"1490":{"position":[[1505,5]]},"1495":{"position":[[64,5]]},"1631":{"position":[[1505,5]]},"1636":{"position":[[64,5]]},"1638":{"position":[[6,5]]}}}],["vqvae、vqgan",{"_index":3060,"t":{"1466":{"position":[[517,47]]}}}],["vqvae、vqga、dal",{"_index":2770,"t":{"1411":{"position":[[64,21]]},"1602":{"position":[[64,21]]}}}],["vrtype",{"_index":764,"t":{"974":{"position":[[248,6],[433,6]]}}}],["vtv_tvt",{"_index":1306,"t":{"1066":{"position":[[47,20]]}}}],["vt​∪vn​)∗(1",{"_index":1273,"t":{"1030":{"position":[[157,15]]}}}],["vt​∪vn​)∗(3",{"_index":1285,"t":{"1034":{"position":[[229,15]]}}}],["vt∗(2)",{"_index":1274,"t":{"1032":{"position":[[6,9]]}}}],["vt∗​(2",{"_index":1278,"t":{"1032":{"position":[[72,9]]}}}],["vt∪vn)∗(1)",{"_index":1266,"t":{"1030":{"position":[[73,14]]}}}],["vt∪vn)∗(3)\\alpha",{"_index":1282,"t":{"1034":{"position":[[115,19]]}}}],["vvv",{"_index":2151,"t":{"1276":{"position":[[216,3]]},"1278":{"position":[[166,3]]}}}],["v当前是第k",{"_index":831,"t":{"974":{"position":[[2268,10]]}}}],["v的入度减1",{"_index":736,"t":{"972":{"position":[[2067,9]]}}}],["w",{"_index":1935,"t":{"1246":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"1248":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"1253":{"position":[[72,1],[346,1],[618,1]]},"1258":{"position":[[13,1]]},"1328":{"position":[[89,1]]},"1330":{"position":[[98,1],[237,2],[279,1],[332,2],[345,1]]},"1342":{"position":[[451,1]]},"1368":{"position":[[564,1],[608,1],[612,1]]},"1493":{"position":[[448,1]]},"1545":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"1547":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"1552":{"position":[[72,1],[346,1],[618,1]]},"1557":{"position":[[13,1]]},"1623":{"position":[[170,3]]},"1634":{"position":[[448,1]]},"1715":{"position":[[308,2]]}}}],["w')o(co​×ci​×h×w×h′×w",{"_index":2464,"t":{"1342":{"position":[[470,23]]}}}],["w'co​×h′×w",{"_index":2457,"t":{"1342":{"position":[[165,11]]}}}],["w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\parti",{"_index":2402,"t":{"1330":{"position":[[177,59]]}}}],["w1,p1),(w2,p2),…,(wv,pv)}\\left\\{\\left(w_1",{"_index":2167,"t":{"1278":{"position":[[207,44]]}}}],["w1,w2w_{1",{"_index":2799,"t":{"1416":{"position":[[789,17]]},"1607":{"position":[[789,17]]}}}],["w=q.front",{"_index":914,"t":{"977":{"position":[[1157,12]]},"979":{"position":[[859,12]]}}}],["w][b,1,h,w]的tensor",{"_index":3544,"t":{"1723":{"position":[[196,46]]}}}],["w][b,1,h,w]的tensor,再将二者concat后通过7×77",{"_index":3548,"t":{"1727":{"position":[[97,36]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b",{"_index":3545,"t":{"1725":{"position":[[24,56]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b",{"_index":3547,"t":{"1727":{"position":[[24,66]]}}}],["w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b",{"_index":3559,"t":{"1733":{"position":[[56,40]]}}}],["w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b",{"_index":3543,"t":{"1723":{"position":[[153,36]]}}}],["w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b",{"_index":3541,"t":{"1723":{"position":[[30,36]]}}}],["w_2\\\\1&d(u,v",{"_index":1458,"t":{"1112":{"position":[[525,14]]}}}],["w_2\\end{cases}\\tag{24}h(u,v)=⎩⎨⎧​101​d(u,v)w2​​(24",{"_index":1459,"t":{"1112":{"position":[[540,76]]}}}],["w_code",{"_index":2058,"t":{"1253":{"position":[[143,20]]},"1552":{"position":[[143,20]]}}}],["w_encod",{"_index":2061,"t":{"1253":{"position":[[292,9]]},"1552":{"position":[[292,9]]}}}],["w_i",{"_index":2162,"t":{"1276":{"position":[[604,3]]},"1278":{"position":[[713,3]]}}}],["w_k",{"_index":3173,"t":{"1493":{"position":[[1029,3]]},"1634":{"position":[[1029,3]]}}}],["w_key",{"_index":1760,"t":{"1211":{"position":[[949,5],[1288,5],[3533,5],[3852,5]]}}}],["w_khk​×wk",{"_index":3157,"t":{"1493":{"position":[[559,10],[878,10]]},"1634":{"position":[[559,10],[878,10]]}}}],["w_k}rk​∈[v]hk​×wk",{"_index":3169,"t":{"1493":{"position":[[839,18]]},"1634":{"position":[[839,18]]}}}],["w_queri",{"_index":1762,"t":{"1211":{"position":[[1037,7],[1313,7],[3621,7],[3877,7]]}}}],["w_t",{"_index":2413,"t":{"1330":{"position":[[496,4]]}}}],["w_valu",{"_index":1764,"t":{"1211":{"position":[[1127,7],[1339,7],[3711,7],[3903,7]]}}}],["w_{2}w1​,w2",{"_index":2800,"t":{"1416":{"position":[[807,12]]},"1607":{"position":[[807,12]]}}}],["wall",{"_index":1073,"t":{"1001":{"position":[[1266,4],[1315,4]]}}}],["warn",{"_index":1027,"t":{"1001":{"position":[[321,8]]}}}],["waveform",{"_index":2853,"t":{"1422":{"position":[[107,9]]}}}],["wci​×h×w",{"_index":2450,"t":{"1342":{"position":[[29,8]]}}}],["web",{"_index":2073,"t":{"1255":{"position":[[39,3]]},"1554":{"position":[[39,3]]}}}],["web_ui",{"_index":2077,"t":{"1255":{"position":[[298,8]]},"1554":{"position":[[298,8]]}}}],["weight",{"_index":775,"t":{"974":{"position":[[440,7]]},"1211":{"position":[[644,7],[912,7],[2139,8],[3496,7],[4298,8]]},"1405":{"position":[[336,7]]},"1609":{"position":[[420,7]]}}}],["weighted_valu",{"_index":1790,"t":{"1211":{"position":[[2232,15],[2325,16],[4391,15],[4484,16]]}}}],["weighted_values.sum(dim=0",{"_index":1795,"t":{"1211":{"position":[[2571,26],[4529,26]]}}}],["welcom",{"_index":3298,"t":{"1609":{"position":[[101,8]]}}}],["well",{"_index":1801,"t":{"1211":{"position":[[2707,4]]},"1486":{"position":[[397,5]]},"1627":{"position":[[397,5]]}}}],["werror",{"_index":1034,"t":{"1001":{"position":[[507,6]]}}}],["whether",{"_index":2710,"t":{"1409":{"position":[[201,7]]},"1600":{"position":[[201,7]]}}}],["while(!q.empti",{"_index":731,"t":{"972":{"position":[[1903,18]]},"977":{"position":[[1133,17]]},"979":{"position":[[835,17]]}}}],["while(1",{"_index":1124,"t":{"1009":{"position":[[150,8],[1362,8]]}}}],["while(cin",{"_index":471,"t":{"949":{"position":[[1537,9]]}}}],["while(g.s",{"_index":654,"t":{"970":{"position":[[825,14],[1273,14]]}}}],["while(in[p1]!=pre[rt",{"_index":965,"t":{"981":{"position":[[398,22]]}}}],["while(it!=g.vertexs.end",{"_index":710,"t":{"972":{"position":[[1226,27]]}}}],["while(m",{"_index":705,"t":{"972":{"position":[[1128,7]]}}}],["while(mid[p1]!=rt",{"_index":898,"t":{"977":{"position":[[431,18],[774,18]]},"979":{"position":[[315,18],[544,18]]}}}],["while(~scanf(\"%d\",&n",{"_index":935,"t":{"977":{"position":[[1720,22]]},"979":{"position":[[1385,22]]}}}],["wh×w",{"_index":3159,"t":{"1493":{"position":[[612,4]]},"1634":{"position":[[612,4]]}}}],["wide",{"_index":2894,"t":{"1428":{"position":[[687,4]]},"1565":{"position":[[687,4]]}}}],["win='win_id",{"_index":3256,"t":{"1519":{"position":[[137,13],[247,13],[322,13]]},"1521":{"position":[[68,13],[213,13]]}}}],["window",{"_index":3419,"t":{"1656":{"position":[[0,20]]}}}],["winograd",{"_index":2232,"t":{"1292":{"position":[[812,8]]}}}],["wisdom",{"_index":2881,"t":{"1428":{"position":[[13,6]]},"1565":{"position":[[13,6]]}}}],["wise",{"_index":1633,"t":{"1183":{"position":[[1087,10]]},"1246":{"position":[[1074,4]]},"1248":{"position":[[1129,4],[1253,15]]},"1260":{"position":[[441,4],[599,4]]},"1379":{"position":[[1087,10]]},"1545":{"position":[[1074,4]]},"1547":{"position":[[1129,4],[1253,15]]},"1559":{"position":[[441,4],[599,4]]},"1710":{"position":[[73,7]]}}}],["wise)以及逐点(point",{"_index":3498,"t":{"1710":{"position":[[57,15]]}}}],["without",{"_index":2715,"t":{"1409":{"position":[[253,7]]},"1426":{"position":[[79,7]]},"1490":{"position":[[1581,7]]},"1563":{"position":[[79,7]]},"1600":{"position":[[253,7]]},"1631":{"position":[[1581,7]]}}}],["wi​∈ck",{"_index":2164,"t":{"1276":{"position":[[641,7]]}}}],["wi​∈cp",{"_index":2184,"t":{"1278":{"position":[[750,7]]}}}],["wi∈ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2159,"t":{"1276":{"position":[[537,38]]}}}],["wi∈cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2181,"t":{"1278":{"position":[[646,38]]}}}],["wl",{"_index":3468,"t":{"1694":{"position":[[321,65]]}}}],["wl/wait",{"_index":3467,"t":{"1694":{"position":[[305,10]]}}}],["wnli(winograd",{"_index":2230,"t":{"1292":{"position":[[781,13]]}}}],["word",{"_index":1636,"t":{"1185":{"position":[[0,9]]},"1294":{"position":[[186,4]]},"1381":{"position":[[0,9]]}}}],["work",{"_index":1042,"t":{"1001":{"position":[[681,5]]},"1428":{"position":[[289,5],[950,4]]},"1490":{"position":[[1614,4],[1725,4]]},"1523":{"position":[[41,4]]},"1565":{"position":[[289,5],[950,4]]},"1585":{"position":[[106,4]]},"1631":{"position":[[1614,4],[1725,4]]}}}],["work.109",{"_index":1063,"t":{"1001":{"position":[[1040,9]]}}}],["workshop",{"_index":2994,"t":{"1456":{"position":[[480,10]]}}}],["worship",{"_index":1326,"t":{"1079":{"position":[[78,7]]}}}],["write",{"_index":1106,"t":{"1001":{"position":[[1925,5]]},"1011":{"position":[[869,5]]}}}],["wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1",{"_index":2408,"t":{"1330":{"position":[[394,40]]}}}],["www和偏置项bbb",{"_index":2606,"t":{"1368":{"position":[[458,39]]}}}],["w∥12​≤θ(1",{"_index":2394,"t":{"1328":{"position":[[142,11]]}}}],["w∥12≤θ(1)min",{"_index":2386,"t":{"1328":{"position":[[22,13]]}}}],["w为bbox的宽高,c为该bbox是否存在object",{"_index":3517,"t":{"1715":{"position":[[338,30]]}}}],["w归约为文法开始符号",{"_index":1320,"t":{"1071":{"position":[[103,31]]}}}],["x",{"_index":43,"t":{"890":{"position":[[100,1],[124,2],[147,1],[155,1]]},"892":{"position":[[91,2],[114,1],[131,1]]},"904":{"position":[[118,3]]},"910":{"position":[[241,12],[274,10]]},"927":{"position":[[41,3],[69,5],[84,3]]},"937":{"position":[[4,2]]},"949":{"position":[[525,8],[1534,2],[1550,2]]},"951":{"position":[[290,8],[317,8]]},"1084":{"position":[[308,1],[414,1]]},"1308":{"position":[[43,3],[305,1]]},"1310":{"position":[[42,1],[50,1],[54,1],[178,1],[190,1],[294,1]]},"1354":{"position":[[382,3],[873,3],[1092,2],[1135,1],[1157,1],[1162,2],[1171,1],[1917,3],[1986,2]]},"1617":{"position":[[291,1],[343,1],[386,4],[504,4]]},"1621":{"position":[[142,5],[278,4],[506,5]]}}}],["x)%mod",{"_index":201,"t":{"927":{"position":[[115,9]]}}}],["x)=11+e−x(1)\\sigma(x",{"_index":2269,"t":{"1308":{"position":[[0,23]]}}}],["x)=\\mathbb{e}_{\\varepsilon",{"_index":2916,"t":{"1434":{"position":[[212,27]]},"1571":{"position":[[212,27]]}}}],["x)>(i",{"_index":198,"t":{"927":{"position":[[28,10]]}}}],["x)\\mu(x)μ(x",{"_index":2822,"t":{"1416":{"position":[[1716,14],[1816,14]]},"1607":{"position":[[1717,14],[1817,14]]}}}],["x)\\sigma(x)σ(x",{"_index":2823,"t":{"1416":{"position":[[1733,17],[1836,18]]},"1607":{"position":[[1734,17],[1837,18]]}}}],["x,y)(x",{"_index":1341,"t":{"1082":{"position":[[0,41],[90,15]]}}}],["x.reshap",{"_index":2479,"t":{"1354":{"position":[[393,10]]}}}],["x.shape[0",{"_index":2559,"t":{"1354":{"position":[[2099,11]]}}}],["x.to(devic",{"_index":2511,"t":{"1354":{"position":[[1139,13],[1175,12],[1993,13]]}}}],["x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​做weight",{"_index":1245,"t":{"1017":{"position":[[445,122]]}}}],["x0x_0x0",{"_index":2949,"t":{"1436":{"position":[[436,8]]},"1573":{"position":[[436,8]]}}}],["x0∼p(x∣z)x_0",{"_index":2950,"t":{"1436":{"position":[[448,12]]},"1573":{"position":[[448,12]]}}}],["x1",{"_index":3320,"t":{"1617":{"position":[[381,2],[611,2]]}}}],["x1,...,xt−1][x_1,...,x_{t",{"_index":3275,"t":{"1592":{"position":[[85,26]]}}}],["x1,x2,...,xt−1)(x_1",{"_index":3138,"t":{"1490":{"position":[[1126,21]]},"1631":{"position":[[1126,21]]}}}],["x1[0",{"_index":3346,"t":{"1617":{"position":[[1195,21],[1232,20]]}}}],["x1[0,:,:]+x2[0,:,:](1)x1[0",{"_index":3331,"t":{"1617":{"position":[[846,27]]}}}],["x1[1,:,:]+x2[1,:,:](2)x1[1",{"_index":3334,"t":{"1617":{"position":[[924,27]]}}}],["x1[2,:,:]+x2[2,:,:](3)x1[2",{"_index":3337,"t":{"1617":{"position":[[1002,27]]}}}],["x1与x2在第0维度上维度相同,所以python",{"_index":3330,"t":{"1617":{"position":[[798,47]]}}}],["x2",{"_index":3323,"t":{"1617":{"position":[[499,2],[616,2]]}}}],["x2[0",{"_index":3332,"t":{"1617":{"position":[[882,5],[1220,8]]}}}],["x2[0,0",{"_index":3347,"t":{"1617":{"position":[[1256,15]]}}}],["x2[1",{"_index":3335,"t":{"1617":{"position":[[960,5]]}}}],["x2[2",{"_index":3338,"t":{"1617":{"position":[[1038,5]]}}}],["x86",{"_index":998,"t":{"991":{"position":[[89,12]]},"1001":{"position":[[835,5]]}}}],["x86/elf",{"_index":1050,"t":{"1001":{"position":[[854,7]]}}}],["x86_64与i386",{"_index":1035,"t":{"1001":{"position":[[561,16]]}}}],["x Search the documentation - + @@ -12,7 +12,7 @@

    Search the documentation

    - + \ No newline at end of file diff --git a/img/Musk_0.jpg b/img/Musk_0.jpg deleted file mode 100644 index 0f07f3128..000000000 Binary files a/img/Musk_0.jpg and /dev/null differ diff --git a/img/intro.png b/img/intro.png index 0c90cad0f..84fb34a84 100644 Binary files a/img/intro.png and b/img/intro.png differ diff --git a/img/intro2.png b/img/intro2.png deleted file mode 100644 index 0cf66dc8e..000000000 Binary files a/img/intro2.png and /dev/null differ diff --git a/index.html b/index.html index 64c1117e2..21b49e42a 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 培洋的笔记本📒 | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@
    Image

    求实求真,大气大为

    Image

    CENTER FOR FUTURE MEDIA

    Image

    正德厚学,笃行致新

    Image

    木起青绿,梦绘初蓝

    - + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 48de2f033..0187a13b8 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -4,7 +4,7 @@ Markdown page example | 培洋的笔记本📒 - + @@ -12,7 +12,7 @@

    Markdown page example

    You don't need React to write simple standalone pages.

    - + \ No newline at end of file diff --git a/search-index.json b/search-index.json index ea45f24ca..12bda4365 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"鸣谢","u":"/docs/Acknowledgement/intro","b":["🍺 饮水思源"]},{"i":6,"t":"排列组合(求30的倍数)","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","b":["题解"]},{"i":12,"t":"反序输出","u":"/docs/Algorithms/题解/反序输出","b":["题解"]},{"i":18,"t":"一维前缀和(刷出一道墙)","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","b":["题解"]},{"i":24,"t":"Welcome","u":"/docs/Algorithms/intro","b":["🎰 算法"]},{"i":28,"t":"STL模板","u":"/docs/Algorithms/STL模板","b":[]},{"i":50,"t":"机试技巧与STL","u":"/docs/Algorithms/机试技巧与STL","b":[]},{"i":117,"t":"Linux 系统下 GeekOS 的环境配置","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","b":["操作系统课设"]},{"i":131,"t":"编译原理笔记","u":"/docs/Curriculum/编译原理/Note","b":["编译原理"]},{"i":189,"t":"GeekOS project 0的实现","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","b":["操作系统课设"]},{"i":195,"t":"Welcome","u":"/docs/Curriculum/intro","b":["📖 课程学习"]},{"i":199,"t":"生成式对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/GAN","b":["大模型基础"]},{"i":216,"t":"数字图像处理复习笔记","u":"/docs/Curriculum/数字图像处理/Note","b":["数字图像处理"]},{"i":269,"t":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","b":["大模型基础"]},{"i":292,"t":"图像生成模型","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","b":["大模型基础"]},{"i":319,"t":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","b":["大模型基础"]},{"i":327,"t":"生成模型中的采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","b":["大模型基础"]},{"i":345,"t":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","b":["大模型基础","Prompt Learning"]},{"i":380,"t":"自注意力(Self-Attention)","u":"/docs/Deep-Learning/大模型基础/Self-Attention","b":["大模型基础"]},{"i":410,"t":"自监督学习(Self-Supervised Learning)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","b":["大模型基础"]},{"i":426,"t":"深度可分离卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","b":["基础知识"]},{"i":434,"t":"激活函数与Loss的梯度","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","b":["基础知识"]},{"i":445,"t":"正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","b":["基础知识"]},{"i":453,"t":"AlexNet","u":"/docs/Deep-Learning/基础知识/AlexNet","b":["基础知识"]},{"i":460,"t":"卷积层","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","b":["基础知识"]},{"i":465,"t":"K-fold cross-validation","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","b":["基础知识"]},{"i":472,"t":"Perceptron","u":"/docs/Deep-Learning/基础知识/Perceptron","b":["基础知识"]},{"i":479,"t":"从全连接到卷积","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","b":["基础知识"]},{"i":486,"t":"关于Logistic Regression","u":"/docs/Deep-Learning/基础知识/LogisticRegression","b":["基础知识"]},{"i":495,"t":"池化层","u":"/docs/Deep-Learning/基础知识/PoolingLayer","b":["基础知识"]},{"i":502,"t":"PyTorch基础","u":"/docs/Deep-Learning/基础知识/PytorchBasics","b":["基础知识"]},{"i":505,"t":"LeNet","u":"/docs/Deep-Learning/基础知识/LeNet","b":["基础知识"]},{"i":512,"t":"Autoregressive Image Generation without Vector Quantization","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","b":["论文笔记"]},{"i":534,"t":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","b":["论文笔记"]},{"i":537,"t":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","b":["论文笔记"]},{"i":548,"t":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","b":["论文笔记"]},{"i":561,"t":"Speaker Classification","u":"/docs/Deep-Learning/实战练习/Speaker Classification","b":["实战练习"]},{"i":569,"t":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","b":["论文笔记"]},{"i":592,"t":"NeurIPS 2020: Denoising Diffusion Probabilistic Models","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","b":["论文笔记"]},{"i":603,"t":"Visdom可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","b":["实战练习"]},{"i":614,"t":"Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","b":["论文笔记"]},{"i":628,"t":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","b":["实战练习"]},{"i":663,"t":"图像生成:自回归模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","b":["图像生成与视频生成大模型"]},{"i":684,"t":"扩散模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Diffusion-Models","b":["图像生成与视频生成大模型"]},{"i":686,"t":"图像生成和视频生成基座模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","b":["图像生成与视频生成大模型"]},{"i":695,"t":"自回归模型:MAR","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","b":["图像生成与视频生成大模型"]},{"i":717,"t":"自回归模型:LlamaGen","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","b":["图像生成与视频生成大模型"]},{"i":728,"t":"查漏补缺","u":"/docs/Deep-Learning/Fill-The-Gaps","b":[]},{"i":738,"t":"20240705 @ 图像生成与视频生成基座模型","u":"/docs/Deep-Learning/组会记录/1-20240705","b":["组会记录"]},{"i":743,"t":"自回归模型:VAR","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","b":["图像生成与视频生成大模型"]},{"i":760,"t":"告示栏","u":"/docs/Others/博客搭建/告示栏","b":["博客搭建"]},{"i":762,"t":"Welcome","u":"/docs/Deep-Learning/intro","b":["🤖 深度学习"]},{"i":766,"t":"如何让你的Kde Plasma看起来更像macOS","u":"/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","b":["Linux","客制化"]},{"i":771,"t":"终端代理","u":"/docs/Others/Linux/实用工具/终端代理","b":["Linux","实用工具"]},{"i":779,"t":"Welcome","u":"/docs/Others/intro","b":["☃️ 其他"]},{"i":783,"t":"挂载Windows磁盘为只读文件","u":"/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","b":["Linux","问题解决"]},{"i":788,"t":"大数除法","u":"/docs/Tui-Mian/机试/大数除法","b":["机试"]},{"i":796,"t":"数据结构","u":"/docs/Tui-Mian/计算机基础综合/数据结构","b":["计算机基础综合"]},{"i":801,"t":"线性代数","u":"/docs/Tui-Mian/数学/线性代数","b":["数学"]},{"i":807,"t":"概率论","u":"/docs/Tui-Mian/数学/概率论","b":["数学"]},{"i":810,"t":"简历面试准备","u":"/docs/Tui-Mian/简历/简历面试准备","b":["简历"]},{"i":852,"t":"夏令营面试数学部分复习","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","b":["数学"]},{"i":857,"t":"Welcome","u":"/docs/Tui-Mian/intro","b":["🤡 推免"]},{"i":861,"t":"经验贴:2023年双非计算机保研经历","u":"/docs/Tui-Mian/Summary","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,1.06]],["t/6",[1,4.845]],["t/12",[0,1.06]],["t/18",[0,1.06]],["t/24",[2,3.175]],["t/28",[3,4.188]],["t/50",[3,4.188]],["t/117",[0,0.919,4,2.815,5,2.433]],["t/131",[0,1.06]],["t/189",[5,2.828,6,3.272,7,3.272]],["t/195",[2,3.175]],["t/199",[8,4.845]],["t/216",[0,1.06]],["t/269",[9,2.182,10,2.433,11,2.182,12,2.433]],["t/292",[0,1.06]],["t/319",[13,2.767,14,2.386]],["t/327",[0,1.06]],["t/345",[0,1.016,15,1.915,16,1.75]],["t/380",[11,3.028,17,3.376]],["t/410",[16,2.318,17,2.828,18,3.272]],["t/426",[0,1.06]],["t/434",[19,4.845]],["t/445",[0,1.06]],["t/453",[20,4.845]],["t/460",[0,1.06]],["t/465",[21,2.815,22,2.815,23,2.815,24,2.815]],["t/472",[25,4.845]],["t/479",[0,1.06]],["t/486",[26,3.906,27,3.906]],["t/495",[0,1.06]],["t/502",[28,4.845]],["t/505",[29,4.845]],["t/512",[30,1.706,31,1.442,32,1.559,33,2.2,34,2.2,35,2.2]],["t/534",[13,1.174,14,1.013,31,1.086,36,1.433,37,1.657,38,1.657,39,1.657,40,1.657,41,1.657]],["t/537",[13,1.279,14,1.103,30,1.4,31,1.183,32,1.279,42,1.806,43,1.806,44,1.561]],["t/548",[14,0.812,15,1.031,16,0.942,31,0.871,32,0.942,36,1.149,45,1.149,46,1.329,47,1.329,48,1.329,49,1.149,50,1.329]],["t/561",[51,3.906,52,3.906]],["t/569",[9,2.182,10,2.433,11,2.182,12,2.433]],["t/592",[9,1.706,13,1.559,14,1.344,53,2.2,54,2.2,55,2.2]],["t/603",[56,4.845]],["t/614",[14,0.936,30,1.187,31,1.003,32,1.085,44,1.324,49,1.324,57,1.531,58,1.531,59,1.531,60,1.531]],["t/628",[0,1.016,15,1.915,16,1.75]],["t/663",[0,1.06]],["t/684",[0,1.06]],["t/686",[0,1.06]],["t/695",[61,4.845]],["t/717",[62,4.845]],["t/728",[0,1.06]],["t/738",[0,1.026,63,3.272]],["t/743",[64,4.845]],["t/760",[0,1.06]],["t/762",[2,3.175]],["t/766",[65,3.906,66,3.906]],["t/771",[0,1.06]],["t/779",[2,3.175]],["t/783",[67,4.845]],["t/788",[0,1.06]],["t/796",[0,1.06]],["t/801",[0,1.06]],["t/807",[0,1.06]],["t/810",[0,1.06]],["t/852",[0,1.06]],["t/857",[2,3.175]],["t/861",[45,4.188]]],"invertedIndex":[["",{"_index":0,"t":{"1":{"position":[[0,2]]},"12":{"position":[[0,4]]},"18":{"position":[[0,12]]},"117":{"position":[[6,3],[17,5]]},"131":{"position":[[0,6]]},"216":{"position":[[0,10]]},"292":{"position":[[0,6]]},"327":{"position":[[0,10]]},"345":{"position":[[0,9],[26,3],[30,17]]},"426":{"position":[[0,7]]},"445":{"position":[[0,8]]},"460":{"position":[[0,3]]},"479":{"position":[[0,7]]},"495":{"position":[[0,3]]},"628":{"position":[[0,9],[26,3],[30,17]]},"663":{"position":[[0,10]]},"684":{"position":[[0,4]]},"686":{"position":[[0,13]]},"728":{"position":[[0,4]]},"738":{"position":[[9,1],[11,13]]},"760":{"position":[[0,3]]},"771":{"position":[[0,4]]},"788":{"position":[[0,4]]},"796":{"position":[[0,4]]},"801":{"position":[[0,4]]},"807":{"position":[[0,3]]},"810":{"position":[[0,6]]},"852":{"position":[[0,11]]}}}],["0",{"_index":7,"t":{"189":{"position":[[15,4]]}}}],["2017",{"_index":10,"t":{"269":{"position":[[8,5]]},"569":{"position":[[8,5]]}}}],["2020",{"_index":53,"t":{"592":{"position":[[8,5]]}}}],["2022",{"_index":37,"t":{"534":{"position":[[5,5]]}}}],["2023",{"_index":45,"t":{"548":{"position":[[5,5]]},"861":{"position":[[0,18]]}}}],["20240705",{"_index":63,"t":{"738":{"position":[[0,8]]}}}],["30",{"_index":1,"t":{"6":{"position":[[0,12]]}}}],["adapt",{"_index":48,"t":{"548":{"position":[[38,10]]}}}],["alexnet",{"_index":20,"t":{"453":{"position":[[0,7]]}}}],["attent",{"_index":11,"t":{"269":{"position":[[14,9]]},"380":{"position":[[10,10]]},"569":{"position":[[14,9]]}}}],["autoregress",{"_index":30,"t":{"512":{"position":[[0,14]]},"537":{"position":[[0,14]]},"614":{"position":[[7,14]]}}}],["beat",{"_index":42,"t":{"537":{"position":[[21,5]]}}}],["classif",{"_index":52,"t":{"561":{"position":[[8,14]]}}}],["cross",{"_index":23,"t":{"465":{"position":[[7,5]]}}}],["cvpr",{"_index":36,"t":{"534":{"position":[[0,4]]},"548":{"position":[[0,4]]}}}],["denois",{"_index":54,"t":{"592":{"position":[[14,9]]}}}],["diffus",{"_index":13,"t":{"319":{"position":[[0,14]]},"534":{"position":[[55,9]]},"537":{"position":[[27,10]]},"592":{"position":[[24,9]]}}}],["fold",{"_index":22,"t":{"465":{"position":[[2,4]]}}}],["gan",{"_index":8,"t":{"199":{"position":[[0,12]]}}}],["geeko",{"_index":5,"t":{"117":{"position":[[10,6]]},"189":{"position":[[0,6]]}}}],["gener",{"_index":32,"t":{"512":{"position":[[21,10]]},"537":{"position":[[63,10]]},"548":{"position":[[21,10]]},"614":{"position":[[47,10]]}}}],["high",{"_index":38,"t":{"534":{"position":[[11,4]]}}}],["imag",{"_index":31,"t":{"512":{"position":[[15,5]]},"534":{"position":[[27,5]]},"537":{"position":[[57,5]]},"548":{"position":[[53,5]]},"614":{"position":[[41,5]]}}}],["k",{"_index":21,"t":{"465":{"position":[[0,1]]}}}],["kde",{"_index":65,"t":{"766":{"position":[[0,8]]}}}],["latent",{"_index":41,"t":{"534":{"position":[[48,6]]}}}],["learn",{"_index":16,"t":{"345":{"position":[[17,8]]},"410":{"position":[[22,9]]},"548":{"position":[[75,8]]},"628":{"position":[[17,8]]}}}],["lenet",{"_index":29,"t":{"505":{"position":[[0,5]]}}}],["linux",{"_index":4,"t":{"117":{"position":[[0,5]]}}}],["llama",{"_index":43,"t":{"537":{"position":[[38,5]]}}}],["llamagen",{"_index":62,"t":{"717":{"position":[[0,14]]}}}],["logist",{"_index":26,"t":{"486":{"position":[[0,10]]}}}],["loss",{"_index":19,"t":{"434":{"position":[[0,12]]}}}],["mar",{"_index":61,"t":{"695":{"position":[[0,9]]}}}],["model",{"_index":14,"t":{"319":{"position":[[15,6]]},"534":{"position":[[65,6]]},"537":{"position":[[15,5]]},"548":{"position":[[32,5]]},"592":{"position":[[48,6]]},"614":{"position":[[22,9]]}}}],["need",{"_index":12,"t":{"269":{"position":[[35,4]]},"569":{"position":[[35,4]]}}}],["neurip",{"_index":9,"t":{"269":{"position":[[0,7]]},"569":{"position":[[0,7]]},"592":{"position":[[0,7]]}}}],["next",{"_index":58,"t":{"614":{"position":[[62,4]]}}}],["perceptron",{"_index":25,"t":{"472":{"position":[[0,10]]}}}],["plasma看起来更像maco",{"_index":66,"t":{"766":{"position":[[9,16]]}}}],["predict",{"_index":60,"t":{"614":{"position":[[73,10]]}}}],["probabilist",{"_index":55,"t":{"592":{"position":[[34,13]]}}}],["project",{"_index":6,"t":{"189":{"position":[[7,7]]}}}],["prompt",{"_index":15,"t":{"345":{"position":[[10,6]]},"548":{"position":[[68,6]]},"628":{"position":[[10,6]]}}}],["pytorch",{"_index":28,"t":{"502":{"position":[[0,9]]}}}],["quantiz",{"_index":35,"t":{"512":{"position":[[47,12]]}}}],["regress",{"_index":27,"t":{"486":{"position":[[11,10]]}}}],["resolut",{"_index":39,"t":{"534":{"position":[[16,10]]}}}],["scalabl",{"_index":44,"t":{"537":{"position":[[48,8]]},"614":{"position":[[32,8]]}}}],["scale",{"_index":59,"t":{"614":{"position":[[67,5]]}}}],["self",{"_index":17,"t":{"380":{"position":[[0,9]]},"410":{"position":[[0,10]]}}}],["shot",{"_index":47,"t":{"548":{"position":[[16,4]]}}}],["speaker",{"_index":51,"t":{"561":{"position":[[0,7]]}}}],["specif",{"_index":50,"t":{"548":{"position":[[59,8]]}}}],["stl",{"_index":3,"t":{"28":{"position":[[0,5]]},"50":{"position":[[0,8]]}}}],["supervis",{"_index":18,"t":{"410":{"position":[[11,10]]}}}],["synthesi",{"_index":40,"t":{"534":{"position":[[33,9]]}}}],["valid",{"_index":24,"t":{"465":{"position":[[13,10]]}}}],["var",{"_index":64,"t":{"743":{"position":[[0,9]]}}}],["vector",{"_index":34,"t":{"512":{"position":[[40,6]]}}}],["via",{"_index":49,"t":{"548":{"position":[[49,3]]},"614":{"position":[[58,3]]}}}],["visdom",{"_index":56,"t":{"603":{"position":[[0,9]]}}}],["visual",{"_index":57,"t":{"614":{"position":[[0,6]]}}}],["welcom",{"_index":2,"t":{"24":{"position":[[0,7]]},"195":{"position":[[0,7]]},"762":{"position":[[0,7]]},"779":{"position":[[0,7]]},"857":{"position":[[0,7]]}}}],["window",{"_index":67,"t":{"783":{"position":[[0,16]]}}}],["without",{"_index":33,"t":{"512":{"position":[[32,7]]}}}],["zero",{"_index":46,"t":{"548":{"position":[[11,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"饮水思源","u":"/docs/Acknowledgement/intro","h":"#饮水思源","p":1},{"i":4,"t":"Disclaimer","u":"/docs/Acknowledgement/intro","h":"#disclaimer","p":1},{"i":8,"t":"参考代码","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":6},{"i":10,"t":"题解","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":6},{"i":14,"t":"参考代码","u":"/docs/Algorithms/题解/反序输出","h":"#参考代码","p":12},{"i":16,"t":"题解","u":"/docs/Algorithms/题解/反序输出","h":"#题解","p":12},{"i":20,"t":"参考代码","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":18},{"i":22,"t":"题解","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":18},{"i":26,"t":"支持我!","u":"/docs/Algorithms/intro","h":"#支持我","p":24},{"i":30,"t":"vector","u":"/docs/Algorithms/STL模板","h":"#vector","p":28},{"i":32,"t":"pair","u":"/docs/Algorithms/STL模板","h":"#pair","p":28},{"i":34,"t":"string","u":"/docs/Algorithms/STL模板","h":"#string","p":28},{"i":36,"t":"query","u":"/docs/Algorithms/STL模板","h":"#query","p":28},{"i":38,"t":"priority_queue","u":"/docs/Algorithms/STL模板","h":"#priority_queue","p":28},{"i":40,"t":"stack","u":"/docs/Algorithms/STL模板","h":"#stack","p":28},{"i":42,"t":"deque","u":"/docs/Algorithms/STL模板","h":"#deque","p":28},{"i":44,"t":"set/multiset","u":"/docs/Algorithms/STL模板","h":"#setmultiset","p":28},{"i":46,"t":"map/multimap","u":"/docs/Algorithms/STL模板","h":"#mapmultimap","p":28},{"i":48,"t":"biset","u":"/docs/Algorithms/STL模板","h":"#biset","p":28},{"i":52,"t":"vs2018 快捷键","u":"/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":50},{"i":54,"t":"头文件","u":"/docs/Algorithms/机试技巧与STL","h":"#头文件","p":50},{"i":55,"t":"标准c库","u":"/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":50},{"i":57,"t":"c++ STL","u":"/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":50},{"i":59,"t":"常用头","u":"/docs/Algorithms/机试技巧与STL","h":"#常用头","p":50},{"i":61,"t":"常用宏定义","u":"/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":50},{"i":63,"t":"结构体","u":"/docs/Algorithms/机试技巧与STL","h":"#结构体","p":50},{"i":64,"t":"定义","u":"/docs/Algorithms/机试技巧与STL","h":"#定义","p":50},{"i":66,"t":"初始化","u":"/docs/Algorithms/机试技巧与STL","h":"#初始化","p":50},{"i":68,"t":"运算符重载","u":"/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":50},{"i":70,"t":"c++new的使用","u":"/docs/Algorithms/机试技巧与STL","h":"#cnew的使用","p":50},{"i":71,"t":"常规","u":"/docs/Algorithms/机试技巧与STL","h":"#常规","p":50},{"i":73,"t":"动态申请列大小固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":50},{"i":75,"t":"动态申请大小不固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":50},{"i":77,"t":"常用STL","u":"/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":50},{"i":79,"t":"简述","u":"/docs/Algorithms/机试技巧与STL","h":"#简述","p":50},{"i":81,"t":"algorithm","u":"/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":50},{"i":83,"t":"vector","u":"/docs/Algorithms/机试技巧与STL","h":"#vector","p":50},{"i":85,"t":"list","u":"/docs/Algorithms/机试技巧与STL","h":"#list","p":50},{"i":87,"t":"string","u":"/docs/Algorithms/机试技巧与STL","h":"#string","p":50},{"i":89,"t":"pair","u":"/docs/Algorithms/机试技巧与STL","h":"#pair","p":50},{"i":91,"t":"map","u":"/docs/Algorithms/机试技巧与STL","h":"#map","p":50},{"i":93,"t":"stack","u":"/docs/Algorithms/机试技巧与STL","h":"#stack","p":50},{"i":95,"t":"queue","u":"/docs/Algorithms/机试技巧与STL","h":"#queue","p":50},{"i":97,"t":"set","u":"/docs/Algorithms/机试技巧与STL","h":"#set","p":50},{"i":99,"t":"multiset","u":"/docs/Algorithms/机试技巧与STL","h":"#multiset","p":50},{"i":101,"t":"bitset","u":"/docs/Algorithms/机试技巧与STL","h":"#bitset","p":50},{"i":103,"t":"图模板","u":"/docs/Algorithms/机试技巧与STL","h":"#图模板","p":50},{"i":104,"t":"不带出入度的最简模板","u":"/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":50},{"i":106,"t":"带出入度的 (2019推免试题)","u":"/docs/Algorithms/机试技巧与STL","h":"#带出入度的-2019推免试题","p":50},{"i":108,"t":"图算法:找出u到v的所有路径-邻接表","u":"/docs/Algorithms/机试技巧与STL","h":"#图算法找出u到v的所有路径-邻接表","p":50},{"i":110,"t":"树模板","u":"/docs/Algorithms/机试技巧与STL","h":"#树模板","p":50},{"i":111,"t":"注释版","u":"/docs/Algorithms/机试技巧与STL","h":"#注释版","p":50},{"i":113,"t":"简化版(Val As Index,若数据不在1~N内,则可能越界)","u":"/docs/Algorithms/机试技巧与STL","h":"#简化版val-as-index若数据不在1n内则可能越界","p":50},{"i":115,"t":"简化版(Val Not As Index,可以存任意的 Val)","u":"/docs/Algorithms/机试技巧与STL","h":"#简化版val-not-as-index可以存任意的-val","p":50},{"i":118,"t":"必须要知道的原理","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#必须要知道的原理","p":117},{"i":119,"t":"GeekOS:","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#geekos","p":117},{"i":121,"t":"bochs:","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#bochs","p":117},{"i":123,"t":"二者之间的关系","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#二者之间的关系","p":117},{"i":125,"t":"安装与配置","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装与配置","p":117},{"i":127,"t":"安装","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装","p":117},{"i":129,"t":"配置","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#配置","p":117},{"i":132,"t":"第一章:前言","u":"/docs/Curriculum/编译原理/Note","h":"#第一章前言","p":131},{"i":133,"t":"1.1 编译程序的逻辑结构","u":"/docs/Curriculum/编译原理/Note","h":"#11-编译程序的逻辑结构","p":131},{"i":135,"t":"1.2 前端和后端","u":"/docs/Curriculum/编译原理/Note","h":"#12-前端和后端","p":131},{"i":137,"t":"1.3 遍的概念","u":"/docs/Curriculum/编译原理/Note","h":"#13-遍的概念","p":131},{"i":139,"t":"第二章:文法和语言","u":"/docs/Curriculum/编译原理/Note","h":"#第二章文法和语言","p":131},{"i":140,"t":"2.1 句型","u":"/docs/Curriculum/编译原理/Note","h":"#21-句型","p":131},{"i":142,"t":"2.2 句子:","u":"/docs/Curriculum/编译原理/Note","h":"#22-句子","p":131},{"i":144,"t":"2.3 文法的分类:","u":"/docs/Curriculum/编译原理/Note","h":"#23-文法的分类","p":131},{"i":146,"t":"2.4 最左/右推导:","u":"/docs/Curriculum/编译原理/Note","h":"#24-最左右推导","p":131},{"i":148,"t":"第三章:词法分析","u":"/docs/Curriculum/编译原理/Note","h":"#第三章词法分析","p":131},{"i":149,"t":"3.1 正规文法转换成正规式","u":"/docs/Curriculum/编译原理/Note","h":"#31-正规文法转换成正规式","p":131},{"i":150,"t":"3.2 有穷自动机(FA)","u":"/docs/Curriculum/编译原理/Note","h":"#32-有穷自动机fa","p":131},{"i":152,"t":"3.3 正规式RE与有穷自动机FA的互相转化","u":"/docs/Curriculum/编译原理/Note","h":"#33-正规式re与有穷自动机fa的互相转化","p":131},{"i":153,"t":"3.4 正规文法RM与有穷自动机FA的互相转化","u":"/docs/Curriculum/编译原理/Note","h":"#34-正规文法rm与有穷自动机fa的互相转化","p":131},{"i":154,"t":"第四章:自顶向下语法分析方法","u":"/docs/Curriculum/编译原理/Note","h":"#第四章自顶向下语法分析方法","p":131},{"i":156,"t":"1. FIRST集的定义","u":"/docs/Curriculum/编译原理/Note","h":"#1-first集的定义","p":131},{"i":157,"t":"2. Follow集的定义","u":"/docs/Curriculum/编译原理/Note","h":"#2-follow集的定义","p":131},{"i":159,"t":"3. SELECT集的定义","u":"/docs/Curriculum/编译原理/Note","h":"#3-select集的定义","p":131},{"i":161,"t":"4. LL(1)文法的定义","u":"/docs/Curriculum/编译原理/Note","h":"#4-ll1文法的定义","p":131},{"i":162,"t":"5. LL(1)文法的判别","u":"/docs/Curriculum/编译原理/Note","h":"#5-ll1文法的判别","p":131},{"i":164,"t":"6. 预测分析表","u":"/docs/Curriculum/编译原理/Note","h":"#6-预测分析表","p":131},{"i":166,"t":"7. 非LL(1)文法到LL(1)文法的等价变换","u":"/docs/Curriculum/编译原理/Note","h":"#7-非ll1文法到ll1文法的等价变换","p":131},{"i":168,"t":"第五章:自底向上语法分析方法","u":"/docs/Curriculum/编译原理/Note","h":"#第五章自底向上语法分析方法","p":131},{"i":169,"t":"5.1 概念","u":"/docs/Curriculum/编译原理/Note","h":"#51-概念","p":131},{"i":171,"t":"5.2 方法","u":"/docs/Curriculum/编译原理/Note","h":"#52-方法","p":131},{"i":173,"t":"5.3 工作过程","u":"/docs/Curriculum/编译原理/Note","h":"#53-工作过程","p":131},{"i":174,"t":"5.4 移入-归约分析器的4种动作","u":"/docs/Curriculum/编译原理/Note","h":"#54-移入-归约分析器的4种动作","p":131},{"i":176,"t":"5.5 重要题型","u":"/docs/Curriculum/编译原理/Note","h":"#55-重要题型","p":131},{"i":178,"t":"概念总结","u":"/docs/Curriculum/编译原理/Note","h":"#概念总结","p":131},{"i":179,"t":"1 编译程序各阶段功能","u":"/docs/Curriculum/编译原理/Note","h":"#1-编译程序各阶段功能","p":131},{"i":181,"t":"2 语法分析方法的概念","u":"/docs/Curriculum/编译原理/Note","h":"#2-语法分析方法的概念","p":131},{"i":183,"t":"3 翻译模式","u":"/docs/Curriculum/编译原理/Note","h":"#3-翻译模式","p":131},{"i":185,"t":"4 属性文法","u":"/docs/Curriculum/编译原理/Note","h":"#4-属性文法","p":131},{"i":187,"t":"5 符号表","u":"/docs/Curriculum/编译原理/Note","h":"#5-符号表","p":131},{"i":191,"t":"编写C语言代码","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":189},{"i":193,"t":"使用Linux的编译系统对C语言代码进行编译","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":189},{"i":197,"t":"支持我!","u":"/docs/Curriculum/intro","h":"#支持我","p":195},{"i":201,"t":"引言","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#引言","p":199},{"i":202,"t":"将随机分布作为输入","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":199},{"i":204,"t":"为什么要添加分布","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":199},{"i":206,"t":"核心思想","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":199},{"i":208,"t":"具体结构与作用","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":199},{"i":210,"t":"生成器(Generator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":199},{"i":212,"t":"判别器(Discriminator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":199},{"i":214,"t":"训练算法","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":199},{"i":218,"t":"第2章 数字图像处理基础","u":"/docs/Curriculum/数字图像处理/Note","h":"#第2章-数字图像处理基础","p":216},{"i":219,"t":"图像的采样与量化","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":216},{"i":221,"t":"距离度量","u":"/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":216},{"i":223,"t":"图像质量评价","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":216},{"i":225,"t":"灰度直方图","u":"/docs/Curriculum/数字图像处理/Note","h":"#灰度直方图","p":216},{"i":226,"t":"第3章 图像变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#第3章-图像变换","p":216},{"i":227,"t":"傅里叶变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":216},{"i":229,"t":"第4章 图像处理的基本运算","u":"/docs/Curriculum/数字图像处理/Note","h":"#第4章-图像处理的基本运算","p":216},{"i":230,"t":"点运算","u":"/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":216},{"i":232,"t":"比例缩放","u":"/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":216},{"i":234,"t":"灰度级插值","u":"/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":216},{"i":236,"t":"第5章 图像空域增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#第5章-图像空域增强","p":216},{"i":237,"t":"直接灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":216},{"i":239,"t":"直方图灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":216},{"i":241,"t":"空域滤波增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":216},{"i":243,"t":"第6章 图像频域增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":216},{"i":245,"t":"低通滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":216},{"i":247,"t":"高通滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#高通滤波","p":216},{"i":249,"t":"带通和带阻滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":216},{"i":251,"t":"第7章 彩色图像处理","u":"/docs/Curriculum/数字图像处理/Note","h":"#第7章-彩色图像处理","p":216},{"i":252,"t":"伪彩色图像的处理","u":"/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":216},{"i":254,"t":"全彩色图像的处理","u":"/docs/Curriculum/数字图像处理/Note","h":"#全彩色图像的处理","p":216},{"i":255,"t":"第8章 图像复原","u":"/docs/Curriculum/数字图像处理/Note","h":"#第8章-图像复原","p":216},{"i":256,"t":"图像退化机理","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":216},{"i":258,"t":"图像退化模型","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":216},{"i":260,"t":"第11章 图像分割","u":"/docs/Curriculum/数字图像处理/Note","h":"#第11章-图像分割","p":216},{"i":261,"t":"阈值分割法","u":"/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":216},{"i":263,"t":"边缘检测的基本原理","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":216},{"i":265,"t":"边缘检测算子","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":216},{"i":267,"t":"课后习题中的问答题","u":"/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":216},{"i":271,"t":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":269},{"i":273,"t":"Encoder","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#encoder","p":269},{"i":274,"t":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":269},{"i":276,"t":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":269},{"i":278,"t":"具体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":269},{"i":280,"t":"Decoder","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":269},{"i":282,"t":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":269},{"i":284,"t":"Non-Autoregressive Decoder(NAT)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#non-autoregressive-decodernat","p":269},{"i":285,"t":"训练(Training)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#训练training","p":269},{"i":286,"t":"损失函数","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":269},{"i":288,"t":"Teacher Forcing","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":269},{"i":290,"t":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":269},{"i":293,"t":"回顾文字生成的两种方法","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":292},{"i":295,"t":"自回归方法(AR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":292},{"i":297,"t":"非自回归方法(NAR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":292},{"i":299,"t":"目前图像生成模型的共同点","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":292},{"i":301,"t":"生成模型的共同结构","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":292},{"i":303,"t":"通用框架概览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":292},{"i":305,"t":"Benchmark","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":292},{"i":307,"t":"通用框架解析","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":292},{"i":309,"t":"常见图像生成模型速览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":292},{"i":311,"t":"变分自编码器(VAE)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":292},{"i":313,"t":"基于流的生成模型(Flow-Based Generative Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":292},{"i":315,"t":"生成对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":292},{"i":317,"t":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":292},{"i":321,"t":"基本概念","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":319},{"i":323,"t":"训练过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":319},{"i":325,"t":"推理过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":319},{"i":329,"t":"引言","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":327},{"i":331,"t":"为什么需要采样?","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":327},{"i":333,"t":"长尾效应","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":327},{"i":335,"t":"采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":327},{"i":337,"t":"温度(Temperature)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":327},{"i":339,"t":"Top-k 采样","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":327},{"i":341,"t":"Top-p 采样(Nucleus Sampling)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":327},{"i":343,"t":"结论","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":327},{"i":347,"t":"依赖","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#依赖","p":345},{"i":348,"t":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":345},{"i":350,"t":"安装依赖","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":345},{"i":352,"t":"下载预训练生成器","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":345},{"i":354,"t":"概述","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#概述","p":345},{"i":355,"t":"技术细节","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#技术细节","p":345},{"i":356,"t":"prompts 的初始化","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":345},{"i":358,"t":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":345},{"i":360,"t":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":345},{"i":362,"t":"训练 stage 1","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":345},{"i":364,"t":"训练 stage 2","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":345},{"i":366,"t":"定量分析指标","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":345},{"i":368,"t":"新增功能","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#新增功能","p":345},{"i":369,"t":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":345},{"i":371,"t":"Web UI","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":345},{"i":373,"t":"问题提出与改进","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题提出与改进","p":345},{"i":374,"t":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":345},{"i":376,"t":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":345},{"i":378,"t":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":345},{"i":382,"t":"认识CNN的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#认识cnn的局限性","p":380},{"i":383,"t":"输入与输出的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":380},{"i":385,"t":"关联上下文信息的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":380},{"i":387,"t":"Self-Attention的原理","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的原理","p":380},{"i":388,"t":"什么是Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":380},{"i":390,"t":"Self-Attention的核心思想","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":380},{"i":392,"t":"Self-Attention的实现","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":380},{"i":394,"t":"Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":380},{"i":396,"t":"Self-Attention与CNN的对比","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":380},{"i":398,"t":"Self Attention 的计算","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":380},{"i":400,"t":"输入形状","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":380},{"i":402,"t":"自注意力机制的计算步骤","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":380},{"i":404,"t":"多头自注意力","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":380},{"i":406,"t":"示例","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":380},{"i":408,"t":"自注意力中的掩码 Mask","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":380},{"i":412,"t":"介绍","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":410},{"i":414,"t":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":410},{"i":416,"t":"结构","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":410},{"i":418,"t":"Self-Supervised Pretraining","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":410},{"i":420,"t":"Fine-tuning","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":410},{"i":422,"t":"Why does BERT work?","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":410},{"i":424,"t":"GPT: Generative Pre-trained Transformer","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":410},{"i":428,"t":"常规卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":426},{"i":430,"t":"逐通道卷积-Depthwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":426},{"i":432,"t":"逐点卷积-Pointwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":426},{"i":435,"t":"激活函数","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#激活函数","p":434},{"i":436,"t":"Sigmoid函数 / Logistic函数","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":434},{"i":438,"t":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":434},{"i":440,"t":"损失函数","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#损失函数","p":434},{"i":441,"t":"Mean Squared Error 均方误差","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":434},{"i":443,"t":"Cross Entropy Loss 交叉熵损失","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":434},{"i":447,"t":"什么是正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":445},{"i":449,"t":"L1正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":445},{"i":451,"t":"L2正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":445},{"i":454,"t":"背景","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":453},{"i":456,"t":"新的概念和技术","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":453},{"i":458,"t":"与LeNet比较","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":453},{"i":461,"t":"1x1 卷积","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":460},{"i":463,"t":"二维卷积层","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":460},{"i":466,"t":"What is k-fold cross-validation?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":465},{"i":468,"t":"How does k-fold cross-validation work?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":465},{"i":470,"t":"Summary","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":465},{"i":473,"t":"什么是感知机","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":472},{"i":475,"t":"详细原理","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":472},{"i":477,"t":"总结","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":472},{"i":480,"t":"卷积的诞生&核心特征","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":479},{"i":482,"t":"重新考察全连接层","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":479},{"i":484,"t":"总结","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":479},{"i":487,"t":"什么是Logistic Regression","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":486},{"i":489,"t":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":486},{"i":491,"t":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":486},{"i":493,"t":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":486},{"i":496,"t":"卷积对像素位置信息是敏感的","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":495},{"i":498,"t":"池化层的作用","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":495},{"i":500,"t":"池化的实现","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":495},{"i":503,"t":"常用函数部分","u":"/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":502},{"i":506,"t":"背景","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":505},{"i":508,"t":"代码实现","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":505},{"i":510,"t":"问题","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":505},{"i":514,"t":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":512},{"i":516,"t":"研究动机","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":512},{"i":518,"t":"主要方法与实现","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":512},{"i":520,"t":"Diffusion Loss","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":512},{"i":522,"t":"采样","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":512},{"i":524,"t":"双向注意力机制","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#双向注意力机制","p":512},{"i":525,"t":"结合掩码生成模型的思想 MAR","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":512},{"i":527,"t":"实验与结论","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#实验与结论","p":512},{"i":528,"t":"对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#对比离散与连续单向与双向注意力逐-token-或逐-patch-预测","p":512},{"i":529,"t":"扩散过程 MLP 参数对性能的影响","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程-mlp-参数对性能的影响","p":512},{"i":530,"t":"扩散过程采样步数对性能的影响","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程采样步数对性能的影响","p":512},{"i":531,"t":"温度对多样性和准确性的控制","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#温度对多样性和准确性的控制","p":512},{"i":532,"t":"MAR 模型速度与效果的 trade-off","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":512},{"i":536,"t":"摘要与主要贡献","u":"/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"#摘要与主要贡献","p":534},{"i":539,"t":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":537},{"i":541,"t":"Motivation 与主要贡献","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":537},{"i":543,"t":"模型结构","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#模型结构","p":537},{"i":544,"t":"Image Tokenizer","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":537},{"i":546,"t":"Image Generation Autoregressive Model","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":537},{"i":550,"t":"摘要","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":548},{"i":552,"t":"相关工作","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#相关工作","p":548},{"i":553,"t":"Generative Model Adaption","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":548},{"i":555,"t":"Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":548},{"i":557,"t":"主要方法","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#主要方法","p":548},{"i":558,"t":"概述","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":548},{"i":560,"t":"Image-specific Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#image-specific-prompt-learning","p":548},{"i":563,"t":"Overview","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":561},{"i":565,"t":"Dataset","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":561},{"i":567,"t":"Related","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":561},{"i":571,"t":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":569},{"i":573,"t":"Encoder","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#encoder","p":569},{"i":574,"t":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":569},{"i":576,"t":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":569},{"i":578,"t":"具体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":569},{"i":580,"t":"Decoder","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":569},{"i":582,"t":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":569},{"i":584,"t":"Non-Autoregressive Decoder(NAT)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#non-autoregressive-decodernat","p":569},{"i":585,"t":"训练(Training)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#训练training","p":569},{"i":586,"t":"损失函数","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":569},{"i":588,"t":"Teacher Forcing","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":569},{"i":590,"t":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":569},{"i":594,"t":"数学原理(Mathematical Preliminary)","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#数学原理mathematical-preliminary","p":592},{"i":595,"t":"先验概率与后验概率","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#先验概率与后验概率","p":592},{"i":597,"t":"条件概率与高斯分布的KL散度","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#条件概率与高斯分布的kl散度","p":592},{"i":599,"t":"马尔科夫链条件概率形式","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#马尔科夫链条件概率形式","p":592},{"i":601,"t":"参数重整化技巧","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#参数重整化技巧","p":592},{"i":605,"t":"安装Visdom","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#安装visdom","p":603},{"i":607,"t":"Visdom的使用","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#visdom的使用","p":603},{"i":608,"t":"Visdom的启动","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#visdom的启动","p":603},{"i":610,"t":"单窗口单曲线的可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口单曲线的可视化","p":603},{"i":612,"t":"单窗口多曲线的可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口多曲线的可视化","p":603},{"i":615,"t":"摘要","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":614},{"i":617,"t":"研究背景与动机","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":614},{"i":619,"t":"问题发现与提出","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":614},{"i":621,"t":"主要方法与贡献","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法与贡献","p":614},{"i":622,"t":"主要方法","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":614},{"i":624,"t":"模型主要结构","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":614},{"i":626,"t":"总结","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":614},{"i":630,"t":"依赖","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#依赖","p":628},{"i":631,"t":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":628},{"i":633,"t":"安装依赖","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#安装依赖","p":628},{"i":635,"t":"下载预训练生成器","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#下载预训练生成器","p":628},{"i":637,"t":"概述","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#概述","p":628},{"i":638,"t":"技术细节","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#技术细节","p":628},{"i":639,"t":"prompts 的初始化","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的初始化","p":628},{"i":641,"t":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":628},{"i":643,"t":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":628},{"i":645,"t":"训练 stage 1","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-1","p":628},{"i":647,"t":"训练 stage 2","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":628},{"i":649,"t":"定量分析指标","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":628},{"i":651,"t":"新增功能","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#新增功能","p":628},{"i":652,"t":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":628},{"i":654,"t":"Web UI","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":628},{"i":656,"t":"问题提出与改进","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题提出与改进","p":628},{"i":657,"t":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":628},{"i":659,"t":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":628},{"i":661,"t":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":628},{"i":665,"t":"自回归模型的数学定义","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#自回归模型的数学定义","p":663},{"i":667,"t":"Autoregressive 模型时间线","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#autoregressive-模型时间线","p":663},{"i":668,"t":"PixelRNN(2016)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#pixelrnn2016","p":663},{"i":670,"t":"PixelCNN(2016)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#pixelcnn2016","p":663},{"i":672,"t":"VQ-VAE(2017)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vq-vae2017","p":663},{"i":674,"t":"VQVAE-2(2019)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vqvae-22019","p":663},{"i":676,"t":"VQGAN(2021)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#vqgan2021","p":663},{"i":678,"t":"RQTransformer(2021)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#rqtransformer2021","p":663},{"i":680,"t":"DALL-E(2021)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#dall-e2021","p":663},{"i":682,"t":"Parti(2022)","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"#parti2022","p":663},{"i":687,"t":"图像生成基座模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#图像生成基座模型","p":686},{"i":689,"t":"四种生成范式","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#四种生成范式","p":686},{"i":691,"t":"如何训练优秀的生成基座模型?","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#如何训练优秀的生成基座模型","p":686},{"i":693,"t":"视频生成基座模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Image-and-Video-Generative-Foundation-Model","h":"#视频生成基座模型","p":686},{"i":697,"t":"摘要","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":695},{"i":699,"t":"研究动机","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":695},{"i":701,"t":"主要方法与实现","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":695},{"i":703,"t":"Diffusion Loss","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":695},{"i":705,"t":"采样","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":695},{"i":707,"t":"双向注意力机制","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#双向注意力机制","p":695},{"i":708,"t":"结合掩码生成模型的思想 MAR","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":695},{"i":710,"t":"实验与结论","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#实验与结论","p":695},{"i":711,"t":"对比离散与连续、单向与双向注意力、逐 token 或逐 patch 预测","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#对比离散与连续单向与双向注意力逐-token-或逐-patch-预测","p":695},{"i":712,"t":"扩散过程 MLP 参数对性能的影响","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程-mlp-参数对性能的影响","p":695},{"i":713,"t":"扩散过程采样步数对性能的影响","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#扩散过程采样步数对性能的影响","p":695},{"i":714,"t":"温度对多样性和准确性的控制","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#温度对多样性和准确性的控制","p":695},{"i":715,"t":"MAR 模型速度与效果的 trade-off","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":695},{"i":719,"t":"摘要","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":717},{"i":721,"t":"Motivation 与主要贡献","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":717},{"i":723,"t":"模型结构","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#模型结构","p":717},{"i":724,"t":"Image Tokenizer","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":717},{"i":726,"t":"Image Generation Autoregressive Model","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":717},{"i":730,"t":"Python的广播机制","u":"/docs/Deep-Learning/Fill-The-Gaps","h":"#python的广播机制","p":728},{"i":732,"t":"点积(dot product)与矩阵乘法(matmul product)","u":"/docs/Deep-Learning/Fill-The-Gaps","h":"#点积dot-product与矩阵乘法matmul-product","p":728},{"i":734,"t":"zip函数与解压操作*","u":"/docs/Deep-Learning/Fill-The-Gaps","h":"#zip函数与解压操作","p":728},{"i":736,"t":"对batch_first参数的理解","u":"/docs/Deep-Learning/Fill-The-Gaps","h":"#对batch_first参数的理解","p":728},{"i":740,"t":"组会记录","u":"/docs/Deep-Learning/组会记录/1-20240705","h":"#组会记录","p":738},{"i":741,"t":"后期工作","u":"/docs/Deep-Learning/组会记录/1-20240705","h":"#后期工作","p":738},{"i":745,"t":"摘要","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":743},{"i":747,"t":"研究背景与动机","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":743},{"i":749,"t":"问题发现与提出","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":743},{"i":751,"t":"主要方法与贡献","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法与贡献","p":743},{"i":752,"t":"主要方法","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":743},{"i":754,"t":"模型主要结构","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":743},{"i":756,"t":"局限性与展望","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#局限性与展望","p":743},{"i":758,"t":"总结","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":743},{"i":764,"t":"支持我!","u":"/docs/Deep-Learning/intro","h":"#支持我","p":762},{"i":767,"t":"一、latte-dock","u":"/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#一latte-dock","p":766},{"i":769,"t":"二、Kde Plasmoids","u":"/docs/Others/Linux/客制化/如何让你的KDE看起来更像macOS","h":"#二kde-plasmoids","p":766},{"i":773,"t":"一、编写脚本","u":"/docs/Others/Linux/实用工具/终端代理","h":"#一编写脚本","p":771},{"i":775,"t":"二、关联终端配置文件","u":"/docs/Others/Linux/实用工具/终端代理","h":"#二关联终端配置文件","p":771},{"i":777,"t":"三、使用","u":"/docs/Others/Linux/实用工具/终端代理","h":"#三使用","p":771},{"i":781,"t":"支持我!","u":"/docs/Others/intro","h":"#支持我","p":779},{"i":784,"t":"一、发生原因","u":"/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#一发生原因","p":783},{"i":786,"t":"二、解决方案","u":"/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#二解决方案","p":783},{"i":790,"t":"思路","u":"/docs/Tui-Mian/机试/大数除法","h":"#思路","p":788},{"i":792,"t":"参考代码","u":"/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":788},{"i":794,"t":"扩展","u":"/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":788},{"i":797,"t":"树","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":796},{"i":799,"t":"图","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":796},{"i":803,"t":"一、基础知识","u":"/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":801},{"i":805,"t":"二、面试常考问题","u":"/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":801},{"i":808,"t":"面试常考问题","u":"/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":807},{"i":811,"t":"一、U-2-Net","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一u-2-net","p":810},{"i":812,"t":"(一)SOD任务","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":810},{"i":814,"t":"(二)网络结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":810},{"i":816,"t":"(三)损失函数","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":810},{"i":818,"t":"(四)深度可分离卷积","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":810},{"i":820,"t":"二、YOLO","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolo","p":810},{"i":821,"t":"(一)mAP","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":810},{"i":823,"t":"(二)YOLOv1","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":810},{"i":825,"t":"(二)YOLOv2","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":810},{"i":827,"t":"(三)YOLOv5","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":810},{"i":829,"t":"三、CBAM","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":810},{"i":831,"t":"(一)总体结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":810},{"i":833,"t":"(二)通道注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":810},{"i":835,"t":"(三)空间注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":810},{"i":837,"t":"(四)其他注意事项","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":810},{"i":839,"t":"四、Focal Loss","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":810},{"i":841,"t":"五、SENet","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":810},{"i":843,"t":"六、自注意力机制","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":810},{"i":845,"t":"七、自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#七自我介绍","p":810},{"i":846,"t":"(一)英文自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":810},{"i":848,"t":"(二)西电广研院自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":810},{"i":850,"t":"(三)电子科技大学自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":810},{"i":853,"t":"一、线性代数","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":852},{"i":855,"t":"二、概率论","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":852},{"i":859,"t":"支持我!","u":"/docs/Tui-Mian/intro","h":"#支持我","p":857},{"i":862,"t":"前言","u":"/docs/Tui-Mian/Summary","h":"#前言","p":861},{"i":864,"t":"扫盲","u":"/docs/Tui-Mian/Summary","h":"#扫盲","p":861},{"i":866,"t":"个人情况","u":"/docs/Tui-Mian/Summary","h":"#个人情况","p":861},{"i":868,"t":"前期准备","u":"/docs/Tui-Mian/Summary","h":"#前期准备","p":861},{"i":869,"t":"夏令营","u":"/docs/Tui-Mian/Summary","h":"#夏令营","p":861},{"i":870,"t":"预推免","u":"/docs/Tui-Mian/Summary","h":"#预推免","p":861},{"i":871,"t":"后序","u":"/docs/Tui-Mian/Summary","h":"#后序","p":861}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,0.439]],["t/4",[1,6.526]],["t/8",[0,0.439]],["t/10",[0,0.439]],["t/14",[0,0.439]],["t/16",[0,0.439]],["t/20",[0,0.439]],["t/22",[0,0.439]],["t/26",[0,0.439]],["t/30",[2,5.935]],["t/32",[3,5.935]],["t/34",[4,5.935]],["t/36",[5,6.526]],["t/38",[6,6.526]],["t/40",[7,5.935]],["t/42",[8,6.526]],["t/44",[9,6.526]],["t/46",[10,6.526]],["t/48",[11,6.526]],["t/52",[0,0.333,12,4.957]],["t/54",[0,0.439]],["t/55",[13,5.546]],["t/57",[13,4.213,14,4.508]],["t/59",[0,0.439]],["t/61",[0,0.439]],["t/63",[0,0.439]],["t/64",[0,0.439]],["t/66",[0,0.439]],["t/68",[0,0.439]],["t/70",[15,6.526]],["t/71",[0,0.439]],["t/73",[0,0.439]],["t/75",[0,0.439]],["t/77",[14,5.935]],["t/79",[0,0.439]],["t/81",[16,6.526]],["t/83",[2,5.935]],["t/85",[17,6.526]],["t/87",[4,5.935]],["t/89",[3,5.935]],["t/91",[18,5.935]],["t/93",[7,5.935]],["t/95",[19,6.526]],["t/97",[20,6.526]],["t/99",[21,6.526]],["t/101",[22,6.526]],["t/103",[0,0.439]],["t/104",[0,0.439]],["t/106",[0,0.333,23,4.957]],["t/108",[0,0.333,24,4.957]],["t/110",[0,0.439]],["t/111",[0,0.439]],["t/113",[25,4.508,26,4.957]],["t/115",[25,5.499,27,3.997]],["t/118",[0,0.439]],["t/119",[28,6.526]],["t/121",[29,6.526]],["t/123",[0,0.439]],["t/125",[0,0.439]],["t/127",[0,0.439]],["t/129",[0,0.439]],["t/132",[0,0.439]],["t/133",[0,0.333,30,4.957]],["t/135",[0,0.333,31,4.957]],["t/137",[0,0.333,32,4.957]],["t/139",[0,0.439]],["t/140",[0,0.333,33,4.957]],["t/142",[0,0.333,34,4.957]],["t/144",[0,0.333,35,4.957]],["t/146",[0,0.333,36,4.957]],["t/148",[0,0.439]],["t/149",[0,0.333,37,4.957]],["t/150",[38,4.957,39,4.957]],["t/152",[40,4.957,41,4.957]],["t/153",[42,4.957,43,4.957]],["t/154",[0,0.439]],["t/156",[44,3.992,45,4.957]],["t/157",[46,3.669,47,4.957]],["t/159",[48,4.213,49,4.957]],["t/161",[50,3.992,51,4.508]],["t/162",[51,4.508,52,4.213]],["t/164",[0,0.333,53,4.508]],["t/166",[54,4.508,55,4.957]],["t/168",[0,0.439]],["t/169",[0,0.333,56,4.957]],["t/171",[0,0.333,57,4.957]],["t/173",[0,0.333,58,4.957]],["t/174",[0,0.269,50,3.218,59,3.997]],["t/176",[0,0.333,60,4.957]],["t/178",[0,0.439]],["t/179",[0,0.333,44,3.992]],["t/181",[0,0.333,46,3.669]],["t/183",[0,0.333,48,4.213]],["t/185",[0,0.333,50,3.992]],["t/187",[0,0.333,52,4.213]],["t/191",[13,5.546]],["t/193",[61,6.526]],["t/197",[0,0.439]],["t/201",[0,0.439]],["t/202",[0,0.439]],["t/204",[0,0.439]],["t/206",[0,0.439]],["t/208",[0,0.439]],["t/210",[62,4.83]],["t/212",[63,6.526]],["t/214",[0,0.439]],["t/218",[0,0.333,46,3.669]],["t/219",[0,0.439]],["t/221",[0,0.439]],["t/223",[0,0.439]],["t/225",[0,0.439]],["t/226",[0,0.333,48,4.213]],["t/227",[0,0.439]],["t/229",[0,0.333,50,3.992]],["t/230",[0,0.439]],["t/232",[0,0.439]],["t/234",[0,0.439]],["t/236",[0,0.333,52,4.213]],["t/237",[0,0.439]],["t/239",[0,0.439]],["t/241",[0,0.439]],["t/243",[0,0.333,53,4.508]],["t/245",[0,0.439]],["t/247",[0,0.439]],["t/249",[0,0.439]],["t/251",[0,0.333,54,4.508]],["t/252",[0,0.439]],["t/254",[0,0.439]],["t/255",[0,0.333,64,4.957]],["t/256",[0,0.439]],["t/258",[0,0.439]],["t/260",[0,0.333,65,4.957]],["t/261",[0,0.439]],["t/263",[0,0.439]],["t/265",[0,0.439]],["t/267",[0,0.439]],["t/271",[0,0.439]],["t/273",[66,5.023]],["t/274",[0,0.439]],["t/276",[66,3.816,67,4.508]],["t/278",[0,0.439]],["t/280",[68,5.935]],["t/282",[69,3.543,70,4.508]],["t/284",[69,2.856,71,3.635,72,3.635]],["t/285",[73,5.546]],["t/286",[0,0.439]],["t/288",[74,3.992,75,4.508]],["t/290",[74,2.035,76,2.298,77,2.148,78,2.148,79,1.656,80,1.75]],["t/293",[0,0.439]],["t/295",[81,6.526]],["t/297",[82,6.526]],["t/299",[0,0.439]],["t/301",[0,0.439]],["t/303",[0,0.439]],["t/305",[83,6.526]],["t/307",[0,0.439]],["t/309",[0,0.439]],["t/311",[84,6.526]],["t/313",[62,2.478,85,3.348,86,3.348,87,2.577]],["t/315",[88,6.526]],["t/317",[87,3.816,89,4.213]],["t/321",[0,0.439]],["t/323",[0,0.439]],["t/325",[0,0.439]],["t/329",[0,0.439]],["t/331",[0,0.439]],["t/333",[0,0.439]],["t/335",[0,0.439]],["t/337",[90,6.526]],["t/339",[0,0.269,91,3.635,92,3.396]],["t/341",[91,3.045,93,3.348,94,3.348,95,3.348]],["t/343",[0,0.439]],["t/347",[0,0.439]],["t/348",[0,0.406,96,3.635]],["t/350",[0,0.439]],["t/352",[0,0.439]],["t/354",[0,0.439]],["t/355",[0,0.439]],["t/356",[0,0.333,97,3.248]],["t/358",[0,0.314,97,1.887,98,2.132,99,2.619]],["t/360",[0,0.333,100,4.508]],["t/362",[0,0.269,44,3.218,101,3.218]],["t/364",[0,0.269,46,2.958,101,3.218]],["t/366",[0,0.439]],["t/368",[0,0.439]],["t/369",[0,0.439]],["t/371",[102,4.508,103,4.508]],["t/373",[0,0.439]],["t/374",[0,0.333,104,4.508]],["t/376",[0,0.406,97,2.618]],["t/378",[0,0.397,97,3.063]],["t/382",[105,6.526]],["t/383",[0,0.439]],["t/385",[0,0.439]],["t/387",[79,3.248,80,3.433]],["t/388",[79,3.248,80,3.433]],["t/390",[79,3.248,80,3.433]],["t/392",[79,3.248,80,3.433]],["t/394",[77,2.845,78,2.845,79,2.193,80,2.318]],["t/396",[79,3.248,106,4.957]],["t/398",[0,0.269,79,2.618,80,2.768]],["t/400",[0,0.439]],["t/402",[0,0.439]],["t/404",[0,0.439]],["t/406",[0,0.439]],["t/408",[0,0.333,107,4.957]],["t/412",[0,0.439]],["t/414",[66,2.577,108,3.348,109,3.348,110,3.045]],["t/416",[0,0.439]],["t/418",[79,2.618,111,3.997,112,3.997]],["t/420",[113,4.957,114,4.957]],["t/422",[115,4.957,116,4.508]],["t/424",[62,2.132,73,2.448,110,2.619,117,2.88,118,2.88]],["t/428",[0,0.439]],["t/430",[0,0.269,119,3.997,120,3.635]],["t/432",[0,0.269,120,3.635,121,3.997]],["t/435",[0,0.439]],["t/436",[0,0.269,122,3.997,123,3.396]],["t/438",[124,3.348,125,3.348,126,3.348,127,3.348]],["t/440",[0,0.439]],["t/441",[0,0.225,128,3.348,129,3.348,130,3.348]],["t/443",[0,0.225,131,2.845,132,3.348,133,2.696]],["t/447",[0,0.439]],["t/449",[134,6.526]],["t/451",[135,6.526]],["t/454",[0,0.439]],["t/456",[0,0.439]],["t/458",[136,6.526]],["t/461",[0,0.333,137,4.957]],["t/463",[0,0.439]],["t/466",[92,2.845,131,2.845,138,3.045,139,3.045]],["t/468",[92,2.448,116,2.619,131,2.448,138,2.619,139,2.619]],["t/470",[140,6.526]],["t/473",[0,0.439]],["t/475",[0,0.439]],["t/477",[0,0.439]],["t/480",[0,0.439]],["t/482",[0,0.439]],["t/484",[0,0.439]],["t/487",[123,4.213,141,4.508]],["t/489",[123,3.396,141,3.635,142,3.997]],["t/491",[143,6.526]],["t/493",[0,0.439]],["t/496",[0,0.439]],["t/498",[0,0.439]],["t/500",[0,0.439]],["t/503",[0,0.439]],["t/506",[0,0.439]],["t/508",[0,0.439]],["t/510",[0,0.439]],["t/514",[0,0.439]],["t/516",[0,0.439]],["t/518",[0,0.439]],["t/520",[89,4.213,133,3.992]],["t/522",[0,0.439]],["t/524",[0,0.439]],["t/525",[0,0.333,144,3.992]],["t/527",[0,0.439]],["t/528",[0,0.397,98,2.132,145,2.619]],["t/529",[0,0.406,146,3.635]],["t/530",[0,0.439]],["t/531",[0,0.439]],["t/532",[0,0.269,144,3.218,147,3.635]],["t/536",[0,0.439]],["t/539",[0,0.439]],["t/541",[0,0.333,148,4.508]],["t/543",[0,0.439]],["t/544",[98,3.669,149,3.816]],["t/546",[62,2.478,69,2.393,87,2.577,149,2.577]],["t/550",[0,0.439]],["t/552",[0,0.439]],["t/553",[62,2.958,87,3.076,150,3.997]],["t/555",[97,3.248,151,4.508]],["t/557",[0,0.439]],["t/558",[0,0.439]],["t/560",[97,2.193,149,2.577,151,3.045,152,3.348]],["t/563",[153,6.526]],["t/565",[154,6.526]],["t/567",[155,6.526]],["t/571",[0,0.439]],["t/573",[66,5.023]],["t/574",[0,0.439]],["t/576",[66,3.816,67,4.508]],["t/578",[0,0.439]],["t/580",[68,5.935]],["t/582",[69,3.543,70,4.508]],["t/584",[69,2.856,71,3.635,72,3.635]],["t/585",[73,5.546]],["t/586",[0,0.439]],["t/588",[74,3.992,75,4.508]],["t/590",[74,2.035,76,2.298,77,2.148,78,2.148,79,1.656,80,1.75]],["t/594",[156,4.957,157,4.957]],["t/595",[0,0.439]],["t/597",[158,6.526]],["t/599",[0,0.439]],["t/601",[0,0.439]],["t/605",[159,5.546]],["t/607",[159,5.546]],["t/608",[159,5.546]],["t/610",[0,0.439]],["t/612",[0,0.439]],["t/615",[0,0.439]],["t/617",[0,0.439]],["t/619",[0,0.439]],["t/621",[0,0.439]],["t/622",[0,0.439]],["t/624",[0,0.439]],["t/626",[0,0.439]],["t/630",[0,0.439]],["t/631",[0,0.406,96,3.635]],["t/633",[0,0.439]],["t/635",[0,0.439]],["t/637",[0,0.439]],["t/638",[0,0.439]],["t/639",[0,0.333,97,3.248]],["t/641",[0,0.314,97,1.887,98,2.132,99,2.619]],["t/643",[0,0.333,100,4.508]],["t/645",[0,0.269,44,3.218,101,3.218]],["t/647",[0,0.269,46,2.958,101,3.218]],["t/649",[0,0.439]],["t/651",[0,0.439]],["t/652",[0,0.439]],["t/654",[102,4.508,103,4.508]],["t/656",[0,0.439]],["t/657",[0,0.333,104,4.508]],["t/659",[0,0.406,97,2.618]],["t/661",[0,0.397,97,3.063]],["t/665",[0,0.439]],["t/667",[0,0.333,69,3.543]],["t/668",[160,6.526]],["t/670",[161,6.526]],["t/672",[162,4.957,163,4.957]],["t/674",[164,4.957,165,4.957]],["t/676",[166,6.526]],["t/678",[167,6.526]],["t/680",[168,4.957,169,4.957]],["t/682",[170,6.526]],["t/687",[0,0.439]],["t/689",[0,0.439]],["t/691",[0,0.439]],["t/693",[0,0.439]],["t/697",[0,0.439]],["t/699",[0,0.439]],["t/701",[0,0.439]],["t/703",[89,4.213,133,3.992]],["t/705",[0,0.439]],["t/707",[0,0.439]],["t/708",[0,0.333,144,3.992]],["t/710",[0,0.439]],["t/711",[0,0.397,98,2.132,145,2.619]],["t/712",[0,0.406,146,3.635]],["t/713",[0,0.439]],["t/714",[0,0.439]],["t/715",[0,0.269,144,3.218,147,3.635]],["t/719",[0,0.439]],["t/721",[0,0.333,148,4.508]],["t/723",[0,0.439]],["t/724",[98,3.669,149,3.816]],["t/726",[62,2.478,69,2.393,87,2.577,149,2.577]],["t/730",[171,6.526]],["t/732",[172,3.997,173,3.997,174,3.997]],["t/734",[175,6.526]],["t/736",[176,6.526]],["t/740",[0,0.439]],["t/741",[0,0.439]],["t/745",[0,0.439]],["t/747",[0,0.439]],["t/749",[0,0.439]],["t/751",[0,0.439]],["t/752",[0,0.439]],["t/754",[0,0.439]],["t/756",[0,0.439]],["t/758",[0,0.439]],["t/764",[0,0.439]],["t/767",[177,4.957,178,4.957]],["t/769",[179,4.957,180,4.957]],["t/773",[0,0.439]],["t/775",[0,0.439]],["t/777",[0,0.439]],["t/781",[0,0.439]],["t/784",[0,0.439]],["t/786",[0,0.439]],["t/790",[0,0.439]],["t/792",[0,0.439]],["t/794",[0,0.439]],["t/797",[0,0.439]],["t/799",[0,0.439]],["t/803",[0,0.439]],["t/805",[0,0.439]],["t/808",[0,0.439]],["t/811",[46,2.958,181,3.997,182,3.997]],["t/812",[183,6.526]],["t/814",[0,0.439]],["t/816",[0,0.439]],["t/818",[0,0.439]],["t/820",[184,6.526]],["t/821",[18,5.935]],["t/823",[185,6.526]],["t/825",[186,6.526]],["t/827",[187,6.526]],["t/829",[188,6.526]],["t/831",[0,0.439]],["t/833",[0,0.439]],["t/835",[0,0.439]],["t/837",[0,0.439]],["t/839",[133,3.992,189,4.957]],["t/841",[190,6.526]],["t/843",[0,0.439]],["t/845",[0,0.439]],["t/846",[0,0.439]],["t/848",[0,0.439]],["t/850",[0,0.439]],["t/853",[0,0.439]],["t/855",[0,0.439]],["t/859",[0,0.439]],["t/862",[0,0.439]],["t/864",[0,0.439]],["t/866",[0,0.439]],["t/868",[0,0.439]],["t/869",[0,0.439]],["t/870",[0,0.439]],["t/871",[0,0.439]]],"invertedIndex":[["",{"_index":0,"t":{"2":{"position":[[0,4]]},"8":{"position":[[0,4]]},"10":{"position":[[0,2]]},"14":{"position":[[0,4]]},"16":{"position":[[0,2]]},"20":{"position":[[0,4]]},"22":{"position":[[0,2]]},"26":{"position":[[0,4]]},"52":{"position":[[7,3]]},"54":{"position":[[0,3]]},"59":{"position":[[0,3]]},"61":{"position":[[0,5]]},"63":{"position":[[0,3]]},"64":{"position":[[0,2]]},"66":{"position":[[0,3]]},"68":{"position":[[0,5]]},"71":{"position":[[0,2]]},"73":{"position":[[0,14]]},"75":{"position":[[0,14]]},"79":{"position":[[0,2]]},"103":{"position":[[0,3]]},"104":{"position":[[0,10]]},"106":{"position":[[0,5]]},"108":{"position":[[15,3]]},"110":{"position":[[0,3]]},"111":{"position":[[0,3]]},"118":{"position":[[0,8]]},"123":{"position":[[0,7]]},"125":{"position":[[0,5]]},"127":{"position":[[0,2]]},"129":{"position":[[0,2]]},"132":{"position":[[0,6]]},"133":{"position":[[4,9]]},"135":{"position":[[4,5]]},"137":{"position":[[4,4]]},"139":{"position":[[0,9]]},"140":{"position":[[4,2]]},"142":{"position":[[4,3]]},"144":{"position":[[4,6]]},"146":{"position":[[4,7]]},"148":{"position":[[0,8]]},"149":{"position":[[4,10]]},"154":{"position":[[0,14]]},"164":{"position":[[3,5]]},"168":{"position":[[0,14]]},"169":{"position":[[4,2]]},"171":{"position":[[4,2]]},"173":{"position":[[4,4]]},"174":{"position":[[4,2]]},"176":{"position":[[4,4]]},"178":{"position":[[0,4]]},"179":{"position":[[2,9]]},"181":{"position":[[2,9]]},"183":{"position":[[2,4]]},"185":{"position":[[2,4]]},"187":{"position":[[2,3]]},"197":{"position":[[0,4]]},"201":{"position":[[0,2]]},"202":{"position":[[0,9]]},"204":{"position":[[0,8]]},"206":{"position":[[0,4]]},"208":{"position":[[0,7]]},"214":{"position":[[0,4]]},"218":{"position":[[4,8]]},"219":{"position":[[0,8]]},"221":{"position":[[0,4]]},"223":{"position":[[0,6]]},"225":{"position":[[0,5]]},"226":{"position":[[4,4]]},"227":{"position":[[0,5]]},"229":{"position":[[4,9]]},"230":{"position":[[0,3]]},"232":{"position":[[0,4]]},"234":{"position":[[0,5]]},"236":{"position":[[4,6]]},"237":{"position":[[0,6]]},"239":{"position":[[0,7]]},"241":{"position":[[0,6]]},"243":{"position":[[4,6]]},"245":{"position":[[0,4]]},"247":{"position":[[0,4]]},"249":{"position":[[0,7]]},"251":{"position":[[4,6]]},"252":{"position":[[0,8]]},"254":{"position":[[0,8]]},"255":{"position":[[4,4]]},"256":{"position":[[0,6]]},"258":{"position":[[0,6]]},"260":{"position":[[5,4]]},"261":{"position":[[0,5]]},"263":{"position":[[0,9]]},"265":{"position":[[0,6]]},"267":{"position":[[0,9]]},"271":{"position":[[0,4]]},"274":{"position":[[0,4]]},"278":{"position":[[0,4]]},"286":{"position":[[0,4]]},"293":{"position":[[0,11]]},"299":{"position":[[0,12]]},"301":{"position":[[0,9]]},"303":{"position":[[0,6]]},"307":{"position":[[0,6]]},"309":{"position":[[0,10]]},"321":{"position":[[0,4]]},"323":{"position":[[0,4]]},"325":{"position":[[0,4]]},"329":{"position":[[0,2]]},"331":{"position":[[0,8]]},"333":{"position":[[0,4]]},"335":{"position":[[0,4]]},"339":{"position":[[6,2]]},"343":{"position":[[0,2]]},"347":{"position":[[0,2]]},"348":{"position":[[0,2],[12,4]]},"350":{"position":[[0,4]]},"352":{"position":[[0,8]]},"354":{"position":[[0,2]]},"355":{"position":[[0,4]]},"356":{"position":[[8,4]]},"358":{"position":[[8,1],[19,1]]},"360":{"position":[[22,5]]},"362":{"position":[[0,2]]},"364":{"position":[[0,2]]},"366":{"position":[[0,6]]},"368":{"position":[[0,4]]},"369":{"position":[[0,12]]},"373":{"position":[[0,7]]},"374":{"position":[[10,5]]},"376":{"position":[[0,9],[18,7]]},"378":{"position":[[0,8],[17,8],[34,4]]},"383":{"position":[[0,9]]},"385":{"position":[[0,11]]},"398":{"position":[[15,3]]},"400":{"position":[[0,4]]},"402":{"position":[[0,11]]},"404":{"position":[[0,6]]},"406":{"position":[[0,2]]},"408":{"position":[[0,8]]},"412":{"position":[[0,2]]},"416":{"position":[[0,2]]},"428":{"position":[[0,4]]},"430":{"position":[[0,5]]},"432":{"position":[[0,4]]},"435":{"position":[[0,4]]},"436":{"position":[[10,1]]},"440":{"position":[[0,4]]},"441":{"position":[[19,4]]},"443":{"position":[[19,5]]},"447":{"position":[[0,6]]},"454":{"position":[[0,2]]},"456":{"position":[[0,7]]},"461":{"position":[[4,2]]},"463":{"position":[[0,5]]},"473":{"position":[[0,6]]},"475":{"position":[[0,4]]},"477":{"position":[[0,2]]},"480":{"position":[[0,10]]},"482":{"position":[[0,8]]},"484":{"position":[[0,2]]},"493":{"position":[[0,29]]},"496":{"position":[[0,13]]},"498":{"position":[[0,6]]},"500":{"position":[[0,5]]},"503":{"position":[[0,6]]},"506":{"position":[[0,2]]},"508":{"position":[[0,4]]},"510":{"position":[[0,2]]},"514":{"position":[[0,2]]},"516":{"position":[[0,4]]},"518":{"position":[[0,7]]},"522":{"position":[[0,2]]},"524":{"position":[[0,7]]},"525":{"position":[[0,11]]},"527":{"position":[[0,5]]},"528":{"position":[[0,18],[25,2],[34,2]]},"529":{"position":[[0,4],[9,8]]},"530":{"position":[[0,14]]},"531":{"position":[[0,13]]},"532":{"position":[[4,8]]},"536":{"position":[[0,7]]},"539":{"position":[[0,2]]},"541":{"position":[[11,5]]},"543":{"position":[[0,4]]},"550":{"position":[[0,2]]},"552":{"position":[[0,4]]},"557":{"position":[[0,4]]},"558":{"position":[[0,2]]},"571":{"position":[[0,4]]},"574":{"position":[[0,4]]},"578":{"position":[[0,4]]},"586":{"position":[[0,4]]},"595":{"position":[[0,9]]},"599":{"position":[[0,11]]},"601":{"position":[[0,7]]},"610":{"position":[[0,10]]},"612":{"position":[[0,10]]},"615":{"position":[[0,2]]},"617":{"position":[[0,7]]},"619":{"position":[[0,7]]},"621":{"position":[[0,7]]},"622":{"position":[[0,4]]},"624":{"position":[[0,6]]},"626":{"position":[[0,2]]},"630":{"position":[[0,2]]},"631":{"position":[[0,2],[12,4]]},"633":{"position":[[0,4]]},"635":{"position":[[0,8]]},"637":{"position":[[0,2]]},"638":{"position":[[0,4]]},"639":{"position":[[8,4]]},"641":{"position":[[8,1],[19,1]]},"643":{"position":[[22,5]]},"645":{"position":[[0,2]]},"647":{"position":[[0,2]]},"649":{"position":[[0,6]]},"651":{"position":[[0,4]]},"652":{"position":[[0,12]]},"656":{"position":[[0,7]]},"657":{"position":[[10,5]]},"659":{"position":[[0,9],[18,7]]},"661":{"position":[[0,8],[17,8],[34,4]]},"665":{"position":[[0,10]]},"667":{"position":[[15,5]]},"687":{"position":[[0,8]]},"689":{"position":[[0,6]]},"691":{"position":[[0,14]]},"693":{"position":[[0,8]]},"697":{"position":[[0,2]]},"699":{"position":[[0,4]]},"701":{"position":[[0,7]]},"705":{"position":[[0,2]]},"707":{"position":[[0,7]]},"708":{"position":[[0,11]]},"710":{"position":[[0,5]]},"711":{"position":[[0,18],[25,2],[34,2]]},"712":{"position":[[0,4],[9,8]]},"713":{"position":[[0,14]]},"714":{"position":[[0,13]]},"715":{"position":[[4,8]]},"719":{"position":[[0,2]]},"721":{"position":[[11,5]]},"723":{"position":[[0,4]]},"740":{"position":[[0,4]]},"741":{"position":[[0,4]]},"745":{"position":[[0,2]]},"747":{"position":[[0,7]]},"749":{"position":[[0,7]]},"751":{"position":[[0,7]]},"752":{"position":[[0,4]]},"754":{"position":[[0,6]]},"756":{"position":[[0,6]]},"758":{"position":[[0,2]]},"764":{"position":[[0,4]]},"773":{"position":[[0,6]]},"775":{"position":[[0,10]]},"777":{"position":[[0,4]]},"781":{"position":[[0,4]]},"784":{"position":[[0,6]]},"786":{"position":[[0,6]]},"790":{"position":[[0,2]]},"792":{"position":[[0,4]]},"794":{"position":[[0,2]]},"797":{"position":[[0,1]]},"799":{"position":[[0,1]]},"803":{"position":[[0,6]]},"805":{"position":[[0,8]]},"808":{"position":[[0,6]]},"814":{"position":[[0,7]]},"816":{"position":[[0,7]]},"818":{"position":[[0,10]]},"831":{"position":[[0,7]]},"833":{"position":[[0,8]]},"835":{"position":[[0,8]]},"837":{"position":[[0,9]]},"843":{"position":[[0,8]]},"845":{"position":[[0,6]]},"846":{"position":[[0,9]]},"848":{"position":[[0,12]]},"850":{"position":[[0,13]]},"853":{"position":[[0,6]]},"855":{"position":[[0,5]]},"859":{"position":[[0,4]]},"862":{"position":[[0,2]]},"864":{"position":[[0,2]]},"866":{"position":[[0,4]]},"868":{"position":[[0,4]]},"869":{"position":[[0,3]]},"870":{"position":[[0,3]]},"871":{"position":[[0,2]]}}}],["1",{"_index":44,"t":{"156":{"position":[[0,2]]},"179":{"position":[[0,1]]},"362":{"position":[[9,1]]},"645":{"position":[[9,1]]}}}],["1.1",{"_index":30,"t":{"133":{"position":[[0,3]]}}}],["1.2",{"_index":31,"t":{"135":{"position":[[0,3]]}}}],["1.3",{"_index":32,"t":{"137":{"position":[[0,3]]}}}],["11",{"_index":65,"t":{"260":{"position":[[0,4]]}}}],["1x1",{"_index":137,"t":{"461":{"position":[[0,3]]}}}],["2",{"_index":46,"t":{"157":{"position":[[0,2]]},"181":{"position":[[0,1]]},"218":{"position":[[0,3]]},"364":{"position":[[9,1]]},"647":{"position":[[9,1]]},"811":{"position":[[4,1]]}}}],["2.1",{"_index":33,"t":{"140":{"position":[[0,3]]}}}],["2.2",{"_index":34,"t":{"142":{"position":[[0,3]]}}}],["2.3",{"_index":35,"t":{"144":{"position":[[0,3]]}}}],["2.4",{"_index":36,"t":{"146":{"position":[[0,3]]}}}],["2019",{"_index":23,"t":{"106":{"position":[[6,10]]}}}],["2(2019",{"_index":165,"t":{"674":{"position":[[6,7]]}}}],["3",{"_index":48,"t":{"159":{"position":[[0,2]]},"183":{"position":[[0,1]]},"226":{"position":[[0,3]]}}}],["3.1",{"_index":37,"t":{"149":{"position":[[0,3]]}}}],["3.2",{"_index":38,"t":{"150":{"position":[[0,3]]}}}],["3.3",{"_index":40,"t":{"152":{"position":[[0,3]]}}}],["3.4",{"_index":42,"t":{"153":{"position":[[0,3]]}}}],["4",{"_index":50,"t":{"161":{"position":[[0,2]]},"174":{"position":[[7,10]]},"185":{"position":[[0,1]]},"229":{"position":[[0,3]]}}}],["5",{"_index":52,"t":{"162":{"position":[[0,2]]},"187":{"position":[[0,1]]},"236":{"position":[[0,3]]}}}],["5.1",{"_index":56,"t":{"169":{"position":[[0,3]]}}}],["5.2",{"_index":57,"t":{"171":{"position":[[0,3]]}}}],["5.3",{"_index":58,"t":{"173":{"position":[[0,3]]}}}],["5.4",{"_index":59,"t":{"174":{"position":[[0,3]]}}}],["5.5",{"_index":60,"t":{"176":{"position":[[0,3]]}}}],["6",{"_index":53,"t":{"164":{"position":[[0,2]]},"243":{"position":[[0,3]]}}}],["7",{"_index":54,"t":{"166":{"position":[[0,2]]},"251":{"position":[[0,3]]}}}],["8",{"_index":64,"t":{"255":{"position":[[0,3]]}}}],["adapt",{"_index":150,"t":{"553":{"position":[[17,8]]}}}],["algorithm",{"_index":16,"t":{"81":{"position":[[0,9]]}}}],["anaconda",{"_index":96,"t":{"348":{"position":[[3,8]]},"631":{"position":[[3,8]]}}}],["ar",{"_index":81,"t":{"295":{"position":[[0,9]]}}}],["attent",{"_index":80,"t":{"290":{"position":[[39,9]]},"387":{"position":[[5,12]]},"388":{"position":[[8,9]]},"390":{"position":[[5,14]]},"392":{"position":[[5,12]]},"394":{"position":[[16,9]]},"398":{"position":[[5,9]]},"590":{"position":[[39,9]]}}}],["attention与cnn",{"_index":106,"t":{"396":{"position":[[5,16]]}}}],["autoregress",{"_index":69,"t":{"282":{"position":[[0,14]]},"284":{"position":[[4,14]]},"546":{"position":[[17,14]]},"582":{"position":[[0,14]]},"584":{"position":[[4,14]]},"667":{"position":[[0,14]]},"726":{"position":[[17,14]]}}}],["base",{"_index":86,"t":{"313":{"position":[[14,5]]}}}],["batch_first",{"_index":176,"t":{"736":{"position":[[0,17]]}}}],["benchmark",{"_index":83,"t":{"305":{"position":[[0,9]]}}}],["bert",{"_index":115,"t":{"422":{"position":[[9,4]]}}}],["bert(bidirect",{"_index":108,"t":{"414":{"position":[[0,18]]}}}],["biset",{"_index":11,"t":{"48":{"position":[[0,5]]}}}],["bitset",{"_index":22,"t":{"101":{"position":[[0,6]]}}}],["boch",{"_index":29,"t":{"121":{"position":[[0,6]]}}}],["c",{"_index":13,"t":{"55":{"position":[[0,4]]},"57":{"position":[[0,3]]},"191":{"position":[[0,7]]}}}],["c++new",{"_index":15,"t":{"70":{"position":[[0,9]]}}}],["cbam",{"_index":188,"t":{"829":{"position":[[0,6]]}}}],["cnn",{"_index":105,"t":{"382":{"position":[[0,9]]}}}],["compute_text_featur",{"_index":100,"t":{"360":{"position":[[0,21]]},"643":{"position":[[0,21]]}}}],["convolut",{"_index":120,"t":{"430":{"position":[[16,11]]},"432":{"position":[[15,11]]}}}],["cross",{"_index":131,"t":{"443":{"position":[[0,5]]},"466":{"position":[[15,5]]},"468":{"position":[[16,5]]}}}],["dall",{"_index":168,"t":{"680":{"position":[[0,4]]}}}],["dataset",{"_index":154,"t":{"565":{"position":[[0,7]]}}}],["decod",{"_index":68,"t":{"280":{"position":[[0,7]]},"580":{"position":[[0,7]]}}}],["decoder(at",{"_index":70,"t":{"282":{"position":[[15,11]]},"582":{"position":[[15,11]]}}}],["decoder(nat",{"_index":72,"t":{"284":{"position":[[19,12]]},"584":{"position":[[19,12]]}}}],["depthwis",{"_index":119,"t":{"430":{"position":[[6,9]]}}}],["dequ",{"_index":8,"t":{"42":{"position":[[0,5]]}}}],["diffus",{"_index":89,"t":{"317":{"position":[[0,14]]},"520":{"position":[[0,9]]},"703":{"position":[[0,9]]}}}],["disclaim",{"_index":1,"t":{"4":{"position":[[0,10]]}}}],["discrimin",{"_index":63,"t":{"212":{"position":[[0,18]]}}}],["dock",{"_index":178,"t":{"767":{"position":[[8,4]]}}}],["dot",{"_index":172,"t":{"732":{"position":[[0,6]]}}}],["embed",{"_index":99,"t":{"358":{"position":[[21,9]]},"641":{"position":[[21,9]]}}}],["encod",{"_index":66,"t":{"273":{"position":[[0,7]]},"276":{"position":[[16,9]]},"414":{"position":[[19,7]]},"573":{"position":[[0,7]]},"576":{"position":[[16,9]]}}}],["entropi",{"_index":132,"t":{"443":{"position":[[6,7]]}}}],["error",{"_index":130,"t":{"441":{"position":[[13,5]]}}}],["e(2021",{"_index":169,"t":{"680":{"position":[[5,7]]}}}],["fa",{"_index":39,"t":{"150":{"position":[[4,9]]}}}],["fine",{"_index":113,"t":{"420":{"position":[[0,4]]}}}],["first",{"_index":45,"t":{"156":{"position":[[3,9]]}}}],["flow",{"_index":85,"t":{"313":{"position":[[0,13]]}}}],["focal",{"_index":189,"t":{"839":{"position":[[0,7]]}}}],["fold",{"_index":138,"t":{"466":{"position":[[10,4]]},"468":{"position":[[11,4]]}}}],["follow",{"_index":47,"t":{"157":{"position":[[3,10]]}}}],["forc",{"_index":75,"t":{"288":{"position":[[8,7]]},"588":{"position":[[8,7]]}}}],["forcing与mask",{"_index":76,"t":{"290":{"position":[[8,14]]},"590":{"position":[[8,14]]}}}],["gan",{"_index":88,"t":{"315":{"position":[[0,11]]}}}],["geeko",{"_index":28,"t":{"119":{"position":[[0,7]]}}}],["gener",{"_index":62,"t":{"210":{"position":[[0,14]]},"313":{"position":[[20,10]]},"424":{"position":[[5,10]]},"546":{"position":[[6,10]]},"553":{"position":[[0,10]]},"726":{"position":[[6,10]]}}}],["gpt",{"_index":117,"t":{"424":{"position":[[0,4]]}}}],["head",{"_index":78,"t":{"290":{"position":[[29,4]]},"394":{"position":[[6,4]]},"590":{"position":[[29,4]]}}}],["imag",{"_index":149,"t":{"544":{"position":[[0,5]]},"546":{"position":[[0,5]]},"560":{"position":[[0,5]]},"724":{"position":[[0,5]]},"726":{"position":[[0,5]]}}}],["index",{"_index":27,"t":{"115":{"position":[[15,12]]}}}],["index,若数据不在1~n",{"_index":26,"t":{"113":{"position":[[11,22]]}}}],["k",{"_index":92,"t":{"339":{"position":[[4,1]]},"466":{"position":[[8,1]]},"468":{"position":[[9,1]]}}}],["kde",{"_index":179,"t":{"769":{"position":[[0,5]]}}}],["kl",{"_index":158,"t":{"597":{"position":[[0,14]]}}}],["l1",{"_index":134,"t":{"449":{"position":[[0,5]]}}}],["l2",{"_index":135,"t":{"451":{"position":[[0,10]]}}}],["latt",{"_index":177,"t":{"767":{"position":[[0,7]]}}}],["learn",{"_index":151,"t":{"555":{"position":[[7,8]]},"560":{"position":[[22,8]]}}}],["lenet",{"_index":136,"t":{"458":{"position":[[0,8]]}}}],["linear",{"_index":125,"t":{"438":{"position":[[17,6]]}}}],["linux的编译系统对c",{"_index":61,"t":{"193":{"position":[[0,22]]}}}],["list",{"_index":17,"t":{"85":{"position":[[0,4]]}}}],["ll(1",{"_index":51,"t":{"161":{"position":[[3,10]]},"162":{"position":[[3,10]]}}}],["ll(1)文法到ll(1",{"_index":55,"t":{"166":{"position":[[3,21]]}}}],["logist",{"_index":123,"t":{"436":{"position":[[12,10]]},"487":{"position":[[0,11]]},"489":{"position":[[0,13]]}}}],["loss",{"_index":133,"t":{"443":{"position":[[14,4]]},"520":{"position":[[10,4]]},"703":{"position":[[10,4]]},"839":{"position":[[8,4]]}}}],["map",{"_index":18,"t":{"91":{"position":[[0,3]]},"821":{"position":[[0,6]]}}}],["map/multimap",{"_index":10,"t":{"46":{"position":[[0,12]]}}}],["mapper",{"_index":104,"t":{"374":{"position":[[0,9]]},"657":{"position":[[0,9]]}}}],["mar",{"_index":144,"t":{"525":{"position":[[12,3]]},"532":{"position":[[0,3]]},"708":{"position":[[12,3]]},"715":{"position":[[0,3]]}}}],["mask",{"_index":107,"t":{"408":{"position":[[9,4]]}}}],["mathemat",{"_index":156,"t":{"594":{"position":[[0,17]]}}}],["mean",{"_index":128,"t":{"441":{"position":[[0,4]]}}}],["mlp",{"_index":146,"t":{"529":{"position":[[5,3]]},"712":{"position":[[5,3]]}}}],["model",{"_index":87,"t":{"313":{"position":[[31,6]]},"317":{"position":[[15,6]]},"546":{"position":[[32,5]]},"553":{"position":[[11,5]]},"726":{"position":[[32,5]]}}}],["motiv",{"_index":148,"t":{"541":{"position":[[0,10]]},"721":{"position":[[0,10]]}}}],["multi",{"_index":77,"t":{"290":{"position":[[23,5]]},"394":{"position":[[0,5]]},"590":{"position":[[23,5]]}}}],["multiset",{"_index":21,"t":{"99":{"position":[[0,8]]}}}],["nar",{"_index":82,"t":{"297":{"position":[[0,11]]}}}],["net",{"_index":182,"t":{"811":{"position":[[6,3]]}}}],["non",{"_index":71,"t":{"284":{"position":[[0,3]]},"584":{"position":[[0,3]]}}}],["nucleu",{"_index":94,"t":{"341":{"position":[[6,10]]}}}],["overview",{"_index":153,"t":{"563":{"position":[[0,8]]}}}],["p",{"_index":93,"t":{"341":{"position":[[4,1]]}}}],["pair",{"_index":3,"t":{"32":{"position":[[0,4]]},"89":{"position":[[0,4]]}}}],["parti(2022",{"_index":170,"t":{"682":{"position":[[0,11]]}}}],["patch",{"_index":145,"t":{"528":{"position":[[28,5]]},"711":{"position":[[28,5]]}}}],["pixelcnn(2016",{"_index":161,"t":{"670":{"position":[[0,14]]}}}],["pixelrnn(2016",{"_index":160,"t":{"668":{"position":[[0,14]]}}}],["plasmoid",{"_index":180,"t":{"769":{"position":[[6,9]]}}}],["pointwis",{"_index":121,"t":{"432":{"position":[[5,9]]}}}],["posit",{"_index":67,"t":{"276":{"position":[[0,15]]},"576":{"position":[[0,15]]}}}],["pre",{"_index":118,"t":{"424":{"position":[[16,3]]}}}],["preliminari",{"_index":157,"t":{"594":{"position":[[18,12]]}}}],["pretrain",{"_index":112,"t":{"418":{"position":[[16,11]]}}}],["priority_queu",{"_index":6,"t":{"38":{"position":[[0,14]]}}}],["product",{"_index":174,"t":{"732":{"position":[[28,8]]}}}],["product)与矩阵乘法(matmul",{"_index":173,"t":{"732":{"position":[[7,20]]}}}],["prompt",{"_index":97,"t":{"356":{"position":[[0,7]]},"358":{"position":[[0,7]]},"376":{"position":[[10,7]]},"378":{"position":[[9,7],[26,7]]},"555":{"position":[[0,6]]},"560":{"position":[[15,6]]},"639":{"position":[[0,7]]},"641":{"position":[[0,7]]},"659":{"position":[[10,7]]},"661":{"position":[[9,7],[26,7]]}}}],["python",{"_index":171,"t":{"730":{"position":[[0,11]]}}}],["queri",{"_index":5,"t":{"36":{"position":[[0,5]]}}}],["queue",{"_index":19,"t":{"95":{"position":[[0,5]]}}}],["rectifi",{"_index":124,"t":{"438":{"position":[[0,16]]}}}],["regress",{"_index":141,"t":{"487":{"position":[[12,10]]},"489":{"position":[[38,11]]}}}],["regression)和线性回归(linear",{"_index":142,"t":{"489":{"position":[[14,23]]}}}],["regression)还是分类任务(classif",{"_index":143,"t":{"491":{"position":[[0,46]]}}}],["relat",{"_index":155,"t":{"567":{"position":[[0,7]]}}}],["relu",{"_index":127,"t":{"438":{"position":[[30,5]]}}}],["represent",{"_index":109,"t":{"414":{"position":[[27,14]]}}}],["re与有穷自动机fa",{"_index":41,"t":{"152":{"position":[[4,18]]}}}],["rm与有穷自动机fa",{"_index":43,"t":{"153":{"position":[[4,19]]}}}],["rqtransformer(2021",{"_index":167,"t":{"678":{"position":[[0,19]]}}}],["sampl",{"_index":95,"t":{"341":{"position":[[17,9]]}}}],["select",{"_index":49,"t":{"159":{"position":[[3,10]]}}}],["self",{"_index":79,"t":{"290":{"position":[[34,4]]},"387":{"position":[[0,4]]},"388":{"position":[[0,7]]},"390":{"position":[[0,4]]},"392":{"position":[[0,4]]},"394":{"position":[[11,4]]},"396":{"position":[[0,4]]},"398":{"position":[[0,4]]},"418":{"position":[[0,4]]},"590":{"position":[[34,4]]}}}],["senet",{"_index":190,"t":{"841":{"position":[[0,7]]}}}],["set",{"_index":20,"t":{"97":{"position":[[0,3]]}}}],["set/multiset",{"_index":9,"t":{"44":{"position":[[0,12]]}}}],["sigmoid",{"_index":122,"t":{"436":{"position":[[0,9]]}}}],["sod",{"_index":183,"t":{"812":{"position":[[0,8]]}}}],["specif",{"_index":152,"t":{"560":{"position":[[6,8]]}}}],["squar",{"_index":129,"t":{"441":{"position":[[5,7]]}}}],["stack",{"_index":7,"t":{"40":{"position":[[0,5]]},"93":{"position":[[0,5]]}}}],["stage",{"_index":101,"t":{"362":{"position":[[3,5]]},"364":{"position":[[3,5]]},"645":{"position":[[3,5]]},"647":{"position":[[3,5]]}}}],["stl",{"_index":14,"t":{"57":{"position":[[4,3]]},"77":{"position":[[0,5]]}}}],["string",{"_index":4,"t":{"34":{"position":[[0,6]]},"87":{"position":[[0,6]]}}}],["summari",{"_index":140,"t":{"470":{"position":[[0,7]]}}}],["supervis",{"_index":111,"t":{"418":{"position":[[5,10]]}}}],["teacher",{"_index":74,"t":{"288":{"position":[[0,7]]},"290":{"position":[[0,7]]},"588":{"position":[[0,7]]},"590":{"position":[[0,7]]}}}],["temperatur",{"_index":90,"t":{"337":{"position":[[0,15]]}}}],["token",{"_index":98,"t":{"358":{"position":[[10,8]]},"528":{"position":[[19,5]]},"544":{"position":[[6,9]]},"641":{"position":[[10,8]]},"711":{"position":[[19,5]]},"724":{"position":[[6,9]]}}}],["top",{"_index":91,"t":{"339":{"position":[[0,3]]},"341":{"position":[[0,3]]}}}],["trade",{"_index":147,"t":{"532":{"position":[[13,5]]},"715":{"position":[[13,5]]}}}],["train",{"_index":73,"t":{"285":{"position":[[0,12]]},"424":{"position":[[20,7]]},"585":{"position":[[0,12]]}}}],["transform",{"_index":110,"t":{"414":{"position":[[47,13]]},"424":{"position":[[28,11]]}}}],["tune",{"_index":114,"t":{"420":{"position":[[5,6]]}}}],["u",{"_index":181,"t":{"811":{"position":[[0,3]]}}}],["ui",{"_index":103,"t":{"371":{"position":[[4,2]]},"654":{"position":[[4,2]]}}}],["unit",{"_index":126,"t":{"438":{"position":[[24,5]]}}}],["u到v",{"_index":24,"t":{"108":{"position":[[0,14]]}}}],["vae",{"_index":84,"t":{"311":{"position":[[0,11]]}}}],["vae(2017",{"_index":163,"t":{"672":{"position":[[3,9]]}}}],["val",{"_index":25,"t":{"113":{"position":[[0,7]]},"115":{"position":[[0,7],[28,4]]}}}],["valid",{"_index":139,"t":{"466":{"position":[[21,11]]},"468":{"position":[[22,10]]}}}],["vector",{"_index":2,"t":{"30":{"position":[[0,6]]},"83":{"position":[[0,6]]}}}],["visdom",{"_index":159,"t":{"605":{"position":[[0,8]]},"607":{"position":[[0,9]]},"608":{"position":[[0,9]]}}}],["vq",{"_index":162,"t":{"672":{"position":[[0,2]]}}}],["vqgan(2021",{"_index":166,"t":{"676":{"position":[[0,11]]}}}],["vqvae",{"_index":164,"t":{"674":{"position":[[0,5]]}}}],["vs2018",{"_index":12,"t":{"52":{"position":[[0,6]]}}}],["web",{"_index":102,"t":{"371":{"position":[[0,3]]},"654":{"position":[[0,3]]}}}],["work",{"_index":116,"t":{"422":{"position":[[14,5]]},"468":{"position":[[33,5]]}}}],["yolo",{"_index":184,"t":{"820":{"position":[[0,6]]}}}],["yolov1",{"_index":185,"t":{"823":{"position":[[0,9]]}}}],["yolov2",{"_index":186,"t":{"825":{"position":[[0,9]]}}}],["yolov5",{"_index":187,"t":{"827":{"position":[[0,9]]}}}],["zip",{"_index":175,"t":{"734":{"position":[[0,11]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"该网站的搭建离不开 Docusaurus 的支持以及对 Sonder的宝藏笔记本 的参考。","s":"饮水思源","u":"/docs/Acknowledgement/intro","h":"#饮水思源","p":1},{"i":5,"t":"本网站展示的所有标识和链接仅属于个人喜好,不代表国家的立场或企业、组织的行为。 本网站的所有信息仅供参考,不构成法律或商业建议。","s":"Disclaimer","u":"/docs/Acknowledgement/intro","h":"#disclaimer","p":1},{"i":7,"t":"提示 输入一个数,比如201,让数字随意组合,是否能组合出30的倍数,如果能够组合成30的倍数,就输出最大的倍数,不能就输出-1 例如输入201可以随意组合成 201,210,012,021,102,120等数字 其中120,210都是30的倍数,由于要找最大的,所以答案是210 输入样例:201 输出样例:210","s":"排列组合(求30的倍数)","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"","p":6},{"i":9,"t":"#include using namespace std; int main() { string s; cin >> s; int maxx = 0, flag = 0; sort(s.begin(), s.end()); do { int now = 0; for (int i = 0; i < s.size(); i++) { now = now * 10 + s[i] - '0'; } if (now % 30 == 0) { flag = 1; maxx = max(maxx, now); } } while (next_permutation(s.begin(), s.end())); if (flag == 1) { cout << maxx << endl; return 0; } else { cout << -1 << endl; } }","s":"参考代码","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":6},{"i":11,"t":"使用C++ STL提供的排列组合模版 首先将代排列组合的字符串或数组进行排序 sort(list.begin(), list.end()); 使用排列组合模版 do { something(); } while (next_permutation(list.begin(), list.end())); 此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历","s":"题解","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":6},{"i":13,"t":"提示 设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值","s":"反序输出","u":"/docs/Algorithms/题解/反序输出","h":"","p":12},{"i":15,"t":"#include using namespace std; int main() { for (int i = 1000; i <= 9999; i++) { int x = i * 9, y = 0; while (x > 0) { y = y * 10 + x % 10; x /= 10; } if (i == y) { cout << i << endl; } } return 0; }","s":"参考代码","u":"/docs/Algorithms/题解/反序输出","h":"#参考代码","p":12},{"i":17,"t":"反序输出可以分为两部分:拆分以及反序拼接 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分 while (x > 0) { y = y * 10 + x % 10; // 拼接与拆分 x /= 10; } 拼接:将s中的数字拼接成整数 int sum = 0; for (int i = 0; i < s.size(); i++) { sum = sum * 10 + s[i]; }","s":"题解","u":"/docs/Algorithms/题解/反序输出","h":"#题解","p":12},{"i":19,"t":"提示 在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆,小诺很好奇那些地方被刷过多少种颜色的油漆。 输入描述: 若干行输入,每行两个数字B[i],E[i](0<=B[i]<=E[i]<=200000)表示这次刷的墙壁是哪一段 (假设每次刷的时候油漆颜色都和之前的不同),以0 0结束 又若干行输入,每行两个数字begin[i],end[i](0<=begin[i]<=end[i]<=200000)表示小诺询问的段, 以0 0结束 输出描述: 对于每个小诺的询问输出(end[i]-begin[i]+1)行,表示对应询问段的每个点被多少种颜色的油漆覆盖过。","s":"一维前缀和(刷出一道墙)","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"","p":18},{"i":21,"t":"#include using namespace std; int main() { vector colors(200001, 0); int B, E; while (scanf(\"%d %d\", &B, &E)) { if (B == 0 && E == 0) { break; } colors[B]++; // 刷墙起点标记 colors[E + 1]--; // 刷墙终点标记 } // 计算前缀和 for (int i = 1; i < colors.size(); i++) { colors[i] += colors[i - 1]; } int begin, end; while (scanf(\"%d %d\", &begin, &end)) { if (begin == 0 && end == 0) { break; } for (int i = begin; i <= end; i++) { printf(\"%d\\n\", colors[i]); } } return 0; }","s":"参考代码","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":18},{"i":23,"t":"使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。 首先初始化前缀和数组,使每一个元素等于为0。 该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值−1-1−1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,−1)[1, -1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于−1-1−1而抵消影响(自身值为−1-1−1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。 关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用\"\\n\"代替endl。 ios::sync_with_stdio(false);","s":"题解","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":18},{"i":25,"t":"提示 欢迎来到笔记本的算法部分","s":"Welcome","u":"/docs/Algorithms/intro","h":"","p":24},{"i":27,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Algorithms/intro","h":"#支持我","p":24},{"i":29,"t":"信息 转载自Sonder的笔记本 vector:变长数组,倍增的思想 pair:存储一对数 string:字符串,substr(), c_str() queue:push(), front(), pop() priority_queue:优先队列,push(), top(), pop() stack:栈,push(), top(), pop() deque:双端队列 set, map, multiset, multimap:基于红黑树来实现,本质上是动态维护一个有序序列 unordered_set, unordered_map, unordered_multiset, unordered_multimap:哈希表 bitset:压位","s":"STL模板","u":"/docs/Algorithms/STL模板","h":"","p":28},{"i":31,"t":"vector a(10,3); // 定义一个长度为10的vector,初始化为3; a.size(); // vector的size,所有容器都有 a.empty(); // 范围vector是否为空,所有容器都有 a.clear(); // 清空 a.front(); // 第一个数 a.back(); // 最后一个数 a.push_back(); // 在最后插入一个数 a.pop_back(); // 删除最后一个数 // vector支持比较运算 vector a(4,3),b(3,4); if(a > b) cout << \"Yes\"; else cout << \"No\"","s":"vector","u":"/docs/Algorithms/STL模板","h":"#vector","p":28},{"i":33,"t":"pair a; a = {20,\"abc\"}; a.first(); // 获取第一个元素 a.second(); // 获取第二个元素 // pair也能进行sort","s":"pair","u":"/docs/Algorithms/STL模板","h":"#pair","p":28},{"i":35,"t":"string a = \"Acwing\"; a.size(); // 获取string的大小 a.empty(); // 判断是否为空 a.clear(); // 清空 a += \"def\"; cout << a. substr(1,2) << endl; // 第一个参数起始位置,第二个参数是字符串长度","s":"string","u":"/docs/Algorithms/STL模板","h":"#string","p":28},{"i":37,"t":"query a; a.size(); a.empty(); a.push(1); // 队尾插入元素 a.front(); // 返回队头元素 a.back(); // 返回队尾元素 a.pop(); // 删除队头元素","s":"query","u":"/docs/Algorithms/STL模板","h":"#query","p":28},{"i":39,"t":"// 默认是大根堆 priority_queue heap; heap.clear(); heap.size(); heap.empty(); // 如何定义一个小根堆: 1. 插入负数 2. 直接定义 heap.push(-x); // 黑科技方法 priority_queue,greater> q;","s":"priority_queue","u":"/docs/Algorithms/STL模板","h":"#priority_queue","p":28},{"i":41,"t":"stack s; s.size(); s.empty(); s.push(); s.top(); s.pop();","s":"stack","u":"/docs/Algorithms/STL模板","h":"#stack","p":28},{"i":43,"t":"deque a; a.size(); a.empty(); a.clear(); a.front(); a.back(); a.push_back(); a.pop_back();","s":"deque","u":"/docs/Algorithms/STL模板","h":"#deque","p":28},{"i":45,"t":"set s; // 不能有重复元素 // s.begin()/end() multiset MS; // 可以有重复元素 s.insert(1); 插入一个数 s.size(); s.empty(); s.clear(); s.find(1); // 查找一个元素,如果不存在的话返回end迭代器 s.erase(1); // 输入是一个数x,输出所有x (2)输入一个迭代器,删除这个迭代器 // set 最核心的操作 s.lower_bound(); // 范围大于等于x的最小的数 s.upper_bound(); // 返回大于x的最小的数","s":"set/multiset","u":"/docs/Algorithms/STL模板","h":"#setmultiset","p":28},{"i":47,"t":"#include // 和python里面的字典非常的相似 map a; a[\"2\"] = 3; a.insert({\"1\",1}); a.erase({\"1\",1}); a.find({\"1\",1}); unordered_set, unordered_map, unordered_multiset, unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound()这样的操作 (哈希表的内部是无序的)","s":"map/multimap","u":"/docs/Algorithms/STL模板","h":"#mapmultimap","p":28},{"i":49,"t":"可以省下来8位的空间 bitset<10000> s; // 支持所有的基本操作: // 移位操作:<< >> // == != // count() 返回有多少个1 // any() 判断是否至少有一个1 // none() 判断是否全为0 // set(),把所有为置为1 // set(k,v), 将第k个变为v // reset(), 把所有位变成0 // flip(), 把所有位取反","s":"biset","u":"/docs/Algorithms/STL模板","h":"#biset","p":28},{"i":51,"t":"信息 转载自Sonder的笔记本 [TOC]","s":"机试技巧与STL","u":"/docs/Algorithms/机试技巧与STL","h":"","p":50},{"i":53,"t":"CTRL + J 列出成员 Ctrl+E,D 格式化全部代码 Ctrl+K,F 格式化选中的代码 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTRL + F12 转到声明 CTRL + ALT + J 对象浏览 CTRL + ALT + F1 帮助目录 CTRL + F1 动态帮助 CTRL + K, CTRL + C 注释选择的代码 CTRL + K, CTRL + U 取消对选择代码的注释 CTRL + U 转小写 CTRL + SHIFT + U 转大写 F5 运行调试 CTRL + F5 运行不调试 F10 跨过程序执行 F11 单步逐句执行","s":"vs2018 快捷键","u":"/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":50},{"i":56,"t":"头文件 说明 头文件 说明 头文件 说明 assert.h 断言相关 ctype.h 字符类型判断 errno.h 标准错误机制 float.h 浮点限制 limits.h 整形限制 locale.h 本地化接口 math.h 数学函数 setjmp.h 非本地跳转 signal.h 信号相关 stdarg.h 可变参数处理 stddef.h 宏和类型定义 stdio.h 标准I/O stdlib.h 标准工具库 string.h 字符串和内存处理 time.h 时间相关","s":"标准c库","u":"/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":50},{"i":58,"t":"using namespace std; 头文件 说明 头文件 说明 头文件 说明 algorithm 通用算法 deque 双端队列 vector 向量 iterator 迭代器 stack 栈 map 图(键值对) list 列表 string 字符串 set 集合 queue 队列 bitset bit类 numeric 数值算法","s":"c++ STL","u":"/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":50},{"i":60,"t":"#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;","s":"常用头","u":"/docs/Algorithms/机试技巧与STL","h":"#常用头","p":50},{"i":62,"t":"//求最大值和最小值 #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) //取余 #define mod(x) ((x)%MOD) //for循环 #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i) //返回数组元素的个数 #define ARR_SIZE(a) (sizeof((a))/sizeof((a[0]))) //初始化数组 #define MT(x,i) memset(x,i,sizeof(x)) #define MEM(a,b) memset((a),(b),sizeof(a)) //符号重定义 #define LL long long #define ull unsigned long long #define pii pair //常见常数 #define PI acos(-1.0) #define eps 1e-12 #define INF 0x3f3f3f3f //int最大值 const int INF_INT = 2147483647; const ll INF_LL = 9223372036854775807LL; const ull INF_ULL = 18446744073709551615Ull; const ll P = 92540646808111039LL; const ll maxn = 1e5 + 10, MOD = 1e9 + 7; const int Move[4][2] = {-1,0,1,0,0,1,0,-1}; const int Move_[8][2] = {-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};","s":"常用宏定义","u":"/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":50},{"i":65,"t":"struct InitMember { int first; double second; char* third; float four; };","s":"定义","u":"/docs/Algorithms/机试技巧与STL","h":"#定义","p":50},{"i":67,"t":"方法一:定义时赋值​ struct InitMember test = {-10,3.141590,\"method one\",0.25}; 方法二:定义后逐个赋值​ struct InitMember test; test.first = -10; test.second = 3.141590; test.third = \"method two\"; test.four = 0.25; 方法三:定义时乱序赋值(C++风格)​ struct InitMember test = { second:3.141590, third:\"method three\", first:-10, four:0.25 }; 方法四:构造函数​ //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { ... ... ... return true; } } Graph; Graph g(8, false);","s":"初始化","u":"/docs/Algorithms/机试技巧与STL","h":"#初始化","p":50},{"i":69,"t":"typedef struct{int id;int h;} node; bool operator <(const node& a,const node & b){return (a.h)<(b.h);}","s":"运算符重载","u":"/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":50},{"i":72,"t":"int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) int *a = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 char *b = new char[10]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p","s":"常规","u":"/docs/Algorithms/机试技巧与STL","h":"#常规","p":50},{"i":74,"t":"//列值固定 const int MAXCOL = 3; cin>>row; //申请一维数据并将其转成二维数组指针 int *pp_arr = new int[nRow * MAXCOL]; int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr; //此时p[i][j]就可正常使用","s":"动态申请列大小固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":50},{"i":76,"t":"cin>>row>>col; int **p = new int*[row]; for (int i = 0; i < row; i ++) { p[i] = new int[col]; }","s":"动态申请大小不固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":50},{"i":78,"t":"参考: https://blog.csdn.net/f_zyj/article/details/51594851 https://download.csdn.net/download/f_zyj/9988653","s":"常用STL","u":"/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":50},{"i":80,"t":"STL底层说明​ C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> ... 每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品. 4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 (stack和queue其实是适配器,而不叫容器,因为是对容器的再封装) 6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现 7.set 底层数据结构为红黑树,有序,不重复 8.multiset 底层数据结构为红黑树,有序,可重复 9.map 底层数据结构为红黑树,有序,不重复 10.multimap 底层数据结构为红黑树,有序,可重复 11.hash_set 底层数据结构为hash表,无序,不重复 12.hash_multiset 底层数据结构为hash表,无序,可重复 13.hash_map 底层数据结构为hash表,无序,不重复 14.hash_multimap 底层数据结构为hash表,无序,可重复 CCF 编译出错原因: 不允许C++STL容器嵌套(需要满足相应的格式)​ 就是要在后面的“>”之间,必须得有一个空格,如果有多层,那每层都得有一个空格。 map > user;","s":"简述","u":"/docs/Algorithms/机试技巧与STL","h":"#简述","p":50},{"i":82,"t":"头文件:lgorithm 函数参数,返回值以及具体的使用方法请自行去头文件找定义!!! 不修改内容的序列操作​ 函数 说明 adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素 all_ofC++11 检测在给定范围中是否所有元素都满足给定的条件 any_ofC++11 检测在给定范围中是否存在元素满足给定条件 count 返回值等价于给定值的元素的个数 count_if 返回值满足给定条件的元素的个数 equal 返回两个范围是否相等 find 返回第一个值等价于给定值的元素 find_end 查找范围A中与范围B等价的子范围最后出现的位置 find_first_of 查找范围A中第一个与范围B中任一元素等价的元素的位置 find_if 返回第一个值满足给定条件的元素 find_if_notC++11 返回第一个值不满足给定条件的元素 for_each 对范围中的每个元素调用指定函数 mismatch 返回两个范围中第一个元素不等价的位置 none_ofC++11 检测在给定范围中是否不存在元素满足给定的条件 search 在范围A中查找第一个与范围B等价的子范围的位置 search_n 在给定范围中查找第一个连续n个元素都等价于给定值的子范围的位置 修改内容的序列操作​ 函数 说明 copy 将一个范围中的元素拷贝到新的位置处 copy_backward 将一个范围中的元素按逆序拷贝到新的位置处 copy_ifC++11 将一个范围中满足给定条件的元素拷贝到新的位置处 copy_nC++11 拷贝 n 个元素到新的位置处 fill 将一个范围的元素赋值为给定值 fill_n 将某个位置开始的 n 个元素赋值为给定值 generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素 generate_n 将一个函数的执行结果保存到指定位置开始的 n 个元素中 iter_swap 交换两个迭代器(Iterator)指向的元素 moveC++11 将一个范围中的元素移动到新的位置处 move_backwardC++11 将一个范围中的元素按逆序移动到新的位置处 random_shuffle 随机打乱指定范围中的元素的位置 remove 将一个范围中值等价于给定值的元素删除 remove_if 将一个范围中值满足给定条件的元素删除 remove_copy 拷贝一个范围的元素,将其中值等价于给定值的元素删除 remove_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素删除 replace 将一个范围中值等价于给定值的元素赋值为新的值 replace_copy 拷贝一个范围的元素,将其中值等价于给定值的元素赋值为新的值 replace_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素赋值为新的值 replace_if 将一个范围中值满足给定条件的元素赋值为新的值 reverse 反转排序指定范围中的元素 reverse_copy 拷贝指定范围的反转排序结果 rotate 循环移动指定范围中的元素 rotate_copy 拷贝指定范围的循环移动结果 shuffleC++11 用指定的随机数引擎随机打乱指定范围中的元素的位置 swap 交换两个对象的值 swap_ranges 交换两个范围的元素 transform 对指定范围中的每个元素调用某个函数以改变元素的值 unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。 unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果 划分操作​ 函数 说明 is_partitionedC++11 检测某个范围是否按指定谓词(Predicate)划分过 partition 将某个范围划分为两组 partition_copyC++11 拷贝指定范围的划分结果 partition_pointC++11 返回被划分范围的划分点 stable_partition 稳定划分,两组元素各维持相对顺序 排序操作​ 函数 说明 is_sortedC++11 检测指定范围是否已排序 is_sorted_untilC++11 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序 partial_sort_copy 拷贝部分排序的结果 sort 排序 stable_sort 稳定排序 二分法查找操作​ 函数 说明 binary_search 判断范围中是否存在值等价于给定值的元素 equal_range 返回范围中值等于给定值的元素组成的子范围 lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器 upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器 集合操作​ 函数 说明 includes 判断一个集合是否是另一个集合的子集 inplace_merge 就绪合并 merge 合并 set_difference 获得两个集合的差集 set_intersection 获得两个集合的交集 set_symmetric_difference 获得两个集合的对称差 set_union 获得两个集合的并集 堆操作​ 函数 说明 is_heap 检测给定范围是否满足堆结构 is_heap_untilC++11 检测给定范围中满足堆结构的最大子范围 make_heap 用给定范围构造出一个堆 pop_heap 从一个堆中删除最大的元素 push_heap 向堆中增加一个元素 sort_heap 将满足堆结构的范围排序 最大/最小操作​ 函数 说明 is_permutationC++11 判断一个序列是否是另一个序列的一种排序 lexicographical_compare 比较两个序列的字典序 max 返回两个元素中值最大的元素 max_element 返回给定范围中值最大的元素 min 返回两个元素中值最小的元素 min_element 返回给定范围中值最小的元素 minmaxC++11 返回两个元素中值最大及最小的元素 minmax_elementC++11 返回给定范围中值最大及最小的元素 next_permutation 返回给定范围中的元素组成的下一个按字典序的排列 prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列","s":"algorithm","u":"/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":50},{"i":84,"t":"头文件:vector 在STL的vector头文件中定义了vector(向量容器模版类),vector容器以连续数组的方式存储元素序列,可以将vector看作是以顺序结构实现的线性表。当我们在程序中需要使用动态数组时,vector将会是理想的选择,vector可以在使用过程中动态地增长存储空间。 vector模版类需要两个模版参数,第一个参数是存储元素的数据类型,第二个参数是存储分配器的类型,其中第二个参数是可选的,如果不给出第二个参数,将使用默认的分配器 下面给出几个常用的定义vector向量对象的方法示例: vector s; // 定义一个空的vector对象,存储的是int类型的元素 vector s(n); // 定义一个含有n个int元素的vector对象 vector s(first, last); // 定义一个vector对象,并从由迭代器first和last定义的序列[first, last)中复制初值 vector的基本操作: s[i] // 直接以下标方式访问容器中的元素 s.front() // 返回首元素 s.back() // 返回尾元素 s.push_back(x) // 向表尾插入元素x s.size() // 返回表长 s.empty() // 表为空时,返回真,否则返回假 s.pop_back() // 删除表尾元素 s.begin() // 返回指向首元素的随机存取迭代器 s.end() // 返回指向尾元素的下一个位置的随机存取迭代器 s.insert(it, val) // 向迭代器it指向的元素前插入新元素val s.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val s.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 s.erase(it) // 删除由迭代器it所指向的元素 s.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) s.reserve(n) // 预分配缓冲空间,使存储空间至少可容纳n个元素 s.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 s.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 s.clear() // 删除容器中的所有元素 s.swap(v) // 将s与另一个vector对象进行交换 s.assign(first, last) // 将序列替换成由迭代器first和last所指定的序列[first, last),[first, last)不能是原序列中的一部分 // 要注意的是,resize操作和clear操作都是对表的有效元素进行的操作,但并不一定会改变缓冲空间的大小 // 另外,vector还有其他的一些操作,如反转、取反等,不再一一列举 // vector上还定义了序列之间的比较操作运算符(>、<、>=、<=、==、!=),可以按照字典序比较两个序列。 // 还是来看一些示例代码吧…… /* * 输入个数不定的一组整数,再将这组整数按倒序输出 */ #include #include using namespace std; int main() { vector L; int x; while(cin >> x) { L.push_back(x); } for (int i = L.size() - 1; i >= 0; i--) { cout << L[i] << \" \"; } cout << endl; return 0; }","s":"vector","u":"/docs/Algorithms/机试技巧与STL","h":"#vector","p":50},{"i":86,"t":"头文件:list 下面给出几个常用的定义list对象的方法示例: lista{1,2,3} lista(n) //声明一个n个元素的列表,每个元素都是0 lista(n, m) //声明一个n个元素的列表,每个元素都是m lista(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器 list的基本操作: a.begin() // 返回指向首元素的随机存取迭代器 a.end() // 返回指向尾元素的下一个位置的随机存取迭代器 a.push_front(x) // 向表头插入元素x a.push_back(x) // 向表尾插入元素x a.pop_back() // 删除表尾元素 a.pop_front() // 删除表头元素 a.size() // 返回表长 a.empty() // 表为空时,返回真,否则返回假 a.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 a.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 a.clear() // 删除容器中的所有元素 a.front() // 返回首元素 a.back() // 返回尾元素 a.swap(v) // 将a与另一个list对象进行交换 a.merge(b) // 调用结束后b变为空,a中元素包含原来a和b的元素 a.insert(it, val) // 向迭代器it指向的元素前插入新元素val a.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val a.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 a.erase(it) // 删除由迭代器it所指向的元素 a.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) a.remove(x) // 删除了a中所有值为x的元素 a.assign(n, val) // 将a中的所有元素替换成n个val元素 a.assign(b.begin(), b.end()) //将a变成b","s":"list","u":"/docs/Algorithms/机试技巧与STL","h":"#list","p":50},{"i":88,"t":"头文件:string string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。 string封装了char*,管理这个字符串,是一个char*型的容器。也就是说string是一个容器,里面元素的数据类型是char*。 string不用考虑内存释放和越界。 string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。 string提供了一系列的字符串操作函数 查找find,拷贝copy,删除erase,替换replace,插入insert. 构造和析构函数: 表达式 效果 string s 生成一个空字符串 string s(str) copy构造函数,生成一个str的复制品 string s(str,idx) 将string内始于位置idx的部分当作字符串s的初值 string s(str,idx,len) 将string内始于位置idx且长度最多为len的部分当作字符串s的初值 string s(cstr) 以C-string字符串cstr作为字符串s的初值 string s(cstr,len) 以C-string字符串cstr的前len个字符作为字符串s的初值 string s(num,c) 生成一个字符串,包含num个字符c string s(beg,end) 以区间[beg,end]内所有字符作为字符串s的初值 操作函数: 操作函数 效果 =,assign() 赋以新值 swap() 交换两个字符串的内容 +=, append(),push_back() 添加字符 insert() 插入字符 erase() 删除字符 clear() 移除全部字符 resize() 改变字符数量 replace() 替换字符 + 串联字符串 ==,!=,<,<=,>,>=,compare() 比较字符串内容 size(),length() 返回字符数量,等效函数 max_size() 返回字符的最大可能个数 empty() 判断字符串是否为空 capacity() 返回重新分配之前的字符容量 reserve() 保留一定量内存以容纳一定数量的字符 [ ],at() 存取单一字符 >>,getline() 从stream中读取某值 << 将某值写入stream copy() 将内容复制为一个C-string c_str() 将内容以C-string形式返回 data() 将内容以字符数组形式返回 substr() 返回某个子字符串 begin(),end() 提供正常的迭代器支持 rbegin(),rend() 提供逆向迭代器支持","s":"string","u":"/docs/Algorithms/机试技巧与STL","h":"#string","p":50},{"i":90,"t":"头文件:utility STL的utility头文件中描述了一个看上去非常简单的模版类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较运算符模版函数。 Example,想要定义一个对象表示一个平面坐标点,则可以: pair p; cin >> p.first >> p.second; pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second,分别表示首元素和尾元素。 在其中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。当然,也可以通过重载这几个运算符来重新指定自己的比较逻辑。 除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair需要两个参数,分别为元素对的首元素和尾元素。","s":"pair","u":"/docs/Algorithms/机试技巧与STL","h":"#pair","p":50},{"i":92,"t":"头文件:map 在STL的头文件中map中定义了模版类map和multimap,用有序二叉树表存储类型为pair的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key值必须是唯一的,multimap则允许有重复的Key值。 可以将map看作是由Key标识元素的元素集合,这类容器也被称为“关联容器”,可以通过一个Key值来快速决定一个元素,因此非常适合于需要按照Key值查找元素的容器。 map模版类需要四个模版参数,第一个是键值类型,第二个是元素类型,第三个是比较算子,第四个是分配器类型。其中键值类型和元素类型是必要的。 定义map对象的代码示例: map m; map的基本操作: /* 向map中插入元素 */ m[key] = value; // [key]操作是map很有特色的操作,如果在map中存在键值为key的元素对, 则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map中插入元素对或修改已经存在的元素对的值域部分。 m.insert(make_pair(key, value)); // 也可以直接调用insert方法插入元素对,insert操作会返回一个pair,当map中没有与key相匹配的键值时,其first是指向插入元素对的迭代器,其second为true;若map中已经存在与key相等的键值时,其first是指向该元素对的迭代器,second为false。 /* 查找元素 */ int i = m[key]; // 要注意的是,当与该键值相匹配的元素对不存在时,会创建键值为key(当另一个元素是整形时,m[key]=0)的元素对。 map::iterator it = m.find(key); // 如果map中存在与key相匹配的键值时,find操作将返回指向该元素对的迭代器,否则,返回的迭代器等于map的end()(参见vector中提到的begin()和end()操作)。 /* 删除元素 */ m.erase(key); // 删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。 m.erase(it); // 删除由迭代器it所指定的元素对,并返回指向下一个元素对的迭代器。 /* 其他操作 */ m.size(); // 返回元素个数 m.empty(); // 判断是否为空 m.clear(); // 清空所有元素","s":"map","u":"/docs/Algorithms/机试技巧与STL","h":"#map","p":50},{"i":94,"t":"头文件:stack stack模版类的定义在stack头文件中。 stack模版类需要两个模版参数,一个是元素类型,另一个是容器类型,但是只有元素类型是必要的,在不指定容器类型时,默认容器的类型为deque。 定义stack对象的示例代码如下: stack s; stack ss; stack的基本操作有: s.push(x); // 入栈 s.pop(); // 出栈 s.top(); // 访问栈顶 s.empty(); // 当栈空时,返回true s.size(); // 访问栈中元素个数","s":"stack","u":"/docs/Algorithms/机试技巧与STL","h":"#stack","p":50},{"i":96,"t":"头文件:queue queue模版类的定义在queue头文件中。 queue与stack相似,queue模版类也需要两个模版参数,一个元素类型,一个容器类型,元素类型时必须的,容器类型时可选的,默认为deque类型。 定义queue对象的示例代码必须如下: queue q; queue qq; queue的基本操作: q.push(x); // 入队列 q.pop(); // 出队列 q.front(); // 访问队首元素 q.back(); // 访问队尾元素 q.empty(); // 判断队列是否为空 q.size(); // 访问队列中的元素个数","s":"queue","u":"/docs/Algorithms/机试技巧与STL","h":"#queue","p":50},{"i":98,"t":"头文件:set set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。 定义set对象的示例代码如下: set s; set ss; set的基本操作: s.begin() // 返回指向第一个元素的迭代器 s.clear() // 清除所有元素 s.count() // 返回某个值元素的个数 s.empty() // 如果集合为空,返回true(真) s.end() // 返回指向最后一个元素之后的迭代器,不是最后一个元素 s.equal_range() // 返回集合中与给定值相等的上下限的两个迭代器 s.erase() // 删除集合中的元素 s.find() // 返回一个指向被查找到元素的迭代器 s.get_allocator() // 返回集合的分配器 s.insert() // 在集合中插入元素 s.lower_bound() // 返回指向大于(或等于)某值的第一个元素的迭代器 s.key_comp() // 返回一个用于元素间值比较的函数 s.max_size() // 返回集合能容纳的元素的最大限值 s.rbegin() // 返回指向集合中最后一个元素的反向迭代器 s.rend() // 返回指向集合中第一个元素的反向迭代器 s.size() // 集合中元素的数目 s.swap() // 交换两个集合变量 s.upper_bound() // 返回大于某个值元素的迭代器 s.value_comp() // 返回一个用于比较元素间的值的函数","s":"set","u":"/docs/Algorithms/机试技巧与STL","h":"#set","p":50},{"i":100,"t":"头文件:set 在set头文件中,还定义了另一个非常实用的模版类multiset(多重集合)。多重集合与集合的区别在于集合中不能存在相同元素,而多重集合中可以存在。 定义multiset对象的示例代码如下: multiset s; multiset ss; multiset和set的基本操作相似,需要注意的是,集合的count()能返回0(无)或者1(有),而多重集合是有多少个返回多少个。","s":"multiset","u":"/docs/Algorithms/机试技巧与STL","h":"#multiset","p":50},{"i":102,"t":"头文件:bitset 在 STLSTL 的头文件中 bitset中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。 bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。 定义 bitsetbitset 对象的示例代码: const int MAXN = 32; bitset bt; // bt 包括 MAXN 位,下标 0 ~ MAXN - 1,默认初始化为 0 bitset bt1(0xf); // 0xf 表示十六进制数 f,对应二进制 1111,将 bt1 低 4 位初始化为 1 bitset bt2(012); // 012 表示八进制数 12,对应二进制 1010,即将 bt2 低 4 位初始化为 1010 bitset bt3(\"1010\"); // 将 bt3 低 4 位初始化为 1010 bitset bt4(s, pos, n);// 将 01 字符串 s 的 pos 位开始的 n 位初始化 bt4 bitsetbitset 基本操作: bt.any() // bt 中是否存在置为 1 的二进制位? bt.none() // bt 中不存在置为 1 的二进制位吗? bt.count() // bt 中置为 1 的二进制位的个数 bt.size() // bt 中二进制位的个数 bt[pos] // 访问 bt 中在 pos 处的二进制位 bt.test(pos) // bt 中在 pos 处的二进制位是否为 1 bt.set() // 把 bt 中所有二进制位都置为 1 bt.set(pos) // 把 bt 中在 pos 处的二进制位置为 1 bt.reset() // 把 bt 中所有二进制位都置为 0 bt.reset(pos) // 把 bt 中在pos处的二进制位置为0 bt.flip() // 把 bt 中所有二进制位逐位取反 bt.flip(pos) // 把 bt 中在 pos 处的二进制位取反 bt[pos].flip() // 同上 bt.to_ulong() // 用 bt 中同样的二进制位返回一个 unsigned long 值 os << bt // 把 bt 中的位集输出到 os 流","s":"bitset","u":"/docs/Algorithms/机试技巧与STL","h":"#bitset","p":50},{"i":105,"t":"#include #include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b) ) //定义图的定点 typedef struct Vertex { int id; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1) {} Vertex(int nid) : id(nid) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); } return true; } //广度优先搜索 vector BFS(int start) { set visited; vector g, rst; g.push_back(start); visited.insert(start); while(g.size() > 0) { int id = g[0]; g.erase(g.begin()); rst.push_back(id); for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); visited.insert(id1); } } } return rst; } //深度优先搜索 vector DFS(int start) { set visited; vector g, rst; g.push_back(start); //cout << \"push \" << start << \" \"; visited.insert(start); rst.push_back(start); bool found; while(g.size() > 0) { int id = g[g.size()-1]; found = false; for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); rst.push_back(id1); visited.insert(id1); //cout << \"push \" << id1 << \" \"; found = true; break; } } if (!found) { int id2 = g[g.size()-1]; rst.push_back(-1 * id2); //cout << \"pop \" << id2 << \" \"; g.pop_back(); } } //cout << endl; return rst; } } Graph; int main() { Graph g(8, false); g.addEdge(0, 1); g.addEdge(0, 3); g.addEdge(1, 2); g.addEdge(3, 4); g.addEdge(3, 5); g.addEdge(4, 5); g.addEdge(4, 6); g.addEdge(5, 6); g.addEdge(5, 7); g.addEdge(6, 7); vector bv = g.BFS(0); cout << \"宽度优先搜索节点顺序:\"; for(int j = 0; j < bv.size(); j++) cout << bv[j] << \" \"; cout << endl; cout << \"深度优先搜索节点顺序:\"; Graph g1(6, false); g1.addEdge(0, 1); g1.addEdge(0, 4); g1.addEdge(0, 5); g1.addEdge(1, 5); g1.addEdge(4, 5); g1.addEdge(5, 2); g1.addEdge(5, 3); g1.addEdge(2, 3); vector route = g1.DFS(0); for(int i = 0; i < route.size(); i++) cout << route[i] << \" \"; cout << endl; char ch; cin >> ch; return 0; }","s":"不带出入度的最简模板","u":"/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":50},{"i":107,"t":"#include #include #include #include #define MAX(a, b) ((a) > (b) ? (a) : (b) ) using namespace std; int n,m; vector inDegreelist,outDegreelist; //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); vertexs[id1].outDegree++; vertexs[id2].inDegree++; } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); vertexs[id1].outDegree++; vertexs[id1].inDegree++; vertexs[id2].outDegree++; vertexs[id2].inDegree++; } return true; } } Graph; Graph g; void init(){ cin>>n>>m; g=Graph(n, true); int src,dst; while(m--){ cin>>src>>dst; g.addEdge(src,dst); } vector::iterator it = g.vertexs.begin(); while(it!=g.vertexs.end()){ inDegreelist.push_back(it->inDegree); outDegreelist.push_back(it->outDegree); it++; } } int countin(int n){ return count(inDegreelist.begin(),inDegreelist.end(),n); } int countout(int n){ return count(outDegreelist.begin(),outDegreelist.end(),n); } bool Is_List(){ //有一个inDegree为0的头和一个outDegree为0的尾,且其余节点入度与出度都为1; return (countin(0)==1)&&(countout(0)==1)&&(countin(1)==n-1)&&(countout(1)==n-1); } bool Is_Tree(){ //有一个inDegree为0的头且其余节点inDegree均为1,且不是链表; return (countin(0)==1)&&(countin(1)==n-1); } bool topologicalSort(){//拓扑排序判断有环无环 int num=0;//记录加入拓扑排序的顶点数 queue q; for(int i=0;i #include #ifndef BASE #define BASE #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int bool; #endif #define VertexType char //点类型 #define VRType int //边类型 #define maxSize 100 void Visit(VertexType e) { printf(\"%c\", e); } #define MAX_VERTEX_NUM 20 typedef enum{DG, UDG} GraphKind; typedef struct ArcNode{ int adjV; //边指向的顶点 VRType weight; //权重 struct ArcNode *next; }ArcNode; //边 typedef struct VNode{ VertexType data; ArcNode *firstarc; }VNode, AdjList[MAX_VERTEX_NUM]; //顶点 typedef struct{ GraphKind kind; int vernum,arcnum; AdjList vers; }ALGraph; /*------------------------ |7.14 创建有向图的邻接表| ------------------------*/ Status InitGraph_AL(ALGraph *pG) { //初始化 int i; pG->arcnum = 0; pG->vernum = 0; for (i=0; ivers[i].firstarc = NULL; //VC++6.0中指针初始化为0xcccccccc return OK; } int LocateVex_AL(ALGraph G, VertexType e) { //定位值为e的元素下标 int i; for (i=0; i弧的数目->各顶点的信息->各条弧的信息 int i,a,b; char tmp[MAX_VERTEX_NUM]; char h,t; ArcNode *p, *q; InitGraph_AL(pG); //VC++6.0中指针初始化为0xcccccccc,如果不将指针初始化为NULL,会出错 //图的类型 pG->kind = DG; //顶点数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->vernum = i; //弧的数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->arcnum = i; //各顶点信息 scanf(\"%s\", tmp); for (i=0; ivernum; ++i) pG->vers[i].data=tmp[i]; //弧的信息 for (i=0; iarcnum; ++i) { scanf(\"%s\", tmp); h = tmp[0]; t = tmp[2]; a = LocateVex_AL(*pG, h); b = LocateVex_AL(*pG, t); if (a<0 || b<0) return ERROR; p = (ArcNode *)malloc(sizeof(ArcNode)); if (!p) exit(OVERFLOW); p->adjV=b;p->next=NULL; if (pG->vers[a].firstarc) { //已经有边了 for (q = pG->vers[a].firstarc; q->next; q=q->next) ; //找到最后一条 q->next = p; } else { //第一条边 pG->vers[a].firstarc = p; } } return OK; } /*---------------------------------------------------------------- |7.28 有向图-从u-v的所有简单路径 | ----------------------------------------------------------------*/ int visit[MAX_VERTEX_NUM]; //前面定义了 VertexType paths[maxSize][MAX_VERTEX_NUM]; //存放路径 int path[MAX_VERTEX_NUM]; //路径 int pathnum=0; //当前是第几条路径 void FindAllPath(ALGraph G, int u,int v,int k) { //u->v当前是第k个位置 int i; ArcNode *p; visit[u]=1; //走到了u path[k]=u; //添加到路径->下标位置为k的结点是u(第k+1个是u) if (u==v) { //找到了 for (i=0; i<=k; i++) {//复制到paths paths[pathnum][i] = G.vers[path[i]].data; } paths[pathnum][i]='\\0'; //结束符 pathnum++; //找下一条路径 } else { //u的邻边开始找 for (p=G.vers[u].firstarc; p; p=p->next) { if (visit[p->adjV]==0) FindAllPath(G, p->adjV, v, k+1); //去这个邻接点找 } } // 回溯到上一个结点 // 注意:回溯应该写在外面-->也就是不管有没有找到都要回溯 visit[u]=0; path[k]=0; } int main() { /*7.28 6 11 ABCDEF B,A B,D C,B C,F D,C D,E D,F E,A F,A F,B F,E B->A A->B D->A */ int i,j; int cnt; ALGraph G; char tmp[20]; CreateDG_AL(&G); while (1) { scanf(\"%s\", tmp); //A->B i = LocateVex_AL(G, tmp[0]); j = LocateVex_AL(G, tmp[3]); for (cnt=0; cnt #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; // 中序+先序=>二叉树 int mid_pr_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示先序遍历 { // 这里不能等于,因为假设:len==1,则la==ra,直接返回,但是实际上是有一个 rt 的,却没被建立 if(la>ra) return 0; int rt=pr[lb]; // 因为先序遍历第一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); // 左子树(锁定左子树范围的下标) T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); // 右子树(锁定右子树范围的下标) return rt; } // 中序+后序=>二叉树 int mid_po_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示后序遍历 { if(la>ra) return 0; int rt=po[rb]; // 因为后序遍历最后一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); // 左子树(锁定左子树范围的下标) T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); // 右子树(锁定右子树范围的下标) return rt; } // 求树高 int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } // 层序遍历 void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; int mid_pr_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=pr[lb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); return rt; } int mid_po_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=po[rb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); return rt; } int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a) #define ssclr(ss) ss.clear(), ss.str(\"\") #define INF 0x3f3f3f3f #define MOD 1000000007 using namespace std; typedef long long ll; const int maxn=5e4+1000; int f; int pre[maxn], in[maxn]; struct node { int l,r,d; }T[maxn]; int create(int l1,int r1,int l2,int r2) // in pre { if(l2>r2) return -1; int rt=l2; int p1=l1,p2; while(in[p1]!=pre[rt]) p1++; p2=p1-l1; T[rt].d=pre[rt]; T[rt].l=create(l1,p1-1,l2+1,l2+p2); T[rt].r=create(p1+1,r1,l2+p2+1,r2); return rt; } void postT(int rt) { if(rt==-1 || !f) return; postT(T[rt].l); postT(T[rt].r); if(f) f=0, printf(\"%d\\n\",T[rt].d); } int main() { int n; scanf(\"%d\",&n); for(int i=0;i * Copyright (c) 2003, Jeffrey K. Hollingsworth * Copyright (c) 2004, Iulian Neamtiu * $Revision: 1.51 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file \"COPYING\". */ #include #include #include #include #include #include #include #include #include #include #include void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios! Motherfucker!---------\\n\"); Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } /* * Kernel C code entry point. * Initializes kernel subsystems, mounts filesystems, * and spawns init process. */ void Main(struct Boot_Info* bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); Init_TSS(); Init_Interrupts(); Init_Scheduler(); Init_Traps(); Init_Timer(); Init_Keyboard(); Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT)); Print(\"Welcome to GeekOS!\\n\"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); // TODO(\"Start a kernel thread to echo pressed keys and print counts\"); struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); /* Now this thread is done. */ Exit(0); }","s":"编写C语言代码","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":189},{"i":194,"t":"每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。 执行 make depend make 此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它! 目录下的文件应该是这样的结构: 下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 在这个目录下打开终端,执行 bochs 选择6,按下回车 可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入 c 即可完成bochs的正式启动,最终的效果","s":"使用Linux的编译系统对C语言代码进行编译","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":189},{"i":196,"t":"提示 欢迎来到笔记本的课程学习部分","s":"Welcome","u":"/docs/Curriculum/intro","h":"","p":195},{"i":198,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Curriculum/intro","h":"#支持我","p":195},{"i":200,"t":"正确发音 How to pronounce Adversarial? /ˌædvərˈseriəl/","s":"生成式对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"","p":199},{"i":203,"t":"生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。","s":"将随机分布作为输入","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":199},{"i":205,"t":"当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。","s":"为什么要添加分布","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":199},{"i":207,"t":"GAN的工作原理: 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。 判别器训练: 判别器被训练来正确分类真实数据和生成数据。 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。 训练的目标: 生成器目标: 生成更逼真的数据,以欺骗判别器。 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。 GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。","s":"核心思想","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":199},{"i":209,"t":"GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。 GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。","s":"具体结构与作用","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":199},{"i":211,"t":"结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。 Unconditional Generation​ Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。 对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。 Conditional Generation​","s":"生成器(Generator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":199},{"i":213,"t":"结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。","s":"判别器(Discriminator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":199},{"i":215,"t":"首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。 第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。 为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数: Lossreal=−Ex∼pdata(x)[log⁡D(x)](1)Loss_{real}=-E_{x\\sim p_\\text{data}{(x)}}[\\log D(x)]\\tag{1}Lossreal​=−Ex∼pdata​(x)​[logD(x)](1) 其中,D(x)D(x)D(x)是判别器的输出,xxx是真实样本,EEE是数学期望。 Lossfake=−Ez∼pz(z)[log(1−D(G(z)))](2)Loss_{fake}=-E_{z\\sim p_z(z)}[log(1-D(G(z)))]\\tag{2}Lossfake​=−Ez∼pz​(z)​[log(1−D(G(z)))](2) 其中,G(z)G(z)G(z)是生成器的输出,zzz是随机噪声,EEE是数学期望。 将真实样本和生成样本的损失相加,形成判别器的总体损失。 Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\\tag{3}Lossdiscriminator​=Lossreal​+Lossfake​(3) 最小化损失函数,更新判别器的参数。 第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。 LG=−Ez∼pz(z)[log⁡D(G(z))](4)L_G=-E_{z\\sim p_z(z)}[\\log D(G(z))]\\tag{4}LG​=−Ez∼pz​(z)​[logD(G(z))](4) 其中,G(z)G(z)G(z)是生成器的输出,D(G(z))D(G(z))D(G(z))是生成样本输入到判别器后的输出,zzz是随机噪声,EEE是数学期望。","s":"训练算法","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":199},{"i":217,"t":"提示 本笔记使用的教材是陈天华所著、清华大学出版社的《数字图像处理及应用:使用MATLAB分析与实现》。 Take me to church, I'll worship like a dog at the shrine of your lies. I'll tell you my sins, and you can sharpen your knife. Offer me that deathless death, good god, let me give you my life.","s":"数字图像处理复习笔记","u":"/docs/Curriculum/数字图像处理/Note","h":"","p":216},{"i":220,"t":"为了从模拟图像产生数字图像,需要进行采样与量化,即对模拟图像在空间(x,y)(x, y)(x,y)方向上以及亮度函数f(x,y)f(x, y)f(x,y)进行离散化处理。 采样: 模拟图像在空间(x,y)(x, y)(x,y)上的离散化称为采样。 若在x和y方向上均进行等间距的采样,则称为均匀采样。 采样点的多少以及采样的间隔直接影响着图像的质量。 量化: 模拟图像经过采样后,在时间和空间上被离散化为像素,但采样所得的像素点的像素值依然是连续量。量化过程就是以离散的灰度值信息代替连续的模拟量灰度信息的过程,是一对多的过程。 量化可以分为线性量化以及非线性量化。 灰度级一般以2的整数次幂表示,如大多图像为彩色RGB图像,256个灰度级,位深度为8(28=2562^8=25628=256),则对于分辨率为256×256的图像来说,需要256×256×3×8位表示,即每一个像素实际上使用24位表示。","s":"图像的采样与量化","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":216},{"i":222,"t":"4邻域N4(p)N_4(p)N4​(p)即该像素上下左右的四个点,8邻域N8(p)N_8(p)N8​(p),对角邻域ND(p)N_D(p)ND​(p)。 像素之间的距离度量必须满足三种关系: 非负性 对称性 三角不等式 三种距离度量: 已知,点ppp的坐标为(x,y)(x, y)(x,y),点qqq的坐标为(s,t)(s,t)(s,t)。 欧氏距离: De(p,q)=(x−s)2+(y−t)2(1)D_e(p,q)=\\sqrt{(x-s)^2+(y-t)^2}\\tag{1}De​(p,q)=(x−s)2+(y−t)2​(1) 城市距离 D4(p,q)=∣x−s∣+∣y−t∣(2)D_4(p,q)=\\vert x-s\\vert+\\vert y-t\\vert \\tag{2}D4​(p,q)=∣x−s∣+∣y−t∣(2) 棋盘距离 D8(p,q)=max(∣x−s∣,∣y−t∣)(3)D_8(p,q)=max(\\vert x-s\\vert,\\vert y-t\\vert)\\tag{3}D8​(p,q)=max(∣x−s∣,∣y−t∣)(3)","s":"距离度量","u":"/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":216},{"i":224,"t":"MSE越小代表待测图像与参考图像越接近,均方误差公式如下: MSE=1MN∑x=1M∑y=1N[f(x,y)−g(x,y)]2(4)MSE=\\frac{1}{MN}\\sum_{x=1}^{M}\\sum_{y=1}^{N}[f(x,y)-g(x,y)]^2\\tag{4}MSE=MN1​x=1∑M​y=1∑N​[f(x,y)−g(x,y)]2(4) SNR:参考图像像素值的平方均值与均方误差的比值的对数的10倍。越大代表图像质量越好 PSNR:峰值信噪比,图像所允许的最大像素值的平方与均方误差的比值的对数的10倍,这是信噪比的改良版本,消除了图像自身像素值对评价指标的影响。越大代表图像质量越好 SSIM为结构相似系数,越大代表图像质量越好","s":"图像质量评价","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":216},{"i":228,"t":"可以使用傅里叶变换的函数需要满足狄利克莱条件(Dirichlet Condition): 具有有限个间断点 具有有限个极值点 绝对可积 傅里叶变换的特性: 信息 傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 连续傅里叶变换​ 一维连续傅里叶变换 F(u)=∫−∞+∞f(x)e−j2πuxdx(5)F(u)=\\int_{-\\infty}^{+\\infty}f(x)e^{-j2\\pi ux}dx\\tag{5}F(u)=∫−∞+∞​f(x)e−j2πuxdx(5) 一维连续傅里叶逆变换 f(x)=∫−∞∞F(u)ej2πuxdu(6)f(x)=\\int_{-\\infty}^{\\infty}F(u)e^{j2\\pi ux}du\\tag{6}f(x)=∫−∞∞​F(u)ej2πuxdu(6) 二维连续傅里叶变换 F(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy)dxdy(7)F(u,v)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}f(x,y)e^{-j2\\pi (ux+vy)}dxdy\\tag{7}F(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7) 二维连续傅里叶逆变换 f(x,y)=∫−∞∞∫−∞∞F(u,v)ej2π(ux+vy)dudv(8)f(x,y)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}F(u,v)e^{j2\\pi (ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​F(u,v)ej2π(ux+vy)dudv(8) 离散傅里叶变换​ 一维离散傅里叶变换 F(u)=∑x=0N−1f(x)e−j2πuxN(9)F(u)=\\sum_{x=0}^{N-1}f(x)e^{-j\\frac{2\\pi ux}{N}}\\tag{9}F(u)=x=0∑N−1​f(x)e−jN2πux​(9) 一维离散傅里叶逆变换 f(x)=1N∑u=0N−1F(u)ej2πuxN(10)f(x)=\\frac{1}{N}\\sum_{u=0}^{N-1}F(u)e^{j\\frac{2\\pi ux}{N}}\\tag{10}f(x)=N1​u=0∑N−1​F(u)ejN2πux​(10) 二维离散傅里叶变换 F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−j2π(uxM+vyN)(11)F(u,v)=\\sum_{x=0}^{M-1}\\sum_{y=0}^{N-1}f(x,y)e^{-j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{11}F(u,v)=x=0∑M−1​y=0∑N−1​f(x,y)e−j2π(Mux​+Nvy​)(11) 二维离散傅里叶逆变换 f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(uxM+vyN)(12)f(x,y)=\\frac{1}{MN}\\sum_{u=0}^{M-1}\\sum_{v=0}^{N-1}F(u,v)e^{j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{12}f(x,y)=MN1​u=0∑M−1​v=0∑N−1​F(u,v)ej2π(Mux​+Nvy​)(12)","s":"傅里叶变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":216},{"i":231,"t":"下图展示了点运算的主要应用:对比度拉伸 主要应用: 对比度拉伸 光度学标定 显示标定 轮廓线 裁剪","s":"点运算","u":"/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":216},{"i":233,"t":"使用齐次坐标对图像进行比例缩放。 全比例缩放是指x方向和y方向使用相同的比例系数。 当对图像进行放大时,会产生之前没有的像素,此时需要使用插值来解决。","s":"比例缩放","u":"/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":216},{"i":235,"t":"最近邻法插值​ 双线性插值(Bilinear)​ 例题:","s":"灰度级插值","u":"/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":216},{"i":238,"t":"线性变换​ 是指将输入图像的灰度值的动态范围按线性关系变换至指定范围或灰度的整个动态范围。 按比例线性变换 均匀线性变换 限幅线性变换 分段线性拉伸 非线性变换​ 对数拉伸可以拉伸低亮度区域,压缩高亮度区域。 指数拉伸可以拉伸高亮度区域,压缩低亮度区域。 注意,上述的拉伸是指新的图像在该灰度范围内分布的更均匀,即出现的灰度级更多;压缩的意义是指新的图像在该灰度范围内分布的更狭窄,即出现的灰度级更少。 例题: 答:该图像存在较亮的问题,灰度直方图分布在较高的区域。从直接灰度变换增强法的角度,我们可以采用指数函数变换,对高灰度区进行扩展。 提示 分析:该图像中没有低灰度的像素,全部集中在高灰度部分,因此使用指数函数变换将原来的集中的高灰度区域进行拉伸,扩展其灰度分布的范围,从而起到增强效果。","s":"直接灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":216},{"i":240,"t":"直方图均衡化​ 目的: 将一非均匀灰度概率密度分布的图像,通过某种灰度变换,将其变成一幅具有均匀灰度概率密度分布的目的图像。 步骤: 根据原始图像计算原始灰度密度分布函数rkr_krk​ 计算变换函数,即累积密度分布函数sks_ksk​ 计算均衡化后的灰度级s(k)s(k)s(k),即使用以下公式进行均衡化映射: s(k)=ceil(sk×L−1)(13)s(k)=\\mathbf{ceil}(s_k\\times L-1)\\tag{13}s(k)=ceil(sk​×L−1)(13) 其中,LLL是原直方图中灰度级数。 画出最终均衡化后的直方图 例题: 直方图规定化​ 目的: 调整原始图像的直方图使其符合某一规定的直方图的要求。 思想: 将原始图像和规定图像进行均衡化后,二者的灰度概率密度分布相同,进行对应映射即可。 步骤: 对原始图像进行均衡化,得到映射后的s(k)s(k)s(k) 对规定的图像直方图进行均衡化,得到映射后的z(k)z(k)z(k) 由于s(k)s(k)s(k)和z(k)z(k)z(k)都是归一化后的均匀分布,使用二者之间的就近原则将s(k)s(k)s(k)对应到给出的规定直方图的灰度级 画出规定化后的直方图 例题: 此时已经获得了原始图像均衡化后的灰度级与目标规定化输出的图像的灰度级之间的映射关系,最后一步按照rkr_krk​画出目标规定化输出的图像直方图即可。","s":"直方图灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":216},{"i":242,"t":"空域滤波可以根据作用分为平滑滤波以及锐化滤波。 平滑滤波​ 信息 噪声的特点: 随机性 叠加性 噪声与图像之间具有相关性 线性平滑滤波​ 邻域平均滤波 加权平均滤波 高斯滤波 非线性平滑滤波​ 中值滤波 最大值滤波 最小值滤波 锐化滤波​ 锐化滤波消除或减弱图像的低频分量从而增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。 梯度法 拉普拉斯算子,非线性滤波 定向滤波:检测特定方向边缘的滤波,通常在模板上表现为在该特定方向上模板值较大。 下面的表格展示了水平方向的定向锐化模板 -1 -1 -1 2 2 2 -1 -1 -1 下面的表格展示了对角方向的定向锐化模板 -1 2 -1 -1 2 -1 -1 2 -1","s":"空域滤波增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":216},{"i":244,"t":"图像从空域变换到频域后,低频分量对应图像中灰度值变化缓慢的区域,可能是图像的背景;高频分量表示图像中灰度值变化迅速的区域,可能是图像的噪声或物体的边缘。 在图像频谱(经过中心偏移的)中,中心代表低频信息,四周代表高频信息。","s":"第6章 图像频域增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":216},{"i":246,"t":"抑制、衰减高频分量,保留低频分量。 理想低通滤波器(ILPF)​ 提示 ILPF means Ideal Low Pass Filter. H(u,v)={1D(u,v)≤D00D(u,v)>D0(14)H(u,v)=\\begin{cases}1&D(u,v)\\leq D_0\\\\ 0&D(u,v)>D_0\\end{cases}\\tag{14}H(u,v)={10​D(u,v)≤D0​D(u,v)>D0​​(14) D(u,v)=u2+v2(15)D(u,v)=\\sqrt{u^2+v^2}\\tag{15}D(u,v)=u2+v2​(15) 在截止频率D0D_0D0​处垂直截止,通过频率和截止频率在D0D_0D0​处具有不连续性,通带和阻带之间没有过渡,会产生无限的振铃效应。 巴特沃斯低通滤波器(BLPF)​ 通带与阻带之间过度平坦,通过频率和截止频率之间没有明显的不连续性,不会出现振铃效应。 H(u,v)=11+(2−1)[D(u,v)D0]2n(16)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D(u,v)}{D_0}]^{2n}}\\tag{16}H(u,v)=1+(2​−1)[D0​D(u,v)​]2n1​(16) 其中,取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率D0D_0D0​。 即当D(u,v)D(u,v)D(u,v)达到截止频率时,D(u,v)D0=1\\frac{D(u,v)}{D_0}=1D0​D(u,v)​=1,此时H(u,v)=0.707H(u,v)=0.707H(u,v)=0.707。 指数低通滤波器(ELPF)​ 一般情况下,取H(u,v)H(u,v)H(u,v)下降到最大值的1/2时的D(u,v)D(u,v)D(u,v)作为截止频率。 H(u,v)=e−[D(u,v)D0]n(17)H(u,v)=e^{-[\\frac{D(u,v)}{D_0}]^n}\\tag{17}H(u,v)=e−[D0​D(u,v)​]n(17) 截止频率和通过频率之间具有更光滑的过渡,没有振铃现象。且指数低通滤波器比巴特沃斯低通滤波器衰减更快,处理后的图像更模糊。 梯形低通滤波器(TLPF)​ 由于在D0D_0D0​尾部包含高频分量D1D_1D1​,处理后图像的清晰度较理想低通滤波器有所改善,但会出现振铃效应, H(u,v)={1D(u,v)D1(18)H(u,v)=\\begin{cases}1&D(u,v)D_1\\end{cases}\\tag{18}H(u,v)=⎩⎨⎧​1D0​−D1​D(u,v)−D1​​0​D(u,v)D1​​(18)","s":"低通滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":216},{"i":248,"t":"抑制低频分量,保留高频分量。 理想高通滤波器(IHPF)​ H(u,v)={1D(u,v)>D00D(u,v)≤D0(19)H(u,v)=\\begin{cases}1&D(u,v)>D_0\\\\ 0&D(u,v)\\leq D_0\\end{cases}\\tag{19}H(u,v)={10​D(u,v)>D0​D(u,v)≤D0​​(19) 性质与理想低通滤波器一样,垂直截断,具有无限振铃效应。 巴特沃斯高通滤波器(BHPF)​ H(u,v)=11+(2−1)[D0D(u,v)]2n(20)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D_0}{D(u,v)}]^{2n}}\\tag{20}H(u,v)=1+(2​−1)[D(u,v)D0​​]2n1​(20) 通常采取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率,没有振铃效应。 指数高通滤波器(EHPF)​ H(u,v)=e−[D0D(u,v)]n(21)H(u,v)=e^{-[\\frac{D_0}{D(u,v)}]^n}\\tag{21}H(u,v)=e−[D(u,v)D0​​]n(21) 梯形高通滤波器(THPF)​ H(u,v)={1D(u,v)>D0D(u,v)−D1D0−D1D1≤D(u,v)≤D00D(u,v)D_0\\\\ \\\\ \\frac{D(u,v)-D_1}{D_0-D_1}&D_1\\leq D(u,v)\\leq D_0\\\\ \\\\ 0&D(u,v)D0​D1​≤D(u,v)≤D0​D(u,v)w2(24)H(u,v)=\\begin{cases}1&D(u,v) w_2\\end{cases}\\tag{24}H(u,v)=⎩⎨⎧​101​D(u,v)w2​​(24)","s":"带通和带阻滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":216},{"i":253,"t":"伪彩色图像的增强一般用于B超、石油开采以及安检方面。","s":"伪彩色图像的处理","u":"/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":216},{"i":257,"t":"退化原因​ 成像系统镜头聚焦不准产生的散焦 相机与景物之间的相对运动 成像系统存在的各种非线性因素以及系统本身的性能 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节 成像系统中存在的各种随机噪声 复原机理​ 图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。 图像复原与图像增强的区别和联系​ 联系:二者从表面上看都是为了提高图像的质量。 区别:二者在目的和过程上都有明显的区别。 在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。 在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。","s":"图像退化机理","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":216},{"i":259,"t":"图像f(x,y)f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)g(x,y)。 退化系统的一般特性: 线性特性。 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。","s":"图像退化模型","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":216},{"i":262,"t":"最佳阈值法​ 假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\\muμ,背景像素的正态分布概率密度函数的均值为ν\\nuν,则最佳阈值法确定的阈值为 t=μ+ν2(25)t=\\frac{\\mu +\\nu}{2}\\tag{25}t=2μ+ν​(25) 判别分析法​ 通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。","s":"阈值分割法","u":"/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":216},{"i":264,"t":"什么是图像的边缘? 图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。 边缘信号的类型? 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。","s":"边缘检测的基本原理","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":216},{"i":266,"t":"Robert算子​ 一阶导数算子。 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。 对噪声敏感,不能抑制噪声。 Sobel算子​ 一阶导数算子。 先进行加权平均,然后进行微分运算。 对噪声具有一定的抑制能力。 Prewitt算子​ 一阶导数算子。 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘。 对噪声具有一定的抑制能力。 Laplace算子​ 二阶导数算子。 使噪声成分得到加强,对噪声更敏感。 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。 Canny边缘检测​ 使用高斯滤波平滑图像 计算梯度幅值和方向 NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值 使用双阈值方法确定强边界和弱边界 滞后边界跟踪","s":"边缘检测算子","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":216},{"i":268,"t":"傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 如何在频域实现图像平滑 利用傅里叶变换将图像从空域转换为频域; 将频域图像进行中心偏移,使得低频信息在频谱中央; 利用滤波函数生成一个与图像大小相同的二维频域矩阵; 将图像的频域与滤波器的频域相应相乘; 将相乘后的频域再次逆平移到频域的原始位置; 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。 一阶边缘检测算子与Laplace算子的异同。 相同点:都可以检测边缘并且对噪声敏感 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。 空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。 分析采样和量化的过程,以及它们对数字化图像质量的影响。 采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。 对数字化图像质量的影响: 采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。 量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。 图像噪声的特点。 随机性 叠加性 噪声与图像之间具有相关性 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况? 线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。 线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。 伪彩色图像处理可以应用在哪些方面? B超 石油开采 安检","s":"课后习题中的问答题","u":"/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":216},{"i":270,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"","p":269},{"i":272,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":269},{"i":275,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":269},{"i":277,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":269},{"i":279,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":269},{"i":281,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":269},{"i":283,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 提示 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":269},{"i":287,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":269},{"i":289,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":269},{"i":291,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":269},{"i":294,"t":"在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。","s":"回顾文字生成的两种方法","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":292},{"i":296,"t":"Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。 什么是ARM ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。 若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。","s":"自回归方法(AR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":292},{"i":298,"t":"若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。","s":"非自回归方法(NAR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":292},{"i":300,"t":"VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。 大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(x∣y)P(x|y)P(x∣y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。 信息 总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。","s":"目前图像生成模型的共同点","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":292},{"i":302,"t":"Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。","s":"生成模型的共同结构","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":292},{"i":304,"t":"目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。 Text Encoder:根据输入的text prompt进行嵌入表示 Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况: 具有视觉意义但经过压缩比较模糊的图像 不具备视觉特征的矩阵(Latent Representation) Decoder:以上述的“中间产物”作为输入,生成出高清图像 通用框架的三个组成部分如下图所示: 再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。 其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。 根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。 Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding","s":"通用框架概览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":292},{"i":306,"t":"下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。 FID(Fréchet Inception Distance)​ FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。 在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。 FID=∥μ1−μ2∥22+tr(Σ1+Σ2−2(Σ1Σ2)12)(1)\\mathrm{FID}=\\left\\|\\mu_1-\\mu_2\\right\\|_2^2+\\mathrm{tr}\\left(\\Sigma_1+\\Sigma_2-2\\left(\\Sigma_1\\Sigma_2\\right)^{\\frac12}\\right)\\tag{1}FID=∥μ1​−μ2​∥22​+tr(Σ1​+Σ2​−2(Σ1​Σ2​)21​)(1) 其中,μ1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;Σ1\\Sigma_1Σ1​和Σ2\\Sigma_2Σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr(⋅)表示矩阵的迹运算。 高斯分布的均值向量从观测到的数据中计算出来的。对于一个nnn-维高斯分布,其均值向量可以表示为一个长度为nnn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。 值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。 CLIP Score​ CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型。 具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。","s":"Benchmark","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":292},{"i":308,"t":"Generation Model​ Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor。 中间产物是压缩图像​ 当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。 中间产物是Latent Representation​ 中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation。 这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。 Decoder​ Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料。 中间产物是压缩图像​ 当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。 中间产物是Latent Representation​ 当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。 具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。","s":"通用框架解析","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":292},{"i":310,"t":"在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。","s":"常见图像生成模型速览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":292},{"i":312,"t":"变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。 提示 VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。","s":"变分自编码器(VAE)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":292},{"i":314,"t":"基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。 注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。","s":"基于流的生成模型(Flow-Based Generative Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":292},{"i":316,"t":"GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。","s":"生成对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":292},{"i":318,"t":"扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。 以DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。 Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。","s":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":292},{"i":320,"t":"提示 在以前的文章图像生成模型中已经大概介绍了目前SOTA的图像生成模型的共同点,并初步了解了Diffusion Model,在这篇文章中将详细讲解扩散模型的数学原理等。","s":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"","p":319},{"i":322,"t":"首先回顾一下扩散模型的基本概念和生成过程,可以大概分为两步: Forward Process:对训练集中的图片不断加入与图片shape相同的、从某随机分布中sample出的噪声,直至图片可以被认为是从该随机分布中sample出的矩阵。 Forward Process又叫做Diffusion Process,在这一步中产生的噪声-加入噪声的图像对可以用来训练Noise Predictor,即从有噪声的图像中预测出其中的噪声,再从输入中减去噪声得到降噪后的图片。 图像生成的原理 这一步的目的也同样在之前的文章图像生成模型中提到过:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。 Reverse Process:使用Diffusion Process训练的Noise Predictor,根据文字Prompt对从随机分布中sample出的图片大小的噪声图片进行降噪,得到原图。 值得注意的是,变分自编码器(Variational Auto-Encoder, abbr. VAE)与Diffusion Model非常相似:VAE对训练集中的原始图像使用Encoder将其变换为某种Latent Representation,这种Latent Representation的分布也是符合某种随机分布的,VAE再通过Decoder将期待生成的目标域图像还原出来。 在下面的文章中我们也会学习一下VAE的数学原理,从VAE到Diffusion Model的具体数学推导,可以参考胡老师推荐的论文Understanding Diffusion Models: A Unified Perspective。 下面我们以DDPM论文中的原图来分析DDPM的训练与推理过程。","s":"基本概念","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":319},{"i":324,"t":"循环开始,重复以下步骤; 首先从数据集中sample出原始图像x0\\mathbf{x}_0x0​; ttt是从1,…,T1,\\ldots,T1,…,T范围中sample出的一个integer; ϵ\\epsilonϵ是从Normal Distribution中sample出的与x0\\mathbf{x}_0x0​相同大小的噪声; 根据如下规则进行梯度下降,训练Noise Predictor: ∇θ∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon}-\\boldsymbol{\\epsilon}_{\\theta}(\\sqrt{\\bar{\\alpha}_{t}}\\mathbf{x}_{0}+\\sqrt{1-\\bar{\\alpha}_{t}}\\boldsymbol{\\epsilon},t)\\right\\|^{2}\\tag{1}∇θ​∥∥​ϵ−ϵθ​(αˉt​​x0​+1−αˉt​​ϵ,t)∥∥​2(1) 首先对x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​做weighted sum产生加入噪声后的图像。通常来说,αˉ1\\bar{\\alpha}_1αˉ1​至αˉT\\bar{\\alpha}_TαˉT​是递减的,当在第2步中sample到的ttt越大,则原始图像x0\\mathbf{x}_0x0​对新图像的贡献越大。 ϵθ\\epsilon_{\\theta}ϵθ​是Noise Predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的Ground Truth就是第3步中sample出的噪声ϵ\\epsilonϵ; 直至噪声预测模型ϵθ\\epsilon_\\thetaϵθ​训练至收敛。","s":"训练过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":319},{"i":326,"t":"从Normal Distribution中sample出图片大小的噪声xT\\mathbf{x}_TxT​; ttt从T,…,1T,\\ldots,1T,…,1范围循环TTT次; 对与每一次以ttt计数的循环,若t>1t>1t>1,则从Normal Distribution中sample出z\\mathbf{z}z,否则z=0\\mathbf{z}=\\mathbf{0}z=0; 根据如下公式得到降噪后的图像: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtz(2)\\mathbf{x}_{t-1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t}-\\frac{1-\\alpha_{t}}{\\sqrt{1-\\bar{\\alpha}_{t}}}\\boldsymbol{\\epsilon}_{\\theta}(\\mathbf{x}_{t},t)\\right)+\\sigma_{t}\\mathbf{z}\\tag{2}xt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​,t))+σt​z(2) 其中,xt\\mathbf{x}_txt​代表上一步骤中输出的降噪后的图像,xt−1\\mathbf{x}_{t-1}xt−1​代表当前步骤即将输出的降噪后的图像,ϵθ\\epsilon_\\thetaϵθ​代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​以及α1,α2,...αT\\alpha_1,\\alpha_2,...\\alpha_Tα1​,α2​,...αT​是两组权重序列; 结束本次for循环; 当t=1t=1t=1时,得到x0\\mathbf{x}_0x0​,即最终降噪后的图像。","s":"推理过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":319},{"i":328,"t":"参考资料:Sampling for Text Generation","s":"生成模型中的采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"","p":327},{"i":330,"t":"生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。 没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。","s":"引言","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":327},{"i":332,"t":"生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如: 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。","s":"为什么需要采样?","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":327},{"i":334,"t":"概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。 在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。 当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。","s":"长尾效应","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":327},{"i":336,"t":"为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。","s":"采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":327},{"i":338,"t":"温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。 假设模型的原始概率分布为 p(xi)p(x_i)p(xi​),那么通过温度调整后的概率分布可以表示为: p′(xi)=exp⁡(log⁡(p(xi))T)∑jexp⁡(log⁡(p(xj))T)p'(x_i) = \\frac{\\exp\\left(\\frac{\\log(p(x_i))}{T}\\right)}{\\sum_j \\exp\\left(\\frac{\\log(p(x_j))}{T}\\right)}p′(xi​)=∑j​exp(Tlog(p(xj​))​)exp(Tlog(p(xi​))​)​ p(xi)p(x_i)p(xi​):表示原始模型对第 iii 个选项的预测概率。 TTT:温度参数,一般是一个正数。 当 T>1T > 1T>1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1T<1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。","s":"温度(Temperature)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":327},{"i":340,"t":"Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。 Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下: 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_kCk​ 对于 CkC_kCk​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项。 公式化表示如下: Ck={wi∣pi is among the top k probabilities in P}C_k=\\left\\{w_i \\mid p_i \\text{ is among the top k probabilities in }P\\right\\}Ck​={wi​∣pi​ is among the top k probabilities in P} pi′=pi∑wj∈Ckpj for wi∈Ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_k} p_j} \\text { for } w_i \\in C_kpi′​=∑wj​∈Ck​​pj​pi​​ for wi​∈Ck​ 其中, pi′p_i^{\\prime}pi′​​ 是重新归一化后的概率。","s":"Top-k 采样","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":327},{"i":342,"t":"Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),…,(wV,pV)}\\left\\{\\left(w_1, p_1\\right),\\left(w_2, p_2\\right), \\ldots,\\left(w_V, p_V\\right)\\right\\}{(w1​,p1​),(w2​,p2​),…,(wV​,pV​)} ,其中 p1≥p2≥…≥pVp_1 \\geq p_2 \\geq \\ldots \\geq p_Vp1​≥p2​≥…≥pV​ 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 ppp,设这些候选项的集合为 CpC_pCp​ 对于 CpC_pCp​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项 Cp={wi∣∑j=1ipj≥p}C_p=\\left\\{w_i \\mid \\sum_{j=1}^i p_j \\geq p\\right\\}Cp​={wi​∣j=1∑i​pj​≥p} pi′=pi∑wj∈Cppj for wi∈Cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_p} p_j} \\text { for } w_i \\in C_ppi′​=∑wj​∈Cp​​pj​pi​​ for wi​∈Cp​ 其中,pi′p_i^{\\prime}pi′​ 是重新归一化后的概率。","s":"Top-p 采样(Nucleus Sampling)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":327},{"i":344,"t":"采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。","s":"结论","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":327},{"i":346,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"","p":345},{"i":349,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":345},{"i":351,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":345},{"i":353,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":345},{"i":357,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":345},{"i":359,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":345},{"i":361,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":345},{"i":363,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":345},{"i":365,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":345},{"i":367,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":345},{"i":370,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":345},{"i":372,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":345},{"i":375,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":345},{"i":377,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":345},{"i":379,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":345},{"i":381,"t":"信息 参考链接: Illustrated: Self-Attention 动图轻松理解Self-Attention(自注意力机制)","s":"自注意力(Self-Attention)","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"","p":380},{"i":384,"t":"CNN模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个CNN模型的架构,具有较强的固定性。 信息 在视觉中,输入大多为数字图像,其形状可以大致分为由尺寸和通道数来决定。 从输入图像的尺寸看,当CNN中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如FCN(Fully Convolution Network),FCN通过最后通过反卷积将tensor还原到原始图像尺寸,即在CNN中,输入与输出(下游任务的要求)都影响着CNN网络的结构。 从通道数看,CNN本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的CNN模型,但在测试阶段分别使用通道数为 1 和 6 的数据进行推理的情形为例,进行分析: 通道数为1的测试集: 情况: 如果使用通道数为 1 的数据进行推理,即灰度图像,而模型在训练时是使用 RGB 数据集训练的,模型可能会受到一些影响。 解释: 模型可能在训练时学到了关于颜色的特定信息,而在测试时,如果输入是灰度图像,那些颜色信息将不可用。 建议: 在这种情况下,模型可能会失去对颜色信息的敏感性,可能需要进行进一步的调整或微调,以适应灰度图像的特性。 通道数为6的测试集: 情况: 如果使用通道数为 6 的数据进行推理,模型可能会面临额外的挑战,因为它在训练时只见过 3 个通道的数据。 解释: 模型在训练时学到的权重是基于 3 个通道的数据的,对于额外的通道,模型可能无法有效利用这些信息。 建议: 对于通道数不匹配的情况,可以考虑进行通道的适当组合或调整。这可能包括降低通道数(例如,只使用前 3 个通道),或者通过某种方式将 6 个通道映射到 3 个通道,例如通过某种特定的数据预处理。 当模型的输入更复杂(sophisticated),是长度不定的向量序列(sequence)时,CNN不能很好地处理,且不能解决输出由输入和模型自行决定的下游任务,如生成类任务。","s":"输入与输出的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":380},{"i":386,"t":"CNN中存在局部连接和权值共享的归纳偏置: 局部连接:CNN使用卷积层通过滑动卷积核在输入上进行局部感受野的操作。每个神经元只与输入的一小部分区域相连,这意味着每个神经元只能接触到局部的上下文信息。 权值共享: 权值共享的主要思想是,对于输入图像的不同位置使用相同的权重参数进行卷积操作。这意味着,无论卷积操作发生在图像的左上角、右下角,或者其他任何位置,都使用相同的卷积核进行权值计算。CNN的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得CNN具有更强的归纳偏置。 提示 在多通道卷积中,卷积核不同通道之间的权重参数是独立的。这使得网络能够学习不同通道之间的特征组合。这种设计有效地捕捉了输入数据中的多通道信息,提高了网络的表达能力。 CNN的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得CNN更适用于图像处理等任务。但也正是这种设计理念,使得CNN在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此Self-Attention应运而生,允许每个位置关注到序列中地所有其他位置。这种全局关联性质使得Transformer能够捕捉序列中的长距离依赖关系。","s":"关联上下文信息的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":380},{"i":389,"t":"A self-attention module takes in nnn inputs and returns nnn outputs. What happens in this module? In layman’s terms, the self-attention mechanism allows the inputs to interact with each other (“self”) and find out who they should pay more attention to (“attention”). The outputs are aggregates of these interactions and attention scores. Self-Attention接受任意向量数量的向量序列的输入,输出每一个向量所有向量(包括自身)的注意力分数。这使得Self-Attention在捕捉长距离依赖和处理序列中的全局关系时非常有效。","s":"什么是Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":380},{"i":391,"t":"自注意力机制的核心思想是为序列中的每个向量分配一个权重(即注意力分数),该权重表示该元素与其他元素的关联强度。这个权重是通过计算输入序列中所有元素与当前元素之间的关系来确定的。通常,这个计算过程使用一个可学习的权重矩阵来完成,即用来生成Key,Query以及Value的权重矩阵。","s":"Self-Attention的核心思想","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":380},{"i":393,"t":"信息 定性分析详见文末。 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。 定义输入​ Self-Attention的输入是向量序列,其向量数量是任意的,计算每个输入向量之间的注意力分数。在本例中输入向量个数为3,同时为了统一性分析,计输入向量个数为batchbatchbatch个。 # define the input, which has a shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) 初始化权重矩阵​ 每个输入向量都会与3个权重向量做乘法得到3个新的向量,分别为key,query以及value。在本例中将新的向量维度设为3,由于输出的k、q、v矩阵大小均为(3,3)(3, 3)(3,3),因此每个权重矩阵的形状应该是(4,3)(4, 3)(4,3)。为了统一性分析,计key,query以及value各向量维度为numnumnum。 In a neural network setting, these weights are usually small numbers, initialised randomly using an appropriate random distribution like Gaussian, Xavier and Kaiming distributions. This initialisation is done once before training. 在实际应用中,权重通常是较小的数字,通过适当的随机分布(比如高斯、Xavier和Kaiming分布)进行随机初始化。 # define the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) 计算key,query以及value​ # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) 计算原始的注意力分数​ 我们要为每一个输入向量计算它对所有向量的注意力分数,包括对自身的。 原始注意力分数的计算方式为,使用自身的query分别与所有向量的key做内积(dot product),得到的scalar数量与输入向量个数相同,都为batchbatchbatch,即scores矩阵的形状应为(batch,batch)(batch, batch)(batch,batch)。 # compute raw self-attention scores scores = queries @ keys.T print(\"attention scores:\\n\", scores) 注意,代码中提供的是计算所有向量的注意力分数,而图中演示的只是计算input #1的注意力分数。 对每一个向量计算出的注意力分数做softmax​ # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) 将注意力分数与对应的value相乘​ 每一个输入向量对所有batchbatchbatch个向量计算得到的注意力分数,都要与其对应的value向量相乘,计算加权的注意力分数。最终的注意力分数矩阵的形状应为(batch,num)(batch, num)(batch,num)。 # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) 加权注意力分数求和​ 最后一步,对于每个向量得到的加权注意力分数进行求和,得到维度为numnumnum的注意力分数向量,考虑到有batchbatchbatch个输入向量,因此最终的注意力分数矩阵的形状为(batch,num)(batch, num)(batch,num)。 根据推导,显然,最终Self-Attention的输出向量维度与value向量的维度相同,输出向量的数量与输入向量的数量相同。 # compute outputs outputs = weighted_values.sum(dim=0) 总结​ As mentioned in the above paragraph, we don’t only use dot product to find relevance. But we scale it as well by a factor of the square root of key dimension dk. This helps in making sure that the dot-products between query and key don’t grow too large for dk. If the dot product becomes too large then the softmax output will be very small. To avoid this, we scale the dot product. 在计算dot product后,为了避免点积运算经过softmax后的输出太小,在点积后除以key向量维度的平方根来进行缩放。 Attention(Q,K,V)=softmax(QKTdk)V(1)Attention(Q,K,V)=\\textit{softmax}(\\frac{QK^T}{\\sqrt{d_k}})V \\tag{1}Attention(Q,K,V)=softmax(dk​​QKT​)V(1) 完整代码​ # simple code for Self-Attention import torch import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plot # define the input, which has the shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) # initialize the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) # compute raw self-attention score scores = queries @ keys.T print(\"attention scores:\\n\", scores) # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) # compute outputs outputs = weighted_values.sum(dim=0)","s":"Self-Attention的实现","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":380},{"i":395,"t":"多头自注意力机制是对自注意力机制的扩展,假设扩展成为nnn -head self-attention,则对每个输入向量生成对应的key,query和value后,再次使用nnn个可学习的权重矩阵生成nnn个不同的key0,...,keyn−1key^{0}, ..., key^{n-1}key0,...,keyn−1,query0,...,queryn−1query^{0}, ..., query^{n-1}query0,...,queryn−1以及value0,...,valuen−1value^{0}, ..., value^{n-1}value0,...,valuen−1。 在计算attention score时,使用每一个query查询对应的key,即query0query^{0}query0只与其他每一个输入向量的key0key^{0}key0做dot product。","s":"Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":380},{"i":397,"t":"Self-Attention可以看作是复杂化的CNN,CNN只能在感受野范围内考虑上下文信息,而Self-Attention可以自己学习感受野。","s":"Self-Attention与CNN的对比","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":380},{"i":399,"t":"自注意力机制(Self-Attention Mechanism)是深度学习领域中的一种重要机制,尤其在处理序列数据和图像特征时展现出了强大能力。下面将以一个典型的自注意力机制为例,使用 Transformer 架构中的多头自注意力(Multi-Head Self-Attention)来说明其计算过程,以帮助理解其工作原理。假设我们的输入是一个序列,比如文本序列,其长度为 LLL,每个词向量的维度为 DDD​。 信息 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。","s":"Self Attention 的计算","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":380},{"i":401,"t":"假设我们有一个文本序列,长度为 LLL,每个词表示为一个 DDD 维的向量。那么,整个输入的形状可以表示为 L×DL \\times DL×D 的矩阵。","s":"输入形状","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":380},{"i":403,"t":"自注意力机制的核心思想是让序列中的每个元素(词向量)能够关注到序列中的其他元素,从而更好地理解它们之间的关系。具体来说,它通过计算三个向量——查询(Query,Q)、键(Key,K)和值(Value,V)来进行。 Query、Key、Value的生成: 首先,通过矩阵乘法,将输入的词向量矩阵分别与三个不同的权重矩阵相乘,生成 Q、K、V 三个矩阵。假设权重矩阵的维度均为 D×dkD \\times d_kD×dk​(其中 dkd_kdk​ 是查询和键的维度),那么 Q、K、V 的形状均为 L×dkL \\times d_kL×dk​。 计算注意力权重: 接下来,计算 Q 与 K 之间的相似度,通常使用点积(Dot Product)的方式,即每个查询向量 Q 与所有键向量 K 进行点积。点积的结果是一个 L×LL \\times LL×L 的矩阵,其中的每个元素表示查询向量与键向量之间的相似度。为了使这个矩阵中的元素处于同一尺度,通常会除以 dk\\sqrt{d_k}dk​​,以避免过大的点积值导致 softmax 函数饱和。 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。 加权求和: 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。","s":"自注意力机制的计算步骤","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":380},{"i":405,"t":"在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。","s":"多头自注意力","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":380},{"i":407,"t":"假设输入的文本序列长度为 L=5L=5L=5,每个词向量的维度为 D=512D=512D=512,dk=512d_k=512dk​=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \\times 5125×512。在计算注意力权重时,得到的矩阵形状为 5×55 \\times 55×5。最后的注意力输出形状同样为 5×5125 \\times 5125×512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。 自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。","s":"示例","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":380},{"i":409,"t":"提示 参考资料:https://blog.csdn.net/yeziyezi210/article/details/103864518 自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。 防止注意力机制关注填充(padding)标记 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中 在特定任务中屏蔽某些不相关的输入","s":"自注意力中的掩码 Mask","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":380},{"i":411,"t":"提示 在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。","s":"自监督学习(Self-Supervised Learning)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"","p":410},{"i":413,"t":"自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。 自监督学习的基本原理是,通过对输入数据进行某种变换或操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。","s":"介绍","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":410},{"i":415,"t":"下面以BERT为例,介绍自监督模型。","s":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":410},{"i":417,"t":"BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。 BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。 使用 BERT 的一般步骤包括: 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。","s":"结构","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":410},{"i":419,"t":"Masking Input​ BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。 BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。 L=−1N∑i=1Nyilog⁡(pi)(1)L=-\\frac1N\\sum_{i=1}^Ny_i\\log(p_i)\\tag{1}L=−N1​i=1∑N​yi​log(pi​)(1) 其中: NNN是输出的概率分布向量的维度。 yiy_{i}yi​是概率分布向量标签。 pip_{i}pi​是模型预测的概率分布向量。 Next Sentence Prediction​","s":"Self-Supervised Pretraining","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":410},{"i":421,"t":"在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。 首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。 Benchmark: GLUE​ GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。 MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。 QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。 QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。 RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。 STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。 CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。 MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。 SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。 WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。 GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。 Downstream Tasks​ Sentiment Analysis​ BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。 下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。 立场分析​ Extraction-based Question Answering​ BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。 具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。 其他应用​ 虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。","s":"Fine-tuning","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":410},{"i":423,"t":"BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding。 BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。 ——来自讯飞星火大模型 虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。 在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。 因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。 总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。 ——来自腾讯混元大模型","s":"Why does BERT work?","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":410},{"i":425,"t":"GPT的结构是Transformer的Decoder部分,可以承担生成的任务。 GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。","s":"GPT: Generative Pre-trained Transformer","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":410},{"i":427,"t":"提示 输入:shape为[5,5,3][5, 5, 3][5,5,3]的图像 输出要求:shape为[5,5,4][5, 5, 4][5,5,4]的feature map 使用3×33 \\times 33×3卷积核,padding=1,stride=1padding=1, stride=1padding=1,stride=1","s":"深度可分离卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"","p":426},{"i":429,"t":"卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3) 其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算 不考虑卷积偏置,参数量为 3×3×3×4=108(1)3 \\times 3 \\times 3 \\times 4 = 108 \\tag{1}3×3×3×4=108(1)","s":"常规卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":426},{"i":431,"t":"使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为 3×3××3=27(2)3 \\times 3 \\times \\times 3 = 27 \\tag{2}3×3××3=27(2) 代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可","s":"逐通道卷积-Depthwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":426},{"i":433,"t":"使用1×11 \\times 11×1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为 1×1×3×4=12(3)1 \\times 1 \\times 3 \\times 4 = 12 \\tag{3}1×1×3×4=12(3) 提示 图片源自知乎","s":"逐点卷积-Pointwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":426},{"i":437,"t":"σ(x)=11+e−x(1)\\sigma(x) = \\frac{1}{1 + e^{-x}} \\tag{1}σ(x)=1+e−x1​(1) dσdx=σ (1−σ)(2)\\frac{{\\rm d}\\sigma}{{\\rm d}x} = \\sigma \\space (1 - \\sigma) \\tag{2}dxdσ​=σ (1−σ)(2) 优点:可以将数据压缩至[0, 1)区间内,有较大实用意义 致命问题:在输入值较小或较大时,Sigmoid函数的梯度趋近于零,会导致网络参数长时间得不到更新,即梯度弥散问题 from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.sigmoid(x) # 当x为100时,sigmoid(x)就接近于0了","s":"Sigmoid函数 / Logistic函数","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":434},{"i":439,"t":"f(x)={0x<0xx≥0(3)f(x) = \\begin{cases} 0 & x < 0\\\\ x & x \\geq 0\\\\ \\end{cases} \\tag{3}f(x)={0x​x<0x≥0​(3) df(x)dx={0x<01x≥0(4)\\frac {{\\text d}f(x)}{{\\text d}x} = \\begin{cases} 0 & x < 0\\\\ 1 & x \\geq 0\\\\ \\end{cases} \\tag{4}dxdf(x)​={01​x<0x≥0​(4) from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.relu(x)","s":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":434},{"i":442,"t":"L2范数是对元素求平方和后再开根号,需要.pow(2)后才可作为损失函数 微小的误差可能对网络性能带来极大的影响 LossMSE=∑[y−f(x)]2(5)Loss_{MSE} = \\sum{[{y - f(x)]^2}} \\tag{5}LossMSE​=∑[y−f(x)]2(5) ∥y−f(x)∥2=∑[y−f(x)]22(6)\\Vert y - f(x) \\Vert_2 = \\sqrt[2]{\\sum{[y - f(x)]^2}} \\tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6)","s":"Mean Squared Error 均方误差","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":434},{"i":444,"t":"信息熵​ Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。 It's a measure of surprise, higher entrpoy means less information and higher uncertainty. 假设一个离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率为PiP_iPi​,则其信息熵的定义为 H(P)=−∑inPi log2(Pi)=∑inPi log2(1Pi)(7)\\begin{align} H(P) &= -\\sum_i^n{P_i}\\space{log_2(P_i)} \\\\ &= \\sum_i^n{P_i}\\space{log_2({\\frac{1}{P_i}}}) \\tag{7} \\end{align}H(P)​=−i∑n​Pi​ log2​(Pi​)=i∑n​Pi​ log2​(Pi​1​)​(7) KL散度​ 在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。 存在两个概率分布P和Q,其离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率分别为Pi,QiP_i,Q_iPi​,Qi​. KL散度是非对称的,即 DKL(P ∣∣ Q)≠DKL(Q ∣∣ P)(8)D_{KL}(P \\space || \\space Q) \\neq D_{KL}(Q \\space || \\space P)\\tag{8}DKL​(P ∣∣ Q)=DKL​(Q ∣∣ P)(8) DKL(P ∣∣ Q)=∑Pi [log2(Pi)−log2(Qi)](9)D_{KL}(P \\space || \\space Q) = \\sum{P_i\\space [log_2(P_i)-log_2(Q_i)]}\\tag{9}DKL​(P ∣∣ Q)=∑Pi​ [log2​(Pi​)−log2​(Qi​)](9) 特别的,DKL(PLabel ∣ QPred)D_{KL}(P_{Label} \\space | \\space Q_{Pred})DKL​(PLabel​ ∣ QPred​)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 交叉熵​ 衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为 H(P, Q)=H(P)+DKL(P ∣∣ Q)=−∑Pi log2(Qi)(10)\\begin{align} H(P, \\space Q) &= H(P) + D_{KL}(P\\space || \\space Q) \\\\ &= - \\sum{P_i}\\space{log_2({Q_i})} \\tag{10} \\end{align}H(P, Q)​=H(P)+DKL​(P ∣∣ Q)=−∑Pi​ log2​(Qi​)​(10) PyTorch中的CrossEntropyLoss​ torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss. import torch.nn as nn # 使用NLLLoss实现 nllloss = nn.NLLLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) predict = torch.log(torch.softmax(predict, dim=-1)) label = torch.tensor([1, 2]) nllloss(predict, label) # output: tensor(0.2684) # 使用CrossEntropyLoss实现 cross_loss = nn.CrossEntropyLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) label = torch.tensor([1, 2]) cross_loss(predict, label) # output: tensor(0.2684)","s":"Cross Entropy Loss 交叉熵损失","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":434},{"i":446,"t":"提示 正则化与权重衰退","s":"正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"","p":445},{"i":448,"t":"正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。 正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。 常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。 L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。","s":"什么是正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":445},{"i":450,"t":"min l(w,b) subject to ∥w∥12≤θ(1)min \\space l(w, b) \\space \\text{subject to} \\space \\Vert w \\Vert^2_1 \\leq \\theta \\tag{1}min l(w,b) subject to ∥w∥12​≤θ(1) L1正则化限制权重参数的L1范数小于某一特定的超参数 通常不限制偏移bbb 更小的超参数θ\\thetaθ意味着更强的正则项","s":"L1正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":445},{"i":452,"t":"L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示: l(w,b)+λ2∥w∥12(2)l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\tag{2}l(w,b)+2λ​∥w∥12​(2) 其中,λ\\lambdaλ是一个正则化系数超参数 此时在更新梯度时,具有如下公式 ∂∂w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\partial w} \\big(l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\big) = \\frac{\\partial l(w, b)}{\\partial w} + \\lambda w \\tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3) wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1-\\eta \\lambda)w_t + \\eta \\frac{\\partial l(w_t, b_t)}{\\partial w_t} \\tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4) 通常ηλ<1\\eta \\lambda < 1ηλ<1,因此又叫做权重衰退","s":"L2正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":445},{"i":455,"t":"AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。 标志着新的一轮神经网络热潮的开始","s":"背景","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":453},{"i":457,"t":"ReLU激活函数 Dropout正则化、丢弃法 最大池化MaxPooling","s":"新的概念和技术","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":453},{"i":459,"t":"由于输入的图片更大,设置了更大的卷积核尺寸和步长 更大的池化窗口,使用最大池化 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式 激活函数从Sigmoid改成了ReLU,减缓梯度消失 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化 使用了数据增强data augmentation","s":"与LeNet比较","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":453},{"i":462,"t":"kh=kw=1k_h=k_w=1kh​=kw​=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道 相当于输入形状为HW×ciHW \\times c_iHW×ci​,权重形状为co×cic_o \\times c_ico​×ci​的全连接层","s":"1x1 卷积","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":460},{"i":464,"t":"输入:ci×H×Wc_i \\times H \\times Wci​×H×W 核:co×ci×kh×kwc_o \\times c_i \\times k_h \\times k_wco​×ci​×kh​×kw​ 偏差:co×cic_o \\times c_ico​×ci​ 输出:co×H′×W′c_o \\times H' \\times W'co​×H′×W′ 输出H′以及W′H'以及W'H′以及W′的计算: shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(1)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1) 计算复杂度:O(co×ci×H×W×H′×W′)O(c_o \\times c_i \\times H \\times W \\times H' \\times W')O(co​×ci​×H×W×H′×W′) 总结: 输出的通道数是卷积层的超参数 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果 每个输出通道有独立的三维卷积核","s":"二维卷积层","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":460},{"i":467,"t":"K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kkk partitions, or folds, and then train and test the model kkk times, using a different fold for testing each time.","s":"What is k-fold cross-validation?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":465},{"i":469,"t":"In each iteration of k-fold cross-validation, one of the kkk folds is used as the test set, while the remaining k−1k-1k−1 folds are used as the training set. This process is repeated kkk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.","s":"How does k-fold cross-validation work?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":465},{"i":471,"t":"train set: to train the model and do parameter update validation set: to choose hyperparameter test set: the final test, only used once","s":"Summary","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":465},{"i":474,"t":"感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。","s":"什么是感知机","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":472},{"i":476,"t":"输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n)x=(x1​,x2​,...,xn​),表示一个样本的各个特征值。 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n)w=(w1​,w2​,...,wn​),表示每个特征对应的权重。 偏置项:偏置项bbb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=w∗x+bz=w*x+bz=w∗x+b。 阈值函数:将输入信号zzz带入阈值函数,如符号函数sign(z)sign(z)sign(z),即可得到分类结果。 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即 L(y,z)=max(0,−y∗z)(1)L(y,z)=max(0,-y*z) \\tag{1}L(y,z)=max(0,−y∗z)(1) 其中yyy是样本的真实标签,zzz是预测值。 参数更新:根据当前样本误分类情况来对权值向量www和偏置项bbb进行迭代更新。 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。 感知机训练流程伪代码如下所示: initialize w = 0 and b = 0 repeat if yi * zi <= 0 then w = w + yi * xi and b = b + yi end if until all classified correctly","s":"详细原理","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":472},{"i":478,"t":"感知机是一个二分类模型,最早的AI模型之一 求解算法等价于使用批量大小为1的梯度下降 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬","s":"总结","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":472},{"i":481,"t":"现代图片具有较大的像素,使用全连接层导致参数爆炸 针对图片的特征提取和模式识别,应具备以下原则: 平移不变性 局部性","s":"卷积的诞生&核心特征","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":479},{"i":483,"t":"将全连接层的一维输入和输出变换为二维的矩阵,公式如下 其中i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w代表输入神经元的二维索引坐标 yi,j=∑h,wwi,j,h,w∗xh,w(1)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \\tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1) 进一步将权重以及输入的索引变形,公式如下 其中a,ba,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接 yi,j=∑h,wwi,j,h,w∗xh,w=∑a,bvi,j,a,b∗xi+a,j+b(2)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \\tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2) 在公式(2)中,当i,ji,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。 为了解决这一问题,将公式(2)变形为如下 此时参数权值共享,满足了平移不变性 yi,j=∑a,bvi,j,a,b∗xi+a,j+b=∑a,bva,b∗xi+a,j+b(3)y_{i,j}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \\tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3) 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,ba,b可缩小范围,并不用来实现全连接,此时a,ba,ba,b代表着卷积核的感受野,即kernel size 此时完成了全连接层到卷积层的转换","s":"重新考察全连接层","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":479},{"i":485,"t":"对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接 yi,j=∑a,bva,b∗xi+a,j+b=∑a=−ΔΔ∑b=−ΔΔva,b∗xia,j+b(4)y_{i,j}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\\sum_{a=-\\Delta}^{\\Delta}\\sum_{b=-\\Delta}^{\\Delta}{v_{a,b}*x_{i_a,j+b}} \\tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−Δ∑Δ​b=−Δ∑Δ​va,b​∗xia​,j+b​(4) 卷积层输出形状的计算 shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(5)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5)","s":"总结","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":479},{"i":488,"t":"Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。 逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。","s":"什么是Logistic Regression","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":486},{"i":490,"t":"线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。","s":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":486},{"i":492,"t":"从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。","s":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":486},{"i":494,"t":"逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。 逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。 acc=∑I(predi==yi)len(Y)(1)acc = \\frac{\\sum{I(pred_i==y_i)}}{len(Y)} \\tag{1}acc=len(Y)∑I(predi​==yi​)​(1) 如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况: gradient = 0 if accuracy unchanged but weights changed: xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5 print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15 print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python gradient not continuous since the number of correct is not continunous: 当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。","s":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":486},{"i":497,"t":"卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。 假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。","s":"卷积对像素位置信息是敏感的","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":495},{"i":499,"t":"池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。 但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。","s":"池化层的作用","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":495},{"i":501,"t":"池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。 最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。","s":"池化的实现","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":495},{"i":504,"t":"concat与stack函数 stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度 concat函数对输入的张量在指定维度进行拼接,没有创建新的维度 # stack和concat函数 a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩 b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩 c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学) print(c.shape) # torch.Size([2, 4, 3]) d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩 print(d.shape) # torch.Size([4, 6]) list和tensor乘法不同之处 list的*乘法是复制元素,改变list的shape tensor的*乘法是对tensor中的元素进行点乘计算 a = torch.tensor([[3, 3, 3, 3]]) b = [3] # list的*乘是复制元素进行扩展 print(a * 3) # tensor([[9, 9, 9, 9]]) print(b * 3) # [3, 3, 3] 最大值 / 最小值索引:argmax / argmin 需要通过参数dim指定操作的维度,dim的理解 官方解释:The dimension to reduce 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度 # 最大值最小值索引 a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3] print(\"argmax output: \", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0]) Python zip函数 zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) c = zip(a, b) for i in c: print(i) ''' (tensor(1), tensor(4)) (tensor(2), tensor(5)) (tensor(3), tensor(6)) ''' a = torch.tensor([[1, 2, 3], [3, 2, 1]]) b = torch.tensor([[4, 5, 6], [6, 5, 4]]) c = zip(a, b) for i in c: print(i) ''' (tensor([1, 2, 3]), tensor([4, 5, 6])) (tensor([3, 2, 1]), tensor([6, 5, 4])) '''","s":"常用函数部分","u":"/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":502},{"i":507,"t":"LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。 LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。","s":"背景","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":505},{"i":509,"t":"import torch import numpy as np from torch import nn as nn from torch.nn import functional as F from d2l import torch as d2l from matplotlib import pyplot as plt import os os.environ['http_proxy'] = 'http://127.0.0.1:7890' os.environ['https_proxy'] = 'https://127.0.0.1:7890' class LeNetReshape(nn.Module): def __init__(self): super(LeNetReshape, self).__init__() def forward(self, x): return x.reshape(-1, 1, 28, 28) class LeNet5(nn.Module): def __init__(self): super(LeNet5, self).__init__() self.net = torch.nn.Sequential( LeNetReshape(), # 激活函数应为Sigmoid nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(), nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(), nn.Linear(120, 84), nn.Sigmoid(), nn.Linear(84, 10)) def forward(self, x): return self.net(x) def evaluate_accuracy_gpu(net, data_iter, device=None): if isinstance(net, torch.nn.Module): net.eval() if not device: device = next(iter(net.parameters())).device metric = d2l.Accumulator(2) for X, y in data_iter: if isinstance(X, list): X = [x.to(device) for x in X] else: X = X.to(device) y = y.to(device) metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计 return metric[0] / metric[1] def accuracy(y_hat, y): return torch.sum(y_hat.argmax(dim=1) == y) def train(net, train_iter, test_iter, num_epochs, lr, device): def init_weights(m): if type(m) == nn.Linear or type(m) == nn.Conv2d: nn.init.xavier_uniform_(m.weight) net.apply(init_weights) net.to(device) optimizer = torch.optim.SGD(net.parameters(), lr=lr) loss = torch.nn.CrossEntropyLoss() loss.to(device) animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], legend=['train loss', 'train acc', 'test acc']) timer, num_batches = d2l.Timer(), len(train_iter) metric = d2l.Accumulator(3) net.train() for epoch in range(num_epochs): for batch, (X, y) in enumerate(train_iter): timer.start() optimizer.zero_grad() X, y = X.to(device), y.to(device) y_hat = net(X) l = loss(y_hat, y) l.backward() optimizer.step() metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel()) timer.stop() train_l = metric[0] / metric[2] train_acc = metric[1] / metric[2] if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1: animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None)) test_acc = evaluate_accuracy_gpu(net, test_iter) animator.add(epoch + 1, (None, None, test_acc)) print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}') print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}') plt.show() batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) lr, num_epochs = 0.9, 10 lenet = LeNet5() train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())","s":"代码实现","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":505},{"i":511,"t":"在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。","s":"问题","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":505},{"i":513,"t":"原文链接:https://arxiv.org/pdf/2406.11838 参考资料:何恺明:Autoregressive Image Generation without Vector Quantization.","s":"Autoregressive Image Generation without Vector Quantization","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"","p":512},{"i":515,"t":"Conventional wisdom holds that autoregressive models for image generation are typically accompanied by vector-quantized tokens. We observe that while a discrete-valued space can facilitate representing a categorical distribution, it is not a necessity for autoregressive modeling. In this work, we propose to model the per-token probability distribution using a diffusion procedure, which allows us to apply autoregressive models in a continuous-valued space. Rather than using categorical cross-entropy loss, we define a Diffusion Loss function to model the per-token probability. This approach eliminates the need for discrete-valued tokenizers. We evaluate its effectiveness across a wide range of cases, including standard autoregressive models and generalized masked autoregressive (MAR) variants. By removing vector quantization, our image generator achieves strong results while enjoying the speed advantage of sequence modeling. We hope this work will motivate the use of autoregressive generation in other continuous-valued domains and applications.","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":512},{"i":517,"t":"由于语言先天的离散性质,在自然语言领域的自回归模型都是在离散的隐空间中学习数据的概率分布。因此,当自回归模型推广到连续的数据空间(如图像生成)进行发展时,研究人员将主要的精力放在了如何更有效地将连续数据离散化上,如 VQGAN、VQVAE、VAR、MaskGIT 等。 然而,本文作者从 Autoregressive 模型的性质本身(即根据先前的 token 预测下一个 token)出发进行思考,产生了自回归模型是否有必要与向量量化(Vector Quantization)表示相结合的疑问,作者发现,自回归生成模型与 token 是离散表示的还是连续表示的并没有关系,真正需要解决的问题是如何对每个 token 的概率分布进行建模,同时该概率分布可以通过损失函数来学习和约束(训练),并用于从中进行采样(生成)。","s":"研究动机","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":512},{"i":519,"t":"本文提出的模型融合了目前图像生成领域的三大主流范式的思想,分别为自回归生成、掩码生成以及扩散生成: 模型首先根据自回归模型性质为每个 token 生成条件向量(conditional vector)zzz 之后使用扩散过程建模每个 token 的概率分布 最后结合掩码生成的思想加速训练和推理过程","s":"主要方法与实现","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":512},{"i":521,"t":"具体而言,如下图所示,假设连续值向量 x∈Rdx \\in \\mathbb{R}^dx∈Rd,是当前位置要预测的 token。自回归模型在这个位置产生一个条件向量 z∈RDz \\in \\mathbb{R}^Dz∈RD​​ 。 本文使用 Diffusion Loss 根据 zzz 对 xxx 建模概率分布 p(x∣z)p(x \\mid z)p(x∣z)​ 。 L(z,x)=Eε,t[∥ε−εθ(xt∣t,z)∥2]L(z, x)=\\mathbb{E}_{\\varepsilon, t}\\left[\\left\\|\\varepsilon-\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)\\right\\|^2\\right]L(z,x)=Eε,t​[∥ε−εθ​(xt​∣t,z)∥2] 其中: ε∈Rd\\varepsilon \\in \\mathbb{R}^dε∈Rd 是从 N(0,I)\\mathcal{N}(0, \\mathbf{I})N(0,I) 采样的噪声向量 xt=αˉtx+1−αˉtεx_t=\\sqrt{\\bar{\\alpha}_t x}+\\sqrt{1-\\bar{\\alpha}_t} \\varepsilonxt​=αˉt​x​+1−αˉt​​ε,其中 αˉt\\bar{\\alpha}_tαˉt​ 定义了一个 noise schedule ttt 是 noise schedule 的时间步 噪声预测网络 εθ\\varepsilon_\\thetaεθ​ 由参数 θ\\thetaθ 控制,是一个小型 MLP 网络,εθ(xt∣t,z)\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)εθ​(xt​∣t,z) 表示此网络将 xtx_txt​ 作为输入,并且以 ttt 和 zzz​​​ 作为条件。MLP 网络的具体组成如下所示: 对于扩散过程,作者采用了 cosine 函数作为 noise schedule,在训练过程中设定为 1000 步,在推理过程中设定为 100 步。同时,Diffusion Loss 原生支持 CFG 策略。","s":"Diffusion Loss","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":512},{"i":523,"t":"在推理时,需要从分布 p(x∣z)p(x \\mid z)p(x∣z) 中采样样本。采样是通过逆扩散过程进行的: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt∣t,z))+σtδx_{t-1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t-\\frac{1-\\alpha_t}{\\sqrt{1-\\bar{\\alpha}_t}} \\epsilon_\\theta\\left(x_t \\mid t, z\\right)\\right)+\\sigma_t \\deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt​δ 这里 δ\\deltaδ 是从高斯分布 N(0,I)\\mathcal{N}(0, I)N(0,I) 中采样的, σt\\sigma_tσt​ 是时间步 ttt 的噪声水平。以 xT∼N(0,I)x_T \\sim \\mathcal{N}(0, I)xT​∼N(0,I) 开始,此过程生成一个样本 x0x_0x0​ 使得 x0∼p(x∣z)x_0 \\sim p(x \\mid z)x0​∼p(x∣z)​。","s":"采样","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":512},{"i":526,"t":"本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。 掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。","s":"结合掩码生成模型的思想 MAR","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":512},{"i":533,"t":"对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。","s":"MAR 模型速度与效果的 trade-off","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":512},{"i":535,"t":"相关链接 论文:arXiv 代码:GitHub 参考文献: Latent Diffusion Models论文解读 Stable Diffusion就是在这篇文章的基础上,使用LDM进行开发的。","s":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"","p":534},{"i":538,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":537},{"i":540,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":537},{"i":542,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用 语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":537},{"i":545,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":537},{"i":547,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":537},{"i":549,"t":"相关链接 论文:CVPR 2023 open access 代码:Piscart-AI-Research 文章的命名风格借鉴了CVPR 2022的文章Few Shot Generative Model Adaption via Relaxed Spatial Structural Alignment","s":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"","p":548},{"i":551,"t":"本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征且适应目标域的prompt,从而指导目标域生成器的训练。 This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility. 训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":548},{"i":554,"t":"Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。 few-shot​ 对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。 然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。 相关文献方法 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019. 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020. 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021. 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021. zero-shot​ 对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。 此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。 然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。","s":"Generative Model Adaption","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":548},{"i":556,"t":"Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。 然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。 Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。","s":"Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":548},{"i":559,"t":"IPL方法分两个阶段。 第一阶段:训练Latent Mapper​ 第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。 第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。 第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。 第二阶段:将Latent Mapper插入目标域生成器的训练过程​ 第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。","s":"概述","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":548},{"i":562,"t":"实战练习 Transformer实战练习,代码见Github仓库。 This is a practice of Transformer, follow the guide of Github Repo.","s":"Speaker Classification","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"","p":561},{"i":564,"t":"Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.","s":"Overview","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":561},{"i":566,"t":"The original dataset is VoxCeleb1. We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive. Arguments: data_dir: The path to the data directory. metadata_path: The path to the metadata. segment_len: The length of audio segment for training. The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data. data directory/ ├── mapping.json ├── metadata.json ├── testdata.json └── uttr-{random string}.pt","s":"Dataset","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":561},{"i":568,"t":"This is also the assignment solution of ML2021Spring HW4.","s":"Related","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":561},{"i":570,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"","p":569},{"i":572,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":569},{"i":575,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":569},{"i":577,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":569},{"i":579,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":569},{"i":581,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":569},{"i":583,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 提示 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":569},{"i":587,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":569},{"i":589,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":569},{"i":591,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":569},{"i":593,"t":"相关链接 论文:arXiv 代码:GitHub 参考资料: 54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读 【论文精读】Diffusion Model 开山之作DDPM","s":"NeurIPS 2020: Denoising Diffusion Probabilistic Models","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"","p":592},{"i":596,"t":"条件概率的定义​ 条件概率是指在给定另一个事件发生的条件下,某一事件发生的概率。条件概率通常用符号P(A∣B)P(A\\mid B)P(A∣B)表示,读作“在 B 发生的条件下 A 发生的概率”。 条件概率的计算公式为: P(A∣B)=P(A,B)P(B)P(A\\mid B)=\\frac{P(A,B)}{P(B)}P(A∣B)=P(B)P(A,B)​ 其中: P(A,B)P(A,B)P(A,B)是事件AAA、BBB同时发生的概率,也叫联合概率 P(B)P(B)P(B)是事件BBB独立发生的概率 全概率公式​ 对于事件AAA而言,假设有一组互斥且穷尽的条件事件B1,B2,…BnB_{1},B_{2},\\ldots B_{n}B1​,B2​,…Bn​构成一个完备事件组,则事件AAA的概率等于事件AAA在每个条件事件BiB_iBi​下发生的概率与该条件事件发生概率的乘积和。 P(A)=∑i=1nP(A∣Bi)⋅P(Bi)P(A)=\\sum_{i=1}^nP(A\\mid B_i)\\cdot P(B_i)P(A)=i=1∑n​P(A∣Bi​)⋅P(Bi​) 可以看出,全概率公式是由“因”(条件事件BiB_iBi​)推“果”(结果事件AAA)的过程,即当知道某结果事件的原因后,推断由该原因导致这件事发生的概率是多少。 贝叶斯公式​ 贝叶斯公式在观测到结果事件AAA发生后,计算其条件事件BiB_iBi​在事件AAA已经发生的条件下而发生的后验概率。 继续沿用上述全概率公式的符号定义,则有: P(Bi∣A)=P(A∣Bi)⋅P(Bi)P(A)P(B_i\\mid A)=\\frac{P(A\\mid B_i)\\cdot P(B_i)}{P(A)}P(Bi​∣A)=P(A)P(A∣Bi​)⋅P(Bi​)​ 其中: P(Bi)P(B_i)P(Bi​)以及P(A)P(A)P(A)称为先验概率 P(Bi∣A)P(B_i\\mid A)P(Bi​∣A)称为后验概率 P(A∣Bi)P(A\\mid B_i)P(A∣Bi​)称为似然","s":"先验概率与后验概率","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#先验概率与后验概率","p":592},{"i":598,"t":"条件概率的一般形式​ P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A)P(A,B,C)=P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid A,B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣A,B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid A,B)P(B,C∣A)=P(B∣A)⋅P(C∣A,B) 其中,第二行公式的推导如下: P(B,C∣A)=P(A,B,C)P(A)=P(A,B,C)P(A,B,C)P(C∣A,B)⋅P(B∣A)=P(B∣A)⋅P(C∣A,B)\\begin{align*} P(B,C \\mid A) &= \\frac{P(A,B,C)}{P(A)} \\\\ &= \\frac{P(A,B,C)}{\\frac{P(A,B,C)}{P(C \\mid A,B) \\cdot P(B \\mid A)}} \\\\ &= P(B \\mid A) \\cdot P(C \\mid A,B) \\end{align*}P(B,C∣A)​=P(A)P(A,B,C)​=P(C∣A,B)⋅P(B∣A)P(A,B,C)​P(A,B,C)​=P(B∣A)⋅P(C∣A,B)​ 高斯分布的KL散度​ 对于两个单一变量的高斯分布p∼N(μ1,σ12)p\\sim \\mathcal{N}(\\mu_1,\\sigma_1^2)p∼N(μ1​,σ12​)和q∼N(μ2,σ22)q\\sim \\mathcal{N}(\\mu_2,\\sigma_2^2)q∼N(μ2​,σ22​)而言,它们的KL散度定义为: DKL(p,q)=log⁡σ2σ1+σ12+(μ1−μ2)22σ22−12D_{KL}(p,q)=\\log\\frac{\\sigma_2}{\\sigma_1}+\\frac{\\sigma_1^2+(\\mu_1-\\mu_2)^2}{2\\sigma_2^2}-\\frac12DKL​(p,q)=logσ1​σ2​​+2σ22​σ12​+(μ1​−μ2​)2​−21​","s":"条件概率与高斯分布的KL散度","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#条件概率与高斯分布的kl散度","p":592},{"i":600,"t":"马尔科夫链指当前状态的概率只与上一时刻有关,例如若满足马尔科夫关系A→B→CA\\to B\\to CA→B→C,则有: P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A)P(A,B,C) =P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid B)P(B,C∣A)=P(B∣A)⋅P(C∣B)","s":"马尔科夫链条件概率形式","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#马尔科夫链条件概率形式","p":592},{"i":602,"t":"从任意高斯分布N(μ,σ2)\\mathcal{N}(\\mu,\\sigma^2)N(μ,σ2)采样xxx时,可以先从标准高斯分布N(0,1)\\mathcal{N}(0,1)N(0,1)中sample出zzz,再令 x=σ∗z+μx=\\sigma * z + \\mux=σ∗z+μ 优势: 由于线性变化,采样过程中对其他参数都有明确的导数,可以进行反向传播 可以通过线性变换来控制参数化的采样 标准正态分布具有易采样的性质","s":"参数重整化技巧","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#参数重整化技巧","p":592},{"i":604,"t":"提示 对于TensorFlow框架,可以使用TensorBoard实现可视化。 对于PyTorch框架,可以使用Visdom或TensorBoardX实现可视化,本篇主要讲述Visdom。","s":"Visdom可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"","p":603},{"i":606,"t":"pip install visdom","s":"安装Visdom","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#安装visdom","p":603},{"i":609,"t":"首先要通过终端启动Visdom,使用本机端口运行服务器。 以下二者均可。 visdom python -m visdom.server","s":"Visdom的启动","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#visdom的启动","p":603},{"i":611,"t":"from visdom import Visdom vis = Visdom() # 实例化 # 创建一条曲线,前两个参数分别为y轴数据、x轴数据,win参数是窗口的唯一标识,opt可选字典中可以给出窗口的title和legend vis.line([0.], [0.], win='win_id', opts=dict(title=\"win_title\")) # 在训练过程中的合适位置向初始化的曲线中喂数据 # viz.line([real_y_data], [global_step], win='win_id', update='append') # 查看训练loss vis.line([loss.item()], [epoch], win='win_id', update='append') # 对于非image数据,在传入visdom时仍需要先转化为numpy类型","s":"单窗口单曲线的可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口单曲线的可视化","p":603},{"i":613,"t":"from visdom import Visdom vis = Visdom() vis.line([[0., 0.]], [0.], win='win_id', opts=dic(title=\"win_title\", legend=[\"curve_name_1\", \"curve_name_2\"])) # 在训练过程中的合适位置向初始化的曲线中喂数据 viz.line([[y1, y2]], [global_step], win='win_id', update='append')","s":"单窗口多曲线的可视化","u":"/docs/Deep-Learning/实战练习/Visdom Visualization","h":"#单窗口多曲线的可视化","p":603},{"i":616,"t":"We present Visual AutoRegressive modeling (VAR), a new generation paradigm that redefines the autoregressive learning on images as coarse-to-fine “next-scale prediction” or “next-resolution prediction”, diverging from the standard raster-scan “next-token prediction”. This simple, intuitive methodology allows autoregressive (AR) transformers to learn visual distributions fast and can generalize well: VAR, for the first time, makes GPT-style AR models surpass diffusion transformers in image generation. On ImageNet 256×256 benchmark, VAR significantly improve AR baseline by improving Fréchet inception distance (FID) from 18.65 to 1.73, inception score (IS) from 80.4 to 350.2, with 20× faster inference speed. It is also empirically verified that VAR outperforms the Diffusion Transformer (DiT) in multiple dimensions including image quality, inference speed, data efficiency, and scalability. Scaling up VAR models exhibits clear power-law scaling laws similar to those observed in LLMs, with linear correlation coefficients near −0.998 as solid evidence. VAR further showcases zero-shot generalization ability in downstream tasks including image in-painting, out-painting, and editing. These results suggest VAR has initially emulated the two important properties of LLMs: Scaling Laws and zero-shot generalization. We have released all models and codes to promote the exploration of AR/VAR models for visual generation and unified learning.","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#摘要","p":614},{"i":618,"t":"通过回顾先前的视觉 Autoregressive 模型(即采用 next-token 范式进行生成),从 scaling laws 和性能的角度将其与 NLP 领域的 LLMs 进行比较,宏观上说明了传统视觉 AR 模型存在的问题。 传统视觉 AR 模型是否遵循 scaling laws 有待探索和验证 性能有待提升 上图展示了传统 Visual AR 模型在 scaling laws 方面的局限性,并以 FID 作为评价指标,展示了性能效果方面的不足。","s":"研究背景与动机","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#研究背景与动机","p":614},{"i":620,"t":"首先文章花费了大量篇幅来用数学语言描述以 next-token prediction 作为生成范式的传统视觉自回归模型的定义和流程,大致包括以下流程: 输入 raw image,Encoder 得到对应的 feature map。 f=E(im)f=\\mathcal{E}(im)f=E(im) 输入feature map,Quantizer 得到对应的量化 image token。 q=Q(f)q=\\mathcal{Q}(f)q=Q(f) 在量化步骤,会将每个特征向量映射到与其在欧几里得意义上最接近的 Codebook ZZZ 中的 code。 q(i,j)=(arg⁡min⁡v∈[V]∥lookup(Z,v)−f(i,j)∥2)∈[V]q^{(i,j)}=\\left(\\arg\\min_{v\\in[V]}\\|\\text{lookup}(Z,v)-f^{(i,j)}\\|_2\\right)\\in[V]q(i,j)=(argv∈[V]min​∥lookup(Z,v)−f(i,j)∥2​)∈[V] Decoder 通过接收在 Codebook 中查找得到的 f^\\hat{f}f^​ 生成重构的图像。 f^=lookup⁡(Z,q)\\hat{f}=\\operatorname{lookup}(Z,q)f^​=lookup(Z,q) im^=D(f^)\\hat{im}=\\mathcal{D}(\\hat{f})im^=D(f^​) L=∥im−im^∥2+∥f−f^∥2+λPLP(im^)+λGLG(im^)\\mathcal{L}=\\|im-i\\hat{m}\\|_2+\\|f-\\hat{f}\\|_2+\\lambda_\\text{P}\\mathcal{L}_\\text{P}(i\\hat{m})+\\lambda_\\text{G}\\mathcal{L}_\\text{G}(i\\hat{m})L=∥im−im^∥2​+∥f−f^​∥2​+λP​LP​(im^)+λG​LG​(im^) 下图展示了传统 VAR 方法与本文提出的 VAR 方法的对比。其中图(a)展示了 NLP 领域的 next-token prediction,图(b)展示了上述公式定义的 next-image-token prediction 的过程,包含量化与展平的步骤,图(c)展示了本文提出的 next-scale prediction。 文章发现了目前传统 VAR 模型存在的三个问题。 VQGAN 违反了 Autoregressive 的数学前提。Autoregressive 模型假设当前时间步的 token xtx_txt​ 只取决于其之前时间步的 token 前缀 (x1,x2,...,xt−1)(x_1, x_2, ..., x_{t-1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirectional)。而 VQGAN 中的 image encoder 直接从具有双向相关性(bidirectional)的 feature map 中进行量化和展平,因此得到的 image tokens 同样具有双向相关性,违反了数学假设。 作者在附录中检查了 VQGAN 模型在量化步骤之前的注意力层输出的图像注意力分数,证明了较强的双向相关性。 作者解释,这是因为在图像 VAE 以及其他类似的工作的自注意力层中,并没有使用任何注意力掩码机制,如 sequence mask 以及 causal attention 等,导致了双向相关性。 This is not surprising since the VQVAE model, trained to reconstruct images, leverages self-attention layers without any attention mask. Some work [67] has used causal attention in self-attention layers of a video VAE, but we did not find any image VAE work uses causal self-attention. image tokens 的空间结构性被破坏。由于先前的 VAR 工作均是采用类似于先列后行的一维顺序存储 image tokens 并进行 Autoregressive 生成,image tokens 的扁平化破坏了图像特征图固有的空间局部性。 时间复杂度过高,影响生成效率。使用传统的视觉 Autoregressive 方法生成 x=(x1,x2,…,xn×n)x=(x_1,x_2,\\ldots,x_{n\\times n})x=(x1​,x2​,…,xn×n​) 的 token 序列,需要 O(n2)\\mathcal{O}(n^{2})O(n2) 的注意力步骤以及 O(n6)\\mathcal{O}(n^{6})O(n6) 的计算复杂度。","s":"问题发现与提出","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#问题发现与提出","p":614},{"i":623,"t":"本文的工作重新考虑了以什么样的顺序生成图像。人类通常以分层的方式感知或创建图像,首先捕获全局结构,然后捕获局部细节。这种多尺度、由粗到精(coarse-to-fine)的方法很自然地给图像暗示了一种顺序。此外,受广泛使用的多尺度(multi-scale)设计工作的启发,本文将图像的自回归学习定义为下图展示的 next-scale prediction。 自回归过程从分辨率为 1×11\\times11×1​ 的 token map 开始,并逐步扩大分辨率:在每一步,Transformer 以之前生成的所有分辨率的 token maps 为条件预测下一大分辨率的 token map。 通过从 next-token prediction 策略转变为 next-scale prediction 策略,重新概念化了对图像的自回归建模。在这里,自回归单元是整个 token map,而不是传统方法的单个 token。先将特征图 f∈Rh×w×Cf \\in \\mathbb{R}^{h \\times w \\times C}f∈Rh×w×C 量化为 KKK 个多尺度标记图 (r1,r2,…,rK)(r_1, r_2, \\ldots, r_K)(r1​,r2​,…,rK​),每个图的分辨率 hk×wkh_k \\times w_khk​×wk​ 逐步增加,最终达到 rKr_KrK​ 与原始特征图的分辨率 h×wh \\times wh×w 匹配。自回归似然性公式为: p(r1,r2,…,rK)=∏k=1Kp(rk∣r1,r2,…,rk−1)p(r_1, r_2, \\ldots, r_K) = \\prod_{k=1}^{K} p(r_k \\mid r_1, r_2, \\ldots, r_{k-1})p(r1​,r2​,…,rK​)=k=1∏K​p(rk​∣r1​,r2​,…,rk−1​) 其中每个自回归单元 rk∈[V]hk×wkr_k \\in [V]^{h_k \\times w_k}rk​∈[V]hk​×wk​ 是包含 hk×wkh_k \\times w_khk​×wk​ 个标记的第 kkk 个尺度的标记图,而序列 (r1,r2,…,rk−1)(r_1, r_2, \\ldots, r_{k-1})(r1​,r2​,…,rk−1​) 作为 rkr_krk​ 的“前缀”。在第 kkk 个自回归步骤中,所有 rkr_krk​ 中的 h_k \\times w_k 标记的分布将并行生成,并以 rkr_krk​ 的前缀和关联的第 kkk 个位置嵌入图为条件。如下图所示。 请注意,在 VAR 的训练中,使用逐块的因果注意力掩码,以确保每个 rkr_krk​ 只能关注其前缀 r≤kr_{\\leq k}r≤k​,从而满足 Autoregressive 模型的数学假设前提。 本文在结构上的主要贡献是开发了适用于 next-scale prediction 的 multi-scale VQ quantizer,同时结合新的 VQ quantizer 提出了新的图像自回归生成模型,并进一步论证了该方法展示出的与 LLMs 类似的 scaling laws 能力。","s":"主要方法","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#主要方法","p":614},{"i":625,"t":"Multi-scale VQ quantizer​ 首先,需要设计一个满足多尺度要求的 VQ tokenizer,作者使用了与 VQVAE 相同的框架,并采用了改进的多尺度量化层,并加入了对 feature map 的残差设计:对 encoder 输出的 feature map 进行 interpolate 构建不同尺度的 feature map,不同 feature map 之间通过计算残差的方式进行连接,并结合 quantizer 得到离散序列。VQ quantizer(VAR tokenizer)的具体算法如下图所示。 VAR Transformer​ 作者将重点放在了 VAR tokenizer 的理念和设计上,在 VAR Transformer 中保持了与 GPT-2 和 VQGAN 相同的简洁设计,在结构设计上只融合了 adaptive normalization(AdaLN)。 在训练完 VQ tokenizer 后,需要在离散化后的序列上训练生成模型,上图中 r1,...,rkr_1,...,r_kr1​,...,rk​ 分别表示不同尺度的离散序列。作者将传统的单向自回归模型修改为双向与单向混合的模式,同一个尺度的图片内部使用双向 attention,token 彼此可见,不同尺度的图片之间使用单向 attention ,具有从粗粒度到细粒度的 causal dependency,保证了满足 Autoregressive 假设的数学前提。 单个尺度的图片可以一步生成,生成所需的迭代步数取决于 VQ tokenizer 设计的尺度层数 KKK。","s":"模型主要结构","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#模型主要结构","p":614},{"i":627,"t":"本文主要从视觉 Autoregressive 模型生成图像像素的顺序出发,重新思考,通过人类感知图像的方式设计了 next-scale 的生成范式,每一步迭代生成一张完整的图像,但生成图像的分辨率逐步提升,最终得到高像素目标图像。 对文章开篇提出的问题的解决: 使用 causal attention 对自注意力进行掩码,从而满足 Autoregressive 模型对时间序列的数学假设。 在 quantization 步骤使用二维的方式存储整个 image token map,保证了结构的完整性。 得益于多尺度思想的生成方式,时间复杂度和计算开销显著降低。以生成 n2n^2n2 个 image tokens 为例,传统的视觉 Autoregressive 生成需要 O(n2)\\mathcal{O}(n^2)O(n2) 次解码迭代和 O(n6)\\mathcal{O}(n^6)O(n6) 次总计算。相比之下,本文提出的 VAR 只需要 O(log(n))\\mathcal{O}(log(n))O(log(n)) 次迭代和 O(n4)\\mathcal{O}(n^4)O(n4)​ 次总计算量。 文章还论证了 VAR 模型展现出的与 LLMs 相同的 scaling laws 能力。","s":"总结","u":"/docs/Deep-Learning/论文笔记/Visual-Autoregressive-Modeling-Scalable-Image-Generation-via-Next-Scale-Prediction","h":"#总结","p":614},{"i":629,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"","p":628},{"i":632,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":628},{"i":634,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#安装依赖","p":628},{"i":636,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#下载预训练生成器","p":628},{"i":640,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的初始化","p":628},{"i":642,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":628},{"i":644,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":628},{"i":646,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-1","p":628},{"i":648,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":628},{"i":650,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":628},{"i":653,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":628},{"i":655,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":628},{"i":658,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":628},{"i":660,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":628},{"i":662,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":628},{"i":664,"t":"自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。","s":"图像生成:自回归模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"","p":663},{"i":666,"t":"自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。 假设有一个序列 x=(x1,x2,…,xT)x=\\left(x_1, x_2, \\ldots, x_T\\right)x=(x1​,x2​,…,xT​) ,自回归模型的目标是学习条件概率分布 p(xt∣x= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 }","s":"参考代码","u":"/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":788},{"i":795,"t":"将大数除法与进制转换相结合。 提示 北京大学机试真题,N诺链接 完整代码如下: #include using namespace std; string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 } int main() { string s; while (cin >> s) { vector vec; int len = s.size(); while (s != \"0\") { int remainder = (s[len - 1] - '0') % 2; vec.push_back(remainder); s = division(s, 2); len = s.size(); } if (vec.empty()) { cout << \"0\"; } else { for (auto it = vec.rbegin(); it != vec.rend(); it++) { cout << *it; } } cout << endl; } return 0; }","s":"扩展","u":"/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":788},{"i":798,"t":"树的性质: 一棵 N 个结点的树有 N-1 条边 树的总度数+1=树的结点数 树的度=树中度最大结点的度数 二叉树的性质: 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1 树转化为二叉树: 参考资料:知乎 加线。在所有的兄弟结点之间加一条线。 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子。 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。","s":"树","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":796},{"i":800,"t":"图的表示: 邻接矩阵 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性 邻接表的搜索 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。 Kruskal算法 Prim算法 最短路径 ​ ​","s":"图","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":796},{"i":802,"t":"提示 参考链接: 线性代数极简入门 《线性代数》高清教学视频 “惊叹号”系列 宋浩老师","s":"线性代数","u":"/docs/Tui-Mian/数学/线性代数","h":"","p":801},{"i":804,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1","s":"一、基础知识","u":"/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":801},{"i":806,"t":"线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 提示 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 提示 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"二、面试常考问题","u":"/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":801},{"i":809,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 提示 P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"面试常考问题","u":"/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":807},{"i":813,"t":"显著性目标检测Salient Object Detection,相当于语义分割中的二分类任务,只有前景和背景","s":"(一)SOD任务","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":810},{"i":815,"t":"下图为U-2-Net的整体结构 提示 residual [rɪˈzɪdjuəl] 在encoder阶段,每个block之后使用maxpooling下采样两倍 在decoder阶段,每个block之后使用双线性插值上采样两倍 下图为Residual U-block的结构 提示 卷积是如何改变输出的通道数的? 卷积核的通道数等于输入的通道数,卷积核的个数等于输出的通道数 图片来源知乎 在特征融合阶段,每一层的encoder-decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的feature map通道数也为1。将每一层的feature map进行concat拼接,得到6通道的融合feature map,最后使用1x1卷积以及sigmoid激活函数得到最终的融合特征图输出","s":"(二)网络结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":810},{"i":817,"t":"损失函数是7个损失项的加权求和 共有6层encoder-decoder结构,将每一层对应的feature map与ground truth做BCE Loss得到6个损失项 第7个损失项是最终融合得到的feature map与ground truth的BCE Loss 在论文中,每个损失项的权重都为1 canny边缘检测: 使用高斯滤波进行平滑 计算像素梯度 非极大值抑制 双阈值检测强边缘、弱边缘 边缘连接","s":"(三)损失函数","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":810},{"i":819,"t":"深度可分离卷积的优点是可以在大致保持卷积效果的情况下减少参数量 在实现原理上可分为两个步骤:深度卷积(depth wise)以及逐点(point wise)卷积 深度卷积是一种在每个输入通道上分别进行卷积操作的卷积方法,每个输入通道只与对应的卷积核进行卷积。 逐点卷积通过使用1×11 \\times 11×1卷积对深度卷积的结果再次卷积","s":"(四)深度可分离卷积","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":810},{"i":822,"t":"PR曲线所围成的面积即使该类的AP值","s":"(一)mAP","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":810},{"i":824,"t":"提示 参考资料:【精读AI论文】YOLO V1目标检测,看我就够了 1.预测阶段​ 下图为YOLOv1的算法框架 下图为YOLOv1的网络结构 输入[448, 448, 3]图像,输出[7, 7, 30]的tensor(包含所有预测框的坐标、置信度和类别结果),通过解析输出的tensor得到预测结果 首先将输入图片划分为S×SS \\times SS×S个grid cell。在YOLOv1中S=7S=7S=7 每个grid cell预测出BBB个bounding box预测框(bbox),每个bbox的中心点都落在该grid cell中。在YOLOv1中B=2B=2B=2 每个bbox包含(x, y, h, w, c)五种信息,其中x, y为bbox左上角坐标,h, w为bbox的宽高,c为该bbox是否存在object的概率 同时每个grid cell预测出一组与数据集有关的条件类别概率。在YOLOv1论文使用的数据集Pascal VOC中,类别种类为20类,因此在预测阶段输出的[7, 7, 30]的tensor含义如下图所示 每个grid cell选出条件类别概率最大的类别,因此每个grid cell只能检测一个物体 提示 这也是YOLOv1小目标和密集目标识别能力差的原因 每个bbox的置信度与其父grid cell的类别概率相乘得到全概率,如下图所示 进行NMS后处理: 对某一特定类别,首先根据全概率置信度排序 将此时最大置信度的bbox与其他所有置信度更小的bbox做IoU判断,若IoU大于设置的阈值,则抹除置信度小的bbox 将剩余的次大的置信度重复步骤2,抹除所有置信度更小的其IoU超过阈值的bbox 提示 非极大值抑制只在预测阶段进行 在训练阶段,所有bbox都会在Loss Function中起到更新的作用,因此不进行NMS 2. 训练过程的损失函数​","s":"(二)YOLOv1","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":810},{"i":826,"t":"1. BN层​ 2. 高分辨率训练​ 3. Anchor​ YOLOv2引入了anchor机制代替bbox,将图像划分为13×1313 \\times 1313×13个grid cell,每个grid cell生成5个anchor anchor是通过k-means聚类在数据集上生成的不同尺寸的先验框 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂","s":"(二)YOLOv2","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":810},{"i":828,"t":"1. 特征融合​ YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征 主干通过卷积和池化提取特征,形成不同尺寸的特征图 分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征 主干特征图通过卷积对通道数降维之后与分支在通道维度上concat 提示 在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合 2. 前处理​ 对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度 3. 特征金字塔FCN​","s":"(三)YOLOv5","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":810},{"i":830,"t":"提示 有关CSP特征融合可以参考:https://blog.csdn.net/weixin_55073640/article/details/122614176 CBAM是通道+空间注意力机制(SENet是通道注意力机制)","s":"三、CBAM","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":810},{"i":832,"t":"通道注意力:原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘 空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘","s":"(一)总体结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":810},{"i":834,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图","s":"(二)通道注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":810},{"i":836,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,再将二者concat后通过7×77 \\times 77×7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图","s":"(三)空间注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":810},{"i":838,"t":"作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \\times 77×7卷积与3×33 \\times 33×3卷积的消融实验发现,7×77 \\times 77×7卷积效果更好) 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好","s":"(四)其他注意事项","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":810},{"i":840,"t":"Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。 YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失","s":"四、Focal Loss","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":810},{"i":842,"t":"Squeeze and Excitation Squeeze挤压操作就是将[b,c,h,w][b, c, h, w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构 Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数","s":"五、SENet","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":810},{"i":844,"t":"自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量、键(Key)向量和值(Value)向量。 通过点积和缩放点积计算相似程度 通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。","s":"六、自注意力机制","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":810},{"i":847,"t":"This content has been encrypted.","s":"(一)英文自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":810},{"i":849,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(二)西电广研院自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":810},{"i":851,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(三)电子科技大学自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":810},{"i":854,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1 线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 提示 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 提示 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"一、线性代数","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":852},{"i":856,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 提示 P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"二、概率论","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":852},{"i":858,"t":"提示 欢迎来到笔记本的推免复习部分","s":"Welcome","u":"/docs/Tui-Mian/intro","h":"","p":857},{"i":860,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Tui-Mian/intro","h":"#支持我","p":857},{"i":863,"t":"自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。 希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。 文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。","s":"前言","u":"/docs/Tui-Mian/Summary","h":"#前言","p":861},{"i":865,"t":"常见名词 含义解释 928/929 每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。 没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。 优营 优营就是夏令营的优秀营员。 不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。 wl/waiting list wl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。","s":"扫盲","u":"/docs/Tui-Mian/Summary","h":"#扫盲","p":861},{"i":867,"t":"本科学校:理工类普通一本(四非) 专业:计算机科学与技术CS rank:前1%(非rank 1 or 2的top选手) 英语:四级594 & 六级586 竞赛:非ACMer,一个CV类比赛国一,其他都是更不上台面的奖项了 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金 科研及论文:无正经科研经历,EI水会一篇 从某种程度上来说,本科出身和rank基本上决定了上限。","s":"个人情况","u":"/docs/Tui-Mian/Summary","h":"#个人情况","p":861}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,0.47,1,8.582,2,7.272]],["t/5",[0,0.457]],["t/7",[0,0.358,3,8.159,4,2.799,5,9.782,6,8.159,7,8.159,8,8.159]],["t/9",[0,0.499,4,2.397,9,2.227,10,3.021,11,1.871,12,2.328,13,2.328,14,3.887,15,2.328,16,2.589,17,3.097,18,3.021,19,6.988,20,3.757,21,6.345,22,3.767,23,4.878,24,7.655,25,2.514,26,2.139,27,3.192,28,3.767,29,3.767,30,3.767,31,4.088,32,4.236,33,2.182]],["t/11",[0,0.467,34,3.921,35,6.951,36,7.656,37,9.411,38,7.656,39,7.656,40,7.656]],["t/13",[0,0.397,41,9.051]],["t/15",[0,0.501,9,2.827,10,3.835,11,2.375,12,2.955,13,2.955,14,3.996,15,2.955,20,3.268,26,4.569,31,3.395,32,3.518,33,2.77,42,3.662,43,4.782,44,5.2,45,3.835,46,6.046]],["t/17",[0,0.502,4,1.815,14,3.668,17,2.846,20,3.454,25,3.531,26,5.227,27,4.483,44,5.028,46,5.076,47,5.291,48,7.206]],["t/19",[0,0.467,20,4.318,49,7.656,50,7.656,51,7.656,52,7.656]],["t/21",[0,0.501,4,2.353,9,2.161,10,2.932,11,1.816,12,2.259,13,2.259,14,4.132,15,2.259,20,3.568,33,2.117,53,2.44,54,3.656,55,3.755,56,4.342,57,5.109,58,4.768,59,5.109,60,3.656,61,3.656,62,3.656,63,6.86,64,6.528,65,5.668,66,3.656]],["t/23",[0,0.353,20,3.26,67,8.027,68,8.027,69,8.027,70,8.027,71,8.027,72,8.027,73,8.027]],["t/25",[0,0.457]],["t/27",[0,0.452,74,6.808]],["t/29",[0,0.28,2,5.404,75,3.853,76,5.404,77,6.378,78,5.791,79,6.378,80,6.378,81,8.497,82,6.378,83,6.721,84,6.378,85,5.791,86,4.257,87,3.491,88,5.791,89,6.378,90,5.791,91,5.791,92,5.791,93,6.378,94,5.404]],["t/31",[0,0.501,31,5.403,53,5.079,55,3.025,75,4.597,95,5.526,96,5.526,97,4.233,98,5.526,99,4.233,100,4.433,101,4.433,102,4.433,103,5.018,104,4.683,105,5.526,106,5.526,107,5.526]],["t/33",[0,0.49,108,7.06,109,7.776,110,7.776,111,7.776,112,7.776]],["t/35",[0,0.499,16,5.962,31,4.774,32,4.947,97,5.149,99,5.149,100,5.392,113,6.723,114,5.392,115,6.723]],["t/37",[0,0.495,97,5.605,99,5.605,101,5.869,102,5.869,116,7.317,117,7.317,118,7.317]],["t/39",[0,0.489,4,2.371,44,4.086,119,6.91,120,6.91,121,6.91,122,6.91,123,6.91,124,3.12,125,6.91,126,6.91,127,4.751]],["t/41",[17,4.462,25,5.536,128,7.532,129,6.353,130,8.295,131,7.532,132,7.532]],["t/43",[97,6.249,99,6.249,100,6.544,101,6.544,102,6.544,103,7.408,104,6.913,133,8.159]],["t/45",[0,0.493,17,3.185,25,3.952,44,4.716,65,4.357,86,3.952,124,2.674,129,4.536,134,5.018,135,5.922,136,5.377,137,5.922,138,5.922,139,5.018,140,5.922,141,5.922,142,5.922,143,5.377,144,5.377]],["t/47",[0,0.436,9,4.264,87,3.947,90,6.548,91,6.548,92,6.548,145,5.12,146,7.211,147,7.211,148,3.814,149,7.211,150,7.211,151,7.211,152,7.211]],["t/49",[0,0.504,4,2.758,17,3.224,20,3.266,153,4.59,154,5.993,155,5.078,156,4.41,157,5.993,158,5.993,159,5.993,160,5.993,161,5.993]],["t/51",[0,0.39,2,7.532,162,8.889]],["t/53",[0,0.506,34,2.07,56,2.559,163,9.595,164,4.872,165,4.042,166,4.042,167,6.074,168,6.074,169,6.074,170,6.074,171,4.054,172,5.369,173,6.074,174,4.042,175,4.042]],["t/56",[0,0.506,176,5.589,177,5.589,178,5.589,179,5.589,180,5.589,181,5.589,182,5.589,183,5.589,184,5.589,185,5.589,186,5.589,187,5.589,188,5.589,189,5.589,190,5.589,191,5.589]],["t/58",[0,0.503,11,2.873,12,3.574,13,3.574,16,3.976,75,3.494,85,5.252,86,3.86,87,3.166,94,4.901,192,5.252,193,4.901,194,4.639,195,3.86,196,4.639,197,5.784,198,5.784]],["t/60",[11,3.481,12,4.331,13,4.331,199,7.008,200,7.008,201,7.008,202,7.008,203,7.008,204,7.008,205,7.008,206,7.008,207,7.008,208,5.621,209,7.008,210,7.008,211,7.008,212,7.008,213,7.008]],["t/62",[0,0.473,4,2.076,14,3.44,26,1.711,44,3.578,46,4.161,108,2.735,214,6.422,215,3.013,216,3.013,217,3.013,218,3.013,219,3.013,220,3.013,221,2.217,222,3.013,223,3.013,224,3.013,225,3.013,226,3.013,227,2.416,228,3.013,229,5.554,230,5.096,231,4.833,232,2.735,233,3.013,234,3.013,235,3.013,236,3.013,237,3.013,238,3.013,239,2.416,240,2.735,241,2.735,242,6.037,243,3.013,244,3.013,245,3.013,246,3.013,247,3.013,248,3.013,249,1.907,250,3.013,251,2.735,252,3.013,253,2.735,254,2.553,255,2.217,256,3.013,257,3.013,258,3.013,259,3.013,260,3.013,261,3.013,262,3.013]],["t/65",[0,0.413,14,3.803,263,5.11,264,6.951,265,5.263,266,6.951,267,7.656,268,5.864,269,7.656,270,6.951,271,7.656]],["t/67",[0,0.496,14,3.031,26,2.772,33,1.767,34,1.562,53,2.035,263,5.091,264,5.54,265,2.097,272,4.673,273,3.05,274,3.05,275,3.05,276,3.05,277,3.05,278,3.05,279,3.05,280,2.336,281,3.05,282,3.05,283,3.05,284,3.05,285,3.05,286,3.05,287,3.355,288,5.909,289,2.769,290,2.584,291,2.446,292,2.769,293,2.584,294,2.584,295,2.769,296,6.464,297,2.584,298,2.584,299,4.673,300,4.135,301,2.584,302,1.64,303,2.584,304,2.584,305,2.584,306,2.769,307,2.769,308,2.769,309,2.584,310,2.584,311,2.584,312,2.244,313,2.769,314,2.336]],["t/69",[0,0.326,242,5.273,287,5.106,299,5.688,315,7.427,316,7.427,317,4.701,318,8.063,319,7.427,320,7.427,321,7.427,322,7.427]],["t/72",[0,0.445,14,4.768,26,3.819,44,3.975,55,3.68,268,5.149,270,7.874,323,6.816,324,6.723,325,4.774,326,6.723,327,6.723,328,6.723]],["t/74",[0,0.474,14,4.799,148,3.604,242,4.839,323,4.839,329,8.748,330,6.815,331,6.815,332,6.815,333,6.815,334,6.815,335,6.815]],["t/76",[0,0.485,14,4.424,20,2.847,249,4.436,323,6.323,336,7.008,337,7.008,338,7.008,339,7.008,340,7.008]],["t/78",[0,0.39,341,8.889,342,8.889]],["t/80",[0,0.483,4,1.64,34,2.449,35,6.24,65,3.518,124,2.159,148,2.529,196,3.835,343,4.782,344,4.782,345,4.782,346,4.782,347,4.782,348,4.782,349,4.782,350,6.872,351,4.782,352,4.782,353,4.782,354,4.782,355,4.782,356,4.782,357,4.782,358,4.782,359,4.782,360,8.795,361,4.782,362,4.782,363,4.782,364,4.782,365,4.782,366,4.782,367,4.782]],["t/82",[0,0.511,9,1.148,155,1.645,193,1.645,302,2.828,368,1.941,369,1.941,370,1.941,371,1.941,372,1.941,373,1.941,374,1.941,375,1.487,376,1.941,377,1.941,378,1.941,379,1.941,380,1.941,381,1.941,382,1.941,383,1.941,384,1.941,385,1.763,386,1.941,387,1.941,388,1.645,389,1.941,390,1.941,391,1.941,392,1.941,393,1.941,394,0.888,395,1.941,396,1.941,397,1.941,398,1.941,399,1.941,400,1.645,401,1.941,402,1.941,403,1.941,404,1.763,405,1.941,406,1.941,407,1.941,408,1.763,409,1.941,410,1.941,411,1.941,412,1.941,413,1.763,414,1.941,415,0.937,416,3.35,417,1.941,418,1.941,419,1.941,420,1.763,421,1.941,422,1.941,423,1.941,424,1.941,425,1.941,426,1.941,427,1.941,428,1.941,429,1.941,430,1.941,431,1.941,432,1.941,433,1.941,434,1.941,435,1.941,436,1.941,437,1.941,438,1.941,439,1.941,440,1.941,441,1.941,442,1.941,443,1.941,444,1.941,445,1.941,446,1.941,447,1.941,448,1.941,449,1.941,450,1.941,451,1.763,452,1.941,453,1.941,454,1.941,455,1.941,456,1.941]],["t/84",[0,0.501,4,0.879,9,2.504,11,1.273,12,1.583,13,1.583,14,2.69,15,1.583,17,1.378,20,1.72,23,2.171,25,1.71,27,2.171,31,3.007,32,1.885,33,1.484,44,3.201,53,4.198,75,4.796,129,1.962,139,2.171,265,1.761,302,2.912,457,2.562,458,2.562,459,2.562,460,2.562,461,2.562,462,7.209,463,2.562,464,2.562,465,2.562,466,2.562,467,2.562,468,2.326,469,5.414,470,4.916,471,2.326,472,2.326,473,4.916,474,2.326,475,2.562,476,2.562,477,2.562,478,4.235,479,2.326,480,2.562,481,2.562,482,2.562,483,2.562,484,2.562,485,2.171,486,1.962,487,2.562,488,2.562,489,2.562,490,2.562]],["t/86",[0,0.494,44,3.235,97,2.701,99,2.701,100,2.828,101,2.828,102,2.828,104,2.988,195,4.475,265,2.424,302,2.943,462,6.862,470,6.862,471,3.201,472,3.201,473,4.968,474,3.201,479,3.201,491,3.526,492,5.472,493,3.526,494,2.828,495,3.526,496,3.526,497,3.526,498,3.526,499,3.526,500,3.526,501,3.526,502,3.526,503,5.472,504,3.526,505,3.526,506,3.526,507,3.526,508,6.705,509,3.526,510,3.526,511,3.526,512,3.526,513,3.526,514,3.526,515,3.526,516,3.526,517,3.526]],["t/88",[0,0.495,16,7.086,17,1.832,34,3.798,78,3.092,268,2.608,388,2.885,404,3.092,413,3.092,518,3.405,519,3.405,520,3.405,521,3.405,522,3.405,523,3.405,524,3.405,525,3.405,526,3.405,527,3.405,528,3.405,529,3.405,530,3.405,531,3.405,532,3.405,533,3.405,534,3.405,535,3.405,536,3.405,537,3.092,538,3.405,539,3.405,540,3.405,541,2.885,542,3.405,543,3.405,544,3.405,545,3.405,546,3.405,547,3.405,548,3.405,549,3.405,550,5.325,551,2.273,552,3.405,553,3.405,554,3.405]],["t/90",[0,0.406,18,5.957,249,4.701,266,6.743,555,7.427,556,7.427,557,6.293,558,7.427,559,7.427,560,7.427,561,7.427,562,7.427,563,7.427]],["t/92",[0,0.502,14,3.235,87,4.951,494,3.561,564,4.44,565,5.518,566,4.44,567,4.44,568,4.44,569,6.512,570,6.512,571,5.223,572,4.44,573,4.44,574,4.44,575,4.44,576,4.44,577,4.44,578,4.44,579,4.44,580,4.44,581,4.44,582,4.44,583,4.44,584,4.44]],["t/94",[0,0.488,17,3.475,25,4.312,128,5.866,129,4.948,131,5.866,132,5.866,194,7.553,312,4.754,585,6.461,586,6.461,587,6.461,588,5.475,589,6.461]],["t/96",[0,0.496,127,4.275,196,7.413,590,6.218,591,6.218,592,4.987,593,6.218,594,6.218,595,6.218,596,4.987,597,6.218,598,6.218,599,6.218,600,6.218]],["t/98",[0,0.51,17,2.267,23,3.571,25,2.812,86,4.992,129,3.227,134,3.571,139,3.571,143,3.826,144,3.826,312,3.101,468,3.826,588,3.571,601,4.214,602,4.214,603,4.214,604,4.214,605,4.214,606,4.214,607,4.214,608,4.214,609,4.214,610,4.214,611,4.214,612,4.214,613,4.214,614,4.214]],["t/100",[17,4.388,86,5.445,88,7.408,136,7.408,588,6.913,615,8.159,616,8.159,617,8.159]],["t/102",[0,0.506,4,2.659,14,1.083,17,1.172,20,1.957,94,3.135,230,1.604,232,1.979,239,1.748,242,1.548,251,4.375,302,1.99,618,2.18,619,6.359,620,3.699,621,2.18,622,6.359,623,9.61,624,2.18,625,2.18,626,1.604,627,2.18,628,2.18,629,3.05,630,2.18,631,2.18,632,4.819,633,2.18,634,2.18,635,2.18,636,2.18,637,6.911,638,2.18,639,2.18,640,2.18,641,2.18,642,2.18,643,2.18,644,2.18,645,2.18,646,2.18,647,2.18,648,2.18,649,2.18,650,2.18,651,2.18,652,2.18,653,2.18,654,2.18,655,3.359]],["t/105",[0,0.497,4,1.747,9,1.902,11,0.646,12,0.804,13,0.804,14,3.14,15,0.804,18,1.043,20,2.567,31,4.715,32,2.367,33,2.642,53,3.708,55,1.761,59,1.181,75,0.786,81,1.181,86,0.868,124,1.061,134,1.992,148,1.701,164,2.58,214,0.845,221,2.901,255,1.73,263,1.569,268,0.996,287,1.616,288,3.341,290,1.102,291,3.163,293,1.102,294,1.102,296,3.864,297,1.102,298,1.102,299,3.02,300,2.726,301,1.102,302,0.7,303,1.102,304,1.102,305,1.102,309,1.102,310,3.341,311,3.864,312,1.73,313,1.181,314,3.02,485,1.102,629,1.488,656,1.181,657,1.301,658,1.181,659,1.181,660,2.135,661,1.181,662,1.102,663,3.217,664,2.351,665,1.992,666,3.943,667,2.351,668,2.351,669,2.351,670,1.301,671,1.301,672,1.301,673,2.351,674,2.351,675,2.351,676,2.351,677,2.351,678,1.301,679,2.351,680,1.301,681,3.58,682,2.351,683,1.301,684,1.301,685,1.301,686,2.351,687,1.301,688,2.351,689,3.238,690,2.351,691,1.616,692,2.351,693,1.301,694,1.301,695,1.301,696,1.301,697,1.301,698,1.301,699,3.217,700,1.301,701,1.301,702,2.351,703,1.301,704,1.301,705,1.301,706,1.301,707,1.301,708,2.351]],["t/107",[0,0.484,4,1.097,9,2.998,11,0.914,12,1.137,13,1.137,14,4.011,15,1.137,20,0.748,33,4.35,53,2.135,55,2.322,75,1.112,127,1.265,192,1.671,196,1.476,214,1.195,221,2.354,263,2.135,287,2.199,288,4.296,289,1.671,290,1.56,291,1.476,292,1.671,293,1.56,294,1.56,295,1.671,296,4.865,297,1.56,298,1.56,299,4.823,300,3.595,301,1.56,302,2.282,303,1.56,304,1.56,305,1.56,306,1.671,307,1.671,308,1.671,309,1.56,310,1.56,311,2.711,312,2.354,314,2.45,485,1.56,592,1.476,596,1.476,656,1.671,658,1.671,659,1.671,660,2.905,661,1.671,665,1.56,709,1.841,710,1.841,711,3.199,712,3.199,713,1.841,714,1.841,715,1.354,716,2.905,717,1.841,718,1.841,719,1.841,720,1.841,721,1.841,722,1.841,723,1.841,724,1.841,725,1.841,726,1.841,727,1.841,728,1.841,729,1.841,730,1.841,731,1.841,732,1.841,733,1.841,734,1.841,735,1.841,736,1.841,737,1.841,738,1.841,739,1.841,740,1.841,741,1.841,742,1.841,743,1.476,744,1.841,745,1.841,746,1.56,747,1.841,748,1.841,749,1.841,750,1.841,751,1.841,752,1.841,753,1.841,754,1.841,755,1.841,756,1.841,757,1.841,758,1.841,759,1.841,760,1.841,761,1.841,762,1.841,763,1.841,764,1.841,765,1.841,766,3.199,767,1.841]],["t/109",[0,0.486,4,1.375,14,3.787,15,0.672,20,1.834,33,3.104,34,1.023,55,1.879,56,2.537,57,1.813,58,0.921,124,0.491,127,2.36,164,1.601,171,0.726,172,2.525,214,4.109,249,3.617,263,2.291,268,2.629,287,3.103,299,0.833,302,1.074,312,0.8,314,0.833,317,1.264,325,0.772,551,0.726,665,2.346,691,0.747,715,1.469,768,1.087,769,1.087,770,1.087,771,1.601,772,2.769,773,3.116,774,1.087,775,1.087,776,2.769,777,1.087,778,3.432,779,1.997,780,1.087,781,1.087,782,1.087,783,1.087,784,0.921,785,1.087,786,1.087,787,1.997,788,4.961,789,1.997,790,0.872,791,2.277,792,1.997,793,1.087,794,1.087,795,1.997,796,1.087,797,1.087,798,1.087,799,1.997,800,1.087,801,1.087,802,6.591,803,2.769,804,2.769,805,4.514,806,1.087,807,1.087,808,1.087,809,1.087,810,1.087,811,1.087,812,1.087,813,1.087,814,1.087,815,1.087,816,1.087,817,1.087,818,1.087,819,1.087,820,1.997,821,2.769,822,2.769,823,1.997,824,1.087,825,2.769,826,1.529,827,1.087,828,1.997,829,1.087,830,1.087,831,1.087,832,1.087,833,1.087,834,1.087,835,2.769,836,1.087,837,1.997,838,1.469,839,1.087,840,1.087,841,1.087,842,1.997,843,1.087,844,1.087,845,1.087,846,1.087,847,1.087,848,1.087,849,1.087,850,1.087,851,1.087,852,0.987,853,1.087,854,1.087,855,1.087,856,1.087,857,1.087,858,1.087,859,1.087,860,1.087,861,1.997,862,1.087,863,1.087,864,1.087,865,1.087,866,1.087,867,1.087,868,1.087,869,1.087,870,1.087,871,1.087,872,1.087,873,1.087,874,1.087,875,1.087,876,1.087,877,1.087,878,1.087,879,1.997,880,1.087,881,1.087,882,1.997,883,1.997,884,1.087,885,1.087,886,1.087,887,1.087,888,1.087,889,1.087,890,1.087,891,1.087,892,1.087,893,1.087,894,1.087]],["t/112",[0,0.498,4,1.604,11,0.815,12,1.014,13,1.014,14,4.398,15,1.014,20,1.899,33,4.301,53,1.095,127,1.128,208,1.315,214,1.065,221,3.441,227,1.315,229,1.315,230,2.128,242,1.164,263,1.095,265,1.128,287,1.128,302,0.882,318,1.315,592,1.315,596,1.315,662,1.39,715,3.441,743,3.111,746,1.39,838,1.207,895,1.39,896,1.39,897,1.489,898,1.489,899,1.489,900,1.39,901,1.489,902,2.626,903,2.626,904,2.626,905,2.626,906,2.892,907,2.892,908,1.64,909,5.73,910,2.626,911,1.489,912,2.626,913,2.626,914,2.45,915,2.45,916,2.626,917,1.489,918,1.489,919,1.489,920,1.489,921,1.489,922,1.489,923,1.489,924,1.489,925,1.489,926,4.246,927,1.489,928,1.489,929,1.489,930,1.489,931,1.489,932,1.489,933,1.489,934,1.489,935,1.489,936,1.489,937,1.489,938,1.489,939,1.489,940,3.521,941,3.521,942,1.489,943,1.489,944,1.489,945,1.489,946,1.489,947,1.39,948,1.39,949,1.39,950,1.489,951,1.489,952,1.489,953,1.489,954,1.489,955,1.489,956,2.45,957,1.489,958,1.489,959,1.489,960,3.286,961,1.39,962,1.489]],["t/114",[0,0.455,4,1.899,11,1.042,12,1.296,13,1.296,14,4.725,15,1.296,20,2.249,33,4.772,53,1.4,127,1.442,208,1.682,214,1.362,221,4.073,227,1.682,229,1.682,230,2.634,242,1.489,263,1.4,265,1.442,287,1.442,302,1.128,318,1.682,592,1.682,596,1.682,662,1.777,715,4.073,743,3.756,746,1.777,838,1.543,895,1.777,896,1.777,897,1.904,898,1.904,899,1.904,900,1.777,901,1.904,902,3.25,903,3.25,904,3.25,905,3.25,909,6.126,910,3.25,911,1.904,912,3.25,913,3.25,914,3.033,915,3.033,916,3.25,917,1.904,918,1.904,919,1.904,920,1.904,921,1.904,922,1.904,923,1.904,924,1.904,925,1.904,926,5.026,927,1.904,928,1.904,929,1.904,930,1.904,931,1.904,932,1.904,933,1.904,934,1.904,935,1.904,936,1.904,937,1.904,938,1.904,939,1.904,940,4.252,941,4.252,942,1.904,943,1.904,944,1.904,945,1.904,946,1.904,947,1.777,948,1.777,949,1.777,950,1.904,951,1.904,952,1.904,953,1.904,954,1.904,955,1.904,956,3.033,957,1.904,958,1.904,959,1.904,961,1.777,962,1.904]],["t/116",[0,0.411,4,2.192,11,1.625,12,2.021,13,2.021,14,4.764,15,2.021,20,1.328,33,4.202,208,2.623,214,4.711,221,3.796,227,2.623,229,2.623,230,3.796,240,2.97,241,2.97,242,2.322,253,2.97,263,2.183,287,2.248,302,1.759,318,2.623,626,3.796,715,2.407,743,4.138,895,2.771,896,2.771,900,2.771,909,4.372,914,2.771,915,2.771,947,2.771,948,2.771,949,2.771,956,2.771,961,2.771,963,3.271,964,3.271,965,3.271,966,3.271,967,3.271,968,3.271,969,3.271,970,3.271,971,3.271,972,3.271,973,3.271,974,3.271,975,3.271,976,2.771,977,3.271,978,3.271,979,3.271,980,3.271,981,3.271,982,3.271,983,3.271,984,3.271,985,3.271,986,3.271,987,3.271,988,3.271,989,3.271,990,3.271,991,3.271,992,3.271,993,3.271,994,3.271]],["t/120",[0,0.472,995,6.723,996,6.104,997,6.723,998,7.201,999,6.723,1000,6.723,1001,6.723,1002,6.723,1003,6.104,1004,6.723,1005,4.774,1006,6.104]],["t/122",[998,6.2,1007,8.732,1008,8.732,1009,8.732]],["t/124",[0,0.448,998,5.436,1003,6.951,1005,5.436,1006,6.951,1010,7.656,1011,6.951,1012,7.656,1013,7.656,1014,7.656]],["t/126",[0,0.457]],["t/128",[0,0.462,17,3.995,998,6.558,1015,5.688,1016,7.826,1017,9.236,1018,7.427,1019,6.743]],["t/130",[0,0.482,11,2.208,20,0.795,21,1.777,34,2.707,153,1.499,194,1.569,325,1.389,394,0.895,494,1.569,557,1.658,773,1.777,996,1.777,998,4.628,1005,1.389,1011,1.777,1015,2.583,1016,4.479,1020,3.062,1021,1.957,1022,1.957,1023,1.957,1024,3.373,1025,1.957,1026,1.777,1027,1.957,1028,1.957,1029,1.957,1030,3.373,1031,5.286,1032,1.957,1033,1.957,1034,3.373,1035,4.799,1036,5.286,1037,3.373,1038,1.957,1039,1.957,1040,1.389,1041,1.957,1042,1.957,1043,3.373,1044,3.373,1045,1.957,1046,1.957,1047,3.373,1048,1.957,1049,3.062,1050,1.658,1051,1.957,1052,1.957,1053,1.658,1054,1.957,1055,1.957,1056,1.957,1057,1.957,1058,1.957,1059,1.569,1060,1.777,1061,1.957,1062,1.957,1063,1.957,1064,1.957,1065,1.957,1066,1.957,1067,1.957,1068,1.44,1069,1.957,1070,3.373,1071,3.373,1072,3.373,1073,1.957,1074,1.957,1075,1.957,1076,1.777,1077,1.569,1078,1.569,1079,1.777,1080,1.777,1081,1.777,1082,1.777,1083,1.777,1084,3.062,1085,1.777,1086,1.777,1087,1.777,1088,1.777,1089,3.062,1090,1.777,1091,3.062,1092,1.777,1093,1.777,1094,3.062,1095,1.777,1096,1.777,1097,1.777,1098,1.777,1099,1.777,1100,4.036,1101,1.777,1102,1.777,1103,1.777,1104,1.777,1105,4.036,1106,1.777,1107,1.569,1108,1.777,1109,1.306,1110,1.658,1111,1.658,1112,1.777,1113,1.957]],["t/134",[0,0.502]],["t/136",[0,0.488]],["t/138",[0,0.405]],["t/141",[17,4.182,1114,8.627,1115,7.776,1116,6.589,1117,7.776,1118,6.589,1119,7.06,1120,7.06,1121,7.776,1122,7.776]],["t/143",[17,4.318,1116,6.802,1118,6.802,1123,8.027,1124,7.288,1125,7.769,1126,8.027,1127,8.027]],["t/145",[0,0.414,4,2.216,20,2.624,1114,5.866,1116,5.475,1118,5.475,1119,5.866,1120,7.673,1124,5.866,1125,5.182,1128,6.461,1129,5.182,1130,6.461,1131,8.451,1132,6.461,1133,3.993,1134,6.461,1135,6.461,1136,6.461,1137,6.461]],["t/147",[0,0.405]],["t/151",[0,0.489,4,2.246,1138,9.115,1139,6.546,1140,6.546,1141,6.546,1142,6.546,1143,6.546,1144,6.546,1145,6.546,1146,6.546,1147,6.546]],["t/155",[0,0.452,1148,8.889]],["t/158",[0,0.46,1149,9.512,1150,8.159,1151,8.159]],["t/160",[0,0.397,1152,9.051]],["t/163",[0,0.457]],["t/165",[1153,8.809]],["t/167",[0,0.507]],["t/170",[0,0.488]],["t/172",[0,0.473,1154,7.929]],["t/175",[0,0.488]],["t/177",[0,0.479,629,3.936,1138,8.934,1155,6.218,1156,6.218,1157,5.646,1158,6.218,1159,6.218,1160,5.646,1161,6.218,1162,6.218,1163,5.646,1164,6.218,1165,6.218,1166,6.218,1167,6.218,1168,6.218]],["t/180",[0,0.499]],["t/182",[0,0.486,1157,8.465,1160,8.465,1163,6.846,1169,7.54,1170,7.54]],["t/184",[0,0.49,17,4.462,486,6.353]],["t/186",[0,0.488,17,5.261,486,6.249]],["t/188",[0,0.488]],["t/190",[20,3.676,1171,9.051]],["t/192",[0,0.491,9,4.591,11,0.831,14,1.462,15,1.034,24,1.519,34,2.767,155,1.418,163,2.672,171,1.117,263,1.964,302,2.551,317,1.059,388,1.418,565,1.418,715,2.899,716,1.519,998,2.09,1015,1.282,1020,2.672,1111,3.338,1129,1.342,1172,1.673,1173,1.673,1174,2.943,1175,2.943,1176,2.943,1177,2.943,1178,6.832,1179,2.943,1180,2.943,1181,2.943,1182,2.943,1183,2.943,1184,4.743,1185,2.943,1186,2.943,1187,2.943,1188,2.943,1189,2.943,1190,2.943,1191,2.943,1192,2.943,1193,2.943,1194,5.958,1195,2.943,1196,1.911,1197,2.943,1198,2.943,1199,3.94,1200,1.673,1201,1.673,1202,1.673,1203,1.673,1204,1.673,1205,1.673,1206,1.673,1207,1.673,1208,1.673,1209,1.673,1210,1.673,1211,1.673,1212,1.673,1213,1.673,1214,1.673,1215,1.673,1216,1.673,1217,1.673,1218,1.673,1219,1.673,1220,1.673,1221,1.673,1222,1.673,1223,1.673,1224,1.673,1225,1.673,1226,1.673,1227,1.673,1228,1.673,1229,1.673,1230,1.673,1231,1.282,1232,1.673,1233,1.673,1234,1.673,1235,1.673,1236,1.342,1237,1.673,1238,1.673,1239,1.673,1240,1.673,1241,1.673,1242,1.673,1243,1.673,1244,1.673,1245,1.673,1246,1.673,1247,1.673,1248,1.673,1249,1.673,1250,2.943,1251,1.673,1252,1.673,1253,1.673,1254,1.673,1255,1.673,1256,1.519,1257,1.673,1258,1.673,1259,1.519,1260,1.673]],["t/194",[0,0.47,11,1.871,34,1.929,153,2.885,557,3.192,691,2.589,998,2.674,1005,4.088,1015,2.885,1016,6.63,1049,3.42,1076,3.42,1077,3.021,1078,3.021,1079,3.42,1080,3.42,1081,3.42,1082,3.42,1083,3.42,1084,5.227,1085,3.42,1086,3.42,1087,3.42,1088,3.42,1089,5.227,1090,3.42,1091,5.227,1092,3.42,1093,3.42,1094,5.227,1095,3.42,1096,3.42,1097,3.42,1098,3.42,1099,3.42,1100,6.345,1101,3.42,1102,3.42,1103,3.42,1104,3.42,1105,6.345,1106,3.42,1107,3.021,1108,3.42,1109,2.514,1110,3.192,1111,3.192,1112,3.42,1261,3.767,1262,3.192,1263,3.767,1264,3.767]],["t/196",[0,0.457]],["t/198",[0,0.452,74,6.808]],["t/200",[0,0.384,1265,8.732,1266,6.688,1267,8.732]],["t/203",[1133,5.593,1268,9.051]],["t/205",[0,0.405]],["t/207",[0,0.512,1269,6.38]],["t/209",[0,0.353,394,3.671,1133,4.961,1266,6.148,1269,5.699,1270,7.288,1271,8.027,1272,5.357,1273,6.802]],["t/211",[0,0.444,394,4.968,1274,4.896,1275,9.323,1276,7.54,1277,5.353]],["t/213",[0,0.47,1273,7.272,1274,5.573]],["t/215",[0,0.47,1278,6.633,1279,6.633,1280,6.633,1281,6.633,1282,6.633,1283,6.633,1284,8.597,1285,6.633,1286,6.633,1287,6.633,1288,6.633,1289,6.633,1290,6.633,1291,6.633,1292,6.633]],["t/217",[0,0.295,1293,6.723,1294,6.104,1295,6.723,1296,8.672,1297,6.723,1298,6.723,1299,6.723,1300,6.104,1301,6.723,1302,5.697,1303,6.723,1304,6.723,1305,6.723,1306,6.723,1307,6.723,1308,6.723,1309,6.723,1310,6.723,1311,6.723]],["t/220",[0,0.479,1312,9.411,1313,7.656,1314,7.656,1315,7.656,1316,7.656,1317,7.656]],["t/222",[0,0.481,44,4.954,46,5.761,1318,6.378,1319,6.378,1320,6.378,1321,6.378,1322,6.378,1323,6.378,1324,6.378,1325,6.378,1326,6.378,1327,6.378,1328,6.378,1329,6.378,1330,6.378]],["t/224",[1331,7.659,1332,8.436,1333,8.436,1334,8.436,1335,8.436,1336,8.436]],["t/228",[0,0.495,1277,3.331,1337,4.691,1338,4.691,1339,4.691,1340,7.959,1341,4.691,1342,4.691,1343,4.691,1344,4.691,1345,4.691,1346,6.778,1347,4.691,1348,4.691,1349,4.691,1350,4.691,1351,4.691,1352,4.691,1353,4.691,1354,4.691,1355,4.691,1356,4.691,1357,4.691,1358,4.691,1359,4.691,1360,4.691,1361,4.691,1362,4.691,1363,4.691,1364,4.691,1365,4.691,1366,4.691]],["t/231",[0,0.502]],["t/233",[0,0.452,1367,8.889]],["t/235",[0,0.452,1368,8.889]],["t/238",[0,0.513]],["t/240",[0,0.503,486,4.885,1369,7.1,1370,6.378,1371,8.379,1372,6.378,1373,6.378,1374,5.404,1375,6.378,1376,6.378]],["t/242",[0,0.507,4,3.784,124,4.542]],["t/244",[0,0.457]],["t/246",[0,0.448,1377,7.668,1378,4.736,1379,5.589,1380,5.589,1381,5.589,1382,5.589,1383,5.589,1384,5.074,1385,5.589,1386,5.589,1387,5.589,1388,5.589,1389,5.589,1390,5.589,1391,5.589,1392,5.589,1393,5.589,1394,5.589,1395,5.589,1396,5.589,1397,5.589,1398,5.589,1399,5.589,1400,5.074,1401,5.074,1402,5.589,1403,4.736,1404,5.589,1405,5.589]],["t/248",[0,0.441,1384,5.944,1400,5.944,1401,5.944,1403,5.547,1406,6.546,1407,6.546,1408,6.546,1409,6.546,1410,6.546,1411,6.546,1412,6.546,1413,6.546,1414,6.546,1415,6.546,1416,6.546,1417,6.546,1418,6.546,1419,6.546,1420,6.546]],["t/250",[0,0.479,1403,7.614,1421,7.108,1422,7.108,1423,7.108,1424,7.108,1425,7.108,1426,7.108,1427,7.108,1428,7.108,1429,7.108]],["t/253",[55,5.046]],["t/257",[0,0.512]],["t/259",[0,0.473,1430,8.732]],["t/262",[0,0.438,1431,8.436,1432,8.436,1433,8.436,1434,8.436]],["t/264",[0,0.499]],["t/266",[0,0.508,1435,6.633,1436,6.633,1437,6.633,1438,6.023,1439,6.633,1440,5.621,1441,6.023]],["t/268",[0,0.517,55,3.203,1438,7.184]],["t/270",[0,0.472,415,3.812,1442,6.336,1443,7.172,1444,7.172,1445,5.812,1446,7.172]],["t/272",[1447,8.37]],["t/275",[415,4.214,1448,7.929,1449,7.929,1450,5.163]],["t/277",[1451,6.363,1452,6.363,1453,6.363,1454,6.363,1455,6.363,1456,6.363,1457,6.363,1458,6.363,1459,6.363,1460,6.363,1461,6.363,1462,6.363,1463,6.363,1464,6.363,1465,4.551,1466,4.677,1467,6.363,1468,6.363]],["t/279",[1469,6.589,1470,7.06,1471,7.06,1472,5.521,1473,4.805,1474,7.06,1475,7.06,1476,7.06,1477,7.06,1478,7.06,1479,7.06]],["t/281",[1480,7.659,1481,7.659,1482,7.659,1483,7.659,1484,7.659,1485,7.659]],["t/283",[0,0.388,48,4.091,64,4.091,65,3.553,1472,6.272,1473,5.779,1486,4.384,1487,4.384,1488,4.384,1489,3.223,1490,4.384,1491,4.384,1492,2.984,1493,4.384,1494,4.384,1495,4.091,1496,4.384,1497,2.984,1498,5.561,1499,4.427,1500,4.384,1501,4.384,1502,6.283,1503,4.384,1504,4.384,1505,4.384,1506,4.384,1507,4.384,1508,4.384,1509,4.384,1510,4.384,1511,3.223,1512,4.384,1513,4.384,1514,4.384]],["t/287",[0,0.503,415,4.441,1515,5.269,1516,6.513,1517,4.804,1518,3.893,1519,3.893]],["t/289",[1520,7.532,1521,7.532,1522,6.653,1523,7.532,1524,7.532,1525,7.532,1526,7.532]],["t/291",[0,0.442,4,2.031,20,3.24,156,4.357,254,5.018,1497,3.66,1499,3.241,1522,4.75,1527,5.377,1528,5.377,1529,5.377,1530,5.377,1531,5.377,1532,5.377,1533,5.377,1534,5.377,1535,5.377,1536,5.377,1537,5.377,1538,4.071,1539,5.377,1540,3.952,1541,5.377,1542,5.377,1543,5.377,1544,5.377]],["t/294",[1545,9.219]],["t/296",[415,3.938,1546,8.159,1547,6.913,1548,8.159,1549,8.159,1550,8.159,1551,3.508,1552,5.298]],["t/298",[1553,9.219]],["t/300",[0,0.353,1450,4.746,1554,8.027,1555,8.027,1556,8.027,1557,8.027,1558,7.288,1559,7.288,1560,4.961]],["t/302",[1561,6.808,1562,8.889,1563,4.482]],["t/304",[0,0.332,172,5.559,394,1.96,681,3.892,1272,2.861,1515,3.25,1516,2.713,1551,2.728,1561,4.86,1563,3.2,1564,4.287,1565,5.161,1566,4.287,1567,2.306,1568,4.287,1569,4.287,1570,5.09,1571,4.287,1572,4.287,1573,4.287,1574,4.287,1575,4.287,1576,4.287,1577,4.287,1578,4.287,1579,4.287,1580,4.287,1581,4.211,1582,8.094,1583,5.09,1584,2.649,1585,6.402,1586,3.632,1587,3.283,1588,3.283,1589,3.632,1590,4.287,1591,4.287,1592,1.96,1593,4.287,1594,3.154,1595,3.892]],["t/306",[976,5.14,1538,5.573,1540,5.41,1592,2.774,1594,4.464,1596,6.066,1597,6.066,1598,4.646,1599,4.646,1600,6.066,1601,6.066,1602,6.066,1603,6.066,1604,6.066,1605,6.066,1606,6.066,1607,6.066,1608,6.066,1609,6.717,1610,6.066,1611,3.587,1612,6.066,1613,6.066,1614,6.066,1615,6.066]],["t/308",[0,0.365,394,4.358,1272,6.03,1516,3.212,1551,2.182,1570,6.668,1616,5.075,1617,5.075,1618,5.075,1619,5.075,1620,4.07,1621,5.075,1622,5.075,1623,5.075,1624,5.075,1625,5.075,1626,5.075,1627,5.075,1628,5.075,1629,5.075,1630,5.075,1631,4.608,1632,5.075,1633,5.075,1634,5.075,1635,5.075,1636,5.075,1637,5.075,1638,5.075,1639,5.075,1640,5.075,1641,5.075,1642,5.075,1643,5.075]],["t/310",[1563,4.564,1644,9.051]],["t/312",[0,0.353,1450,4.746,1515,4.111,1547,6.802,1645,6.802,1646,6.802,1647,8.027,1648,8.027,1649,8.027]],["t/314",[1515,4.635,1650,9.051]],["t/316",[1651,9.219]],["t/318",[1236,5.957,1563,4.657,1620,5.957,1652,7.427,1653,7.427,1654,7.427,1655,7.427,1656,7.427,1657,7.427,1658,7.427,1659,7.427,1660,7.427,1661,7.427]],["t/320",[0,0.39,1551,3.822,1662,8.889]],["t/322",[0,0.35,408,5.377,1236,4.75,1515,3.033,1547,5.018,1551,2.546,1558,5.377,1559,5.377,1560,3.66,1563,2.986,1620,4.75,1645,5.018,1646,5.018,1663,7.976,1664,5.922,1665,5.922,1666,4.75,1667,5.922,1668,5.922,1669,5.922,1670,5.922,1671,5.922,1672,5.922,1673,5.922,1674,5.922,1675,5.922,1676,4.75,1677,5.922,1678,5.922]],["t/324",[0,0.317,1620,5.784,1666,5.784,1679,7.211,1680,7.211,1681,7.211,1682,7.211,1683,7.211,1684,7.211,1685,7.211,1686,7.211,1687,7.211,1688,7.211,1689,7.211,1690,7.211,1691,7.211]],["t/326",[0,0.321,1450,4.326,1692,7.317,1693,7.317,1694,7.317,1695,7.317,1696,7.317,1697,7.317,1698,6.2,1699,7.317,1700,7.317,1701,7.317,1702,7.317,1703,7.317,1704,7.317]],["t/328",[394,4.065,1565,5.493,1587,6.808]],["t/330",[0,0.397,1587,6.932]],["t/332",[0,0.488]],["t/334",[0,0.477]],["t/336",[0,0.405]],["t/338",[0,0.493,1705,8.748,1706,6.815,1707,6.815,1708,6.815,1709,5.775,1710,5.22,1711,6.815,1712,6.815,1713,6.815,1714,6.815]],["t/340",[0,0.487,4,1.551,83,7.308,171,6.721,249,2.862,1059,6.25,1565,4.078,1715,4.105,1716,4.105,1717,3.462,1718,4.105,1719,4.105,1720,6.598,1721,4.521,1722,4.521,1723,2.936,1724,4.521,1725,4.521,1726,4.521,1727,4.521,1728,4.521,1729,4.105,1730,4.105,1731,4.521,1732,4.521,1733,4.105]],["t/342",[0,0.486,4,1.51,83,3.529,171,5.121,249,4.095,1565,2.719,1715,3.995,1716,5.874,1717,4.955,1718,3.995,1719,3.995,1723,2.858,1729,5.874,1730,3.995,1733,3.995,1734,4.4,1735,4.4,1736,4.4,1737,4.4,1738,4.4,1739,4.4,1740,4.4,1741,7.679,1742,4.4,1743,4.4,1744,6.47,1745,4.4,1746,4.4,1747,4.4,1748,4.4,1749,4.4,1750,4.4,1751,4.4,1752,4.4]],["t/344",[0,0.463,83,7.924,171,5.536,249,5.251]],["t/346",[0,0.451,394,3.556,1551,3.343,1753,6.014,1754,5.955,1755,5.721,1756,5.346,1757,6.589]],["t/349",[302,4.388,1753,6.192,1758,7.846,1759,7.408,1760,7.408,1761,7.408]],["t/351",[0,0.408,34,4.255,1758,5.051,1762,7.544,1763,5.718,1764,7.574,1765,7.88,1766,5.718,1767,5.718,1768,5.718,1769,7.041,1770,5.718,1771,5.718,1772,5.718,1773,5.718,1774,5.718]],["t/353",[0,0.474,1775,6.148,1776,6.148,1777,7.288,1778,7.288,1779,7.288]],["t/357",[0,0.5,1567,3.263,1780,6.501,1781,5.508,1782,6.328,1783,7.36,1784,7.36,1785,5.508,1786,5.508,1787,5.508]],["t/359",[0,0.482,4,2.761,14,1.691,249,3.371,1567,2.864,1609,3.918,1782,4.259,1788,2.212,1789,4.835,1790,4.835,1791,3.092,1792,8.379,1793,4.835,1794,2.505,1795,4.835,1796,4.835,1797,6.734,1798,5.954,1799,4.835,1800,4.835,1801,4.835,1802,4.835,1803,4.835,1804,3.092,1805,2.505,1806,3.092,1807,3.092,1808,3.092,1809,3.092,1810,3.092,1811,2.885,1812,3.092,1813,3.092,1814,3.918,1815,4.835,1816,3.092,1817,3.092]],["t/361",[0,0.489,1567,4.584,1782,5.535,1788,3.54,1794,6.973,1805,4.817,1818,3.955,1819,5.944,1820,5.944,1821,5.547]],["t/363",[0,0.5,4,0.912,20,1.08,87,2.39,1133,2.698,1272,1.774,1274,2.835,1465,1.726,1466,1.774,1492,1.643,1567,4.34,1814,5.619,1818,2.637,1822,2.413,1823,2.413,1824,2.413,1825,2.413,1826,2.413,1827,2.252,1828,3.212,1829,2.413,1830,2.413,1831,7.537,1832,5.337,1833,4.614,1834,1.887,1835,2.413,1836,3.964,1837,3.964,1838,2.413,1839,2.413,1840,2.413,1841,3.964,1842,2.413,1843,2.413,1844,2.413,1845,2.413,1846,1.827,1847,2.132,1848,2.413,1849,2.413]],["t/365",[0,0.497,20,1.355,75,2.016,124,1.506,195,2.227,1450,1.973,1465,3.403,1466,3.498,1492,2.062,1551,1.434,1567,1.795,1592,1.526,1609,2.455,1611,1.973,1756,3.603,1832,4.805,1833,3.403,1834,2.369,1846,2.294,1850,3.029,1851,3.029,1852,2.827,1853,5.877,1854,3.029,1855,3.029,1856,3.029,1857,5.877,1858,3.029,1859,3.029,1860,3.029,1861,3.029,1862,3.029,1863,4.759,1864,2.112,1865,3.029,1866,3.029,1867,3.029,1868,1.895,1869,2.676,1870,3.029,1871,3.029,1872,4.759,1873,4.204,1874,3.029,1875,3.029,1876,2.676,1877,3.029]],["t/367",[0,0.493,26,2.125,42,2.866,56,1.759,87,0.858,1269,1.113,1274,1.018,1489,1.046,1540,3.021,1551,0.674,1592,0.717,1598,5.973,1599,1.201,1753,4.181,1775,1.201,1776,1.201,1818,1.679,1828,3.331,1833,2.43,1864,0.992,1878,5.201,1879,1.423,1880,1.113,1881,3.398,1882,1.423,1883,2.523,1884,1.423,1885,4.11,1886,1.423,1887,1.423,1888,1.423,1889,1.423,1890,1.257,1891,1.423,1892,1.423,1893,2.523,1894,2.753,1895,2.523,1896,4.11,1897,2.523,1898,1.423,1899,1.423,1900,1.423,1901,1.423,1902,3.001,1903,1.423,1904,1.423,1905,1.423,1906,3.72,1907,2.354,1908,2.523,1909,1.423,1910,1.423,1911,1.423,1912,1.328,1913,1.423,1914,1.328,1915,2.523,1916,1.423,1917,1.328,1918,1.201,1919,1.423,1920,1.423,1921,1.423,1922,1.423,1923,7.466,1924,2.523,1925,1.423,1926,1.423,1927,1.423,1928,2.523,1929,3.631,1930,1.423,1931,1.423,1932,1.423,1933,2.523,1934,2.523,1935,1.423,1936,1.423,1937,1.423,1938,2.523,1939,2.229,1940,2.523,1941,2.523,1942,2.523,1943,1.423,1944,1.423,1945,1.423,1946,5.201,1947,2.523,1948,2.523,1949,2.523,1950,1.423,1951,1.423]],["t/370",[0,0.503,1196,4.785,1272,4.918,1515,3.773,1587,3.147,1832,4.185,1833,2.669,1952,5.583,1953,7.427,1954,3.731,1955,3.731,1956,5.583,1957,3.731,1958,3.731,1959,3.731,1960,5.583,1961,5.583,1962,4.71,1963,3.296,1964,3.731,1965,3.731,1966,3.731,1967,3.731]],["t/372",[0,0.506,1515,2.928,1764,4.379,1833,5.058,1963,4.586,1968,5.191,1969,5.191,1970,5.191,1971,8.635,1972,5.191,1973,5.191,1974,5.191]],["t/375",[0,0.488,114,3.068,415,3.806,1450,2.261,1492,2.364,1515,1.959,1567,2.057,1814,2.814,1818,3.519,1832,2.172,1873,3.068,1975,2.629,1976,3.473,1977,3.473,1978,3.473,1979,3.473,1980,3.241,1981,5.289,1982,5.658,1983,3.473,1984,3.241,1985,3.473,1986,3.473,1987,3.473,1988,3.473,1989,3.473,1990,3.473,1991,3.473,1992,3.473,1993,3.473,1994,3.473,1995,3.473,1996,3.473,1997,3.473,1998,3.473,1999,3.473,2000,3.473,2001,5.289,2002,5.289,2003,5.289,2004,3.473,2005,3.473,2006,3.473,2007,3.473,2008,3.473,2009,3.473]],["t/377",[0,0.503,4,1.588,124,2.09,1465,3.007,1466,3.09,1560,2.861,1561,2.188,1563,1.441,1567,5.391,1592,3.07,1753,2.931,1780,6.673,1782,3.007,1794,2.102,1818,4.772,1846,3.183,1868,2.63,1876,2.291,2010,2.594,2011,6.096,2012,2.594,2013,4.296,2014,4.683,2015,2.594,2016,2.594,2017,2.594,2018,2.594,2019,2.102,2020,2.594]],["t/379",[0,0.486,16,2.219,145,3.626,195,4.228,394,1.476,960,2.735,1053,2.735,1068,2.375,1109,2.155,1465,2.096,1519,2.375,1560,4.45,1565,1.995,1567,5.644,1592,2.335,1753,3.232,1782,3.316,1805,2.375,1818,5.04,1847,2.589,1864,2.043,1868,2.9,1869,2.589,1939,2.589,1975,2.219,2013,3.757,2019,3.757,2021,2.931,2022,2.931,2023,2.931,2024,2.375,2025,2.931,2026,2.931,2027,2.931,2028,2.931,2029,2.931,2030,2.931,2031,2.931,2032,2.472,2033,2.931,2034,2.096,2035,2.931]],["t/381",[0,0.434,1473,6.105,1499,5.407,2036,8.295]],["t/384",[0,0.508,4,2.901,148,4.844,691,6.297,2037,5.235,2038,5.235,2039,5.235,2040,5.235,2041,5.235,2042,5.235,2043,5.235]],["t/386",[0,0.46,2044,8.289,2045,8.159,2046,8.159,2047,8.159]],["t/389",[33,3.274,375,4.329,1109,5.158,1294,5.132,1473,5.849,1499,5.601,1538,5.313,1540,3.773,1583,4.533,2032,4.329,2048,7.728,2049,6.548,2050,5.652,2051,5.652,2052,5.652,2053,5.132,2054,4.329,2055,7.728,2056,4.789,2057,5.652,2058,5.652,2059,5.652]],["t/391",[2060,8.37]],["t/393",[0,0.465,4,3.287,11,0.879,20,3.83,86,0.637,124,1.858,148,3.9,156,2.274,214,1.607,302,0.952,375,0.73,565,4.745,571,5.481,626,0.702,629,1.12,790,2.914,838,0.702,1005,0.677,1109,2.425,1110,0.808,1153,1.499,1196,0.619,1231,0.73,1259,0.866,1274,0.619,1450,1.046,1473,2.245,1489,1.181,1499,1.989,1540,4.109,1581,0.986,1584,1.91,1611,0.564,1982,1.419,2049,5.423,2060,0.866,2061,0.866,2062,1.606,2063,0.866,2064,0.954,2065,1.769,2066,1.769,2067,4.479,2068,0.954,2069,0.954,2070,0.954,2071,0.954,2072,0.954,2073,1.769,2074,0.866,2075,1.769,2076,0.866,2077,0.954,2078,0.866,2079,0.954,2080,0.954,2081,0.954,2082,0.808,2083,0.954,2084,0.954,2085,5.89,2086,3.091,2087,3.091,2088,3.091,2089,1.499,2090,3.091,2091,4.933,2092,1.769,2093,1.769,2094,1.769,2095,0.954,2096,0.954,2097,0.954,2098,1.419,2099,1.769,2100,3.091,2101,1.769,2102,1.606,2103,4.115,2104,1.769,2105,1.606,2106,1.769,2107,1.985,2108,1.769,2109,0.954,2110,1.769,2111,1.769,2112,1.769,2113,1.769,2114,4.127,2115,3.487,2116,3.091,2117,1.769,2118,1.769,2119,0.954,2120,0.954,2121,1.769,2122,0.954,2123,0.954,2124,0.954,2125,1.769,2126,0.954,2127,0.808,2128,0.954,2129,0.954,2130,0.954,2131,1.769,2132,0.954,2133,0.954,2134,0.954,2135,0.954,2136,1.499,2137,0.954,2138,0.954,2139,0.954,2140,0.954,2141,0.954,2142,0.765,2143,0.702,2144,0.954,2145,0.808,2146,0.73,2147,0.954,2148,0.954]],["t/395",[0,0.436,1472,5.12,1473,4.457,1499,3.947,1538,4.958,2115,6.11,2149,7.211,2150,7.211,2151,7.211,2152,7.211,2153,7.211,2154,7.211,2155,7.211,2156,7.211]],["t/397",[1473,5.493,1499,4.865,2157,8.889]],["t/399",[0,0.481,415,3.078,838,4.693,1374,5.404,1472,4.529,1473,5.178,1498,4.385,1499,4.586,1982,6.721,2053,5.791,2061,5.791,2062,7.608,2063,5.791,2158,5.791]],["t/401",[0,0.46,1374,6.913,2158,7.408,2159,8.159,2160,4.315,2161,8.159]],["t/403",[0,0.497,127,5.038,171,4.891,838,5.392,2102,6.654,2114,4.753,2115,4.436,2160,4.472,2162,5.235,2163,5.235,2164,6.654,2165,5.235,2166,5.235,2167,5.235,2168,5.235,2169,5.235,2170,5.235,2171,5.235,2172,5.235]],["t/405",[1472,6.2,1498,6.003,1499,4.78,2164,7.929]],["t/407",[0,0.457,415,3.48,2160,5.246,2173,7.211,2174,7.211,2175,9.068,2176,9.068,2177,7.211,2178,7.211]],["t/409",[0,0.474,1499,4.394,1516,5.081,2179,8.027,2180,8.027,2181,5.699]],["t/411",[0,0.457]],["t/413",[0,0.457]],["t/415",[2182,7.394]],["t/417",[0,0.465,1515,3.539,1518,5.085,1519,5.085,1570,5.543,2024,5.085,2182,8.218,2183,6.91,2184,6.91,2185,6.91,2186,6.91,2187,5.543]],["t/419",[0,0.308,791,3.98,1495,5.938,1497,4.331,1538,4.818,1594,5.156,1631,6.363,2049,5.938,2188,7.008,2189,7.008,2190,7.008,2191,7.008,2192,7.008,2193,7.008,2194,7.008,2195,7.008,2196,7.008,2197,4.143]],["t/421",[0,0.41,76,3.632,771,3.438,976,3.632,1594,4.669,1595,3.892,2024,3.154,2182,5.09,2187,3.438,2198,4.287,2199,5.787,2200,6.346,2201,4.287,2202,4.287,2203,4.287,2204,4.287,2205,6.346,2206,4.287,2207,5.377,2208,4.287,2209,3.283,2210,4.287,2211,6.346,2212,4.287,2213,4.287,2214,4.287,2215,3.632,2216,4.287,2217,4.287,2218,4.287,2219,4.287,2220,3.892,2221,4.287,2222,4.287,2223,4.287,2224,4.287,2225,6.346,2226,4.287,2227,4.287,2228,4.287,2229,4.287,2230,4.287,2231,4.287,2232,4.287,2233,4.287,2234,4.287,2235,4.287,2236,4.287,2237,4.287]],["t/423",[0,0.494,415,3.335,1469,5.855,1811,5.855,2182,8.218,2238,6.91,2239,6.91,2240,6.91]],["t/425",[1868,4.874,2241,8.582,2242,8.582,2243,8.582,2244,7.272]],["t/427",[0,0.336,87,4.19,689,6.682,2160,4.049,2245,7.656,2246,7.656,2247,7.656,2248,7.656,2249,7.656,2250,7.656,2251,7.656]],["t/429",[0,0.409,148,4.931,629,4.773,2160,5.353,2252,7.54,2253,7.54,2254,7.54,2255,7.54,2256,7.54]],["t/431",[0,0.341,148,5.025,2160,5.426,2257,7.776,2258,7.776,2259,7.776,2260,7.776,2261,7.776]],["t/433",[0,0.436,4,2.474,87,3.947,148,3.814,239,5.784,629,4.565,2160,5.504,2262,6.548,2263,7.211,2264,7.211,2265,7.211]],["t/437",[0,0.434,4,2.63,20,2.27,26,3.174,44,4.534,56,3.538,325,5.444,626,4.112,1133,3.454,1584,4.739,2143,4.112,2266,5.589,2267,5.589,2268,5.589,2269,5.589,2270,5.589,2271,5.589,2272,5.074,2273,6.497,2274,5.589,2275,5.589,2276,4.28,2277,4.482,2278,4.112,2279,5.074,2280,5.589,2281,5.589]],["t/439",[0,0.463,4,1.723,20,4.005,26,2.853,44,5.83,325,5.054,626,3.696,1565,3.104,1584,4.399,1741,6.463,2143,3.696,2272,4.561,2277,4.029,2278,3.696,2279,4.561,2282,5.023,2283,7.118,2284,7.118,2285,5.023,2286,5.023,2287,5.023,2288,5.023,2289,5.023]],["t/442",[0,0.439,46,5.031,2290,7.317,2291,7.317,2292,7.317,2293,9.151,2294,7.317,2295,7.317,2296,7.317,2297,7.317,2298,7.317,2299,7.317]],["t/444",[0,0.482,4,1.732,45,3.13,124,1.762,127,4.066,148,3.128,255,2.872,1109,2.605,1133,5.293,1378,1.968,1511,1.55,1584,1.435,1890,4.048,2105,2.109,2197,2.984,2277,1.863,2300,2.323,2301,2.323,2302,2.323,2303,1.968,2304,3.903,2305,2.323,2306,2.323,2307,2.323,2308,2.323,2309,2.323,2310,2.323,2311,2.323,2312,2.323,2313,5.915,2314,2.323,2315,2.323,2316,2.323,2317,2.323,2318,2.323,2319,2.323,2320,2.323,2321,2.323,2322,2.323,2323,2.323,2324,3.903,2325,2.323,2326,2.323,2327,2.323,2328,2.323,2329,2.323,2330,2.323,2331,2.323,2332,3.903,2333,2.323,2334,2.323,2335,2.323,2336,2.323,2337,2.323,2338,2.323,2339,2.323,2340,2.323,2341,2.323,2342,2.323,2343,2.323,2344,3.903,2345,2.323,2346,2.323,2347,2.323,2348,2.323,2349,2.323,2350,2.323,2351,2.323,2352,2.323,2353,2.323,2354,2.323,2355,2.323,2356,2.109,2357,3.903,2358,2.323,2359,3.903,2360,2.323,2361,5.915,2362,3.307,2363,2.323,2364,3.903,2365,2.323,2366,2.323,2367,2.323,2368,2.323]],["t/446",[0,0.457]],["t/448",[2019,6.425,2369,8.732,2370,8.732,2371,8.732]],["t/450",[55,3.631,451,6.023,1133,5.894,1832,3.768,2372,8.597,2373,8.597,2374,6.633,2375,6.023,2376,6.633,2377,6.023,2378,6.023,2379,6.633,2380,7.284,2381,6.633,2382,6.633,2383,6.633,2384,6.023]],["t/452",[0,0.448,55,3.953,1832,5.434,2375,4.655,2377,6.557,2378,6.557,2385,5.127,2386,5.127,2387,7.222,2388,5.127,2389,8.361,2390,5.127,2391,5.127,2392,4.344,2393,7.222,2394,5.127,2395,5.127,2396,5.127,2397,7.222,2398,5.127,2399,5.127,2400,5.127,2401,5.127,2402,5.127,2403,5.127,2404,5.127]],["t/455",[0,0.377,2405,8.582,2406,8.582,2407,8.582,2408,8.582]],["t/457",[2409,7.129,2410,8.071,2411,8.889]],["t/459",[0,0.463,551,5.536,2410,7.532,2412,8.295,2413,7.532]],["t/462",[2160,5.277,2414,8.436,2415,8.436,2416,8.436,2417,7.659]],["t/464",[0,0.425,317,5.825,1832,3.005,2160,5.868,2417,4.804,2418,5.291,2419,5.291,2420,5.291,2421,7.383,2422,5.291,2423,5.291,2424,5.291,2425,5.291,2426,5.291,2427,5.291,2428,5.291,2429,4.804,2430,4.804,2431,5.291,2432,5.291,2433,5.291]],["t/467",[11,3.869,171,5.198,272,5.965,420,5.191,1511,5.198,1551,3.348,1611,3.38,2032,4.379,2034,3.713,2160,4.119,2434,8.635,2435,6.247,2436,5.717,2437,5.717,2438,4.845,2439,4.586,2440,5.717,2441,5.191,2442,5.717,2443,5.717,2444,5.191,2445,5.198,2446,5.717]],["t/469",[11,4.224,86,5.676,171,3.531,193,6.256,272,5.655,1026,4.804,1060,4.804,1107,4.244,1236,4.244,1511,3.531,1583,4.244,1611,3.128,2032,6.513,2082,4.483,2160,2.798,2434,8.355,2435,4.244,2439,4.244,2445,4.928,2447,5.291,2448,5.291,2449,5.291,2450,4.483,2451,5.291,2452,4.052,2453,5.291,2454,5.291,2455,5.291,2456,5.291]],["t/471",[11,3.582,86,6.62,272,6.945,1551,3.1,1611,5.361,2082,6.11,2435,5.784,2457,5.784,2458,7.211,2459,7.211,2460,7.211,2461,7.211]],["t/474",[0,0.405]],["t/476",[0,0.483,20,3.435,55,4.628,65,3.852,1231,4.01,1832,4.802,2384,4.753,2450,4.436,2462,5.235,2463,5.235,2464,5.235,2465,5.235,2466,5.235,2467,5.235,2468,5.235,2469,5.235,2470,5.235,2471,8.455,2472,5.235,2473,5.235,2474,5.235,2475,4.199,2476,5.235]],["t/478",[4,3.049,2477,8.071,2478,8.889]],["t/481",[0,0.488]],["t/483",[0,0.457,124,3.256,1582,6.548,2479,7.211,2480,7.211,2481,7.211,2482,7.211,2483,7.211,2484,7.211,2485,7.211,2486,7.211,2487,7.211,2488,7.211]],["t/485",[0,0.451,2429,7.06,2430,7.06,2489,7.776,2490,7.776,2491,7.776,2492,7.776,2493,7.776,2494,7.776]],["t/488",[2495,8.889,2496,8.889,2497,8.889]],["t/490",[0,0.39,1331,8.071,2276,6.808]],["t/492",[2498,9.219]],["t/494",[0,0.44,4,1.41,20,1.669,124,3.954,148,3.897,689,6.218,691,4.227,790,3.296,2074,3.731,2089,3.482,2362,3.482,2499,4.109,2500,4.109,2501,4.109,2502,4.109,2503,4.109,2504,3.731,2505,5.583,2506,3.731,2507,4.109,2508,4.109,2509,4.109,2510,4.109,2511,4.109,2512,3.731,2513,4.109,2514,5.583,2515,4.109,2516,4.109,2517,4.109,2518,4.109,2519,4.109,2520,4.109,2521,4.109,2522,3.731,2523,4.109,2524,4.109,2525,4.109,2526,4.109,2527,3.731,2528,4.109,2529,3.731,2530,4.109,2531,3.482,2532,4.109,2533,4.109,2534,4.109]],["t/497",[0,0.457]],["t/499",[0,0.494]],["t/501",[0,0.457]],["t/504",[0,0.479,4,1.664,20,1.514,34,3.273,45,3.89,55,4.26,58,1.863,124,3.34,145,1.561,148,5.094,194,1.764,195,1.468,629,3.615,689,4.538,691,4.394,1109,2.488,1821,3.158,2014,1.764,2089,1.863,2107,1.764,2362,1.863,2512,1.997,2514,3.384,2522,1.997,2527,1.997,2529,1.997,2535,2.199,2536,2.199,2537,3.727,2538,2.199,2539,2.199,2540,2.199,2541,2.199,2542,2.199,2543,2.199,2544,2.199,2545,2.199,2546,3.727,2547,2.199,2548,2.199,2549,2.199,2550,2.199,2551,2.199,2552,2.199,2553,2.199,2554,2.199,2555,2.199,2556,2.199,2557,2.199,2558,2.199,2559,2.199,2560,2.199,2561,2.199,2562,2.199,2563,3.384,2564,2.199,2565,3.727,2566,2.199,2567,3.727,2568,2.199,2569,2.199,2570,2.199,2571,2.199,2572,2.199,2573,2.199,2574,4.85,2575,3.384,2576,3.727,2577,2.199,2578,2.199,2579,2.199,2580,2.199,2581,2.199,2582,2.199,2583,2.199]],["t/507",[689,6.2,2584,8.732,2585,8.732,2586,7.929]],["t/509",[0,0.461,4,1.879,20,0.592,26,1.479,33,2.486,44,3.967,46,4.613,114,5.095,156,2.597,195,0.973,272,1.994,486,1.116,626,1.072,655,1.323,689,2.506,691,1.002,1154,3.205,1584,3.674,1611,1.539,1827,2.991,1828,1.072,1868,1.479,1907,1.235,1975,1.79,1980,2.206,1984,2.206,2143,2.597,2145,1.235,2146,1.116,2276,1.116,2277,1.169,2278,1.072,2356,2.364,2504,3.897,2506,1.323,2563,1.323,2586,1.323,2587,2.604,2588,1.457,2589,1.457,2590,1.457,2591,1.457,2592,1.457,2593,1.457,2594,1.457,2595,1.457,2596,1.457,2597,2.604,2598,1.457,2599,2.604,2600,1.457,2601,1.457,2602,1.457,2603,1.457,2604,1.457,2605,1.457,2606,2.604,2607,1.457,2608,3.529,2609,2.604,2610,2.604,2611,1.457,2612,1.169,2613,1.457,2614,1.457,2615,1.457,2616,1.457,2617,1.457,2618,1.457,2619,1.457,2620,2.604,2621,2.604,2622,1.457,2623,1.457,2624,1.457,2625,1.457,2626,1.457,2627,2.604,2628,1.457,2629,1.457,2630,3.529,2631,2.604,2632,1.457,2633,2.604,2634,2.604,2635,2.604,2636,2.604,2637,1.457,2638,1.457,2639,3.529,2640,4.292,2641,4.932,2642,1.457,2643,2.604,2644,1.457,2645,1.457,2646,1.457,2647,1.457,2648,1.457,2649,1.235,2650,1.457,2651,1.457,2652,1.457,2653,1.457,2654,1.457,2655,1.457,2656,1.457,2657,1.457,2658,1.457,2659,4.292,2660,1.457,2661,1.457,2662,1.457,2663,1.457,2664,1.323,2665,1.457,2666,4.292,2667,1.457,2668,1.457,2669,1.457,2670,1.457,2671,1.457,2672,1.457,2673,1.457,2674,1.457,2675,1.457,2676,1.457,2677,1.457,2678,2.604,2679,2.604,2680,2.604,2681,2.604,2682,2.604,2683,1.457,2684,1.457,2685,1.457,2686,1.457,2687,1.457,2688,1.457,2689,1.457,2690,1.457,2691,1.457,2692,1.323,2693,1.457,2694,1.457,2695,1.457,2696,1.457]],["t/511",[20,3.676,2697,9.051]],["t/513",[75,5.011,394,3.793,1592,3.793,2698,7.532,2699,4.003,2700,6.104,2701,4.54]],["t/515",[9,1.973,11,3.215,75,3.166,214,2.167,394,3.354,400,2.827,571,5.882,1040,3.721,1059,4.204,1077,2.676,1133,3.239,1445,2.455,1489,3.498,1497,2.062,1511,2.227,1551,3.804,1560,2.062,1563,2.643,1592,2.397,1788,3.046,1868,2.977,2054,2.555,2244,2.827,2278,2.455,2438,2.827,2452,2.555,2531,4.441,2699,4.083,2701,2.869,2702,3.029,2703,3.029,2704,3.029,2705,3.029,2706,3.029,2707,2.676,2708,4.759,2709,2.676,2710,2.827,2711,4.759,2712,3.029,2713,3.029,2714,4.759,2715,3.029,2716,2.676,2717,3.029,2718,3.029,2719,2.676,2720,3.029,2721,2.676,2722,3.029,2723,2.676,2724,2.676,2725,2.676,2726,2.676,2727,3.029,2728,3.029,2729,2.455,2730,3.029,2731,3.029,2732,3.029,2733,2.827]],["t/517",[0,0.491,1788,4.175,2699,3.584,2701,4.065,2734,6.743,2735,6.743]],["t/519",[0,0.486,1277,5.699,1788,4.023,2736,7.288]],["t/521",[0,0.493,42,2.929,325,2.716,826,4.461,1563,2.937,1666,5.658,1710,4.461,1723,4.581,1788,1.588,1868,3.308,1880,2.716,2380,3.241,2737,3.473,2738,3.473,2739,3.473,2740,3.473,2741,4.672,2742,3.068,2743,3.068,2744,3.473,2745,3.473,2746,3.473,2747,3.473,2748,3.473,2749,3.473,2750,3.473,2751,3.068,2752,3.473,2753,3.473,2754,3.473,2755,3.068,2756,3.473,2757,3.473,2758,6.405,2759,3.473,2760,5.289,2761,3.473,2762,3.473,2763,2.814,2764,3.473,2765,3.068]],["t/523",[0,0.473,826,4.233,1698,4.683,1710,4.233,1723,5.651,2742,4.433,2743,4.433,2751,4.433,2755,4.433,2766,5.018,2767,5.018,2768,5.018,2769,5.018,2770,5.018,2771,5.018,2772,5.018,2773,5.018,2774,5.018,2775,5.018,2776,6.909,2777,5.018,2778,5.018,2779,5.018,2780,5.018,2781,5.018,2782,5.018]],["t/526",[0,0.499,34,3.589,55,3.836,1516,4.436,1788,3.698,2783,6.363,2784,5.367,2785,5.621]],["t/533",[0,0.483,1552,5.13,1788,3.281,2724,6.336,2785,6.336,2786,7.172]],["t/535",[0,0.425,1272,5.357,1442,6.438,1551,3.451,1561,6.148,1563,4.048,2787,6.438,2788,8.027]],["t/538",[2789,8.37]],["t/540",[4,0.853,124,1.122,148,1.314,280,1.903,323,1.765,394,3.75,551,1.659,629,1.573,791,1.412,1050,2.106,1068,1.829,1133,1.536,1196,1.614,1277,2.932,1551,3.773,1560,1.536,1563,1.253,1565,2.552,1581,1.385,1588,4.727,1592,3.892,1594,1.829,1611,2.442,1788,2.201,1846,1.709,1894,3.039,1906,1.614,1918,1.903,1962,1.903,1975,1.709,2136,2.106,2197,1.469,2199,3.163,2207,2.106,2209,1.903,2439,3.312,2457,3.312,2612,1.993,2649,2.106,2699,1.199,2700,1.829,2709,1.993,2716,1.993,2719,1.993,2721,1.993,2726,4.25,2729,1.829,2790,2.256,2791,1.993,2792,2.256,2793,2.106,2794,1.993,2795,4.382,2796,2.256,2797,2.256,2798,2.256,2799,2.256,2800,1.829,2801,2.256,2802,2.256,2803,2.256,2804,2.256,2805,2.256,2806,2.256,2807,2.256,2808,2.256,2809,1.765,2810,1.993,2811,2.256,2812,1.993,2813,2.256,2814,2.256,2815,1.993,2816,2.256,2817,2.256,2818,1.659,2819,2.256,2820,1.993,2821,2.256,2822,2.256,2823,2.256,2824,2.256,2825,1.993,2826,1.993,2827,2.256,2828,2.256,2829,1.993,2830,2.256,2831,1.993,2832,1.993,2833,2.256,2834,2.256,2835,2.256,2836,2.256,2837,1.993,2838,1.44,2839,1.993,2840,1.993,2841,2.256,2842,2.256,2843,2.256,2844,1.993,2845,2.106,2846,2.256,2847,2.256,2848,2.106]],["t/542",[0,0.503,26,2.123,56,2.366,394,1.709,1497,2.31,1551,2.991,1552,5.062,1563,1.885,1592,3.564,1788,1.553,2197,2.21,2699,2.762,2784,2.863,2800,2.751,2809,2.654,2818,2.495,2820,2.998,2831,2.998,2832,2.998,2838,4.515,2839,2.998,2840,2.998,2849,4.212,2850,3.394,2851,3.168,2852,2.165,2853,3.394,2854,3.394,2855,3.394,2856,2.863,2857,3.394,2858,5.197,2859,3.394]],["t/545",[0,0.497,1450,3.42,1515,2.962,1516,3.661,1592,3.59,1788,3.26,2445,3.86,2701,3.166,2818,7.033,2860,3.976,2861,5.252,2862,5.252]],["t/547",[0,0.5,20,0.935,1125,1.846,1129,3.106,1302,1.95,1450,1.36,1492,2.393,1538,1.582,1551,0.989,1709,3.281,1788,0.956,1880,4.175,1906,1.494,2273,1.95,2276,1.762,2409,1.846,2475,1.846,2699,1.11,2765,4.021,2791,3.106,2800,1.693,2838,2.243,2856,1.762,2863,5.956,2864,4.552,2865,1.95,2866,1.95,2867,2.089,2868,2.089,2869,2.089,2870,4.552,2871,2.089,2872,1.762,2873,2.089,2874,3.516,2875,2.089,2876,2.089,2877,2.089,2878,2.089,2879,2.089,2880,2.089,2881,2.089,2882,2.089,2883,3.516,2884,2.089,2885,2.089,2886,2.089,2887,2.089,2888,4.248,2889,2.089,2890,2.089,2891,2.089,2892,2.089,2893,2.089,2894,3.516,2895,2.089,2896,2.089,2897,2.089,2898,2.089,2899,2.089,2900,3.516,2901,3.516,2902,2.089,2903,2.089,2904,2.089,2905,2.089,2906,2.089,2907,2.089,2908,2.089,2909,2.089,2910,2.089,2911,2.089,2912,2.089,2913,2.089,2914,2.089,2915,2.089,2916,2.089,2917,2.089,2918,2.089]],["t/549",[0,0.303,394,3.16,1551,2.971,1755,5.085,1756,4.751,1917,5.855,1962,5.293,2220,6.274,2477,6.274,2845,5.855,2919,7.479,2920,6.274,2921,6.91,2922,6.91,2923,6.91,2924,6.274,2925,6.91,2926,6.91]],["t/551",[76,5.547,394,2.993,1035,5.944,1107,5.25,1511,4.369,1560,5.267,1567,3.521,1583,5.25,1592,3.897,1756,4.5,2013,4.817,2927,6.546,2928,6.546,2929,6.546,2930,5.944,2931,6.546,2932,6.546,2933,6.546,2934,6.546,2935,6.546,2936,6.546]],["t/554",[0,0.147,394,2.96,551,2.227,1266,2.555,1269,3.721,1273,2.827,1274,2.167,1300,3.029,1511,2.227,1518,3.856,1519,4.762,1551,1.434,1560,2.062,1592,1.526,1611,1.973,1754,2.555,1755,4.762,1852,2.827,1912,2.827,1918,2.555,2019,2.455,2142,2.676,2413,3.029,2919,5.484,2924,3.029,2937,3.336,2938,3.336,2939,5.241,2940,3.336,2941,3.336,2942,6.472,2943,3.336,2944,3.336,2945,3.336,2946,3.336,2947,5.241,2948,3.336,2949,3.336,2950,3.336,2951,3.336,2952,3.336,2953,3.336,2954,3.336,2955,2.827,2956,3.336,2957,3.336,2958,3.336,2959,3.336,2960,3.336,2961,3.336,2962,2.827,2963,3.336,2964,3.336,2965,3.336,2966,3.336,2967,3.336,2968,3.336,2969,3.336,2970,3.336,2971,3.336,2972,5.241,2973,5.241,2974,5.241,2975,5.241,2976,3.336,2977,3.336,2978,3.336,2979,5.241,2980,3.336,2981,3.336,2982,3.336,2983,3.336,2984,3.336,2985,3.336,2986,3.336,2987,3.336,2988,3.336]],["t/556",[0,0.353,2034,6.29,2989,8.027,2990,8.027,2991,8.027,2992,8.027,2993,8.027,2994,8.027]],["t/559",[1272,6.535,1609,6.013,1753,3.888,1818,4.937,1868,3.488,2034,3.988,2930,5.576,2995,6.141,2996,6.141,2997,6.141,2998,6.141,2999,6.141,3000,6.141,3001,6.141,3002,6.141,3003,6.141,3004,6.141,3005,6.141,3006,6.141,3007,6.141,3008,6.141,3009,6.141,3010,6.141]],["t/562",[0,0.358,415,3.938,1149,7.408,2787,6.544,3011,8.159,3012,8.159,3013,8.159,3014,8.159]],["t/564",[11,3.924,415,4.63,1864,5,2034,5.13,2457,6.336,2475,6.336,3015,7.172,3016,7.899,3017,7.899]],["t/566",[0,0.371,551,5.645,852,5.874,1015,3.37,1153,3.729,1611,2.602,1764,3.37,1775,3.37,1776,3.37,2076,3.995,2078,5.874,2098,3.529,2435,3.529,2444,6.966,2710,3.729,2793,3.729,3015,3.995,3018,6.47,3019,4.4,3020,6.47,3021,4.4,3022,6.47,3023,6.47,3024,4.4,3025,4.4,3026,4.4,3027,7.672,3028,4.4,3029,4.4,3030,4.4,3031,4.4,3032,4.4,3033,4.4,3034,4.4,3035,4.4,3036,4.4,3037,6.47,3038,6.47,3039,4.4,3040,4.4,3041,4.4,3042,4.4]],["t/568",[537,7.929,3043,8.732,3044,8.732,3045,8.732]],["t/570",[0,0.472,415,3.812,1442,6.336,1443,7.172,1444,7.172,1445,5.812,1446,7.172]],["t/572",[1447,8.37]],["t/575",[415,4.214,1448,7.929,1449,7.929,1450,5.163]],["t/577",[1451,6.363,1452,6.363,1453,6.363,1454,6.363,1455,6.363,1456,6.363,1457,6.363,1458,6.363,1459,6.363,1460,6.363,1461,6.363,1462,6.363,1463,6.363,1464,6.363,1465,4.551,1466,4.677,1467,6.363,1468,6.363]],["t/579",[1469,6.589,1470,7.06,1471,7.06,1472,5.521,1473,4.805,1474,7.06,1475,7.06,1476,7.06,1477,7.06,1478,7.06,1479,7.06]],["t/581",[1480,7.659,1481,7.659,1482,7.659,1483,7.659,1484,7.659,1485,7.659]],["t/583",[0,0.388,48,4.091,64,4.091,65,3.553,1472,6.272,1473,5.779,1486,4.384,1487,4.384,1488,4.384,1489,3.223,1490,4.384,1491,4.384,1492,2.984,1493,4.384,1494,4.384,1495,4.091,1496,4.384,1497,2.984,1498,5.561,1499,4.427,1500,4.384,1501,4.384,1502,6.283,1503,4.384,1504,4.384,1505,4.384,1506,4.384,1507,4.384,1508,4.384,1509,4.384,1510,4.384,1511,3.223,1512,4.384,1513,4.384,1514,4.384]],["t/587",[0,0.503,415,4.441,1515,5.269,1516,6.513,1517,4.804,1518,3.893,1519,3.893]],["t/589",[1520,7.532,1521,7.532,1522,6.653,1523,7.532,1524,7.532,1525,7.532,1526,7.532]],["t/591",[0,0.442,4,2.031,20,3.24,156,4.357,254,5.018,1497,3.66,1499,3.241,1522,4.75,1527,5.377,1528,5.377,1529,5.377,1530,5.377,1531,5.377,1532,5.377,1533,5.377,1534,5.377,1535,5.377,1536,5.377,1537,5.377,1538,4.071,1539,5.377,1540,3.952,1541,5.377,1542,5.377,1543,5.377,1544,5.377]],["t/593",[0,0.421,1442,6.336,1551,3.396,1563,4.837,2787,6.336,3046,7.899,3047,7.899,3048,7.899]],["t/596",[0,0.478,55,3.203,3049,5.852,3050,5.852,3051,5.852,3052,5.852,3053,5.852,3054,5.852,3055,5.852,3056,5.852,3057,5.852,3058,7.912,3059,5.852,3060,5.852,3061,5.852,3062,5.852,3063,5.852,3064,5.852,3065,5.852,3066,5.852,3067,5.852,3068,5.852,3069,5.852]],["t/598",[0,0.449,1723,6.237,1890,4.155,2888,6.164,3070,5.181,3071,6.605,3072,4.704,3073,4.704,3074,6.605,3075,5.181,3076,5.181,3077,4.704,3078,4.704,3079,5.181,3080,5.181,3081,5.181,3082,5.181,3083,5.181,3084,7.275,3085,7.275,3086,5.181,3087,5.181,3088,5.181,3089,5.181,3090,5.181,3091,5.181,3092,5.181,3093,5.181]],["t/600",[3071,6.548,3072,6.548,3073,6.548,3074,8.233,3077,6.548,3078,8.233,3094,7.211,3095,7.211,3096,7.211,3097,7.211,3098,7.211,3099,7.211,3100,7.211,3101,7.211]],["t/602",[0,0.492,1831,6.336,3102,7.899,3103,7.899,3104,7.899]],["t/604",[0,0.39,3105,8.889,3106,8.889]],["t/606",[1765,7.532,1769,7.532,3107,7.129]],["t/609",[0,0.37,145,5.99,494,6.766,3107,8.003,3108,8.436]],["t/611",[0,0.482,20,2.464,1584,3.749,1868,3.446,2664,5.508,3107,7.322,3109,5.508,3110,6.066,3111,6.066,3112,8.289,3113,6.066,3114,6.066,3115,5.508,3116,7.36,3117,6.066,3118,6.066]],["t/613",[0,0.424,20,3.553,1584,4.212,3107,7.749,3109,6.188,3112,7.943,3115,6.188,3116,6.188,3119,6.815,3120,6.815,3121,6.815,3122,6.815,3123,6.815,3124,6.815]],["t/616",[9,2.373,265,1.651,280,1.839,323,1.705,394,3.322,415,2.495,541,2.035,551,1.603,784,2.035,791,2.936,1005,1.705,1078,1.926,1196,1.559,1231,1.839,1489,1.603,1518,1.767,1540,1.603,1551,2.889,1552,3.357,1563,2.024,1581,3.367,1584,1.484,1586,3.4,1588,1.839,1589,2.035,1592,2.762,1598,3.074,1599,1.839,1676,1.926,1754,3.074,1755,2.953,1788,0.997,1834,1.705,1894,1.767,1902,1.926,1906,1.559,1929,3.219,2024,1.767,2034,3.357,2054,1.839,2056,2.035,2107,1.926,2127,2.035,2142,1.926,2160,1.27,2187,1.926,2197,3.057,2199,1.839,2209,3.074,2215,2.035,2452,1.839,2699,2.495,2707,1.926,2723,1.926,2729,2.953,2794,1.926,2795,3.671,2809,1.705,2810,1.926,2812,1.926,2825,1.926,2826,1.926,2829,1.926,2837,1.926,2838,2.325,2844,1.926,2852,4.466,2872,1.839,2955,2.035,3125,2.18,3126,2.18,3127,1.926,3128,2.035,3129,2.18,3130,2.18,3131,2.18,3132,2.18,3133,2.18,3134,2.18,3135,1.926,3136,2.18,3137,2.18,3138,2.18,3139,2.18,3140,2.18,3141,2.18,3142,2.18,3143,2.18,3144,2.18,3145,2.18,3146,2.18,3147,2.18,3148,3.554,3149,2.18,3150,2.18,3151,2.18,3152,2.18,3153,2.18,3154,2.18,3155,2.18,3156,2.18,3157,2.18,3158,2.18,3159,2.18,3160,2.18,3161,2.18,3162,2.18]],["t/618",[0,0.501,791,3.363,1552,5.857,1581,5.027,1788,2.459,1906,3.846,2699,2.858,2795,4.205,2838,3.43,2849,4.357,3148,6.2]],["t/620",[0,0.487,11,2.035,34,1.26,87,2.242,375,1.885,791,3.484,1040,2.908,1196,1.598,1445,1.811,1473,3.251,1492,2.531,1497,2.531,1499,4.025,1515,1.26,1516,1.558,1551,1.058,1581,1.371,1592,3.877,1611,1.455,1788,3.728,1864,3.33,2098,1.974,2181,3.736,2197,3.111,2303,2.085,2699,2.96,2700,1.811,2741,1.974,2763,1.811,2815,1.974,2818,2.734,2849,1.811,2852,3.553,2860,3.617,3163,2.234,3164,2.234,3165,2.234,3166,2.234,3167,2.234,3168,2.234,3169,2.234,3170,2.234,3171,2.234,3172,2.234,3173,2.234,3174,2.234,3175,2.234,3176,2.234,3177,2.085,3178,2.085,3179,2.234,3180,2.234,3181,3.736,3182,1.747,3183,2.234,3184,2.234,3185,2.085,3186,2.234,3187,2.234,3188,2.234,3189,2.234]],["t/623",[0,0.487,87,3.638,415,1.355,791,3.775,1369,6.197,1498,1.931,1581,4.368,1717,5.091,1723,1.824,1788,3.255,1832,1.595,2160,4.368,2197,3.93,2445,4.437,2699,1.355,2701,2.499,2838,1.627,2852,1.627,3127,2.252,3148,1.931,3190,2.55,3191,2.55,3192,2.55,3193,2.55,3194,2.55,3195,2.55,3196,6.035,3197,2.55,3198,4.146,3199,4.146,3200,2.55,3201,2.55,3202,2.55,3203,2.55,3204,2.55,3205,2.55,3206,2.55,3207,4.146,3208,2.55,3209,2.55,3210,2.55,3211,2.55,3212,2.55,3213,2.55,3214,2.55,3215,2.55,3216,2.55,3217,2.55,3218,3.048]],["t/625",[0,0.491,87,4.571,124,1.935,415,3.062,1262,3.632,1498,2.947,1499,2.346,1515,2.195,1581,2.389,1756,2.947,1788,3.702,1864,5.286,2181,3.044,2445,2.861,2699,2.069,2701,3.473,2852,4.376,2860,2.947,3135,3.438,3182,3.044,3218,5.95,3219,3.892,3220,3.892,3221,3.892,3222,3.892,3223,3.892]],["t/627",[0,0.504,87,2.778,791,2.882,1499,2.778,1581,3.996,1592,3.279,1788,2.978,2181,3.603,2699,4.012,2701,2.778,2838,2.94,2852,4.153,3148,3.489,3224,4.608,3225,4.608,3226,4.608,3227,4.608,3228,4.608]],["t/629",[0,0.451,394,3.556,1551,3.343,1753,6.014,1754,5.955,1755,5.721,1756,5.346,1757,6.589]],["t/632",[302,4.388,1753,6.192,1758,7.846,1759,7.408,1760,7.408,1761,7.408]],["t/634",[0,0.408,34,4.255,1758,5.051,1762,7.544,1763,5.718,1764,7.574,1765,7.88,1766,5.718,1767,5.718,1768,5.718,1769,7.041,1770,5.718,1771,5.718,1772,5.718,1773,5.718,1774,5.718]],["t/636",[0,0.474,1775,6.148,1776,6.148,1777,7.288,1778,7.288,1779,7.288]],["t/640",[0,0.5,1567,3.263,1780,6.501,1781,5.508,1782,6.328,1783,7.36,1784,7.36,1785,5.508,1786,5.508,1787,5.508]],["t/642",[0,0.482,4,2.761,14,1.691,249,3.371,1567,2.864,1609,3.918,1782,4.259,1788,2.212,1789,4.835,1790,4.835,1791,3.092,1792,8.379,1793,4.835,1794,2.505,1795,4.835,1796,4.835,1797,6.734,1798,5.954,1799,4.835,1800,4.835,1801,4.835,1802,4.835,1803,4.835,1804,3.092,1805,2.505,1806,3.092,1807,3.092,1808,3.092,1809,3.092,1810,3.092,1811,2.885,1812,3.092,1813,3.092,1814,3.918,1815,4.835,1816,3.092,1817,3.092]],["t/644",[0,0.489,1567,4.584,1782,5.535,1788,3.54,1794,6.973,1805,4.817,1818,3.955,1819,5.944,1820,5.944,1821,5.547]],["t/646",[0,0.5,4,0.912,20,1.08,87,2.39,1133,2.698,1272,1.774,1274,2.835,1465,1.726,1466,1.774,1492,1.643,1567,4.34,1814,5.619,1818,2.637,1822,2.413,1823,2.413,1824,2.413,1825,2.413,1826,2.413,1827,2.252,1828,3.212,1829,2.413,1830,2.413,1831,7.537,1832,5.337,1833,4.614,1834,1.887,1835,2.413,1836,3.964,1837,3.964,1838,2.413,1839,2.413,1840,2.413,1841,3.964,1842,2.413,1843,2.413,1844,2.413,1845,2.413,1846,1.827,1847,2.132,1848,2.413,1849,2.413]],["t/648",[0,0.497,20,1.355,75,2.016,124,1.506,195,2.227,1450,1.973,1465,3.403,1466,3.498,1492,2.062,1551,1.434,1567,1.795,1592,1.526,1609,2.455,1611,1.973,1756,3.603,1832,4.805,1833,3.403,1834,2.369,1846,2.294,1850,3.029,1851,3.029,1852,2.827,1853,5.877,1854,3.029,1855,3.029,1856,3.029,1857,5.877,1858,3.029,1859,3.029,1860,3.029,1861,3.029,1862,3.029,1863,4.759,1864,2.112,1865,3.029,1866,3.029,1867,3.029,1868,1.895,1869,2.676,1870,3.029,1871,3.029,1872,4.759,1873,4.204,1874,3.029,1875,3.029,1876,2.676,1877,3.029]],["t/650",[0,0.493,26,2.125,42,2.866,56,1.759,87,0.858,1269,1.113,1274,1.018,1489,1.046,1540,3.021,1551,0.674,1592,0.717,1598,5.973,1599,1.201,1753,4.181,1775,1.201,1776,1.201,1818,1.679,1828,3.331,1833,2.43,1864,0.992,1878,5.201,1879,1.423,1880,1.113,1881,3.398,1882,1.423,1883,2.523,1884,1.423,1885,4.11,1886,1.423,1887,1.423,1888,1.423,1889,1.423,1890,1.257,1891,1.423,1892,1.423,1893,2.523,1894,2.753,1895,2.523,1896,4.11,1897,2.523,1898,1.423,1899,1.423,1900,1.423,1901,1.423,1902,3.001,1903,1.423,1904,1.423,1905,1.423,1906,3.72,1907,2.354,1908,2.523,1909,1.423,1910,1.423,1911,1.423,1912,1.328,1913,1.423,1914,1.328,1915,2.523,1916,1.423,1917,1.328,1918,1.201,1919,1.423,1920,1.423,1921,1.423,1922,1.423,1923,7.466,1924,2.523,1925,1.423,1926,1.423,1927,1.423,1928,2.523,1929,3.631,1930,1.423,1931,1.423,1932,1.423,1933,2.523,1934,2.523,1935,1.423,1936,1.423,1937,1.423,1938,2.523,1939,2.229,1940,2.523,1941,2.523,1942,2.523,1943,1.423,1944,1.423,1945,1.423,1946,5.201,1947,2.523,1948,2.523,1949,2.523,1950,1.423,1951,1.423]],["t/653",[0,0.503,1196,4.785,1272,4.918,1515,3.773,1587,3.147,1832,4.185,1833,2.669,1952,5.583,1953,7.427,1954,3.731,1955,3.731,1956,5.583,1957,3.731,1958,3.731,1959,3.731,1960,5.583,1961,5.583,1962,4.71,1963,3.296,1964,3.731,1965,3.731,1966,3.731,1967,3.731]],["t/655",[0,0.506,1515,2.928,1764,4.379,1833,5.058,1963,4.586,1968,5.191,1969,5.191,1970,5.191,1971,8.635,1972,5.191,1973,5.191,1974,5.191]],["t/658",[0,0.488,114,3.068,415,3.806,1450,2.261,1492,2.364,1515,1.959,1567,2.057,1814,2.814,1818,3.519,1832,2.172,1873,3.068,1975,2.629,1976,3.473,1977,3.473,1978,3.473,1979,3.473,1980,3.241,1981,5.289,1982,5.658,1983,3.473,1984,3.241,1985,3.473,1986,3.473,1987,3.473,1988,3.473,1989,3.473,1990,3.473,1991,3.473,1992,3.473,1993,3.473,1994,3.473,1995,3.473,1996,3.473,1997,3.473,1998,3.473,1999,3.473,2000,3.473,2001,5.289,2002,5.289,2003,5.289,2004,3.473,2005,3.473,2006,3.473,2007,3.473,2008,3.473,2009,3.473]],["t/660",[0,0.503,4,1.588,124,2.09,1465,3.007,1466,3.09,1560,2.861,1561,2.188,1563,1.441,1567,5.391,1592,3.07,1753,2.931,1780,6.673,1782,3.007,1794,2.102,1818,4.772,1846,3.183,1868,2.63,1876,2.291,2010,2.594,2011,6.096,2012,2.594,2013,4.296,2014,4.683,2015,2.594,2016,2.594,2017,2.594,2018,2.594,2019,2.102,2020,2.594]],["t/662",[0,0.486,16,2.219,145,3.626,195,4.228,394,1.476,960,2.735,1053,2.735,1068,2.375,1109,2.155,1465,2.096,1519,2.375,1560,4.45,1565,1.995,1567,5.644,1592,2.335,1753,3.232,1782,3.316,1805,2.375,1818,5.04,1847,2.589,1864,2.043,1868,2.9,1869,2.589,1939,2.589,1975,2.219,2013,3.757,2019,3.757,2021,2.931,2022,2.931,2023,2.931,2024,2.375,2025,2.931,2026,2.931,2027,2.931,2028,2.931,2029,2.931,2030,2.931,2031,2.931,2032,2.472,2033,2.931,2034,2.096,2035,2.931]],["t/664",[1551,3.891,2699,4.368]],["t/666",[0,0.482,164,4.384,1717,5.784,1723,5.619,1880,3.881,2763,4.022,3177,6.399,3178,4.631,3229,5.466,3230,5.466,3231,5.466,3232,5.466,3233,5.466,3234,5.466,3235,5.466,3236,5.466,3237,5.466,3238,5.466,3239,5.466,3240,5.466,3241,5.466,3242,5.466,3243,5.466,3244,5.466]],["t/669",[0,0.377,3245,8.541,3246,10.079]],["t/671",[0,0.384,2044,7.399,3245,7.399,3247,7.929]],["t/673",[0,0.49,1645,6.256,2701,4.041,2725,4.244,3181,6.534,3182,3.757,3218,6.46,3245,6.256,3247,6.703,3248,5.291,3249,5.291,3250,7.383,3251,5.291,3252,7.383,3253,5.291]],["t/675",[0,0.493,124,4.362,3181,6.86,3182,4.839,3218,6.448,3254,6.815]],["t/677",[0,0.487,394,2.645,1266,6.012,1269,6.327,1270,5.252,1274,5.098,2701,3.166,2860,5.396,3181,6.785,3218,6.378,3255,5.784,3256,5.784]],["t/679",[0,0.495,415,4.87,2701,3.631,3181,4.71,3218,4.427,3257,8.597,3258,6.633,3259,6.633,3260,6.633]],["t/681",[0,0.5,56,5.688,415,4.337,3261,8.159,3262,7.108]],["t/683",[0,0.498,56,4.565,415,3.48,2851,8.818,3261,6.548]],["t/685",[0,0.303,394,4.036,771,5.543,1551,3.795,1563,4.451,2034,4.488,2392,5.855,2919,7.479,2920,6.274,3185,5.855,3263,8.826,3264,6.91,3265,6.91,3266,6.91]],["t/688",[0,0.43,394,3.731,1551,3.508,1592,3.731,2848,6.913,3267,8.159,3268,8.159]],["t/690",[0,0.498,4,0.713,75,1.256,124,0.939,148,1.1,153,2.722,394,2.128,415,1.715,629,1.316,791,1.181,1266,1.593,1269,3.909,1274,1.35,1497,4.449,1515,1.065,1551,0.894,1552,2.308,1563,1.049,1570,1.668,1592,2.128,1676,1.668,1788,3.762,1834,1.476,2034,1.35,2044,3.011,2197,2.101,2445,3.106,2692,1.888,2699,1.004,2701,1.138,2725,1.668,2763,1.53,2784,5.161,2795,3.909,2818,2.372,2852,2.058,2856,1.593,2860,2.443,3128,1.762,3181,6.544,3218,5.648,3269,2.079,3270,2.079,3271,2.079,3272,2.079,3273,2.079,3274,2.079,3275,3.554,3276,2.079,3277,2.079,3278,2.079,3279,2.079,3280,2.079,3281,2.079,3282,2.079]],["t/692",[0,0.463,172,5.015,415,4.222,1551,2.93,1563,3.437,1565,4.212,1585,5.775,2809,4.839,2865,5.775,3283,6.815,3284,6.815,3285,6.815,3286,8.748,3287,6.815]],["t/694",[0,0.443,394,3.924,3288,8.582,3289,7.792]],["t/696",[75,5.011,394,3.793,1592,3.793,2698,7.532,2699,4.003,2700,6.104,2701,4.54]],["t/698",[9,1.973,11,3.215,75,3.166,214,2.167,394,3.354,400,2.827,571,5.882,1040,3.721,1059,4.204,1077,2.676,1133,3.239,1445,2.455,1489,3.498,1497,2.062,1511,2.227,1551,3.804,1560,2.062,1563,2.643,1592,2.397,1788,3.046,1868,2.977,2054,2.555,2244,2.827,2278,2.455,2438,2.827,2452,2.555,2531,4.441,2699,4.083,2701,2.869,2702,3.029,2703,3.029,2704,3.029,2705,3.029,2706,3.029,2707,2.676,2708,4.759,2709,2.676,2710,2.827,2711,4.759,2712,3.029,2713,3.029,2714,4.759,2715,3.029,2716,2.676,2717,3.029,2718,3.029,2719,2.676,2720,3.029,2721,2.676,2722,3.029,2723,2.676,2724,2.676,2725,2.676,2726,2.676,2727,3.029,2728,3.029,2729,2.455,2730,3.029,2731,3.029,2732,3.029,2733,2.827]],["t/700",[0,0.491,1788,4.175,2699,3.584,2701,4.065,2734,6.743,2735,6.743]],["t/702",[0,0.486,1277,5.699,1788,4.023,2736,7.288]],["t/704",[0,0.493,42,2.929,325,2.716,826,4.461,1563,2.937,1666,5.658,1710,4.461,1723,4.581,1788,1.588,1868,3.308,1880,2.716,2380,3.241,2737,3.473,2738,3.473,2739,3.473,2740,3.473,2741,4.672,2742,3.068,2743,3.068,2744,3.473,2745,3.473,2746,3.473,2747,3.473,2748,3.473,2749,3.473,2750,3.473,2751,3.068,2752,3.473,2753,3.473,2754,3.473,2755,3.068,2756,3.473,2757,3.473,2758,6.405,2759,3.473,2760,5.289,2761,3.473,2762,3.473,2763,2.814,2764,3.473,2765,3.068]],["t/706",[0,0.473,826,4.233,1698,4.683,1710,4.233,1723,5.651,2742,4.433,2743,4.433,2751,4.433,2755,4.433,2766,5.018,2767,5.018,2768,5.018,2769,5.018,2770,5.018,2771,5.018,2772,5.018,2773,5.018,2774,5.018,2775,5.018,2776,6.909,2777,5.018,2778,5.018,2779,5.018,2780,5.018,2781,5.018,2782,5.018]],["t/709",[0,0.499,34,3.589,55,3.836,1516,4.436,1788,3.698,2783,6.363,2784,5.367,2785,5.621]],["t/716",[0,0.483,1552,5.13,1788,3.281,2724,6.336,2785,6.336,2786,7.172]],["t/718",[2789,8.37]],["t/720",[4,0.853,124,1.122,148,1.314,280,1.903,323,1.765,394,3.75,551,1.659,629,1.573,791,1.412,1050,2.106,1068,1.829,1133,1.536,1196,1.614,1277,2.932,1551,3.773,1560,1.536,1563,1.253,1565,2.552,1581,1.385,1588,4.727,1592,3.892,1594,1.829,1611,2.442,1788,2.201,1846,1.709,1894,3.039,1906,1.614,1918,1.903,1962,1.903,1975,1.709,2136,2.106,2197,1.469,2199,3.163,2207,2.106,2209,1.903,2439,3.312,2457,3.312,2612,1.993,2649,2.106,2699,1.199,2700,1.829,2709,1.993,2716,1.993,2719,1.993,2721,1.993,2726,4.25,2729,1.829,2790,2.256,2791,1.993,2792,2.256,2793,2.106,2794,1.993,2795,4.382,2796,2.256,2797,2.256,2798,2.256,2799,2.256,2800,1.829,2801,2.256,2802,2.256,2803,2.256,2804,2.256,2805,2.256,2806,2.256,2807,2.256,2808,2.256,2809,1.765,2810,1.993,2811,2.256,2812,1.993,2813,2.256,2814,2.256,2815,1.993,2816,2.256,2817,2.256,2818,1.659,2819,2.256,2820,1.993,2821,2.256,2822,2.256,2823,2.256,2824,2.256,2825,1.993,2826,1.993,2827,2.256,2828,2.256,2829,1.993,2830,2.256,2831,1.993,2832,1.993,2833,2.256,2834,2.256,2835,2.256,2836,2.256,2837,1.993,2838,1.44,2839,1.993,2840,1.993,2841,2.256,2842,2.256,2843,2.256,2844,1.993,2845,2.106,2846,2.256,2847,2.256,2848,2.106]],["t/722",[0,0.502,26,2.139,56,2.384,394,1.722,1497,2.328,1551,3.005,1552,5.082,1563,1.899,1592,3.578,1788,1.564,2197,2.227,2699,2.779,2784,2.885,2800,2.771,2809,2.674,2818,2.514,2820,3.021,2831,3.021,2832,3.021,2838,4.533,2839,3.021,2840,3.021,2849,4.236,2850,3.42,2851,3.192,2852,2.182,2853,3.42,2854,3.42,2855,3.42,2856,2.885,2857,3.42,2858,5.227,2859,3.42]],["t/725",[0,0.497,1450,3.42,1515,2.962,1516,3.661,1592,3.59,1788,3.26,2445,3.86,2701,3.166,2818,7.033,2860,3.976,2861,5.252,2862,5.252]],["t/727",[0,0.501,20,0.93,1125,1.837,1129,3.094,1302,1.941,1450,1.354,1492,2.384,1538,1.575,1551,0.985,1709,3.268,1788,0.951,1880,4.163,1906,1.487,2273,1.941,2276,1.754,2409,1.837,2475,1.837,2699,1.105,2765,4.008,2791,3.094,2800,1.685,2838,2.234,2856,1.754,2863,5.941,2864,4.537,2865,1.941,2866,1.941,2867,2.08,2868,2.08,2869,2.08,2870,4.537,2871,2.08,2872,1.754,2873,2.08,2874,3.502,2875,2.08,2876,2.08,2877,2.08,2878,2.08,2879,2.08,2880,2.08,2881,2.08,2882,2.08,2883,3.502,2884,2.08,2885,2.08,2886,2.08,2887,2.08,2888,4.234,2889,2.08,2890,2.08,2891,2.08,2892,2.08,2893,2.08,2894,3.502,2895,2.08,2896,2.08,2897,2.08,2898,2.08,2899,2.08,2900,3.502,2901,3.502,2902,2.08,2903,2.08,2904,2.08,2905,2.08,2906,2.08,2907,2.08,2908,2.08,2909,2.08,2910,2.08,2911,2.08,2912,2.08,2913,2.08,2914,2.08,2915,2.08,2916,2.08,2917,2.08,2918,2.08]],["t/729",[0,0.457]],["t/731",[0,0.486,4,2.717,20,2.547,26,1.448,44,3.707,45,3.383,124,3.136,145,1.81,148,4.803,153,5.32,156,3.103,239,2.044,255,4.613,629,3.415,689,2.995,691,3.709,1109,1.701,1584,2.606,2067,2.314,2143,1.876,2145,2.16,2146,1.952,2612,2.044,3290,2.549,3291,2.549,3292,2.549,3293,2.549,3294,2.549,3295,4.217,3296,2.549,3297,4.217,3298,4.217,3299,2.549,3300,2.549,3301,2.549,3302,4.217,3303,5.395,3304,4.217,3305,2.549,3306,2.549,3307,4.217,3308,2.549,3309,2.549,3310,2.549,3311,2.549,3312,2.549,3313,2.549,3314,2.549,3315,2.549,3316,2.549,3317,2.549,3318,2.549,3319,2.549,3320,2.549,3321,4.217,3322,2.549]],["t/733",[145,7.381]],["t/735",[0,0.489,4,2.592,34,3.869,44,4.467,46,5.194,55,4.135,124,3.411,148,3.996,1831,6.06,2575,7.583,3323,4.287,3324,6.346,3325,6.346,3326,6.346,3327,4.287,3328,6.346,3329,6.346,3330,4.287,3331,6.346,3332,4.287]],["t/737",[0,0.317,34,3.693,317,4.565,1828,5.306,1832,4.096,3333,7.211,3334,7.211,3335,7.211,3336,7.211,3337,7.211,3338,7.211,3339,7.211,3340,7.211,3341,7.211,3342,7.211,3343,7.211]],["t/739",[0,0.49,1040,5.521,1914,6.589,2441,7.06,3344,7.06,3345,7.776]],["t/742",[1584,5.593,2143,6.66]],["t/744",[3346,9.219]],["t/746",[9,2.373,265,1.651,280,1.839,323,1.705,394,3.322,415,2.495,541,2.035,551,1.603,784,2.035,791,2.936,1005,1.705,1078,1.926,1196,1.559,1231,1.839,1489,1.603,1518,1.767,1540,1.603,1551,2.889,1552,3.357,1563,2.024,1581,3.367,1584,1.484,1586,3.4,1588,1.839,1589,2.035,1592,2.762,1598,3.074,1599,1.839,1676,1.926,1754,3.074,1755,2.953,1788,0.997,1834,1.705,1894,1.767,1902,1.926,1906,1.559,1929,3.219,2024,1.767,2034,3.357,2054,1.839,2056,2.035,2107,1.926,2127,2.035,2142,1.926,2160,1.27,2187,1.926,2197,3.057,2199,1.839,2209,3.074,2215,2.035,2452,1.839,2699,2.495,2707,1.926,2723,1.926,2729,2.953,2794,1.926,2795,3.671,2809,1.705,2810,1.926,2812,1.926,2825,1.926,2826,1.926,2829,1.926,2837,1.926,2838,2.325,2844,1.926,2852,4.466,2872,1.839,2955,2.035,3125,2.18,3126,2.18,3127,1.926,3128,2.035,3129,2.18,3130,2.18,3131,2.18,3132,2.18,3133,2.18,3134,2.18,3135,1.926,3136,2.18,3137,2.18,3138,2.18,3139,2.18,3140,2.18,3141,2.18,3142,2.18,3143,2.18,3144,2.18,3145,2.18,3146,2.18,3147,2.18,3148,3.554,3149,2.18,3150,2.18,3151,2.18,3152,2.18,3153,2.18,3154,2.18,3155,2.18,3156,2.18,3157,2.18,3158,2.18,3159,2.18,3160,2.18,3161,2.18,3162,2.18]],["t/748",[0,0.501,791,3.363,1552,5.857,1581,5.027,1788,2.459,1906,3.846,2699,2.858,2795,4.205,2838,3.43,2849,4.357,3148,6.2]],["t/750",[0,0.487,11,2.035,34,1.26,87,2.242,375,1.885,791,3.484,1040,2.908,1196,1.598,1445,1.811,1473,3.251,1492,2.531,1497,2.531,1499,4.025,1515,1.26,1516,1.558,1551,1.058,1581,1.371,1592,3.877,1611,1.455,1788,3.728,1864,3.33,2098,1.974,2181,3.736,2197,3.111,2303,2.085,2699,2.96,2700,1.811,2741,1.974,2763,1.811,2815,1.974,2818,2.734,2849,1.811,2852,3.553,2860,3.617,3163,2.234,3164,2.234,3165,2.234,3166,2.234,3167,2.234,3168,2.234,3169,2.234,3170,2.234,3171,2.234,3172,2.234,3173,2.234,3174,2.234,3175,2.234,3176,2.234,3177,2.085,3178,2.085,3179,2.234,3180,2.234,3181,3.736,3182,1.747,3183,2.234,3184,2.234,3185,2.085,3186,2.234,3187,2.234,3188,2.234,3189,2.234]],["t/753",[0,0.487,87,3.638,415,1.355,791,3.775,1369,6.197,1498,1.931,1581,4.368,1717,5.091,1723,1.824,1788,3.255,1832,1.595,2160,4.368,2197,3.93,2445,4.437,2699,1.355,2701,2.499,2838,1.627,2852,1.627,3127,2.252,3148,1.931,3190,2.55,3191,2.55,3192,2.55,3193,2.55,3194,2.55,3195,2.55,3196,6.035,3197,2.55,3198,4.146,3199,4.146,3200,2.55,3201,2.55,3202,2.55,3203,2.55,3204,2.55,3205,2.55,3206,2.55,3207,4.146,3208,2.55,3209,2.55,3210,2.55,3211,2.55,3212,2.55,3213,2.55,3214,2.55,3215,2.55,3216,2.55,3217,2.55,3218,3.048]],["t/755",[0,0.491,87,4.571,124,1.935,415,3.062,1262,3.632,1498,2.947,1499,2.346,1515,2.195,1581,2.389,1756,2.947,1788,3.702,1864,5.286,2181,3.044,2445,2.861,2699,2.069,2701,3.473,2852,4.376,2860,2.947,3135,3.438,3182,3.044,3218,5.95,3219,3.892,3220,3.892,3221,3.892,3222,3.892,3223,3.892]],["t/757",[0,0.485,394,2.585,771,4.533,791,3.21,1277,4.013,1515,2.894,1551,2.43,1563,2.85,1565,3.493,1567,3.04,1581,3.15,1788,2.347,1975,3.886,2197,3.342,2838,4.476,2852,4.476,3182,4.013,3289,7.016,3347,5.652,3348,5.652,3349,5.652,3350,5.652]],["t/759",[0,0.504,87,2.778,791,2.882,1499,2.778,1581,3.996,1592,3.279,1788,2.978,2181,3.603,2699,4.012,2701,2.778,2838,2.94,2852,4.153,3148,3.489,3224,4.608,3225,4.608,3226,4.608,3227,4.608,3228,4.608]],["t/761",[0,0.44,148,2.553,291,3.873,314,3.698,790,3.873,2450,4.091,2505,4.384,2852,5.117,2872,3.698,3351,4.828,3352,6.92,3353,3.873,3354,4.828,3355,4.828,3356,4.828,3357,4.828,3358,4.828,3359,4.828,3360,4.828,3361,8.834,3362,8.834,3363,8.834,3364,6.92,3365,4.828,3366,6.92,3367,4.828,3368,4.828,3369,4.828,3370,4.828]],["t/763",[0,0.496,1040,5.521,2787,6.237,3344,7.06,3371,7.776]],["t/765",[0,0.452,74,6.808]],["t/768",[2013,5.812,2392,6.693,3372,7.899,3373,7.899,3374,7.899,3375,7.899,3376,7.899,3377,7.899,3378,7.899,3379,7.172]],["t/770",[0,0.376,172,3.935,385,4.856,1565,3.305,1757,4.532,2733,6.303,2866,4.532,3379,4.856,3380,5.348,3381,5.348,3382,8.552,3383,5.348,3384,5.348,3385,5.348,3386,5.348,3387,5.348,3388,5.348,3389,5.348,3390,5.348,3391,5.348,3392,7.438,3393,5.348,3394,7.438,3395,7.438,3396,8.552,3397,5.348,3398,5.348,3399,5.348,3400,5.348,3401,5.348]],["t/772",[0,0.405]],["t/774",[0,0.476,56,5.131,1256,7.36,2278,5.964,3402,6.066,3403,5.508,3404,9.129,3405,6.066,3406,6.066,3407,6.066,3408,5.508,3409,9.129,3410,6.066,3411,6.066,3412,6.066]],["t/776",[0,0.37,1068,6.207,3413,8.436,3414,8.436,3415,8.436,3416,8.436]],["t/778",[0,0.447,3403,7.929,3408,7.929]],["t/780",[0,0.457]],["t/782",[0,0.452,74,6.808]],["t/785",[3417,9.219]],["t/787",[0,0.441,17,3.995,317,4.701,1019,6.743,3418,7.427,3419,10.052,3420,7.427,3421,7.427,3422,7.427,3423,7.427]],["t/789",[0,0.39,230,7.57]],["t/791",[0,0.405]],["t/793",[0,0.509,14,3.684,16,3.661,17,1.832,20,3.622,25,2.273,26,1.934,33,1.972,3424,3.092,3425,6.734,3426,5.954,3427,5.954,3428,6.734,3429,7.748,3430,3.092,3431,3.092,3432,4.835,3433,3.092,3434,3.092]],["t/795",[0,0.508,4,0.793,9,1.367,10,1.854,11,1.148,12,1.429,13,1.429,14,3.763,15,1.429,16,3.458,17,3.538,18,1.854,20,3.57,25,3.358,26,1.313,31,3.572,32,1.701,33,2.252,53,1.543,124,1.755,302,1.243,1646,1.959,3424,2.099,3425,5.355,3426,4.567,3427,4.567,3428,5.972,3429,6.47,3430,2.099,3431,2.099,3432,3.53,3433,2.099,3434,2.099,3435,2.312,3436,3.887,3437,2.312,3438,2.312,3439,2.312,3440,2.312,3441,2.312,3442,2.312]],["t/798",[0,0.507,4,3.409,124,2.879,302,4.507,3443,6.378,3444,6.378]],["t/800",[0,0.502,3445,7.899,3446,7.899]],["t/802",[0,0.499]],["t/804",[0,0.447,3447,7.929,3448,7.929]],["t/806",[0,0.514,302,4.88,2962,5.078,3449,5.442,3450,5.442]],["t/809",[0,0.509,55,4.628,249,4.639,2146,4.01,3451,4.753,3452,4.753,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753,3460,4.753,3461,4.753]],["t/813",[3462,8.889,3463,8.889,3464,8.889]],["t/815",[0,0.463,124,3.077,172,6.437,1515,3.49,1585,5.775,3465,8.748,3466,6.815,3467,6.815,3468,6.815,3469,6.815,3470,6.815,3471,6.815,3472,6.815,3473,6.815]],["t/817",[0,0.469,4,2.438,255,5.23,1440,6.023,1868,4.037,3474,7.108,3475,7.108,3476,8.986,3477,7.108,3478,7.108,3479,7.108,3480,7.108]],["t/819",[0,0.43,1466,5.445,2160,4.315,2262,7.408,3481,8.159,3482,8.159,3483,8.159]],["t/822",[3484,9.219]],["t/824",[0,0.43,4,1.689,46,3.385,124,2.223,255,5.164,317,3.117,1441,4.471,1832,2.797,2160,2.604,3485,4.924,3486,4.924,3487,8.177,3488,7.018,3489,4.924,3490,4.924,3491,4.924,3492,4.924,3493,4.924,3494,8.177,3495,4.924,3496,4.924,3497,4.924,3498,4.924,3499,4.924,3500,4.924,3501,4.924,3502,4.924,3503,4.924,3504,4.924,3505,4.924,3506,7.018,3507,4.924,3508,4.924,3509,4.924,3510,4.924,3511,4.924]],["t/826",[0,0.326,4,2.548,124,3.353,148,3.928,1378,6.293,2160,3.928,3512,7.427,3513,7.427,3514,7.427,3515,7.427,3516,7.427,3517,7.427,3518,7.427,3519,7.427]],["t/828",[0,0.486,4,2.586,124,3.404,148,3.987,1440,6.389,2014,6.047,3520,7.54,3521,7.54]],["t/830",[0,0.39,3522,8.889,3523,8.889]],["t/832",[4,3.168,34,5.148,317,6.363,3524,7.826,3525,7.427,3526,7.427,3527,7.427,3528,7.427]],["t/834",[4,2.846,34,5.059,317,5.251,3524,7.029,3529,8.295,3530,8.295]],["t/836",[4,2.754,34,4.111,317,6.132,2160,4.245,3524,6.802,3531,8.027,3532,8.027,3533,8.027]],["t/838",[0,0.358,2160,5.541,3534,8.159,3535,8.159,3536,8.159,3537,8.159]],["t/840",[1868,5.784,3538,8.732,3539,8.732]],["t/842",[0,0.336,4,2.626,34,4.819,317,4.846,2409,6.14,3540,7.656,3541,7.656,3542,7.656,3543,7.656,3544,7.656,3545,7.656]],["t/844",[0,0.473,3546,8.732]],["t/847",[3353,7.259,3547,7.669]],["t/849",[0,0.43,4,2.799,124,3.683,3353,7.846,3547,8.289]],["t/851",[0,0.43,4,2.799,124,3.683,3353,7.846,3547,8.289]],["t/854",[0,0.514,302,4.764,2962,4.845,3447,5.191,3448,5.191,3449,5.191,3450,5.191]],["t/856",[0,0.509,55,4.628,249,4.639,2146,4.01,3451,4.753,3452,4.753,3453,4.753,3454,4.753,3455,4.753,3456,4.753,3457,4.753,3458,4.753,3459,4.753,3460,4.753,3461,4.753]],["t/858",[0,0.457]],["t/860",[0,0.452,74,6.808]],["t/863",[0,0.477]],["t/865",[0,0.469,195,5.19,3548,9.501,3549,7.776,3550,7.776,3551,7.776,3552,7.776]],["t/867",[0,0.413,4,2.626,3553,7.656,3554,7.656,3555,7.656,3556,7.656,3557,7.656,3558,7.656,3559,7.656,3560,7.656,3561,7.656]]],"invertedIndex":[["",{"_index":0,"t":{"3":{"position":[[0,9],[21,6],[41,4]]},"5":{"position":[[0,39],[40,24]]},"7":{"position":[[0,2]]},"9":{"position":[[57,1],[73,2],[88,1],[98,1],[132,1],[142,1],[158,1],[165,1],[182,1],[188,1],[194,1],[199,1],[213,1],[223,1],[228,2],[234,1],[241,1],[251,1],[269,1],[271,1],[328,2],[334,1],[341,2],[349,2],[368,1],[375,1],[382,2],[388,2],[397,1],[399,1]]},"11":{"position":[[19,19],[71,8],[83,1],[98,1]]},"13":{"position":[[0,2]]},"15":{"position":[[57,1],[70,1],[80,2],[94,1],[102,1],[106,1],[113,1],[127,1],[132,1],[136,1],[140,1],[145,1],[149,1],[157,2],[164,1],[172,2],[178,1],[185,2],[190,2],[199,1],[201,1],[213,1]]},"17":{"position":[[0,20],[94,1],[99,1],[103,1],[107,1],[112,1],[116,1],[122,2],[125,5],[133,2],[140,1],[165,1],[181,1],[188,1],[205,1],[211,1],[217,1],[222,1],[230,1]]},"19":{"position":[[0,2],[3,93],[97,5],[263,5]]},"21":{"position":[[57,1],[131,1],[139,2],[144,2],[149,2],[155,1],[164,1],[179,2],[182,6],[198,1],[204,1],[206,2],[209,6],[216,1],[218,2],[221,5],[238,1],[245,1],[267,1],[279,2],[297,1],[352,1],[364,2],[369,2],[376,2],[382,1],[391,1],[404,1],[415,2],[428,1],[457,1],[459,1],[471,1]]},"23":{"position":[[0,47]]},"25":{"position":[[0,2],[3,12]]},"27":{"position":[[0,15],[21,2]]},"29":{"position":[[0,2]]},"31":{"position":[[21,2],[58,2],[91,2],[125,2],[128,2],[142,2],[145,4],[160,2],[163,5],[184,2],[187,8],[210,2],[213,7],[221,2],[269,1],[279,2],[299,2]]},"33":{"position":[[19,1],[44,2],[47,7],[67,2],[70,7],[78,2]]},"35":{"position":[[9,1],[31,2],[57,2],[60,6],[78,2],[81,2],[86,2],[101,2],[119,2],[128,2],[131,21]]},"37":{"position":[[46,2],[49,6],[67,2],[70,6],[87,2],[90,6],[106,2],[109,6]]},"39":{"position":[[0,2],[3,6],[77,2],[80,10],[94,4],[102,4],[122,2],[125,5]]},"45":{"position":[[12,2],[15,7],[23,2],[60,2],[63,7],[84,5],[133,2],[171,2],[207,2],[214,6],[238,2],[271,2]]},"47":{"position":[[15,2],[62,1],[241,12]]},"49":{"position":[[28,2],[31,10],[42,2],[45,7],[53,2],[56,2],[59,2],[62,2],[65,2],[84,2],[104,2],[122,2],[139,2],[160,2],[180,2],[191,6]]},"51":{"position":[[0,2]]},"53":{"position":[[5,1],[9,4],[23,7],[40,8],[54,1],[62,1],[66,6],[77,4],[87,1],[93,4],[103,1],[109,1],[113,4],[123,1],[129,1],[134,4],[144,1],[149,4],[159,1],[169,1],[173,7],[186,1],[196,1],[200,10],[216,1],[220,3],[229,1],[237,1],[241,3],[248,4],[258,1],[263,5],[273,6],[284,6]]},"56":{"position":[[0,3],[4,2],[7,3],[11,2],[14,3],[18,2],[30,4],[43,6],[58,6],[73,4],[87,4],[101,5],[114,4],[128,5],[143,4],[157,6],[173,6],[203,5],[218,8],[234,4]]},"58":{"position":[[21,3],[25,2],[28,3],[32,2],[35,3],[39,2],[52,4],[63,4],[75,2],[87,3],[97,1],[103,6],[115,2],[125,3],[133,2],[142,2],[165,4]]},"62":{"position":[[0,10],[39,1],[45,1],[75,1],[82,1],[88,1],[95,4],[194,11],[255,7],[344,7],[430,6],[527,1],[557,1],[600,1],[638,1],[675,1],[681,1],[691,1],[697,1],[723,1],[725,1],[768,1],[770,1]]},"65":{"position":[[18,1],[71,2]]},"67":{"position":[[0,10],[34,1],[36,1],[70,12],[118,1],[137,1],[160,1],[186,1],[237,1],[239,1],[301,2],[304,9],[314,8],[345,1],[398,15],[423,1],[457,2],[476,1],[511,2],[514,1],[561,1],[587,8],[610,8],[631,10],[667,1],[695,1],[716,1],[726,1],[750,1],[771,1],[773,8],[813,1],[815,3],[819,3],[823,3],[840,1],[842,1]]},"69":{"position":[[77,1]]},"72":{"position":[[7,1],[18,35],[61,1],[128,1]]},"74":{"position":[[0,6],[24,1],[39,19],[71,1],[86,1],[114,1]]},"76":{"position":[[23,1],[51,1],[58,1],[67,3],[71,1],[78,1],[94,1]]},"78":{"position":[[0,3]]},"80":{"position":[[17,4],[31,9],[41,9],[58,18],[205,1],[222,1],[224,3],[496,17],[525,17],[549,17],[579,17],[739,7],[773,39],[837,1]]},"82":{"position":[[13,30],[44,11],[56,2],[59,2],[121,22],[156,20],[183,15],[208,15],[230,10],[246,15],[344,15],[377,16],[403,15],[428,18],[460,22],[555,10],[566,2],[569,2],[577,17],[609,20],[643,23],[679,2],[684,9],[699,14],[721,8],[732,9],[751,34],[797,20],[820,4],[868,17],[905,20],[941,15],[964,18],[993,18],[1024,25],[1065,25],[1099,22],[1135,29],[1181,29],[1222,22],[1253,12],[1279,13],[1300,12],[1325,13],[1352,24],[1382,8],[1403,9],[1423,24],[1455,35],[1503,16],[1530,5],[1536,2],[1539,2],[1600,10],[1631,11],[1664,11],[1693,16],[1710,5],[1716,2],[1719,2],[1737,11],[1770,10],[1793,28],[1835,4],[1858,9],[1873,2],[1888,4],[1893,8],[1902,2],[1905,2],[1922,19],[1954,20],[1987,26],[2026,23],[2050,5],[2056,2],[2059,2],[2071,17],[2103,4],[2114,2],[2132,9],[2159,9],[2194,10],[2215,9],[2225,4],[2230,2],[2233,2],[2244,13],[2277,18],[2306,11],[2327,12],[2350,9],[2370,11],[2382,8],[2391,2],[2394,2],[2417,19],[2461,10],[2476,13],[2502,13],[2520,13],[2546,13],[2572,16],[2609,16],[2643,23],[2684,23]]},"84":{"position":[[274,2],[323,2],[377,2],[451,2],[454,15],[480,2],[483,5],[498,2],[501,5],[522,2],[543,2],[546,4],[561,2],[564,14],[592,2],[595,6],[612,2],[615,15],[639,2],[642,21],[682,2],[778,2],[843,2],[933,2],[971,2],[1043,2],[1106,2],[1109,10],[1130,2],[1174,2],[1242,2],[1298,2],[1335,2],[1394,2],[1397,13],[1411,2],[1414,1],[1416,23],[1440,2],[1513,1],[1547,2],[1553,1],[1571,1],[1584,1],[1602,2],[1611,1],[1613,1],[1620,2],[1628,2],[1631,1],[1633,2],[1636,1],[1643,2],[1662,1]]},"86":{"position":[[219,2],[222,15],[246,2],[249,21],[287,2],[314,2],[339,2],[342,6],[363,2],[366,6],[382,2],[385,4],[400,2],[403,14],[430,2],[502,2],[565,2],[568,10],[589,2],[592,5],[607,2],[610,5],[626,2],[657,2],[703,2],[799,2],[864,2],[953,2],[987,2]]},"88":{"position":[[329,8],[338,3],[342,2],[354,8],[676,5],[682,4],[687,2],[701,4],[713,10],[724,3],[749,4],[763,4],[776,4],[789,6],[805,6],[822,4],[827,1],[829,5],[861,7],[885,11],[908,11],[928,9],[949,13],[973,17],[991,1],[1000,6],[1033,2],[1104,12],[1126,8],[1149,10],[1176,9]]},"90":{"position":[[149,2],[160,2]]},"92":{"position":[[336,2],[349,2],[359,1],[368,2],[519,2],[664,2],[667,4],[672,2],[681,1],[691,2],[783,1],[798,2],[892,2],[895,4],[900,2],[917,2],[965,2],[1001,2],[1004,4],[1009,2],[1022,2],[1025,6],[1043,2],[1046,6],[1064,2],[1067,6]]},"94":{"position":[[179,2],[182,2],[194,2],[197,2],[209,2],[212,4],[228,2],[253,2],[256,8]]},"96":{"position":[[184,2],[187,3],[200,2],[203,3],[218,2],[221,6],[238,2],[241,6],[259,2],[262,8],[281,2],[284,10]]},"98":{"position":[[124,2],[127,13],[151,2],[154,6],[171,2],[174,10],[195,2],[223,2],[226,25],[268,2],[271,21],[303,2],[306,8],[324,2],[327,16],[362,2],[365,8],[385,2],[388,8],[413,2],[416,23],[453,2],[456,15],[485,2],[488,15],[515,2],[518,19],[547,2],[550,18],[578,2],[581,8],[599,2],[602,8],[627,2],[630,13],[659,2],[662,16]]},"102":{"position":[[11,1],[20,5],[89,11],[108,24],[146,24],[171,2],[187,8],[211,1],[234,2],[240,2],[248,4],[255,1],[298,2],[305,7],[332,1],[336,5],[367,2],[374,6],[402,1],[406,5],[443,2],[446,1],[452,1],[456,5],[498,1],[503,3],[509,1],[515,4],[522,4],[544,5],[559,2],[565,7],[575,6],[592,2],[598,6],[607,7],[626,2],[632,3],[638,8],[657,2],[663,8],[680,2],[683,2],[689,2],[696,6],[716,2],[722,2],[729,9],[750,2],[753,1],[758,10],[783,2],[786,1],[791,2],[798,8],[820,2],[823,1],[828,10],[855,2],[858,1],[888,2],[891,1],[896,11],[921,2],[924,1],[929,2],[936,8],[960,2],[963,2],[980,2],[983,1],[988,12],[1015,1],[1020,2],[1026,2],[1029,1],[1034,7],[1045,1]]},"105":{"position":[[97,1],[103,1],[109,1],[115,1],[117,8],[148,1],[182,15],[207,1],[216,2],[235,1],[245,2],[248,1],[295,1],[321,8],[344,8],[365,10],[401,1],[429,1],[450,1],[452,8],[492,1],[514,1],[558,1],[600,1],[607,1],[689,1],[704,1],[706,8],[742,1],[840,1],[845,1],[854,1],[911,1],[918,1],[956,1],[966,1],[1018,2],[1024,1],[1065,1],[1067,1],[1069,1],[1083,1],[1085,8],[1121,1],[1188,2],[1197,1],[1199,2],[1208,2],[1211,1],[1213,2],[1288,1],[1293,1],[1302,1],[1325,1],[1344,1],[1351,1],[1389,1],[1399,1],[1451,2],[1457,1],[1525,2],[1534,1],[1536,2],[1543,2],[1546,1],[1548,2],[1557,1],[1572,1],[1574,1],[1588,1],[1598,1],[1632,1],[1647,2],[1655,1],[1657,2],[1664,2],[1667,1],[1669,2],[1686,1],[1688,1],[1697,2],[1718,1],[1720,1],[1740,1],[1946,1],[1963,2],[1966,14],[1991,1],[1998,1],[2021,2],[2030,2],[2033,1],[2035,2],[2043,2],[2057,2],[2060,14],[2257,1],[2280,1],[2287,1],[2313,2],[2325,2],[2328,1],[2330,2],[2338,2],[2360,2],[2377,1]]},"107":{"position":[[99,1],[105,1],[111,1],[117,1],[189,8],[220,1],[273,15],[298,1],[332,2],[351,1],[386,2],[389,1],[436,1],[462,8],[485,8],[506,10],[542,1],[570,1],[591,1],[601,1],[625,1],[646,1],[648,8],[688,1],[710,1],[754,1],[847,1],[854,1],[1038,1],[1053,1],[1055,1],[1137,2],[1175,1],[1205,1],[1338,1],[1340,1],[1419,1],[1501,1],[1649,1],[1751,1],[1899,1],[1901,1],[2126,1],[2128,1],[2194,1],[2278,1],[2337,1],[2374,1],[2416,1],[2469,1],[2502,1],[2514,1]]},"109":{"position":[[234,5],[259,5],[310,1],[329,1],[424,8],[448,4],[485,3],[580,4],[660,2],[693,10],[728,2],[764,1],[766,5],[790,1],[806,1],[865,1],[911,1],[955,1],[1004,1],[1025,2],[1031,1],[1043,1],[1045,1],[1058,1],[1092,1],[1094,11],[1106,11],[1118,5],[1124,7],[1132,7],[1267,6],[1283,1],[1289,6],[1347,1],[1352,6],[1410,1],[1415,7],[1495,6],[1531,1],[1553,1],[1565,1],[1577,1],[1603,1],[1635,2],[1659,1],[1771,1],[1773,7],[1788,1],[1832,1],[1834,8],[1851,1],[1856,1],[1863,1],[1865,6],[1893,1],[1898,1],[1900,1],[1913,1],[1915,2],[1988,3],[2004,1],[2070,2],[2100,7],[2151,6],[2184,4],[2204,10],[2262,1],[2328,7],[2368,1],[2370,5],[2427,1],[2451,1],[2477,5],[2494,8],[2503,1],[2510,1],[2563,1],[2621,9],[2631,1],[2633,1],[2635,2],[2638,8],[2647,2],[2650,11],[2663,15],[2702,1],[2715,1],[2795,2],[2868,1],[2897,1],[2926,1],[3030,4],[3038,1],[3109,1],[3132,1],[3160,1],[3198,1],[3200,1],[3212,1]]},"112":{"position":[[197,1],[218,2],[221,10],[278,2],[307,1],[309,2],[357,7],[400,2],[403,13],[456,2],[459,11],[523,2],[526,15],[584,2],[587,15],[614,1],[616,2],[619,10],[676,2],[705,1],[742,2],[745,14],[799,2],[802,11],[866,2],[869,15],[927,2],[930,15],[957,1],[959,2],[962,3],[988,1],[1063,1],[1065,2],[1068,4],[1090,1],[1151,1],[1255,1],[1333,3],[1337,2],[1340,9],[1350,1],[1352,2],[1355,4],[1378,1],[1465,1],[1467,2],[1470,4],[1493,1],[1580,1],[1582,2],[1585,4],[1609,1],[1698,1],[1711,1],[1743,1],[1795,2],[1798,4],[1803,2],[1847,2],[1850,4],[1897,2],[1900,4],[1939,2],[1942,9],[1952,2],[1989,2],[1992,9],[2011,2],[2014,4],[2019,2],[2032,2],[2035,4],[2040,2],[2053,2],[2067,2],[2070,4],[2075,2],[2088,2],[2101,2],[2104,4],[2109,2],[2122,1],[2134,1]]},"114":{"position":[[197,1],[264,1],[445,1],[493,1],[674,1],[698,1],[773,1],[792,1],[853,1],[957,1],[1035,3],[1039,1],[1059,1],[1146,1],[1166,1],[1253,1],[1274,1],[1363,1],[1376,1],[1408,1],[1460,2],[1580,2],[1626,2],[1639,2],[1653,2],[1666,1],[1678,1]]},"116":{"position":[[277,1],[340,2],[350,1],[537,1],[558,1],[570,2],[652,1],[665,1],[827,1]]},"120":{"position":[[28,14],[43,16],[60,7],[68,11],[80,8],[195,10]]},"124":{"position":[[19,9],[29,9],[39,7]]},"126":{"position":[[0,9],[10,20]]},"128":{"position":[[49,5],[105,17],[123,19],[143,19]]},"130":{"position":[[0,6],[167,16],[184,8],[258,58],[317,3],[354,5],[441,17],[459,2],[487,2],[514,2],[517,4],[538,2],[557,3],[578,5],[633,1],[702,2],[733,1],[799,1],[862,1],[929,1],[970,2],[982,1],[1060,2],[1097,3],[1143,5],[1198,1],[1234,2],[1259,2],[1287,2],[1290,4],[1308,2],[1421,1],[1449,1],[1570,1],[1572,14],[1643,1],[1645,14],[1774,1],[1803,1],[1878,1],[1905,1],[1963,1],[2023,1],[2080,5],[2086,12],[2099,16],[2116,15]]},"134":{"position":[[0,23],[24,25],[50,23],[74,6],[81,4],[86,6],[93,17]]},"136":{"position":[[0,20],[21,36],[58,13],[72,22]]},"138":{"position":[[0,14]]},"145":{"position":[[72,31],[277,5],[283,5]]},"147":{"position":[[0,57]]},"151":{"position":[[74,2],[233,3],[246,2],[368,11],[380,7],[401,5],[407,2],[410,28],[439,39]]},"155":{"position":[[33,44],[78,47]]},"158":{"position":[[0,2],[54,19],[74,13]]},"160":{"position":[[0,2]]},"163":{"position":[[0,2],[3,19]]},"167":{"position":[[0,10],[11,2],[14,31],[46,5],[52,2],[55,20],[76,7],[84,7],[92,15]]},"170":{"position":[[0,37],[38,2],[41,23],[65,30]]},"172":{"position":[[0,7],[8,20],[39,13]]},"175":{"position":[[0,15],[16,43],[60,15],[76,22]]},"177":{"position":[[12,9],[22,24],[90,2],[93,4],[107,1],[270,1],[444,1],[631,1]]},"180":{"position":[[0,61],[62,42],[105,56],[162,39],[202,32],[235,47]]},"182":{"position":[[0,40],[41,61],[135,2],[173,7],[181,4],[207,13]]},"184":{"position":[[0,42],[45,5],[51,32],[86,5],[92,20]]},"186":{"position":[[0,46],[49,5],[71,4],[78,5],[84,54]]},"188":{"position":[[0,27],[28,6],[35,17],[53,22]]},"192":{"position":[[123,1],[159,1],[184,1],[200,1],[220,2],[232,1],[256,9],[266,1],[282,1],[292,1],[315,1],[347,2],[374,1],[415,1],[417,8],[441,1],[472,1],[479,1],[493,1],[495,1],[497,1],[499,1],[501,1],[572,1],[630,4],[635,2],[638,1],[666,1],[736,1],[805,1],[863,1],[881,1],[883,1],[885,1],[936,1],[1002,2],[1335,1],[1371,1],[1396,1],[1412,1],[1432,2],[1444,1],[1468,9],[1478,1],[1494,1],[1504,1],[1527,1],[1559,2],[1586,1],[1656,1],[1687,1],[1694,1],[1708,1],[1710,1],[1712,1],[1714,1],[1716,1],[1718,2],[1721,1],[1750,1],[1803,1],[1830,2],[1871,1],[2145,2],[2254,1],[2312,2],[2340,2],[2352,1]]},"194":{"position":[[67,2],[225,15],[365,1],[393,1],[514,1],[516,14],[587,1],[589,14],[718,1],[747,1],[822,1],[849,1],[907,1],[967,1],[1024,13],[1053,36]]},"196":{"position":[[0,2],[3,14]]},"198":{"position":[[0,15],[21,2]]},"200":{"position":[[0,4]]},"205":{"position":[[0,137]]},"207":{"position":[[10,8],[19,19],[39,15],[55,21],[77,6],[84,21],[106,6],[113,52],[166,3],[170,32],[203,6],[210,6],[217,16],[234,6],[241,26]]},"209":{"position":[[244,51]]},"211":{"position":[[0,3],[87,3],[91,53]]},"213":{"position":[[0,3],[96,3],[100,53]]},"215":{"position":[[0,32],[33,82],[116,43],[504,27],[663,17],[681,118]]},"217":{"position":[[0,2]]},"220":{"position":[[86,3],[151,24],[176,3],[180,84],[265,18]]},"222":{"position":[[77,18],[96,3],[100,3],[104,5],[110,7],[171,5],[266,4],[363,4]]},"228":{"position":[[45,8],[54,8],[63,4],[68,9],[78,2],[81,10],[92,64],[157,56],[214,54],[269,8],[278,9],[397,10],[511,9],[692,10],[871,8],[880,9],[1002,10],[1141,9],[1337,10]]},"231":{"position":[[0,19],[20,5],[26,5],[32,5],[38,4],[43,3],[47,2]]},"233":{"position":[[0,16],[42,33]]},"235":{"position":[[0,7],[25,3]]},"238":{"position":[[0,5],[6,39],[46,7],[54,6],[61,6],[68,6],[75,6],[82,22],[105,22],[128,73],[202,3],[206,64],[271,2],[274,74]]},"240":{"position":[[0,7],[8,3],[12,50],[63,3],[261,12],[274,3],[278,7],[286,3],[290,26],[317,3],[321,40],[362,3],[509,10],[520,3]]},"242":{"position":[[0,23],[24,5],[30,2],[33,6],[40,3],[44,3],[48,12],[61,7],[69,6],[76,6],[83,4],[88,8],[97,4],[102,5],[108,5],[114,5],[120,53],[174,3],[178,12],[191,39],[231,19],[275,19]]},"244":{"position":[[0,76],[77,34]]},"246":{"position":[[0,17],[33,2],[358,42],[884,60],[1113,2],[1168,2]]},"248":{"position":[[0,14],[169,27],[630,2],[685,2]]},"250":{"position":[[0,5],[6,38],[45,13],[359,5],[365,40],[406,13]]},"257":{"position":[[0,5],[6,15],[22,12],[35,23],[59,29],[89,14],[104,5],[110,84],[195,16],[212,22],[235,20],[256,77],[334,90]]},"259":{"position":[[99,10],[110,5],[116,39]]},"262":{"position":[[0,6],[160,6]]},"264":{"position":[[0,9],[10,45],[56,8],[65,30],[96,26],[123,27]]},"266":{"position":[[10,7],[18,34],[53,13],[76,7],[84,17],[102,13],[127,7],[135,37],[173,13],[198,7],[206,17],[272,10],[283,9],[326,16],[343,6]]},"268":{"position":[[0,10],[11,64],[76,56],[133,54],[188,11],[200,19],[220,24],[245,25],[271,18],[290,21],[312,26],[362,18],[433,35],[469,38],[508,27],[536,49],[586,12],[599,46],[646,68],[715,8],[724,3],[728,3],[732,12],[745,25],[771,46],[818,56],[875,17],[896,4],[901,2]]},"270":{"position":[[0,4],[14,5],[66,3],[113,40]]},"283":{"position":[[0,5],[389,4],[812,13],[1335,2]]},"287":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"291":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"300":{"position":[[232,2]]},"304":{"position":[[201,18],[285,17],[562,26]]},"308":{"position":[[256,10],[917,5],[923,10]]},"312":{"position":[[126,2]]},"320":{"position":[[0,2]]},"322":{"position":[[0,30],[232,7]]},"324":{"position":[[0,12]]},"326":{"position":[[187,15]]},"330":{"position":[[102,50]]},"332":{"position":[[0,171],[172,34],[207,31],[239,41]]},"334":{"position":[[0,100],[101,123],[225,116]]},"336":{"position":[[0,41]]},"338":{"position":[[0,75],[76,12],[181,1],[357,9],[385,1],[392,1],[399,36],[441,1],[448,37]]},"340":{"position":[[6,35],[44,28],[79,20],[102,27],[130,11],[212,3],[220,7],[228,8],[239,15],[264,2],[276,31],[310,21],[332,8],[596,1],[602,1],[649,3],[674,11]]},"342":{"position":[[6,6],[21,24],[48,18],[69,10],[80,11],[162,3],[170,7],[178,28],[356,3],[417,5],[431,14],[470,2],[482,31],[516,20],[705,1],[711,1],[781,11]]},"344":{"position":[[0,61],[68,1],[76,51]]},"346":{"position":[[0,8],[13,13],[74,11]]},"351":{"position":[[0,3],[19,2],[30,9]]},"353":{"position":[[0,13],[27,2],[45,8],[69,5]]},"357":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"359":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"361":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"363":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"365":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"367":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"370":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"372":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"375":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"377":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"379":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"381":{"position":[[0,2],[3,5]]},"384":{"position":[[85,2],[88,35],[364,1],[368,18],[398,3],[402,8],[413,24],[442,19],[462,3],[466,48],[515,3],[519,51],[582,3],[586,8],[597,31],[631,7],[639,3],[643,14],[660,31],[692,3],[696,47],[746,14],[763,6],[772,19]]},"386":{"position":[[100,5],[282,2],[285,81]]},"393":{"position":[[0,2],[3,9],[13,40],[54,13],[72,1],[76,3],[86,14],[129,4],[142,2],[174,5],[279,1],[334,1],[386,1],[430,8],[897,1],[953,1],[1043,1],[1133,1],[1235,1],[1275,1],[1284,1],[1300,1],[1309,1],[1326,1],[1335,1],[1368,1],[1406,1],[1442,1],[1451,11],[1463,33],[1644,1],[1687,1],[1697,1],[1817,1],[1863,1],[1891,1],[2123,1],[2189,1],[2246,1],[2264,1],[2285,2],[2340,10],[2541,1],[2567,1],[2596,3],[3188,5],[3194,1],[3324,1],[3381,1],[3433,1],[3477,1],[3537,1],[3627,1],[3717,1],[3799,1],[3839,1],[3848,1],[3864,1],[3873,1],[3890,1],[3899,1],[3932,1],[3970,1],[4006,1],[4015,1],[4057,1],[4067,1],[4113,1],[4159,1],[4187,1],[4282,1],[4348,1],[4405,1],[4423,1],[4444,2],[4499,1],[4525,1]]},"395":{"position":[[130,4],[190,4],[257,4]]},"399":{"position":[[207,2],[210,40],[251,13],[269,1],[273,3],[283,14],[326,4],[339,2]]},"401":{"position":[[0,15],[33,20],[71,4]]},"403":{"position":[[127,36],[170,16],[221,12],[240,5],[269,8],[278,6],[287,1],[331,6],[340,13],[371,51],[460,5],[466,13],[488,51],[540,5],[546,15],[564,27],[594,29]]},"407":{"position":[[0,12],[88,5],[239,100],[352,13]]},"409":{"position":[[0,2],[68,37],[186,1],[188,16]]},"411":{"position":[[0,2],[3,33]]},"413":{"position":[[0,89],[90,157]]},"417":{"position":[[191,2],[199,8],[242,16],[286,31],[354,31]]},"419":{"position":[[361,3]]},"421":{"position":[[12,34],[225,28],[821,29],[856,41],[1154,5],[1388,5]]},"423":{"position":[[302,11],[314,2],[322,49],[372,1],[379,32],[424,65],[498,87],[594,40],[635,11]]},"427":{"position":[[0,2]]},"429":{"position":[[106,12],[162,1]]},"431":{"position":[[95,1]]},"433":{"position":[[107,1],[133,2],[136,6]]},"437":{"position":[[24,1],[37,1],[116,1],[307,1],[352,1]]},"439":{"position":[[22,1],[40,1],[44,1],[52,1],[158,1],[176,1],[180,1],[188,1],[296,1]]},"442":{"position":[[37,19],[89,1],[189,1]]},"444":{"position":[[0,4],[317,2],[353,2],[356,2],[707,2],[719,2],[743,2],[777,2],[803,2],[817,2],[832,2],[880,2],[893,1],[948,2],[1001,1],[1033,1],[1064,1],[1121,4],[1176,2],[1228,2],[1236,1],[1253,2],[1266,2],[1269,2],[1345,2],[1442,1],[1454,1],[1496,1],[1518,1],[1541,1],[1588,1],[1638,1],[1685,1],[1710,1],[1744,1],[1776,1],[1821,1],[1871,1]]},"446":{"position":[[0,2],[3,8]]},"452":{"position":[[72,1],[161,15],[253,1],[297,1],[335,1],[452,1],[564,1]]},"455":{"position":[[139,16]]},"459":{"position":[[0,24],[25,14],[40,32]]},"464":{"position":[[271,1],[494,3],[498,14],[513,32],[546,15]]},"474":{"position":[[0,150]]},"476":{"position":[[335,30],[498,38],[537,15],[566,1],[576,1],[593,1],[598,2],[610,1],[614,1],[619,1],[630,1],[634,1]]},"481":{"position":[[0,24],[25,23],[49,5],[55,3]]},"483":{"position":[[0,26],[179,20],[495,17],[801,16]]},"485":{"position":[[0,31],[261,10],[341,1]]},"490":{"position":[[0,35]]},"494":{"position":[[89,38],[158,1],[306,1],[369,1],[397,1],[425,1],[540,1],[582,1],[624,1]]},"497":{"position":[[0,88],[89,62]]},"499":{"position":[[0,115],[116,80],[197,64],[262,47],[310,50]]},"501":{"position":[[0,78],[79,65]]},"504":{"position":[[83,1],[102,1],[121,1],[141,1],[160,1],[180,1],[209,1],[267,1],[293,1],[323,1],[388,1],[485,1],[518,1],[524,1],[551,1],[556,1],[589,1],[594,1],[606,3],[610,1],[625,1],[714,1],[762,1],[764,8],[775,1],[862,1],[893,2],[930,1],[1041,1],[1069,1],[1097,1],[1130,3],[1203,3],[1209,1],[1250,1],[1291,1],[1324,3],[1406,3]]},"509":{"position":[[197,1],[249,1],[503,1],[542,1],[771,1],[775,1],[1022,1],[1067,1],[1137,1],[1173,1],[1190,1],[1252,1],[1285,1],[1358,2],[1459,2],[1483,2],[1580,1],[1628,1],[1683,1],[1803,1],[1841,1],[1991,1],[2026,1],[2037,1],[2097,1],[2163,1],[2175,1],[2197,1],[2209,1],[2231,1],[2236,1],[2251,2],[2257,2],[2271,2],[2310,1],[2319,1],[2324,1],[2376,1],[2435,1],[2564,1],[2577,1],[2650,1],[2678,1],[2735,1],[2751,1]]},"517":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"519":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"521":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"523":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"526":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"533":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"535":{"position":[[0,4],[24,5]]},"542":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,2],[730,8],[766,15]]},"545":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"547":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[985,10],[1074,60],[1330,7],[1342,4],[1361,3],[1369,23],[1398,36],[1435,8],[1449,11],[1553,33],[1709,6],[1731,1],[1751,5],[1761,8],[1779,1],[1789,13],[1803,1],[1811,4],[1831,4],[1855,60],[1925,6],[1974,5],[1980,5],[1986,68],[2055,5],[2061,4],[2092,11],[2125,1],[2134,1],[2173,3],[2408,15],[2441,5],[2493,23]]},"549":{"position":[[0,4]]},"554":{"position":[[213,6]]},"556":{"position":[[157,19]]},"562":{"position":[[0,4]]},"566":{"position":[[518,3],[535,3],[553,3],[571,3]]},"570":{"position":[[0,4],[14,5],[66,3],[113,40]]},"583":{"position":[[0,5],[389,4],[812,13],[1335,2]]},"587":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"591":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"593":{"position":[[0,4],[24,5]]},"596":{"position":[[0,8],[81,6],[90,7],[98,11],[176,3],[249,6],[561,6],[627,20],[753,3]]},"598":{"position":[[0,10],[264,14],[377,2],[402,2],[405,2],[474,2],[477,2]]},"602":{"position":[[122,1],[126,1],[139,3],[143,33],[177,17],[195,14]]},"604":{"position":[[0,2]]},"609":{"position":[[29,7]]},"611":{"position":[[30,1],[41,1],[43,3],[47,1],[181,1],[183,22],[206,1],[278,1],[353,1]]},"613":{"position":[[30,1],[152,1],[154,22]]},"618":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"620":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"623":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"625":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"627":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"629":{"position":[[0,8],[13,13],[74,11]]},"634":{"position":[[0,3],[19,2],[30,9]]},"636":{"position":[[0,13],[27,2],[45,8],[69,5]]},"640":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"642":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"644":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"646":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"648":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"650":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"653":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"655":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"658":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"660":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"662":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"666":{"position":[[123,7],[199,18],[268,1],[270,10],[367,10],[387,1],[389,9],[403,23],[565,25],[657,8],[684,1]]},"669":{"position":[[72,40]]},"671":{"position":[[0,4]]},"673":{"position":[[0,4],[37,7],[91,10],[109,4],[123,1],[134,4],[139,1],[150,1],[253,56],[429,5],[435,27],[463,29],[493,9],[510,1]]},"675":{"position":[[8,1],[17,61],[93,62],[156,5],[162,29],[192,35],[228,4],[233,3],[253,26]]},"677":{"position":[[6,3],[79,21],[172,8],[235,5],[241,20],[262,4],[274,1],[280,19],[300,4],[305,3],[324,25]]},"679":{"position":[[75,36],[187,27],[215,5],[221,22],[244,2],[259,19],[279,4],[284,3],[295,1],[318,28]]},"681":{"position":[[12,1],[21,7],[41,31],[73,45],[119,5],[125,19],[145,9],[167,18],[186,4],[211,38]]},"683":{"position":[[78,24],[114,5],[132,61],[194,5],[200,24],[225,30],[256,4],[261,3],[287,22]]},"685":{"position":[[0,5]]},"688":{"position":[[0,4],[5,2]]},"690":{"position":[[5,40],[66,18],[131,5],[148,84],[255,4],[267,13],[314,7],[326,1],[361,15],[384,16],[475,31],[514,6],[614,35],[715,8],[731,46],[815,5],[824,1],[830,5],[846,19],[878,5],[891,1],[899,1],[917,6],[928,5],[955,31],[1019,72],[1153,4],[1158,8],[1218,15],[1254,7],[1282,7],[1297,10],[1315,4],[1340,1],[1356,7],[1394,2],[1417,2],[1437,7],[1451,2],[1463,3],[1473,12],[1490,5],[1496,7],[1507,3],[1519,13],[1538,3],[1557,13],[1594,12],[1621,10],[1645,22],[1726,51],[1780,16],[1797,5],[1811,11],[1825,3],[1831,16],[1850,3],[1951,3],[1957,16],[1978,2],[2089,4],[2110,1],[2112,6]]},"692":{"position":[[14,1],[33,4],[44,2],[108,7],[131,11]]},"694":{"position":[[0,4],[5,2]]},"700":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"702":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"704":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"706":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"709":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"716":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"722":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,10],[765,15]]},"725":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"727":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[971,5],[986,10],[1075,60],[1331,7],[1343,4],[1362,3],[1370,23],[1399,36],[1436,8],[1450,11],[1554,33],[1710,6],[1732,1],[1752,5],[1762,8],[1780,1],[1790,13],[1804,1],[1812,4],[1832,4],[1856,60],[1926,6],[1975,5],[1981,5],[1987,68],[2056,5],[2062,4],[2093,11],[2126,1],[2135,1],[2174,3],[2409,15],[2442,5],[2494,23]]},"729":{"position":[[0,2],[3,32]]},"731":{"position":[[244,14],[293,1],[345,1],[384,1],[391,2],[400,1],[422,3],[495,3],[502,1],[515,1],[537,3],[598,3],[609,1],[614,1],[633,3],[661,1],[676,1],[692,2],[708,1],[723,1],[794,3],[874,2],[877,2],[880,1],[888,2],[891,2],[952,2],[955,2],[958,1],[966,2],[969,2],[1030,2],[1033,2],[1036,1],[1044,2],[1047,2],[1272,69]]},"735":{"position":[[69,11],[81,1],[98,1],[116,1],[140,1],[158,1],[189,1],[216,1],[218,8],[265,3],[354,10],[365,1],[367,10],[378,1],[380,8],[404,1],[425,1],[427,8],[476,3]]},"737":{"position":[[0,4]]},"739":{"position":[[0,32],[46,24],[77,46],[124,19],[150,6],[162,4]]},"748":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"750":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"753":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"755":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"757":{"position":[[0,5],[22,4],[31,6],[38,6],[149,13],[204,6],[233,7],[246,5],[256,8],[270,10],[286,7]]},"759":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"761":{"position":[[0,6],[65,1],[148,2],[151,9],[211,1],[412,2],[433,1]]},"763":{"position":[[0,2],[3,14],[18,11],[37,4],[42,9],[95,2],[111,10]]},"765":{"position":[[0,15],[21,2]]},"770":{"position":[[148,12],[209,2],[330,5]]},"772":{"position":[[0,18]]},"774":{"position":[[24,1],[26,4],[183,7],[191,1],[193,1],[195,4],[281,7],[289,1]]},"776":{"position":[[75,13]]},"778":{"position":[[0,16],[26,16]]},"780":{"position":[[0,2],[3,12]]},"782":{"position":[[0,15],[21,2]]},"787":{"position":[[43,6],[56,2],[92,2]]},"789":{"position":[[0,2]]},"791":{"position":[[0,31]]},"793":{"position":[[39,1],[41,2],[44,1],[46,23],[70,2],[90,2],[93,1],[103,1],[108,2],[111,17],[143,1],[148,2],[151,2],[163,1],[179,1],[191,1],[193,2],[196,13],[215,1],[227,1],[232,1],[250,2],[276,2],[288,1],[290,2],[347,1],[357,1],[375,1],[382,1],[393,1],[400,1],[402,2],[405,9],[438,1],[440,2],[502,1],[514,1],[522,2],[525,26],[552,1],[561,2],[564,6],[571,1],[595,1],[597,2],[648,1],[667,2],[670,6],[677,1]]},"795":{"position":[[0,14],[15,2],[32,7],[125,1],[127,2],[130,1],[132,23],[156,2],[176,2],[179,1],[189,1],[194,2],[197,17],[229,1],[234,2],[237,2],[249,1],[265,1],[277,1],[279,2],[282,13],[301,1],[313,1],[318,1],[336,2],[362,2],[374,1],[376,2],[433,1],[443,1],[461,1],[468,1],[479,1],[486,1],[488,2],[491,9],[524,1],[526,2],[588,1],[600,1],[608,2],[611,26],[638,1],[647,2],[650,6],[657,1],[681,1],[683,2],[734,1],[753,2],[756,6],[763,1],[776,1],[799,2],[805,1],[832,1],[853,2],[861,1],[877,1],[898,1],[931,1],[953,1],[965,1],[984,1],[991,2],[999,1],[1006,1],[1021,1],[1040,2],[1061,1],[1068,2],[1076,1],[1078,1],[1085,2],[1094,1],[1106,1]]},"798":{"position":[[0,5],[6,2],[11,6],[22,2],[39,14],[54,7],[62,9],[74,5],[86,1],[91,1],[95,8],[104,7],[112,18],[131,41],[173,43],[217,45]]},"800":{"position":[[0,5],[6,4],[11,30],[42,6],[49,40],[107,4],[112,1],[114,1]]},"802":{"position":[[0,2],[3,5],[9,8],[18,12],[31,7],[39,4]]},"804":{"position":[[0,51],[52,16]]},"806":{"position":[[0,12],[13,4],[18,10],[29,12],[42,9],[52,63],[116,2],[119,14],[134,13],[148,15],[232,20],[253,2],[256,72],[329,13],[343,43],[387,68],[456,87],[544,14],[559,9],[569,49],[619,12],[632,28],[661,14],[787,55]]},"809":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[736,2],[763,5]]},"815":{"position":[[16,2],[135,2],[138,15],[154,30],[185,6]]},"817":{"position":[[162,10],[173,6],[180,6],[187,12],[200,4]]},"819":{"position":[[0,31],[81,48]]},"824":{"position":[[0,2],[518,2],[598,20],[719,2],[722,14],[786,10]]},"826":{"position":[[11,7]]},"828":{"position":[[3,5],[62,24],[87,33],[154,2],[197,4],[202,28]]},"830":{"position":[[0,2]]},"838":{"position":[[134,38]]},"842":{"position":[[146,6]]},"844":{"position":[[0,48],[105,15],[121,91]]},"849":{"position":[[3,7],[47,7]]},"851":{"position":[[3,7],[47,7]]},"854":{"position":[[0,51],[52,16],[128,12],[141,4],[146,10],[157,12],[170,9],[180,63],[244,2],[247,14],[262,13],[276,15],[360,20],[381,2],[384,72],[457,13],[471,43],[515,68],[584,87],[672,14],[687,9],[697,49],[747,12],[760,28],[789,14],[915,55]]},"856":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[736,2],[763,5]]},"858":{"position":[[0,2],[3,14]]},"860":{"position":[[0,15],[21,2]]},"863":{"position":[[0,59],[60,30],[91,30]]},"865":{"position":[[0,4],[5,4],[193,2],[196,13]]},"867":{"position":[[0,16],[69,1]]}}}],["0",{"_index":20,"t":{"9":{"position":[[90,2],[100,2],[144,2],[160,2],[208,4],[231,2],[365,2]]},"15":{"position":[[115,2],[129,2],[210,2]]},"17":{"position":[[96,2],[167,2],[183,2]]},"19":{"position":[[160,24],[185,3],[256,2],[259,3]]},"21":{"position":[[86,3],[142,1],[152,2],[367,1],[379,2],[468,2]]},"23":{"position":[[48,22]]},"49":{"position":[[114,7],[172,7]]},"76":{"position":[[53,2]]},"84":{"position":[[1605,2],[1659,2]]},"102":{"position":[[253,1],[273,1],[839,1]]},"105":{"position":[[842,2],[913,2],[1021,2],[1290,2],[1346,2],[1454,2],[1993,2],[2282,2],[2374,2]]},"107":{"position":[[2511,2]]},"109":{"position":[[92,1],[121,1],[792,2],[808,2],[3089,3],[3209,2]]},"112":{"position":[[382,2],[724,2],[1007,2],[2131,2]]},"114":{"position":[[283,2],[512,2],[717,2],[1675,2]]},"116":{"position":[[824,2]]},"130":{"position":[[2156,5]]},"145":{"position":[[0,17]]},"190":{"position":[[50,5]]},"291":{"position":[[1518,39],[1631,2]]},"363":{"position":[[1279,2]]},"365":{"position":[[223,2]]},"393":{"position":[[341,2],[347,3],[351,3],[358,2],[973,2],[987,3],[991,3],[998,3],[1009,4],[1063,2],[1074,2],[1077,3],[1081,3],[1085,2],[1092,3],[1156,3],[1160,3],[1167,3],[1175,2],[1189,4],[3388,2],[3394,3],[3398,3],[3405,2],[3557,2],[3571,3],[3575,3],[3582,3],[3593,4],[3647,2],[3658,2],[3661,3],[3665,3],[3669,2],[3676,3],[3740,3],[3744,3],[3751,3],[3759,2],[3773,4]]},"437":{"position":[[169,14]]},"439":{"position":[[38,1],[46,3],[61,3],[174,1],[182,3],[197,3]]},"476":{"position":[[568,1],[578,1],[601,1]]},"494":{"position":[[308,1]]},"504":{"position":[[958,2],[982,3]]},"509":{"position":[[2260,1]]},"511":{"position":[[44,74]]},"547":{"position":[[303,1]]},"591":{"position":[[1518,39],[1631,2]]},"611":{"position":[[131,5]]},"613":{"position":[[56,5],[62,5]]},"646":{"position":[[1279,2]]},"648":{"position":[[223,2]]},"727":{"position":[[303,1]]},"731":{"position":[[648,3],[1217,2],[1229,2],[1253,2]]},"793":{"position":[[105,2],[145,2],[165,2],[244,5],[359,5],[443,33],[600,25]]},"795":{"position":[[191,2],[231,2],[251,2],[330,5],[445,5],[529,33],[686,25],[856,4],[893,4],[994,4],[1103,2]]}}}],["0&d(u,v)d0​d1​≤d(u,v)≤d0​d(u,v)d_0\\end{cases}\\tag{14}h(u,v)={10​d(u,v)≤d0​d(u,v)>d0​​(14",{"_index":1385,"t":{"246":{"position":[[141,67]]}}}],["0&d(u,v)>d_1\\end{cases}\\tag{18}h(u,v)=⎩⎨⎧​1d0​−d1​d(u,v)−d1​​0​d(u,v)d1​​(18",{"_index":1405,"t":{"246":{"position":[[1171,102]]}}}],["0&d(u,v)\\leq",{"_index":1408,"t":{"248":{"position":[[97,12]]}}}],["0.1",{"_index":2567,"t":{"504":{"position":[[826,5],[850,4]]}}}],["0.1959",{"_index":1901,"t":{"367":{"position":[[1195,8]]},"650":{"position":[[1195,8]]}}}],["0.2",{"_index":2570,"t":{"504":{"position":[[855,6]]}}}],["0.2042",{"_index":1899,"t":{"367":{"position":[[1175,7]]},"650":{"position":[[1175,7]]}}}],["0.25",{"_index":282,"t":{"67":{"position":[[188,5]]}}}],["0.3",{"_index":2564,"t":{"504":{"position":[[802,5]]}}}],["0.7",{"_index":2568,"t":{"504":{"position":[[832,4]]}}}],["0.8",{"_index":2565,"t":{"504":{"position":[[814,4],[837,5]]}}}],["0.88",{"_index":2569,"t":{"504":{"position":[[843,6]]}}}],["0.9",{"_index":2563,"t":{"504":{"position":[[797,4],[808,5]]},"509":{"position":[[2737,4]]}}}],["0.94",{"_index":2816,"t":{"540":{"position":[[630,4]]},"720":{"position":[[630,4]]}}}],["0.99",{"_index":2566,"t":{"504":{"position":[[819,6]]}}}],["0.998",{"_index":3153,"t":{"616":{"position":[[1036,6]]},"746":{"position":[[1036,6]]}}}],["01",{"_index":638,"t":{"102":{"position":[[500,2]]}}}],["012",{"_index":631,"t":{"102":{"position":[[370,3]]}}}],["0x3f3f3f3f",{"_index":241,"t":{"62":{"position":[[489,10]]},"116":{"position":[[131,10]]}}}],["0xf",{"_index":625,"t":{"102":{"position":[[301,3]]}}}],["0xff;//d",{"_index":1185,"t":{"192":{"position":[[294,8],[1506,8]]}}}],["0维度的相加过程中出现了shape为(3",{"_index":3315,"t":{"731":{"position":[[1080,24]]}}}],["0阶矩和1",{"_index":1434,"t":{"262":{"position":[[167,33]]}}}],["1",{"_index":4,"t":{"7":{"position":[[63,1]]},"9":{"position":[[243,2],[331,2],[386,1]]},"17":{"position":[[63,21]]},"21":{"position":[[200,2],[240,2],[293,3]]},"39":{"position":[[91,2]]},"49":{"position":[[76,7],[93,10]]},"62":{"position":[[742,3],[772,2],[775,2]]},"80":{"position":[[198,4]]},"84":{"position":[[1597,2]]},"102":{"position":[[264,8],[342,1],[573,1],[605,1],[636,1],[739,1],[769,1],[807,1]]},"105":{"position":[[213,2],[1315,3],[1611,3],[1630,1],[1774,3],[2109,3]]},"107":{"position":[[1645,3],[1747,3]]},"109":{"position":[[76,1],[105,1],[143,1],[1055,2],[2864,3]]},"112":{"position":[[862,3],[923,3],[1935,3],[1985,3]]},"114":{"position":[[617,3],[659,3],[1576,3],[1613,3]]},"116":{"position":[[370,2],[568,1],[797,3]]},"145":{"position":[[18,12]]},"151":{"position":[[77,57]]},"242":{"position":[[252,1],[255,1],[258,1],[267,1],[270,1],[273,1],[296,1],[301,1],[304,1],[309,1],[312,1],[317,1]]},"291":{"position":[[1669,2]]},"340":{"position":[[308,1]]},"342":{"position":[[514,1]]},"359":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"363":{"position":[[957,1]]},"377":{"position":[[336,1],[955,12]]},"384":{"position":[[362,1],[387,10],[411,1]]},"393":{"position":[[336,4],[344,2],[365,3],[369,2],[372,2],[375,3],[976,3],[980,3],[984,2],[995,2],[1002,3],[1006,2],[1066,3],[1070,3],[1088,3],[1096,2],[1099,4],[1171,3],[1182,3],[1186,2],[1782,9],[1888,2],[3383,4],[3391,2],[3412,3],[3416,2],[3419,2],[3422,3],[3560,3],[3564,3],[3568,2],[3579,2],[3586,3],[3590,2],[3650,3],[3654,3],[3672,3],[3680,2],[3683,4],[3755,3],[3766,3],[3770,2],[4184,2]]},"433":{"position":[[87,1]]},"437":{"position":[[132,2],[184,13]]},"439":{"position":[[186,1]]},"444":{"position":[[1564,3],[1628,3],[1799,3]]},"478":{"position":[[22,20]]},"494":{"position":[[721,4]]},"504":{"position":[[961,3],[1243,4],[1382,4]]},"509":{"position":[[404,2],[407,2],[2233,2],[2288,2],[2321,2],[2437,2]]},"540":{"position":[[552,3]]},"591":{"position":[[1669,2]]},"642":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"646":{"position":[[957,1]]},"660":{"position":[[336,1],[955,12]]},"690":{"position":[[1823,1]]},"720":{"position":[[552,3]]},"731":{"position":[[0,30],[409,2],[441,5],[521,2],[555,3],[652,3],[663,3]]},"735":{"position":[[100,3],[269,3],[480,3]]},"795":{"position":[[888,2]]},"798":{"position":[[20,1],[25,13],[93,1],[263,37]]},"817":{"position":[[134,16]]},"824":{"position":[[34,7]]},"826":{"position":[[0,2]]},"828":{"position":[[0,2]]},"832":{"position":[[70,2],[190,2]]},"834":{"position":[[84,2]]},"836":{"position":[[91,2]]},"842":{"position":[[100,2]]},"849":{"position":[[0,2]]},"851":{"position":[[0,2]]},"867":{"position":[[46,1]]}}}],["1)&&(countout(1)==n",{"_index":737,"t":{"107":{"position":[[1625,19]]}}}],["1),indegree(0),outdegree(0",{"_index":292,"t":{"67":{"position":[[429,27]]},"107":{"position":[[304,27]]}}}],["1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点e的下一个索引为e+1的元素值由于−1",{"_index":69,"t":{"23":{"position":[[193,51]]}}}],["1)[\\frac{d(u,v)}{d_0}]^{2n}}\\tag{16}h(u,v)=1+(2​−1)[d0​d(u,v)​]2n1​(16",{"_index":1390,"t":{"246":{"position":[[460,71]]}}}],["1)[\\frac{d_0}{d(u,v)}]^{2n}}\\tag{20}h(u,v)=1+(2​−1)[d(u,v)d0​​]2n1​(20",{"_index":1412,"t":{"248":{"position":[[273,71]]}}}],["1)\\tag{13}s(k)=ceil(sk​×l−1)(13",{"_index":1373,"t":{"240":{"position":[[210,32]]}}}],["1)的每一列复制三次为(3",{"_index":3318,"t":{"731":{"position":[[1144,14]]}}}],["1)的矩阵与shape为(1",{"_index":3316,"t":{"731":{"position":[[1105,15]]}}}],["1+max(getheight(t[rt].l),getheight(t[rt].r",{"_index":927,"t":{"112":{"position":[[1017,45]]},"114":{"position":[[727,45]]}}}],["1,0",{"_index":259,"t":{"62":{"position":[[778,4]]}}}],["1,0,1,0,0,1,0",{"_index":257,"t":{"62":{"position":[[727,14]]}}}],["1,0,1,1",{"_index":261,"t":{"62":{"position":[[790,8]]}}}],["1,0,n",{"_index":956,"t":{"112":{"position":[[1929,5],[1979,5]]},"114":{"position":[[1570,5],[1607,5]]},"116":{"position":[[791,5]]}}}],["1,1,0",{"_index":260,"t":{"62":{"position":[[783,6]]}}}],["1,1,0,1,1",{"_index":262,"t":{"62":{"position":[[799,11]]}}}],["1,l2+1,l2+p2",{"_index":984,"t":{"116":{"position":[[475,14]]}}}],["1,lb+1,lb+p2",{"_index":918,"t":{"112":{"position":[[508,14]]},"114":{"position":[[377,14]]}}}],["1,lb,lb+p2",{"_index":923,"t":{"112":{"position":[[851,10]]},"114":{"position":[[606,10]]}}}],["1.0",{"_index":236,"t":{"62":{"position":[[454,4]]}}}],["1.51",{"_index":1213,"t":{"192":{"position":[[876,4]]}}}],["1.73",{"_index":3138,"t":{"616":{"position":[[635,5]]},"746":{"position":[[635,5]]}}}],["1.vector",{"_index":343,"t":{"80":{"position":[[22,8]]}}}],["10",{"_index":26,"t":{"9":{"position":[[196,2]]},"15":{"position":[[142,2],[151,3],[160,3]]},"17":{"position":[[109,2],[118,3],[136,3],[219,2]]},"62":{"position":[[683,3]]},"67":{"position":[[121,3],[287,3]]},"72":{"position":[[144,33]]},"367":{"position":[[353,2],[894,2],[918,2]]},"437":{"position":[[335,3]]},"439":{"position":[[324,3]]},"509":{"position":[[850,4],[2742,2]]},"542":{"position":[[685,2]]},"650":{"position":[[353,2],[894,2],[918,2]]},"722":{"position":[[685,2]]},"731":{"position":[[733,6]]},"793":{"position":[[229,2]]},"795":{"position":[[315,2]]}}}],["10,3.141590,\"method",{"_index":273,"t":{"67":{"position":[[38,19]]}}}],["10.multimap",{"_index":358,"t":{"80":{"position":[[567,11]]}}}],["100",{"_index":325,"t":{"72":{"position":[[77,42]]},"109":{"position":[[281,3]]},"130":{"position":[[687,4]]},"437":{"position":[[325,4],[330,4]]},"439":{"position":[[314,4],[319,4]]},"521":{"position":[[874,3]]},"704":{"position":[[874,3]]}}}],["1000",{"_index":42,"t":{"15":{"position":[[72,5]]},"367":{"position":[[136,4],[326,18],[1023,4]]},"521":{"position":[[857,4]]},"650":{"position":[[136,4],[326,18],[1023,4]]},"704":{"position":[[857,4]]}}}],["10000",{"_index":1884,"t":{"367":{"position":[[320,5]]},"650":{"position":[[320,5]]}}}],["1000000007",{"_index":966,"t":{"116":{"position":[[154,10]]}}}],["1010",{"_index":632,"t":{"102":{"position":[[390,7],[412,4],[462,4]]}}}],["106",{"_index":1054,"t":{"130":{"position":[[957,4]]}}}],["108",{"_index":2255,"t":{"429":{"position":[[164,3]]}}}],["10px",{"_index":3367,"t":{"761":{"position":[[367,5]]}}}],["10的vector,初始化为3",{"_index":96,"t":{"31":{"position":[[24,23]]}}}],["11",{"_index":865,"t":{"109":{"position":[[2726,2]]}}}],["11.hash_set",{"_index":359,"t":{"80":{"position":[[597,11]]}}}],["1111",{"_index":627,"t":{"102":{"position":[[321,6]]}}}],["111m",{"_index":2822,"t":{"540":{"position":[[760,4]]},"720":{"position":[[760,4]]}}}],["1125",{"_index":1798,"t":{"359":{"position":[[195,5],[211,5],[467,5]]},"642":{"position":[[195,5],[211,5],[467,5]]}}}],["11×1",{"_index":3483,"t":{"819":{"position":[[150,18]]}}}],["11×1卷积核,每个filter对上一步的featur",{"_index":2263,"t":{"433":{"position":[[14,28]]}}}],["12",{"_index":239,"t":{"62":{"position":[[474,2]]},"102":{"position":[[381,8]]},"433":{"position":[[109,2]]},"731":{"position":[[740,6]]}}}],["12.hash_multiset",{"_index":361,"t":{"80":{"position":[[629,16]]}}}],["120",{"_index":2615,"t":{"509":{"position":[[780,5]]}}}],["120,210都是30的倍数,由于要找最大的,所以答案是210",{"_index":7,"t":{"7":{"position":[[107,33]]}}}],["13",{"_index":3302,"t":{"731":{"position":[[747,4],[758,5]]}}}],["13.hash_map",{"_index":362,"t":{"80":{"position":[[666,11]]}}}],["1313×13个grid",{"_index":3515,"t":{"826":{"position":[[75,12]]}}}],["14",{"_index":3303,"t":{"731":{"position":[[752,5],[764,4],[775,5]]}}}],["14.hash_multimap",{"_index":363,"t":{"80":{"position":[[698,16]]}}}],["148",{"_index":1069,"t":{"130":{"position":[[1237,8]]}}}],["149",{"_index":1029,"t":{"130":{"position":[[462,8]]}}}],["15",{"_index":3304,"t":{"731":{"position":[[769,5],[781,4]]}}}],["16",{"_index":2612,"t":{"509":{"position":[[669,3]]},"540":{"position":[[600,3]]},"720":{"position":[[600,3]]},"731":{"position":[[786,7]]}}}],["18.65",{"_index":3137,"t":{"616":{"position":[[626,5]]},"746":{"position":[[626,5]]}}}],["18446744073709551615ull",{"_index":248,"t":{"62":{"position":[[602,24]]}}}],["1?'\\n",{"_index":938,"t":{"112":{"position":[[1324,8]]},"114":{"position":[[1026,8]]}}}],["1\\eta",{"_index":2403,"t":{"452":{"position":[[545,10]]}}}],["1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;σ1\\sigma_1σ1​和σ2\\sigma_2σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr",{"_index":1607,"t":{"306":{"position":[[592,119]]}}}],["1][b,c,1,1]的tensor",{"_index":3526,"t":{"832":{"position":[[73,43]]}}}],["1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid",{"_index":3530,"t":{"834":{"position":[[87,72]]}}}],["1][b,c,1,1]的tensor,该tensor",{"_index":3544,"t":{"842":{"position":[[103,37]]}}}],["1]])12b",{"_index":2521,"t":{"494":{"position":[[574,7]]}}}],["1],即reduce了dim=1",{"_index":2561,"t":{"504":{"position":[[742,19]]}}}],["1_44=fd.img",{"_index":1090,"t":{"130":{"position":[[1685,12]]},"194":{"position":[[629,12]]}}}],["1_44=fd_aug.img",{"_index":1092,"t":{"130":{"position":[[1724,16]]},"194":{"position":[[668,16]]}}}],["1a",{"_index":2510,"t":{"494":{"position":[[366,2]]}}}],["1e",{"_index":238,"t":{"62":{"position":[[471,2]]}}}],["1e5",{"_index":252,"t":{"62":{"position":[[677,3]]}}}],["1e9",{"_index":254,"t":{"62":{"position":[[693,3]]},"291":{"position":[[1635,4]]},"591":{"position":[[1635,4]]}}}],["1k−1",{"_index":2449,"t":{"469":{"position":[[117,4]]}}}],["1t<1",{"_index":1714,"t":{"338":{"position":[[443,4]]}}}],["1t>1",{"_index":1712,"t":{"338":{"position":[[394,4]]}}}],["1})(r1​,r2​,…,rk−1",{"_index":3213,"t":{"623":{"position":[[949,20]]},"753":{"position":[[949,20]]}}}],["1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirect",{"_index":3179,"t":{"620":{"position":[[1163,48]]},"750":{"position":[[1163,48]]}}}],["1})p(r1​,r2​,…,rk​)=k=1∏k​p(rk​∣r1​,r2​,…,rk−1",{"_index":3208,"t":{"623":{"position":[[745,48]]},"753":{"position":[[745,48]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t",{"_index":2767,"t":{"523":{"position":[[97,37]]},"706":{"position":[[97,37]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t",{"_index":1697,"t":{"326":{"position":[[254,50]]}}}],["1}\\right)x>n>>m",{"_index":717,"t":{"107":{"position":[[1086,10]]}}}],["cin>>row",{"_index":330,"t":{"74":{"position":[[29,9]]}}}],["cin>>row>>col",{"_index":336,"t":{"76":{"position":[[0,14]]}}}],["cin>>src>>dst",{"_index":721,"t":{"107":{"position":[[1140,14]]}}}],["ci×h×wc_i",{"_index":2418,"t":{"464":{"position":[[0,12]]}}}],["ck={wi∣pi",{"_index":1721,"t":{"340":{"position":[[341,9]]}}}],["ckc_kck",{"_index":1720,"t":{"340":{"position":[[255,8],[267,8]]}}}],["class",{"_index":1975,"t":{"375":{"position":[[72,5]]},"379":{"position":[[614,6]]},"509":{"position":[[276,5],[418,5]]},"540":{"position":[[705,5]]},"658":{"position":[[72,5]]},"662":{"position":[[614,6]]},"720":{"position":[[705,5]]},"757":{"position":[[45,5]]}}}],["classifi",{"_index":2475,"t":{"476":{"position":[[656,10]]},"547":{"position":[[2269,11]]},"564":{"position":[[0,8]]},"727":{"position":[[2270,11]]}}}],["clear",{"_index":541,"t":{"88":{"position":[[781,7]]},"616":{"position":[[930,5]]},"746":{"position":[[930,5]]}}}],["clip",{"_index":1609,"t":{"306":{"position":[[912,4],[924,4],[1000,9]]},"359":{"position":[[588,4],[680,4]]},"365":{"position":[[1019,4]]},"559":{"position":[[639,4],[885,4]]},"642":{"position":[[588,4],[680,4]]},"648":{"position":[[1019,4]]}}}],["clip_directional_loss",{"_index":1869,"t":{"365":{"position":[[1033,34]]},"379":{"position":[[1162,21]]},"648":{"position":[[1033,34]]},"662":{"position":[[1162,21]]}}}],["clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtyp",{"_index":1813,"t":{"359":{"position":[[872,75]]},"642":{"position":[[872,75]]}}}],["clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtyp",{"_index":1817,"t":{"359":{"position":[[1024,75]]},"642":{"position":[[1024,75]]}}}],["clock",{"_index":3399,"t":{"770":{"position":[[324,5]]}}}],["closure(t)\\epsilon",{"_index":1146,"t":{"151":{"position":[[321,22]]}}}],["closure(t)ϵ−closure(t",{"_index":1147,"t":{"151":{"position":[[345,22]]}}}],["cloud",{"_index":1778,"t":{"353":{"position":[[39,5]]},"636":{"position":[[39,5]]}}}],["cnn",{"_index":2044,"t":{"386":{"position":[[0,21],[22,77]]},"671":{"position":[[29,42]]},"690":{"position":[[924,3],[951,3]]}}}],["cnn中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如fcn(fulli",{"_index":2038,"t":{"384":{"position":[[124,68]]}}}],["cnn本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的cnn",{"_index":2041,"t":{"384":{"position":[[278,83]]}}}],["cnn模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个cnn",{"_index":2037,"t":{"384":{"position":[[0,84]]}}}],["cnn的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得cnn",{"_index":2045,"t":{"386":{"position":[[106,175]]}}}],["cnn的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得cnn更适用于图像处理等任务。但也正是这种设计理念,使得cnn在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此self",{"_index":2046,"t":{"386":{"position":[[367,106]]}}}],["cnt",{"_index":879,"t":{"109":{"position":[[2811,4],[2985,6]]}}}],["cntd0​d(u,v)≤d0​​(19",{"_index":1409,"t":{"248":{"position":[[110,58]]}}}],["d_1",{"_index":1404,"t":{"246":{"position":[[1162,5]]}}}],["d_1}&d_0\\leq",{"_index":1402,"t":{"246":{"position":[[1138,12]]}}}],["d_1}&d_1\\leq",{"_index":1419,"t":{"248":{"position":[[655,12]]}}}],["d_1}{d_0",{"_index":1401,"t":{"246":{"position":[[1129,8]]},"248":{"position":[[646,8]]}}}],["d_kd×dk",{"_index":2166,"t":{"403":{"position":[[200,11]]}}}],["d_kl×dk",{"_index":2169,"t":{"403":{"position":[[259,9]]}}}],["d_model",{"_index":2062,"t":{"393":{"position":[[101,8],[134,7]]},"399":{"position":[[298,8],[331,7]]}}}],["d_{kl}(p\\space",{"_index":2346,"t":{"444":{"position":[[1238,14]]}}}],["d_{kl}(q",{"_index":2328,"t":{"444":{"position":[[761,8]]}}}],["dall",{"_index":3261,"t":{"681":{"position":[[0,9],[191,17]]},"683":{"position":[[265,4]]}}}],["data",{"_index":551,"t":{"88":{"position":[[1097,6]]},"109":{"position":[[522,5]]},"459":{"position":[[145,11]]},"540":{"position":[[493,4]]},"554":{"position":[[773,4]]},"566":{"position":[[238,4],[453,4],[496,5],[502,4]]},"616":{"position":[[865,4]]},"720":{"position":[[493,4]]},"746":{"position":[[865,4]]}}}],["data_dir",{"_index":3026,"t":{"566":{"position":[[212,9]]}}}],["data_it",{"_index":2621,"t":{"509":{"position":[[927,10],[1100,10]]}}}],["dataset",{"_index":2444,"t":{"467":{"position":[[166,7]]},"566":{"position":[[13,7],[174,7],[370,7]]}}}],["daveho@cs.umd.edu",{"_index":1203,"t":{"192":{"position":[[716,19]]}}}],["david",{"_index":1201,"t":{"192":{"position":[[697,5]]}}}],["ddd",{"_index":2158,"t":{"399":{"position":[[201,5]]},"401":{"position":[[29,3]]}}}],["ddpm",{"_index":3048,"t":{"593":{"position":[[109,8]]}}}],["ddpm论文中的原图来分析ddpm",{"_index":1678,"t":{"322":{"position":[[854,31]]}}}],["ddpm(denois",{"_index":1655,"t":{"318":{"position":[[137,15]]}}}],["de(p,q)=(x−s)2+(y−t)2(1)d_e(p,q)=\\sqrt{(x",{"_index":1321,"t":{"222":{"position":[[177,41]]}}}],["death",{"_index":1307,"t":{"217":{"position":[[203,6]]}}}],["deathless",{"_index":1306,"t":{"217":{"position":[[193,9]]}}}],["debug",{"_index":1105,"t":{"130":{"position":[[1941,9],[2036,9],[2058,7]]},"194":{"position":[[885,9],[980,9],[1002,7]]}}}],["decod",{"_index":1516,"t":{"287":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"304":{"position":[[254,30]]},"308":{"position":[[762,8]]},"409":{"position":[[178,7]]},"526":{"position":[[109,7]]},"545":{"position":[[33,7]]},"587":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"620":{"position":[[452,7]]},"709":{"position":[[109,7]]},"725":{"position":[[33,7]]},"750":{"position":[[452,7]]}}}],["decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用teach",{"_index":1525,"t":{"289":{"position":[[215,82]]},"589":{"position":[[215,82]]}}}],["decoder来说,它的输入是中间产物(即gener",{"_index":1633,"t":{"308":{"position":[[806,39]]}}}],["decoder每一步的输出是一个经过softmax的prob",{"_index":1488,"t":{"283":{"position":[[119,37]]},"583":{"position":[[119,37]]}}}],["decoder的任务是生成输出,可以根据是否一次性生成输出分为autoregressive(自回归,abbr",{"_index":1480,"t":{"281":{"position":[[0,55]]},"581":{"position":[[0,55]]}}}],["decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的decod",{"_index":1504,"t":{"283":{"position":[[988,68]]},"583":{"position":[[988,68]]}}}],["decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向decoder的输出中加入end符号的生成,即每一次输出除了词汇表的所有词汇外还有end符号的概率,当end",{"_index":1496,"t":{"283":{"position":[[610,155]]},"583":{"position":[[610,155]]}}}],["decoder的结构训练生成模型的decod",{"_index":1640,"t":{"308":{"position":[[1134,25]]}}}],["decoder结构,将每一层对应的featur",{"_index":3475,"t":{"817":{"position":[[28,24]]}}}],["decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。nat的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于at",{"_index":1485,"t":{"281":{"position":[[252,158]]},"581":{"position":[[252,158]]}}}],["decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的featur",{"_index":3470,"t":{"815":{"position":[[212,62]]}}}],["decoder阶段,每个block",{"_index":3468,"t":{"815":{"position":[[79,32]]}}}],["decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token",{"_index":1484,"t":{"281":{"position":[[101,150]]},"581":{"position":[[101,150]]}}}],["decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(encoder)的输出。特别地,首个时间步的输入是begin符号以及编码器(encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(encod",{"_index":1490,"t":{"283":{"position":[[230,158]]},"583":{"position":[[230,158]]}}}],["decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,encod",{"_index":1517,"t":{"287":{"position":[[359,50]]},"587":{"position":[[359,50]]}}}],["deep",{"_index":1593,"t":{"304":{"position":[[873,4]]}}}],["def",{"_index":114,"t":{"35":{"position":[[89,6]]},"375":{"position":[[286,3]]},"509":{"position":[[307,3],[364,3],[443,3],[855,3],[896,3],[1297,3],[1364,3],[1427,3]]},"658":{"position":[[286,3]]}}}],["defin",{"_index":214,"t":{"62":{"position":[[11,7],[52,7],[100,7],[133,7],[206,7],[263,7],[301,7],[352,7],[373,7],[404,7],[437,7],[459,7],[477,7]]},"105":{"position":[[74,7]]},"107":{"position":[[76,7]]},"109":{"position":[[50,7],[63,7],[78,7],[94,7],[107,7],[123,7],[145,7],[210,7],[240,7],[265,7],[331,7]]},"112":{"position":[[40,7]]},"114":{"position":[[40,7]]},"116":{"position":[[40,7],[78,7],[119,7],[142,7]]},"393":{"position":[[281,6],[899,6],[3326,6]]},"515":{"position":[[513,6]]},"698":{"position":[[513,6]]}}}],["delta",{"_index":2772,"t":{"523":{"position":[[294,8]]},"706":{"position":[[294,8]]}}}],["deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt",{"_index":2771,"t":{"523":{"position":[[236,54]]},"706":{"position":[[236,54]]}}}],["delta}^{\\delta}\\sum_{b",{"_index":2490,"t":{"485":{"position":[[131,24]]}}}],["delta}^{\\delta}{v_{a,b}*x_{i_a,j+b",{"_index":2491,"t":{"485":{"position":[[156,37]]}}}],["demonstr",{"_index":2835,"t":{"540":{"position":[[1039,13]]},"720":{"position":[[1039,13]]}}}],["denois",{"_index":3264,"t":{"685":{"position":[[26,9]]}}}],["denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从gaussian",{"_index":1658,"t":{"318":{"position":[[362,56]]}}}],["depend",{"_index":1262,"t":{"194":{"position":[[75,6]]},"625":{"position":[[597,16]]},"755":{"position":[[597,16]]}}}],["depend以及mak",{"_index":1022,"t":{"130":{"position":[[79,15]]}}}],["depend和mak",{"_index":1006,"t":{"120":{"position":[[346,14]]},"124":{"position":[[152,14]]}}}],["deploy",{"_index":1969,"t":{"372":{"position":[[20,10]]},"655":{"position":[[20,10]]}}}],["depth",{"_index":3481,"t":{"819":{"position":[[32,24]]}}}],["dequ",{"_index":85,"t":{"29":{"position":[[174,10]]},"58":{"position":[[57,5]]}}}],["dequed1(18)h(u,v)=\\begin{cases}1&d(u,v)w2(24)h(u,v)=\\begin{cases}1&d(u,v)d00d(u,v)≤d0(19)h(u,v)=\\begin{cases}1&d(u,v)>d_0",{"_index":1407,"t":{"248":{"position":[[30,66]]}}}],["h(u,v)={1d(u,v)>d0d(u,v)−d1d0−d1d1≤d(u,v)≤d00d(u,v)d_0",{"_index":1418,"t":{"248":{"position":[[537,92]]}}}],["h(u,v)={1d(u,v)≤d00d(u,v)>d0(14)h(u,v)=\\begin{cases}1&d(u,v)\\leq",{"_index":1383,"t":{"246":{"position":[[70,64]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v",{"_index":1413,"t":{"248":{"position":[[345,68]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v)作为截止频率d0d_0d0",{"_index":1391,"t":{"246":{"position":[[532,69]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的1/2时的d(u,v)d(u,v)d(u,v",{"_index":1394,"t":{"246":{"position":[[728,62]]}}}],["h,t",{"_index":816,"t":{"109":{"position":[[1182,4]]}}}],["h_k",{"_index":3214,"t":{"623":{"position":[[1018,3]]},"753":{"position":[[1018,3]]}}}],["han",{"_index":2941,"t":{"554":{"position":[[220,8]]}}}],["happen",{"_index":2050,"t":{"389":{"position":[[74,7]]}}}],["hash",{"_index":360,"t":{"80":{"position":[[609,19],[646,19],[678,19],[715,19]]}}}],["hat{f}\\|_2+\\lambda_\\text{p}\\mathcal{l}_\\text{p}(i\\hat{m})+\\lambda_\\text{g}\\mathcal{l}_\\text{g}(i\\hat{m})l=∥im−im^∥2​+∥f−f^​∥2​+λp​lp​(im^)+λg​lg​(im",{"_index":3174,"t":{"620":{"position":[[691,151]]},"750":{"position":[[691,151]]}}}],["head",{"_index":1472,"t":{"279":{"position":[[57,4]]},"283":{"position":[[790,4],[913,4],[968,4],[1362,4]]},"395":{"position":[[31,4]]},"399":{"position":[[122,4]]},"405":{"position":[[24,4]]},"579":{"position":[[57,4]]},"583":{"position":[[790,4],[913,4],[968,4],[1362,4]]}}}],["heap",{"_index":120,"t":{"39":{"position":[[30,5]]}}}],["heap.clear",{"_index":121,"t":{"39":{"position":[[36,13]]}}}],["heap.empti",{"_index":123,"t":{"39":{"position":[[63,13]]}}}],["heap.push",{"_index":125,"t":{"39":{"position":[[107,10]]}}}],["heap.siz",{"_index":122,"t":{"39":{"position":[[50,12]]}}}],["help",{"_index":2132,"t":{"393":{"position":[[2767,5]]}}}],["hhfq",{"_index":2017,"t":{"377":{"position":[[705,4]]},"660":{"position":[[705,4]]}}}],["high",{"_index":2833,"t":{"540":{"position":[[1007,4]]},"720":{"position":[[1007,4]]}}}],["higher",{"_index":2304,"t":{"444":{"position":[[90,6],[132,6]]}}}],["highest",{"_index":2106,"t":{"393":{"position":[[1904,7],[4200,7]]}}}],["hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,alexnet的表现远远超过了其他参赛的网络模型,并且在imagenet",{"_index":2408,"t":{"455":{"position":[[55,83]]}}}],["hit",{"_index":1176,"t":{"192":{"position":[[114,3],[1326,3]]}}}],["hk×wkh_k",{"_index":3198,"t":{"623":{"position":[[543,8],[862,8]]},"753":{"position":[[543,8],[862,8]]}}}],["hold",{"_index":2704,"t":{"515":{"position":[[20,5]]},"698":{"position":[[20,5]]}}}],["hollings@cs.umd.edu",{"_index":1207,"t":{"192":{"position":[[783,21]]}}}],["hollingsworth",{"_index":1206,"t":{"192":{"position":[[769,13]]}}}],["honglak",{"_index":2946,"t":{"554":{"position":[[270,7]]}}}],["hope",{"_index":2731,"t":{"515":{"position":[[940,4]]},"698":{"position":[[940,4]]}}}],["host",{"_index":1044,"t":{"130":{"position":[[735,4],[805,4]]}}}],["host_cc",{"_index":1055,"t":{"130":{"position":[[962,7]]}}}],["hovemey",{"_index":1202,"t":{"192":{"position":[[706,9]]}}}],["html",{"_index":1973,"t":{"372":{"position":[[120,4]]},"655":{"position":[[120,4]]}}}],["http://127.0.0.1:7890",{"_index":2592,"t":{"509":{"position":[[199,23]]}}}],["http_proxi",{"_index":3411,"t":{"774":{"position":[[244,10]]}}}],["http_proxy=http://127.0.0.1:7890",{"_index":3406,"t":{"774":{"position":[[100,32]]}}}],["https://127.0.0.1:7890",{"_index":2594,"t":{"509":{"position":[[251,24]]}}}],["https://arxiv.org/pdf/2404.02905",{"_index":3346,"t":{"744":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.06525",{"_index":2789,"t":{"538":{"position":[[0,37]]},"718":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.11838",{"_index":2698,"t":{"513":{"position":[[0,37]]},"696":{"position":[[0,37]]}}}],["https://blog.csdn.net/f_zyj/article/details/51594851",{"_index":341,"t":{"78":{"position":[[4,52]]}}}],["https://blog.csdn.net/yeziyezi210/article/details/103864518",{"_index":2179,"t":{"409":{"position":[[3,64]]}}}],["https://download.csdn.net/download/f_zyj/9988653",{"_index":342,"t":{"78":{"position":[[57,48]]}}}],["https://www.bilibili.com/video/bv12u411s7us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1161,"t":{"177":{"position":[[284,107]]}}}],["https://www.bilibili.com/video/bv13r4y1m7sq/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1168,"t":{"177":{"position":[[732,107]]}}}],["https://www.bilibili.com/video/bv1pl4y1e7re/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1158,"t":{"177":{"position":[[121,107]]}}}],["https://www.bilibili.com/video/bv1vm4y1q7xb/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1164,"t":{"177":{"position":[[458,107]]}}}],["https://www.jianshu.com/p/41c15d301542",{"_index":3333,"t":{"737":{"position":[[5,38]]}}}],["https_proxi",{"_index":3412,"t":{"774":{"position":[[261,11]]}}}],["https_proxy=https://127.0.0.1:7890",{"_index":3407,"t":{"774":{"position":[[140,34]]}}}],["hung",{"_index":2977,"t":{"554":{"position":[[702,4]]}}}],["hw4",{"_index":3045,"t":{"568":{"position":[[53,4]]}}}],["hw×cihw",{"_index":2415,"t":{"462":{"position":[[51,15]]}}}],["hyperparamet",{"_index":2460,"t":{"471":{"position":[[80,14]]}}}],["hyperstyl",{"_index":1952,"t":{"370":{"position":[[20,10],[180,10]]},"653":{"position":[[20,10],[180,10]]}}}],["h×wh",{"_index":3200,"t":{"623":{"position":[[600,4]]},"753":{"position":[[600,4]]}}}],["h′以及w′h'以及w'h′以及w",{"_index":2427,"t":{"464":{"position":[[177,24]]}}}],["i'll",{"_index":1296,"t":{"217":{"position":[[72,4],[124,4]]}}}],["i)n(0,i",{"_index":2773,"t":{"523":{"position":[[331,8]]},"706":{"position":[[331,8]]}}}],["i)xt​∼n(0,i",{"_index":2778,"t":{"523":{"position":[[410,12]]},"706":{"position":[[410,12]]}}}],["i+1",{"_index":893,"t":{"109":{"position":[[3182,4]]}}}],["i,a,b",{"_index":814,"t":{"109":{"position":[[1144,6]]}}}],["i,j",{"_index":878,"t":{"109":{"position":[[2802,4]]}}}],["i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w",{"_index":2479,"t":{"483":{"position":[[27,49]]}}}],["i/o",{"_index":188,"t":{"56":{"position":[[188,5]]}}}],["i440fxsupport",{"_index":1102,"t":{"130":{"position":[[1880,14]]},"194":{"position":[[824,14]]}}}],["i<0",{"_index":820,"t":{"109":{"position":[[1316,5],[1379,5]]}}}],["i<=k",{"_index":851,"t":{"109":{"position":[[2386,5]]}}}],["ir2",{"_index":977,"t":{"116":{"position":[[352,9]]}}}],["if(la>ra",{"_index":910,"t":{"112":{"position":[[365,9],[707,9]]},"114":{"position":[[266,9],[495,9]]}}}],["if(n==0||m==0",{"_index":758,"t":{"107":{"position":[[2300,15]]}}}],["if(num==n",{"_index":756,"t":{"107":{"position":[[2196,10]]}}}],["if(read_key(&keycod",{"_index":1180,"t":{"192":{"position":[[161,22],[1373,22]]}}}],["if(rt",{"_index":986,"t":{"116":{"position":[[560,7]]}}}],["if(rt==0",{"_index":926,"t":{"112":{"position":[[990,9],[1380,9],[1495,9],[1611,9]]},"114":{"position":[[700,9],[1061,9],[1168,9],[1276,9]]}}}],["if(t[w].l!=0",{"_index":931,"t":{"112":{"position":[[1195,13]]},"114":{"position":[[897,13]]}}}],["if(t[w].r!=0",{"_index":933,"t":{"112":{"position":[[1225,13]]},"114":{"position":[[927,13]]}}}],["if(topologicalsort",{"_index":764,"t":{"107":{"position":[[2423,22]]}}}],["ifm",{"_index":3361,"t":{"761":{"position":[[266,3],[300,3],[339,3],[379,3]]}}}],["ifndef",{"_index":770,"t":{"109":{"position":[[37,7]]}}}],["ihpf",{"_index":1406,"t":{"248":{"position":[[15,14]]}}}],["iii",{"_index":1709,"t":{"338":{"position":[[353,3]]},"547":{"position":[[1338,3],[1365,3]]},"727":{"position":[[1339,3],[1366,3]]}}}],["illustr",{"_index":2036,"t":{"381":{"position":[[9,12]]}}}],["ilpf",{"_index":1377,"t":{"246":{"position":[[18,14],[36,4]]}}}],["im^=d(f^)\\hat{im}=\\mathcal{d}(\\hat{f})im^=d(f",{"_index":3171,"t":{"620":{"position":[[569,48]]},"750":{"position":[[569,48]]}}}],["imag",{"_index":1592,"t":{"304":{"position":[[845,5]]},"306":{"position":[[977,5]]},"365":{"position":[[1104,5]]},"367":{"position":[[1724,5]]},"377":{"position":[[282,5],[366,5],[513,5],[844,5]]},"379":{"position":[[45,35],[128,8]]},"513":{"position":[[62,5]]},"515":{"position":[[57,5],[840,5]]},"540":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"542":{"position":[[353,5],[382,5],[417,5],[569,5]]},"545":{"position":[[66,5],[244,5]]},"551":{"position":[[0,10],[202,5]]},"554":{"position":[[610,5]]},"616":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"620":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"627":{"position":[[224,5],[294,5]]},"648":{"position":[[1104,5]]},"650":{"position":[[1724,5]]},"660":{"position":[[282,5],[366,5],[513,5],[844,5]]},"662":{"position":[[45,35],[128,8]]},"688":{"position":[[31,7]]},"690":{"position":[[1199,5],[1571,5],[2055,5]]},"696":{"position":[[62,5]]},"698":{"position":[[57,5],[840,5]]},"720":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"722":{"position":[[353,5],[382,5],[417,5],[569,5]]},"725":{"position":[[66,5],[244,5]]},"746":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"750":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"759":{"position":[[224,5],[294,5]]}}}],["imagenet",{"_index":1894,"t":{"367":{"position":[[1009,8],[1327,10],[1364,8]]},"540":{"position":[[669,8],[807,8]]},"616":{"position":[[509,8]]},"650":{"position":[[1009,8],[1327,10],[1364,8]]},"720":{"position":[[669,8],[807,8]]},"746":{"position":[[509,8]]}}}],["imagen将压缩版本的图片作为gener",{"_index":1573,"t":{"304":{"position":[[353,28]]}}}],["imagen的实验结果,相对于decoder即diffus",{"_index":1577,"t":{"304":{"position":[[447,34]]}}}],["image数据,在传入visdom时仍需要先转化为numpi",{"_index":3118,"t":{"611":{"position":[[355,35]]}}}],["image,encod",{"_index":3163,"t":{"620":{"position":[[83,13]]},"750":{"position":[[83,13]]}}}],["impact",{"_index":1590,"t":{"304":{"position":[[791,9]]}}}],["import",{"_index":1584,"t":{"304":{"position":[[623,9]]},"393":{"position":[[3227,6],[3240,6],[3272,6],[3291,6]]},"437":{"position":[[269,6],[292,6]]},"439":{"position":[[258,6],[281,6]]},"444":{"position":[[1474,6]]},"509":{"position":[[0,6],[13,6],[43,6],[73,6],[105,6],[141,6],[162,6]]},"611":{"position":[[12,6]]},"613":{"position":[[12,6]]},"616":{"position":[[1250,9]]},"731":{"position":[[259,6],[278,6]]},"742":{"position":[[0,6]]},"746":{"position":[[1250,9]]}}}],["improv",{"_index":1586,"t":{"304":{"position":[[702,8]]},"616":{"position":[[555,7],[578,9]]},"746":{"position":[[555,7],[578,9]]}}}],["in[maxn",{"_index":969,"t":{"116":{"position":[[255,9]]}}}],["incept",{"_index":1598,"t":{"306":{"position":[[57,9]]},"367":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"616":{"position":[[596,9],[641,9]]},"650":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"746":{"position":[[596,9],[641,9]]}}}],["includ",{"_index":9,"t":{"9":{"position":[[0,8]]},"15":{"position":[[0,8]]},"21":{"position":[[0,8]]},"47":{"position":[[0,8]]},"82":{"position":[[2062,8]]},"84":{"position":[[1443,8],[1463,8]]},"105":{"position":[[0,8],[20,8],[38,8]]},"107":{"position":[[0,8],[21,8],[41,8],[59,8]]},"192":{"position":[[1005,8],[1034,8],[1061,8],[1088,8],[1112,8],[1138,8],[1162,8],[1186,8],[1214,8],[1239,8],[1265,8]]},"515":{"position":[[708,9]]},"616":{"position":[[823,9],[1137,9]]},"698":{"position":[[708,9]]},"746":{"position":[[823,9],[1137,9]]},"795":{"position":[[40,8]]}}}],["include::iter",{"_index":577,"t":{"92":{"position":[[765,14]]}}}],["int[col",{"_index":340,"t":{"76":{"position":[[84,9]]}}}],["int[nrow",{"_index":332,"t":{"74":{"position":[[77,8]]}}}],["interact",{"_index":2055,"t":{"389":{"position":[[167,8],[303,12]]}}}],["interpol",{"_index":3219,"t":{"625":{"position":[[143,11]]},"755":{"position":[[143,11]]}}}],["introduc",{"_index":2790,"t":{"540":{"position":[[3,9]]},"720":{"position":[[3,9]]}}}],["introduct",{"_index":3371,"t":{"763":{"position":[[52,42]]}}}],["intuit",{"_index":3132,"t":{"616":{"position":[[281,9]]},"746":{"position":[[281,9]]}}}],["invers",{"_index":1959,"t":{"370":{"position":[[355,9]]},"653":{"position":[[355,9]]}}}],["ios::sync_with_stdio(fals",{"_index":73,"t":{"23":{"position":[[346,28]]}}}],["iostream",{"_index":485,"t":{"84":{"position":[[1452,10]]},"105":{"position":[[9,10]]},"107":{"position":[[30,10]]}}}],["ipl",{"_index":1753,"t":{"346":{"position":[[9,3],[27,3]]},"349":{"position":[[16,3],[46,3]]},"367":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"377":{"position":[[2,3],[927,3]]},"379":{"position":[[914,3],[1189,3]]},"559":{"position":[[0,11]]},"629":{"position":[[9,3],[27,3]]},"632":{"position":[[16,3],[46,3]]},"650":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"660":{"position":[[2,3],[927,3]]},"662":{"position":[[914,3],[1189,3]]}}}],["ipl独立于生成模型,可以自由选择diffus",{"_index":2935,"t":{"551":{"position":[[286,64]]}}}],["is=exp⁡(ex[kl(p(y∣x)∣∣p(y))])is=\\exp\\left(\\mathbb{e}_x[kl(p(y|x)||p(y))]\\right)is=exp(ex​[kl(p(y∣x)∣∣p(i",{"_index":1887,"t":{"367":{"position":[[627,108]]},"650":{"position":[[627,108]]}}}],["is_heap",{"_index":441,"t":{"82":{"position":[[2236,7]]}}}],["is_heap_untilc++11",{"_index":442,"t":{"82":{"position":[[2258,18]]}}}],["is_list",{"_index":734,"t":{"107":{"position":[[1508,10]]}}}],["is_partitionedc++11",{"_index":418,"t":{"82":{"position":[[1542,19]]}}}],["is_permutationc++11",{"_index":447,"t":{"82":{"position":[[2397,19]]}}}],["is_sorted_untilc++11",{"_index":425,"t":{"82":{"position":[[1749,20]]}}}],["is_sortedc++11",{"_index":424,"t":{"82":{"position":[[1722,14]]}}}],["is_tre",{"_index":738,"t":{"107":{"position":[[1656,10]]}}}],["isclos",{"_index":3356,"t":{"761":{"position":[[128,12]]}}}],["isdag",{"_index":300,"t":{"67":{"position":[[624,6],[660,6]]},"105":{"position":[[358,6],[394,6],[550,7]]},"107":{"position":[[499,6],[535,6],[746,7]]}}}],["isdag(1",{"_index":307,"t":{"67":{"position":[[741,8]]},"107":{"position":[[616,8]]}}}],["isdag(isdag",{"_index":304,"t":{"67":{"position":[[682,12]]},"105":{"position":[[416,12]]},"107":{"position":[[557,12]]}}}],["isinstance(net",{"_index":2623,"t":{"509":{"position":[[955,15]]}}}],["isinstance(train_lay",{"_index":1859,"t":{"365":{"position":[[347,24]]},"648":{"position":[[347,24]]}}}],["isinstance(x",{"_index":2629,"t":{"509":{"position":[[1114,13]]}}}],["is(incept",{"_index":1922,"t":{"367":{"position":[[2084,12]]},"650":{"position":[[2084,12]]}}}],["it'",{"_index":2301,"t":{"444":{"position":[[62,4]]}}}],["item",{"_index":3328,"t":{"735":{"position":[[231,4],[440,4]]}}}],["iter",{"_index":193,"t":{"58":{"position":[[78,8]]},"82":{"position":[[835,22]]},"469":{"position":[[8,9],[272,9]]}}}],["iter_swap",{"_index":396,"t":{"82":{"position":[[825,9]]}}}],["it指向的元素前插入n个新元素val",{"_index":472,"t":{"84":{"position":[[729,22]]},"86":{"position":[[750,22]]}}}],["it指向的元素前插入新元素val",{"_index":471,"t":{"84":{"position":[[685,20]]},"86":{"position":[[706,20]]}}}],["iulian",{"_index":1209,"t":{"192":{"position":[[827,6]]}}}],["j",{"_index":164,"t":{"53":{"position":[[7,1],[111,1]]},"105":{"position":[[1989,1],[1996,1],[2011,4]]},"109":{"position":[[2924,1],[3086,2]]},"666":{"position":[[617,2]]}}}],["j2\\pi",{"_index":1340,"t":{"228":{"position":[[351,5],[624,5],[1245,5]]}}}],["j\\frac{2\\pi",{"_index":1354,"t":{"228":{"position":[[946,11]]}}}],["jae",{"_index":2966,"t":{"554":{"position":[[559,3]]}}}],["jeffrey",{"_index":1205,"t":{"192":{"position":[[758,7]]}}}],["jingwan",{"_index":2961,"t":{"554":{"position":[[526,7]]}}}],["jinwoo",{"_index":2953,"t":{"554":{"position":[[393,6]]}}}],["j}\\right)p(xi,j​∣xa(first",{"_index":496,"t":{"86":{"position":[[126,17]]}}}],["lista(n",{"_index":492,"t":{"86":{"position":[[51,13],[87,13]]}}}],["lista{1,2,3",{"_index":491,"t":{"86":{"position":[[33,17]]}}}],["list和tensor",{"_index":2550,"t":{"504":{"position":[[409,17]]}}}],["list和vector",{"_index":348,"t":{"80":{"position":[[228,45]]}}}],["list或deque实现,封闭头部即可,不用vector",{"_index":350,"t":{"80":{"position":[[282,51],[342,51]]}}}],["list的*乘法是复制元素,改变list的shap",{"_index":2551,"t":{"504":{"position":[[427,26]]}}}],["ll",{"_index":229,"t":{"62":{"position":[[360,2],[547,2],[633,2],[667,2]]},"112":{"position":[[118,3]]},"114":{"position":[[118,3]]},"116":{"position":[[204,3]]}}}],["llama",{"_index":2800,"t":{"540":{"position":[[246,6]]},"542":{"position":[[602,5]]},"547":{"position":[[34,5]]},"720":{"position":[[246,6]]},"722":{"position":[[602,5]]},"727":{"position":[[34,5]]}}}],["llamagen",{"_index":2791,"t":{"540":{"position":[[13,9]]},"547":{"position":[[971,13],[1916,8]]},"720":{"position":[[13,9]]},"727":{"position":[[977,8],[1917,8]]}}}],["lll",{"_index":1374,"t":{"240":{"position":[[243,17]]},"399":{"position":[[187,13]]},"401":{"position":[[16,12]]}}}],["llm",{"_index":2838,"t":{"540":{"position":[[1150,3]]},"542":{"position":[[211,4],[288,4],[500,4],[739,3]]},"547":{"position":[[112,4],[1444,4]]},"616":{"position":[[988,5],[1274,5]]},"618":{"position":[[84,4]]},"623":{"position":[[1305,4]]},"627":{"position":[[518,4]]},"720":{"position":[[1150,3]]},"722":{"position":[[211,4],[288,4],[500,4],[738,3]]},"727":{"position":[[112,4],[1445,4]]},"746":{"position":[[988,5],[1274,5]]},"748":{"position":[[84,4]]},"753":{"position":[[1305,4]]},"757":{"position":[[265,4],[281,4]]},"759":{"position":[[518,4]]}}}],["ll×l",{"_index":2171,"t":{"403":{"position":[[366,4]]}}}],["locale.h",{"_index":181,"t":{"56":{"position":[[92,8]]}}}],["locatevex_al(*pg",{"_index":828,"t":{"109":{"position":[[1579,17],[1605,17]]}}}],["locatevex_al(algraph",{"_index":810,"t":{"109":{"position":[[917,20]]}}}],["locatevex_al(g",{"_index":882,"t":{"109":{"position":[[2899,15],[2928,15]]}}}],["log",{"_index":1093,"t":{"130":{"position":[[1757,4]]},"194":{"position":[[701,4]]}}}],["log2(1pi)(7)\\begin{align",{"_index":2312,"t":{"444":{"position":[[286,25]]}}}],["log2(pi)=∑inpi",{"_index":2311,"t":{"444":{"position":[[271,14]]}}}],["log2(pi)−log2(qi)](9)d_{kl}(p",{"_index":2333,"t":{"444":{"position":[[842,30]]}}}],["log2(qi)(10)\\begin{align",{"_index":2345,"t":{"444":{"position":[[1187,25]]}}}],["log2​(pi​)=i∑n​pi",{"_index":2318,"t":{"444":{"position":[[437,18]]}}}],["log2​(pi​)−log2​(qi​)](9",{"_index":2337,"t":{"444":{"position":[[959,26]]}}}],["log2​(pi​1​)​(7",{"_index":2319,"t":{"444":{"position":[[456,16]]}}}],["log2​(qi​)​(10",{"_index":2351,"t":{"444":{"position":[[1357,15]]}}}],["log_2(p_i",{"_index":2335,"t":{"444":{"position":[[910,11]]}}}],["log_2(q_i)]}\\tag{9}dkl​(p",{"_index":2336,"t":{"444":{"position":[[922,25]]}}}],["logist",{"_index":2495,"t":{"488":{"position":[[0,8]]}}}],["logit",{"_index":2905,"t":{"547":{"position":[[2074,5]]},"727":{"position":[[2075,5]]}}}],["logit提供的通用信息,同时保留条件logit",{"_index":2917,"t":{"547":{"position":[[2327,80]]},"727":{"position":[[2328,80]]}}}],["logit,即不考虑任何条件信息时生成的logit",{"_index":2914,"t":{"547":{"position":[[2233,31]]},"727":{"position":[[2234,31]]}}}],["logit,即基于输入文本提示的信息生成的logit",{"_index":2912,"t":{"547":{"position":[[2189,31]]},"727":{"position":[[2190,31]]}}}],["long",{"_index":230,"t":{"62":{"position":[[363,4],[368,4],[394,4],[399,4]]},"102":{"position":[[1010,4]]},"112":{"position":[[108,4],[113,4]]},"114":{"position":[[108,4],[113,4]]},"116":{"position":[[194,4],[199,4]]},"789":{"position":[[3,17],[21,32]]}}}],["loss",{"_index":1868,"t":{"365":{"position":[[1024,4]]},"377":{"position":[[790,4],[886,4]]},"379":{"position":[[24,8],[40,4]]},"425":{"position":[[139,10]]},"509":{"position":[[1623,4],[1751,6]]},"515":{"position":[[504,5],[532,4]]},"521":{"position":[[127,4],[893,4]]},"559":{"position":[[890,39]]},"611":{"position":[[280,8]]},"648":{"position":[[1024,4]]},"660":{"position":[[790,4],[886,4]]},"662":{"position":[[24,8],[40,4]]},"698":{"position":[[504,5],[532,4]]},"704":{"position":[[127,4],[893,4]]},"817":{"position":[[129,4]]},"840":{"position":[[6,43],[87,14]]}}}],["loss(y_hat",{"_index":2672,"t":{"509":{"position":[[2039,11]]}}}],["loss.to(devic",{"_index":2653,"t":{"509":{"position":[[1658,15]]}}}],["lossdiscriminator=lossreal+lossfake(3)loss_{discriminator}=loss_{real}+loss_{fake}\\tag{3}lossdiscriminator​=lossreal​+lossfake​(3",{"_index":1288,"t":{"215":{"position":[[532,130]]}}}],["lossfake=−ez∼pz(z)[log(1−d(g(z)))](2)loss_{fak",{"_index":1283,"t":{"215":{"position":[[332,49]]}}}],["lossmse=∑[y−f(x)]2(5)loss_{ms",{"_index":2291,"t":{"442":{"position":[[57,31]]}}}],["lossreal=−ex∼pdata(x)[log⁡d(x)](1)loss_{r",{"_index":1278,"t":{"215":{"position":[[160,46]]}}}],["loss得到6",{"_index":3478,"t":{"817":{"position":[[74,11]]}}}],["loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的lat",{"_index":3008,"t":{"559":{"position":[[644,71]]}}}],["loss的输入来约束从源域中学习到的prompt",{"_index":3003,"t":{"559":{"position":[[346,33]]}}}],["loss的输入,约束学习到的prompt",{"_index":3007,"t":{"559":{"position":[[555,31]]}}}],["lot",{"_index":1108,"t":{"130":{"position":[[1992,3]]},"194":{"position":[[936,3]]}}}],["low",{"_index":1380,"t":{"246":{"position":[[53,3]]}}}],["lower_bound",{"_index":433,"t":{"82":{"position":[[1975,11]]}}}],["lr",{"_index":1154,"t":{"172":{"position":[[29,9]]},"509":{"position":[[1414,3],[2720,3],[2810,3]]}}}],["lr(0",{"_index":1157,"t":{"177":{"position":[[98,8]]},"182":{"position":[[138,6],[159,13]]}}}],["lr(1",{"_index":1163,"t":{"177":{"position":[[435,8]]},"182":{"position":[[153,5]]}}}],["lr=lr",{"_index":2651,"t":{"509":{"position":[[1616,6]]}}}],["lr_mul=0.01",{"_index":2002,"t":{"375":{"position":[[843,12],[986,12]]},"658":{"position":[[843,12],[986,12]]}}}],["lr_mul=lr_mlp",{"_index":1842,"t":{"363":{"position":[[684,14]]},"646":{"position":[[684,14]]}}}],["lu",{"_index":2962,"t":{"554":{"position":[[534,3]]},"806":{"position":[[676,57]]},"854":{"position":[[804,57]]}}}],["l×dkl",{"_index":2168,"t":{"403":{"position":[[246,5]]}}}],["l×dl",{"_index":2159,"t":{"401":{"position":[[54,4]]}}}],["l×ll",{"_index":2170,"t":{"403":{"position":[[354,4]]}}}],["m",{"_index":494,"t":{"86":{"position":[[101,2]]},"92":{"position":[[323,2]]},"130":{"position":[[1086,1]]},"609":{"position":[[52,1]]}}}],["m.clear",{"_index":584,"t":{"92":{"position":[[1053,10]]}}}],["m.empti",{"_index":583,"t":{"92":{"position":[[1032,10]]}}}],["m.erase(it",{"_index":581,"t":{"92":{"position":[[952,12]]}}}],["m.erase(key",{"_index":580,"t":{"92":{"position":[[903,13]]}}}],["m.find(key",{"_index":578,"t":{"92":{"position":[[785,12]]}}}],["m.insert(make_pair(key",{"_index":574,"t":{"92":{"position":[[486,23]]}}}],["m.size",{"_index":582,"t":{"92":{"position":[[1012,9]]}}}],["m32",{"_index":1043,"t":{"130":{"position":[[729,3],[978,3]]}}}],["m[key",{"_index":570,"t":{"92":{"position":[[352,6],[683,7]]}}}],["machin",{"_index":2437,"t":{"467":{"position":[[47,7]]}}}],["mae",{"_index":2783,"t":{"526":{"position":[[15,3]]},"709":{"position":[[15,3]]}}}],["mage",{"_index":3281,"t":{"690":{"position":[[1981,10]]}}}],["main",{"_index":15,"t":{"9":{"position":[[50,6]]},"15":{"position":[[50,6]]},"21":{"position":[[50,6]]},"84":{"position":[[1506,6]]},"105":{"position":[[1733,6]]},"107":{"position":[[2284,7]]},"109":{"position":[[2708,6]]},"112":{"position":[[1704,6]]},"114":{"position":[[1369,6]]},"116":{"position":[[658,6]]},"192":{"position":[[503,31]]},"795":{"position":[[769,6]]}}}],["main(struct",{"_index":1237,"t":{"192":{"position":[[1838,11]]}}}],["make",{"_index":1005,"t":{"120":{"position":[[338,7]]},"124":{"position":[[144,7]]},"130":{"position":[[147,19]]},"194":{"position":[[70,4],[82,4]]},"393":{"position":[[2776,6]]},"616":{"position":[[428,5]]},"746":{"position":[[428,5]]}}}],["make_heap",{"_index":443,"t":{"82":{"position":[[2296,9]]}}}],["malloc(sizeof(arcnod",{"_index":831,"t":{"109":{"position":[[1670,26]]}}}],["man",{"_index":2982,"t":{"554":{"position":[[758,3]]}}}],["map",{"_index":87,"t":{"29":{"position":[[190,4]]},"47":{"position":[[9,5]]},"58":{"position":[[99,3]]},"92":{"position":[[0,7],[223,68],[292,13],[326,9],[339,9]]},"363":{"position":[[470,12],[566,10]]},"367":{"position":[[1940,3]]},"427":{"position":[[82,3]]},"433":{"position":[[43,21]]},"620":{"position":[[111,4],[1270,3]]},"623":{"position":[[213,3],[265,4],[289,4],[386,14]]},"625":{"position":[[104,3],[136,3],[171,6],[186,3]]},"627":{"position":[[236,14]]},"646":{"position":[[470,12],[566,10]]},"650":{"position":[[1940,3]]},"750":{"position":[[111,4],[1270,3]]},"753":{"position":[[213,3],[265,4],[289,4],[386,14]]},"755":{"position":[[104,3],[136,3],[171,6],[186,3]]},"759":{"position":[[236,14]]}}}],["map、<=、>=、==、!=,其规则是先比较first,first相等时再比较second",{"_index":562,"t":{"90":{"position":[[246,110]]}}}],["pair也能进行sort",{"_index":112,"t":{"33":{"position":[[81,12]]}}}],["pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair",{"_index":563,"t":{"90":{"position":[[357,92]]}}}],["pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second",{"_index":561,"t":{"90":{"position":[[173,72]]}}}],["paper",{"_index":1914,"t":{"367":{"position":[[1810,5]]},"650":{"position":[[1810,5]]},"739":{"position":[[71,5]]}}}],["paradigm",{"_index":2794,"t":{"540":{"position":[[107,8]]},"616":{"position":[[66,8]]},"720":{"position":[[107,8]]},"746":{"position":[[66,8]]}}}],["paragraph",{"_index":2124,"t":{"393":{"position":[[2626,10]]}}}],["paramet",{"_index":2457,"t":{"471":{"position":[[37,9]]},"540":{"position":[[773,11],[953,11]]},"564":{"position":[[87,10]]},"720":{"position":[[773,11],[953,11]]}}}],["paraphras",{"_index":2221,"t":{"421":{"position":[[677,10]]}}}],["parti",{"_index":2851,"t":{"542":{"position":[[90,5]]},"683":{"position":[[0,5],[6,71],[103,10],[272,14]]},"722":{"position":[[90,5]]}}}],["partial_sort",{"_index":427,"t":{"82":{"position":[[1822,12]]}}}],["partial_sort_copi",{"_index":428,"t":{"82":{"position":[[1840,17]]}}}],["partit",{"_index":420,"t":{"82":{"position":[[1590,9]]},"467":{"position":[[183,11]]}}}],["partition_copyc++11",{"_index":421,"t":{"82":{"position":[[1611,19]]}}}],["partition_pointc++11",{"_index":422,"t":{"82":{"position":[[1643,20]]}}}],["pass",{"_index":1381,"t":{"246":{"position":[[57,4]]}}}],["patch",{"_index":2785,"t":{"526":{"position":[[68,5]]},"533":{"position":[[26,5]]},"709":{"position":[[68,5]]},"716":{"position":[[26,5]]}}}],["path",{"_index":852,"t":{"109":{"position":[[2397,11]]},"566":{"position":[[226,4],[273,4]]}}}],["path/terminal_proxy.sh",{"_index":3416,"t":{"776":{"position":[[96,23]]}}}],["path[k]=0",{"_index":864,"t":{"109":{"position":[[2691,10]]}}}],["path[k]=u",{"_index":848,"t":{"109":{"position":[[2317,10]]}}}],["path[max_vertex_num",{"_index":841,"t":{"109":{"position":[[2162,21]]}}}],["pathnum",{"_index":856,"t":{"109":{"position":[[2483,10]]}}}],["pathnum=0",{"_index":842,"t":{"109":{"position":[[2193,10],[3006,10]]}}}],["pathnum==0",{"_index":888,"t":{"109":{"position":[[3096,12]]}}}],["paths[i",{"_index":894,"t":{"109":{"position":[[3187,10]]}}}],["paths[maxsize][max_vertex_num",{"_index":840,"t":{"109":{"position":[[2119,31]]}}}],["paths[pathnum][i",{"_index":853,"t":{"109":{"position":[[2409,17]]}}}],["paths[pathnum][i]='\\0",{"_index":855,"t":{"109":{"position":[[2453,23]]}}}],["pay",{"_index":2057,"t":{"389":{"position":[[230,3]]}}}],["pc",{"_index":997,"t":{"120":{"position":[[102,7]]}}}],["pe(k,2i)\\\\pe(pos+k,2i+1)=pe(pos,2i+1)\\tim",{"_index":1460,"t":{"277":{"position":[[836,43]]},"577":{"position":[[836,43]]}}}],["pe(k,2i)\\end{array",{"_index":1463,"t":{"277":{"position":[[908,19]]},"577":{"position":[[908,19]]}}}],["pe(k,2i+1",{"_index":1461,"t":{"277":{"position":[[880,10]]},"577":{"position":[[880,10]]}}}],["pe(k,2i+1)+pe(pos,2i+1)\\tim",{"_index":1459,"t":{"277":{"position":[[806,29]]},"577":{"position":[[806,29]]}}}],["pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)(3)\\begin{array}{l}pe(pos+k,2i)=pe(pos,2i)\\tim",{"_index":1458,"t":{"277":{"position":[[643,162]]},"577":{"position":[[643,162]]}}}],["pe(pos,2i)=sin(pos100002i/dmodel)(1)pe_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1453,"t":{"277":{"position":[[212,96]]},"577":{"position":[[212,96]]}}}],["pe(pos,2i)\\tim",{"_index":1462,"t":{"277":{"position":[[891,16]]},"577":{"position":[[891,16]]}}}],["pe(pos,2i+1)=cos(pos100002i/dmodel)(2)pe_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1455,"t":{"277":{"position":[[356,100]]},"577":{"position":[[356,100]]}}}],["penalti",{"_index":2369,"t":{"448":{"position":[[151,48]]}}}],["per",{"_index":2714,"t":{"515":{"position":[[319,3],[559,3]]},"698":{"position":[[319,3],[559,3]]}}}],["perform",{"_index":2439,"t":{"467":{"position":[[80,11]]},"469":{"position":[[354,12]]},"540":{"position":[[342,11],[1065,11]]},"720":{"position":[[342,11],[1065,11]]}}}],["permit",{"_index":1215,"t":{"192":{"position":[[918,9]]}}}],["perspect",{"_index":1677,"t":{"322":{"position":[[841,12]]}}}],["pg",{"_index":802,"t":{"109":{"position":[[759,4],[779,2],[795,2],[844,2],[1087,4],[1274,2],[1336,2],[1399,2],[1470,2],[1748,3],[1790,2],[1872,2]]}}}],["photo",{"_index":1782,"t":{"357":{"position":[[44,5],[225,16],[244,5],[255,18]]},"359":{"position":[[139,5],[150,5],[414,5]]},"361":{"position":[[72,5],[94,5]]},"377":{"position":[[59,5],[687,5]]},"379":{"position":[[621,5],[649,6]]},"640":{"position":[[44,5],[225,16],[244,5],[255,18]]},"642":{"position":[[139,5],[150,5],[414,5]]},"644":{"position":[[72,5],[94,5]]},"660":{"position":[[59,5],[687,5]]},"662":{"position":[[621,5],[649,6]]}}}],["photo.’或‘a",{"_index":1820,"t":{"361":{"position":[[83,10]]},"644":{"position":[[83,10]]}}}],["photorealist",{"_index":1591,"t":{"304":{"position":[[822,14]]}}}],["photo→anim",{"_index":1928,"t":{"367":{"position":[[2171,11],[2518,11]]},"650":{"position":[[2171,11],[2518,11]]}}}],["photo→cartoon",{"_index":1947,"t":{"367":{"position":[[2365,13],[2658,13]]},"650":{"position":[[2365,13],[2658,13]]}}}],["photo→cub",{"_index":1949,"t":{"367":{"position":[[2407,12],[2700,12]]},"650":{"position":[[2407,12],[2700,12]]}}}],["photo→disney",{"_index":1924,"t":{"367":{"position":[[2135,12],[2491,12]]},"650":{"position":[[2135,12],[2491,12]]}}}],["photo→pixar",{"_index":1938,"t":{"367":{"position":[[2277,11],[2588,11]]},"650":{"position":[[2277,11],[2588,11]]}}}],["photo→pointil",{"_index":1948,"t":{"367":{"position":[[2384,17],[2677,17]]},"650":{"position":[[2384,17],[2677,17]]}}}],["photo→tolkien",{"_index":1940,"t":{"367":{"position":[[2304,13],[2615,13]]},"650":{"position":[[2304,13],[2615,13]]}}}],["photo→ukiyo",{"_index":1934,"t":{"367":{"position":[[2240,11],[2569,11]]},"650":{"position":[[2240,11],[2569,11]]}}}],["photo→wal",{"_index":1933,"t":{"367":{"position":[[2215,10],[2544,10]]},"650":{"position":[[2215,10],[2544,10]]}}}],["photo→werewolf",{"_index":1942,"t":{"367":{"position":[[2327,14],[2638,14]]},"650":{"position":[[2327,14],[2638,14]]}}}],["pi",{"_index":234,"t":{"62":{"position":[[445,2]]}}}],["pii",{"_index":233,"t":{"62":{"position":[[412,3]]}}}],["pip",{"_index":1769,"t":{"351":{"position":[[124,3],[158,3]]},"606":{"position":[[0,3]]},"634":{"position":[[124,3],[158,3]]}}}],["pip_{i}pi",{"_index":2196,"t":{"419":{"position":[[404,23]]}}}],["piscart",{"_index":2922,"t":{"549":{"position":[[30,10]]}}}],["pixelcnn",{"_index":3247,"t":{"671":{"position":[[14,14]]},"673":{"position":[[114,8],[141,8]]}}}],["pixelnorm",{"_index":1836,"t":{"363":{"position":[[516,9],[597,13]]},"646":{"position":[[516,9],[597,13]]}}}],["pixelnorm以及全连接层,将每个点归一化(除以模长),避免输入nois",{"_index":1998,"t":{"375":{"position":[[725,54]]},"658":{"position":[[725,54]]}}}],["pixelnorm,防止与transformer中的lay",{"_index":1978,"t":{"375":{"position":[[185,38]]},"658":{"position":[[185,38]]}}}],["pixelrnn",{"_index":3245,"t":{"669":{"position":[[0,8],[52,19]]},"671":{"position":[[5,8]]},"673":{"position":[[125,8],[152,8]]}}}],["pi′=pi∑wj∈ckpj",{"_index":1726,"t":{"340":{"position":[[518,14]]}}}],["pi′=pi∑wj∈cppj",{"_index":1748,"t":{"342":{"position":[[627,14]]}}}],["pi′p_i^{\\prime}pi",{"_index":1733,"t":{"340":{"position":[[653,20]]},"342":{"position":[[758,22]]}}}],["plasmpkg2",{"_index":3400,"t":{"770":{"position":[[336,9]]}}}],["platform",{"_index":1047,"t":{"130":{"position":[[810,9],[841,9]]}}}],["pleas",{"_index":2112,"t":{"393":{"position":[[2191,6],[4350,6]]}}}],["plot",{"_index":2148,"t":{"393":{"position":[[3319,4]]}}}],["plt",{"_index":2590,"t":{"509":{"position":[[158,3]]}}}],["plt.show",{"_index":2691,"t":{"509":{"position":[[2628,10]]}}}],["po",{"_index":637,"t":{"102":{"position":[[487,4],[511,3],[692,3],[725,3],[794,3],[932,3]]}}}],["point",{"_index":1198,"t":{"192":{"position":[[660,5],[1743,6]]}}}],["polynomi",{"_index":3460,"t":{"809":{"position":[[752,10]]},"856":{"position":[[752,10]]}}}],["pop",{"_index":81,"t":{"29":{"position":[[98,5],[139,5],[168,5]]},"105":{"position":[[1650,4]]}}}],["pop_heap",{"_index":444,"t":{"82":{"position":[[2318,8]]}}}],["popular",{"_index":2827,"t":{"540":{"position":[[854,7]]},"720":{"position":[[854,7]]}}}],["portrait",{"_index":2030,"t":{"379":{"position":[[738,10]]},"662":{"position":[[738,10]]}}}],["pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1",{"_index":1457,"t":{"277":{"position":[[506,136]]},"577":{"position":[[506,136]]}}}],["posit",{"_index":2885,"t":{"547":{"position":[[1017,8]]},"727":{"position":[[1018,8]]}}}],["pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel",{"_index":1452,"t":{"277":{"position":[[57,154]]},"577":{"position":[[57,154]]}}}],["postt(int",{"_index":947,"t":{"112":{"position":[[1595,9]]},"114":{"position":[[1260,9]]},"116":{"position":[[544,9]]}}}],["postt(rt",{"_index":961,"t":{"112":{"position":[[2056,10]]},"114":{"position":[[1642,10]]},"116":{"position":[[806,10]]}}}],["postt(t[rt].l",{"_index":948,"t":{"112":{"position":[[1629,15]]},"114":{"position":[[1294,15]]},"116":{"position":[[585,15]]}}}],["postt(t[rt].r",{"_index":949,"t":{"112":{"position":[[1645,15]]},"114":{"position":[[1310,15]]},"116":{"position":[[601,15]]}}}],["pos处的二进制位置为0",{"_index":650,"t":{"102":{"position":[[863,14]]}}}],["power",{"_index":3147,"t":{"616":{"position":[[936,5]]},"746":{"position":[[936,5]]}}}],["pp_arr",{"_index":331,"t":{"74":{"position":[[63,7]]}}}],["ppp",{"_index":1743,"t":{"342":{"position":[[446,14]]}}}],["ppp的坐标为(x,y)(x",{"_index":1319,"t":{"222":{"position":[[118,19]]}}}],["practic",{"_index":3012,"t":{"562":{"position":[[44,8]]}}}],["pre",{"_index":976,"t":{"116":{"position":[[346,3]]},"306":{"position":[[983,3]]},"421":{"position":[[1023,6]]}}}],["pre[maxn",{"_index":968,"t":{"116":{"position":[[244,10]]}}}],["pre_stylegan",{"_index":1779,"t":{"353":{"position":[[54,14]]},"636":{"position":[[54,14]]}}}],["precis",{"_index":2929,"t":{"551":{"position":[[150,7]]}}}],["predic",{"_index":419,"t":{"82":{"position":[[1562,27]]}}}],["predict",{"_index":2197,"t":{"419":{"position":[[442,11]]},"444":{"position":[[1533,7],[1580,7],[1768,7]]},"540":{"position":[[95,11]]},"542":{"position":[[172,10]]},"616":{"position":[[158,11],[190,12],[255,12]]},"620":{"position":[[32,10],[946,10],[996,11]]},"623":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"690":{"position":[[1108,11],[1127,10]]},"720":{"position":[[95,11]]},"722":{"position":[[172,10]]},"746":{"position":[[158,11],[190,12],[255,12]]},"750":{"position":[[32,10],[946,10],[996,11]]},"753":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"757":{"position":[[192,11]]}}}],["prediction,图(b",{"_index":3175,"t":{"620":{"position":[[903,25]]},"750":{"position":[[903,25]]}}}],["predictor",{"_index":1620,"t":{"308":{"position":[[245,10]]},"318":{"position":[[568,14]]},"322":{"position":[[185,46]]},"324":{"position":[[185,10]]}}}],["predictor中。从随机分布中sample出的噪声就是nois",{"_index":1629,"t":{"308":{"position":[[703,34]]}}}],["predictor中,而需要预测出的噪声分布的ground",{"_index":1623,"t":{"308":{"position":[[407,29]]}}}],["predictor对噪声denois",{"_index":1654,"t":{"318":{"position":[[107,29]]}}}],["predictor的ground",{"_index":1630,"t":{"308":{"position":[[738,16]]}}}],["predictor预测出的噪声,αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​以及α1,α2,...αt\\alpha_1,\\alpha_2,...\\alpha_tα1​,α2​,...αt",{"_index":1703,"t":{"326":{"position":[[592,158]]}}}],["predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的ground",{"_index":1689,"t":{"324":{"position":[[717,65]]}}}],["predictor,根据文字prompt对从随机分布中sampl",{"_index":1669,"t":{"322":{"position":[[490,54]]}}}],["predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的nois",{"_index":1653,"t":{"318":{"position":[[58,48]]}}}],["predit",{"_index":1905,"t":{"367":{"position":[[1402,9]]},"650":{"position":[[1402,9]]}}}],["preprocess",{"_index":3020,"t":{"566":{"position":[[88,10],[161,12]]}}}],["present",{"_index":3125,"t":{"616":{"position":[[3,7]]},"746":{"position":[[3,7]]}}}],["press",{"_index":1257,"t":{"192":{"position":[[2184,7]]}}}],["pret(int",{"_index":939,"t":{"112":{"position":[[1365,8]]},"114":{"position":[[1046,8]]}}}],["pret(rt",{"_index":959,"t":{"112":{"position":[[2022,9]]},"114":{"position":[[1629,9]]}}}],["pret(t[rt].l",{"_index":942,"t":{"112":{"position":[[1435,14]]},"114":{"position":[[1116,14]]}}}],["pret(t[rt].r",{"_index":943,"t":{"112":{"position":[[1450,14]]},"114":{"position":[[1131,14]]}}}],["pretrain",{"_index":2186,"t":{"417":{"position":[[208,28]]}}}],["prev_permut",{"_index":456,"t":{"82":{"position":[[2667,16]]}}}],["prewitt",{"_index":1437,"t":{"266":{"position":[[116,10]]}}}],["prim",{"_index":3446,"t":{"800":{"position":[[100,6]]}}}],["primari",{"_index":3363,"t":{"761":{"position":[[276,7],[310,7],[349,7],[389,7]]}}}],["print",{"_index":1258,"t":{"192":{"position":[[2201,5]]}}}],["print(\"%c\",(asciicode=='\\r",{"_index":1192,"t":{"192":{"position":[[443,28],[1658,28]]}}}],["print(\"\\n",{"_index":1189,"t":{"192":{"position":[[376,9],[1588,9]]}}}],["print(\"argmax",{"_index":2571,"t":{"504":{"position":[[871,13]]}}}],["print(\"attent",{"_index":2100,"t":{"393":{"position":[[1706,16],[1922,16],[4076,16],[4218,16]]}}}],["print(\"keys:\\n",{"_index":2092,"t":{"393":{"position":[[1345,16],[3909,16]]}}}],["print(\"queries:\\n",{"_index":2093,"t":{"393":{"position":[[1377,19],[3941,19]]}}}],["print(\"to",{"_index":1174,"t":{"192":{"position":[[99,9],[1311,9]]}}}],["print(\"values:\\n",{"_index":2094,"t":{"393":{"position":[[1415,18],[3979,18]]}}}],["print(\"weight",{"_index":2118,"t":{"393":{"position":[[2294,15],[4453,15]]}}}],["print(\"welcom",{"_index":1252,"t":{"192":{"position":[[2075,14]]}}}],["print(a",{"_index":2554,"t":{"504":{"position":[[543,7]]}}}],["print(b",{"_index":2556,"t":{"504":{"position":[[581,7]]}}}],["print(c.shap",{"_index":2543,"t":{"504":{"position":[[252,14]]}}}],["print(d.shap",{"_index":2548,"t":{"504":{"position":[[373,14]]}}}],["print(f'loss",{"_index":2683,"t":{"509":{"position":[[2464,12]]}}}],["print(f'{metric[2",{"_index":2687,"t":{"509":{"position":[[2545,18]]}}}],["print(i",{"_index":2576,"t":{"504":{"position":[[1121,8],[1315,8]]}}}],["print(i)16'''17(tensor([1",{"_index":2526,"t":{"494":{"position":[[651,26]]}}}],["print(i)6'''7(tensor(1",{"_index":2517,"t":{"494":{"position":[[450,24]]}}}],["print(item",{"_index":3329,"t":{"735":{"position":[[253,11],[464,11]]}}}],["print(output",{"_index":3300,"t":{"731":{"position":[[619,13]]}}}],["print(x",{"_index":3294,"t":{"731":{"position":[[372,8]]}}}],["print(x1",{"_index":3296,"t":{"731":{"position":[[412,9]]}}}],["print(x2",{"_index":3299,"t":{"731":{"position":[[527,9]]}}}],["printf(\"%c",{"_index":782,"t":{"109":{"position":[[312,12]]}}}],["printf(\"%d%c\",v[i],i==len",{"_index":937,"t":{"112":{"position":[[1298,25]]},"114":{"position":[[1000,25]]}}}],["printf(\"%d\\n",{"_index":66,"t":{"21":{"position":[[430,14]]}}}],["printf(\"%d\\n\",t[rt].d",{"_index":989,"t":{"116":{"position":[[628,23]]}}}],["printf(\"7.28",{"_index":887,"t":{"109":{"position":[[3017,12]]}}}],["printf(\"\\t",{"_index":889,"t":{"109":{"position":[[3111,10]]}}}],["printf(\"\\t%d",{"_index":891,"t":{"109":{"position":[[3162,12]]}}}],["printf(first?first=0,\"%d",{"_index":940,"t":{"112":{"position":[[1398,27],[1528,27],[1661,27]]},"114":{"position":[[1079,27],[1201,27],[1326,27]]}}}],["priority_queue,greater1t",{"_index":1711,"t":{"338":{"position":[[387,4]]}}}],["t>的元素对序列。序列中的元素以const",{"_index":566,"t":{"92":{"position":[[68,21]]}}}],["t[maxn",{"_index":900,"t":{"112":{"position":[[208,9]]},"114":{"position":[[208,9]]},"116":{"position":[[290,9]]}}}],["t[rt].d=pre[rt",{"_index":982,"t":{"116":{"position":[[437,16]]}}}],["t[rt].l=create(l1,p1",{"_index":983,"t":{"116":{"position":[[454,20]]}}}],["t[rt].l=mid_po_build(la,p1",{"_index":922,"t":{"112":{"position":[[824,26]]},"114":{"position":[[579,26]]}}}],["t[rt].l=mid_pr_build(la,p1",{"_index":917,"t":{"112":{"position":[[481,26]]},"114":{"position":[[350,26]]}}}],["t[rt].r=create(p1+1,r1,l2+p2+1,r2",{"_index":985,"t":{"116":{"position":[[490,35]]}}}],["t[rt].r=mid_po_build(p1+1,ra,lb+p2,rb",{"_index":924,"t":{"112":{"position":[[885,37]]},"114":{"position":[[621,37]]}}}],["t[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb",{"_index":919,"t":{"112":{"position":[[542,41]]},"114":{"position":[[392,41]]}}}],["t\\bar{\\alpha}_tαˉt",{"_index":2757,"t":{"521":{"position":[[551,21]]},"704":{"position":[[551,21]]}}}],["t\\sigma_tσt",{"_index":2774,"t":{"523":{"position":[[346,13]]},"706":{"position":[[346,13]]}}}],["t\\vert",{"_index":1326,"t":{"222":{"position":[[325,6]]}}}],["t\\vert)\\tag{3}d8​(p,q)=max(∣x−s∣,∣y−t∣)(3",{"_index":1330,"t":{"222":{"position":[[431,42]]}}}],["tag{10",{"_index":2348,"t":{"444":{"position":[[1304,8]]}}}],["tag{1}",{"_index":1121,"t":{"141":{"position":[[144,12]]}}}],["tag{1}3×3×3×4=108(1",{"_index":2256,"t":{"429":{"position":[[168,21]]}}}],["tag{1}acc=len(y)∑i(predi​==yi​)​(1",{"_index":2503,"t":{"494":{"position":[[196,36]]}}}],["tag{1}attention(q,k,v)=softmax(dk​​qkt​)v(1",{"_index":2141,"t":{"393":{"position":[[3142,45]]}}}],["tag{1}l(y,z)=max(0,−y∗z)(1",{"_index":2468,"t":{"476":{"position":[[406,28]]}}}],["tag{1}min",{"_index":2381,"t":{"450":{"position":[[113,10]]}}}],["tag{1}pe(pos,2i)​=sin(100002i/dmodel​pos​)(1",{"_index":1454,"t":{"277":{"position":[[309,46]]},"577":{"position":[[309,46]]}}}],["tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1",{"_index":2431,"t":{"464":{"position":[[328,65]]}}}],["tag{1}x1[0,:,:]+x2[0,:,:](1",{"_index":3308,"t":{"731":{"position":[[894,29]]}}}],["tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1",{"_index":2481,"t":{"483":{"position":[[142,36]]}}}],["tag{1}σ(x)=1+e−x1​(1",{"_index":2268,"t":{"437":{"position":[[47,22]]}}}],["tag{2}",{"_index":1126,"t":{"143":{"position":[[59,12]]}}}],["tag{2}3×3××3=27(2",{"_index":2260,"t":{"431":{"position":[[100,19]]}}}],["tag{2}d4​(p,q)=∣x−s∣+∣y−t∣(2",{"_index":1327,"t":{"222":{"position":[[332,30]]}}}],["tag{2}dxd",{"_index":2274,"t":{"437":{"position":[[145,14]]}}}],["tag{2}l(w,b)+2λ​∥w∥12​(2",{"_index":2388,"t":{"452":{"position":[[110,26]]}}}],["tag{2}pe(pos,2i+1)​=cos(100002i/dmodel​pos​)(2",{"_index":1456,"t":{"277":{"position":[[457,48]]},"577":{"position":[[457,48]]}}}],["tag{2}x1[1,:,:]+x2[1,:,:](2",{"_index":3311,"t":{"731":{"position":[[972,29]]}}}],["tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2",{"_index":2484,"t":{"483":{"position":[[364,61]]}}}],["tag{3}1×1×3×4=12(3",{"_index":2265,"t":{"433":{"position":[[112,20]]}}}],["tag{3}a",{"_index":1134,"t":{"145":{"position":[[210,11]]}}}],["tag{3}f(x)={0x​x<0x≥0​(3",{"_index":2285,"t":{"439":{"position":[[77,26]]}}}],["tag{3}pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)​(3",{"_index":1464,"t":{"277":{"position":[[928,125]]},"577":{"position":[[928,125]]}}}],["tag{3}x1[2,:,:]+x2[2,:,:](3",{"_index":3314,"t":{"731":{"position":[[1050,29]]}}}],["tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3",{"_index":2487,"t":{"483":{"position":[[636,61]]}}}],["tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3",{"_index":2395,"t":{"452":{"position":[[347,46]]}}}],["tag{4}dxdf(x)​={01​x<0x≥0​(4",{"_index":2288,"t":{"439":{"position":[[213,30]]}}}],["tag{4}inputembedding(pos,i)=wordembedding(pos,i)+positionencoding(pos,i)(4",{"_index":1468,"t":{"277":{"position":[[1234,76]]},"577":{"position":[[1234,76]]}}}],["tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4",{"_index":2402,"t":{"452":{"position":[[501,43]]}}}],["tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−δ∑δ​b=−δ∑δ​va,b​∗xia​,j+b​(4",{"_index":2492,"t":{"485":{"position":[[194,66]]}}}],["tag{5}lossmse​=∑[y−f(x)]2(5",{"_index":2294,"t":{"442":{"position":[[112,29]]}}}],["tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5",{"_index":2494,"t":{"485":{"position":[[398,65]]}}}],["tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6",{"_index":1535,"t":{"291":{"position":[[732,57]]},"591":{"position":[[732,57]]}}}],["tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6",{"_index":2299,"t":{"442":{"position":[[220,33]]}}}],["tag{7",{"_index":2316,"t":{"444":{"position":[[403,7]]}}}],["tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7",{"_index":1537,"t":{"291":{"position":[[1026,52]]},"591":{"position":[[1026,52]]}}}],["take",{"_index":1294,"t":{"217":{"position":[[53,4]]},"389":{"position":[[24,5]]}}}],["target",{"_index":1035,"t":{"130":{"position":[[635,6],[828,6],[938,6],[984,6]]},"551":{"position":[[227,6]]}}}],["target_cc",{"_index":1041,"t":{"130":{"position":[[692,9]]}}}],["target_cc_prefix)gcc",{"_index":1042,"t":{"130":{"position":[[705,22]]}}}],["target_cc_prefix)ld",{"_index":1063,"t":{"130":{"position":[[1063,21]]}}}],["target_class",{"_index":2026,"t":{"379":{"position":[[634,14]]},"662":{"position":[[634,14]]}}}],["target_direct",{"_index":1874,"t":{"365":{"position":[[1160,16]]},"648":{"position":[[1160,16]]}}}],["target_direction:mapp",{"_index":1875,"t":{"365":{"position":[[1186,23]]},"648":{"position":[[1186,23]]}}}],["target_embed",{"_index":1816,"t":{"359":{"position":[[1005,16]]},"642":{"position":[[1005,16]]}}}],["target_ld",{"_index":1062,"t":{"130":{"position":[[1050,9]]}}}],["target_prompt",{"_index":1786,"t":{"357":{"position":[[115,14]]},"640":{"position":[[115,14]]}}}],["target_prompts]).to(devic",{"_index":1804,"t":{"359":{"position":[[369,27]]},"642":{"position":[[369,27]]}}}],["target_tokenized_prompt",{"_index":1803,"t":{"359":{"position":[[305,24],[784,24]]},"642":{"position":[[305,24],[784,24]]}}}],["task",{"_index":2024,"t":{"379":{"position":[[585,4]]},"417":{"position":[[337,11]]},"421":{"position":[[909,6]]},"616":{"position":[[1131,5]]},"662":{"position":[[585,4]]},"746":{"position":[[1131,5]]}}}],["teacher",{"_index":1522,"t":{"289":{"position":[[146,11]]},"291":{"position":[[429,19]]},"589":{"position":[[146,11]]},"591":{"position":[[429,19]]}}}],["techniqu",{"_index":2436,"t":{"467":{"position":[[29,9]]}}}],["tell",{"_index":1301,"t":{"217":{"position":[[129,4]]}}}],["temp",{"_index":3429,"t":{"793":{"position":[[158,4],[210,4],[253,13],[270,5],[377,4],[516,5]]},"795":{"position":[[244,4],[296,4],[339,13],[356,5],[463,4],[602,5]]}}}],["templat",{"_index":2011,"t":{"377":{"position":[[103,25],[632,9],[647,9],[739,18]]},"660":{"position":[[103,25],[632,9],[647,9],[739,18]]}}}],["tensor",{"_index":3301,"t":{"731":{"position":[[637,10]]}}}],["tensor(0.2684",{"_index":2364,"t":{"444":{"position":[[1695,14],[1881,14]]}}}],["tensor(1",{"_index":2577,"t":{"504":{"position":[[1134,11]]}}}],["tensor(2",{"_index":2579,"t":{"504":{"position":[[1157,11]]}}}],["tensor(3",{"_index":2581,"t":{"504":{"position":[[1180,11]]}}}],["tensor(4",{"_index":2578,"t":{"504":{"position":[[1146,10]]}}}],["tensor(4))8(tensor(2",{"_index":2518,"t":{"494":{"position":[[475,22]]}}}],["tensor(5",{"_index":2580,"t":{"504":{"position":[[1169,10]]}}}],["tensor(5))9(tensor(3",{"_index":2519,"t":{"494":{"position":[[498,22]]}}}],["tensor(6",{"_index":2582,"t":{"504":{"position":[[1192,10]]}}}],["tensor(6))10'''11a",{"_index":2520,"t":{"494":{"position":[[521,18]]}}}],["tensor([1",{"_index":2574,"t":{"504":{"position":[[947,10],[965,10],[1328,11]]}}}],["tensor([3",{"_index":2583,"t":{"504":{"position":[[1367,11]]}}}],["tensor([4",{"_index":2527,"t":{"494":{"position":[[686,10]]},"504":{"position":[[1348,10]]}}}],["tensor([6",{"_index":2529,"t":{"494":{"position":[[726,10]]},"504":{"position":[[1387,10]]}}}],["tensor([[9",{"_index":2555,"t":{"504":{"position":[[558,11]]}}}],["tensor([[[0",{"_index":3297,"t":{"731":{"position":[[426,14],[541,13]]}}}],["tensorflow框架,可以使用tensorboard",{"_index":3105,"t":{"604":{"position":[[3,36]]}}}],["tensor的*乘法是对tensor",{"_index":2552,"t":{"504":{"position":[[454,28]]}}}],["term",{"_index":2052,"t":{"389":{"position":[[110,6]]}}}],["terminal_proxy.sh",{"_index":3402,"t":{"774":{"position":[[0,23]]}}}],["test",{"_index":272,"t":{"67":{"position":[[29,4],[101,5],[232,4]]},"467":{"position":[[224,4],[277,7]]},"469":{"position":[[82,4],[240,4]]},"471":{"position":[[95,4],[115,5]]},"509":{"position":[[1771,5],[2519,4]]}}}],["test.first",{"_index":275,"t":{"67":{"position":[[107,10]]}}}],["test.four",{"_index":281,"t":{"67":{"position":[[176,9]]}}}],["test.second",{"_index":276,"t":{"67":{"position":[[125,11]]}}}],["test.third",{"_index":278,"t":{"67":{"position":[[149,10]]}}}],["test_acc",{"_index":2682,"t":{"509":{"position":[[2367,8],[2453,10]]}}}],["test_acc:.3f",{"_index":2686,"t":{"509":{"position":[[2528,16]]}}}],["test_it",{"_index":2640,"t":{"509":{"position":[[1391,10],[2405,10],[2668,9],[2787,10]]}}}],["testdata.json",{"_index":3042,"t":{"566":{"position":[[557,13]]}}}],["text",{"_index":1565,"t":{"304":{"position":[[78,4],[597,4],[748,4],[837,4]]},"328":{"position":[[18,4]]},"340":{"position":[[413,6],[590,5]]},"342":{"position":[[699,5]]},"379":{"position":[[669,4]]},"439":{"position":[[130,7]]},"540":{"position":[[903,4],[1099,4]]},"662":{"position":[[669,4]]},"692":{"position":[[16,4]]},"720":{"position":[[903,4],[1099,4]]},"757":{"position":[[132,4]]},"770":{"position":[[80,4]]}}}],["text_direct",{"_index":2016,"t":{"377":{"position":[[616,15]]},"660":{"position":[[616,15]]}}}],["text_featur",{"_index":1876,"t":{"365":{"position":[[1230,13]]},"377":{"position":[[243,13]]},"648":{"position":[[1230,13]]},"660":{"position":[[243,13]]}}}],["textual",{"_index":2211,"t":{"421":{"position":[[455,7],[522,7]]}}}],["text{subject",{"_index":2376,"t":{"450":{"position":[[58,13]]}}}],["theta",{"_index":2380,"t":{"450":{"position":[[106,6],[192,23]]},"521":{"position":[[655,8]]},"704":{"position":[[655,8]]}}}],["third",{"_index":269,"t":{"65":{"position":[[52,6]]}}}],["third:\"method",{"_index":284,"t":{"67":{"position":[[258,13]]}}}],["those",{"_index":3149,"t":{"616":{"position":[[970,5]]},"746":{"position":[[970,5]]}}}],["thpf",{"_index":1417,"t":{"248":{"position":[[522,14]]}}}],["thread",{"_index":1194,"t":{"192":{"position":[[556,8],[565,6],[2169,6],[2238,8],[2247,6],[2324,6]]}}}],["three",{"_index":285,"t":{"67":{"position":[[272,7]]}}}],["time",{"_index":2160,"t":{"401":{"position":[[59,6]]},"403":{"position":[[193,6],[252,6],[359,6]]},"407":{"position":[[101,6],[141,6],[174,6]]},"427":{"position":[[93,6]]},"429":{"position":[[135,6],[144,6],[153,6]]},"431":{"position":[[70,6],[79,6],[86,6]]},"433":{"position":[[7,6],[80,6],[89,6],[98,6]]},"462":{"position":[[67,6],[98,6]]},"464":{"position":[[13,6],[22,6],[55,6],[66,6],[77,6],[115,6],[148,6],[158,6],[424,6],[435,6],[444,6],[453,6],[463,6]]},"467":{"position":[[243,6],[290,5]]},"469":{"position":[[187,6]]},"616":{"position":[[422,5]]},"623":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"746":{"position":[[422,5]]},"753":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"819":{"position":[[143,6]]},"824":{"position":[[166,6]]},"826":{"position":[[68,6]]},"836":{"position":[[134,6]]},"838":{"position":[[70,6],[89,6],[115,6]]}}}],["time.h",{"_index":191,"t":{"56":{"position":[[227,6]]}}}],["timer",{"_index":2658,"t":{"509":{"position":[[1784,6]]}}}],["timer.start",{"_index":2668,"t":{"509":{"position":[[1950,13]]}}}],["timer.stop",{"_index":2677,"t":{"509":{"position":[[2142,12]]}}}],["timer.sum():.1f",{"_index":2688,"t":{"509":{"position":[[2579,16]]}}}],["tip",{"_index":2984,"t":{"554":{"position":[[809,4]]}}}],["titile(if",{"_index":3384,"t":{"770":{"position":[[66,9]]}}}],["titl",{"_index":3379,"t":{"768":{"position":[[321,7]]},"770":{"position":[[100,5]]}}}],["title/window",{"_index":3383,"t":{"770":{"position":[[53,12]]}}}],["title文字不能垂直居中,可以更换为window",{"_index":3378,"t":{"768":{"position":[[295,25]]}}}],["tlpf",{"_index":1397,"t":{"246":{"position":[[945,14]]}}}],["tmp",{"_index":822,"t":{"109":{"position":[[1435,5],[1545,5],[2882,5]]}}}],["tmp[0",{"_index":825,"t":{"109":{"position":[[1555,7],[2915,8],[3051,7]]}}}],["tmp[2",{"_index":827,"t":{"109":{"position":[[1567,7]]}}}],["tmp[20",{"_index":880,"t":{"109":{"position":[[2832,8]]}}}],["tmp[3",{"_index":883,"t":{"109":{"position":[[2944,8],[3059,8]]}}}],["tmp[max_vertex_num",{"_index":815,"t":{"109":{"position":[[1156,20]]}}}],["toc",{"_index":162,"t":{"51":{"position":[[17,5]]}}}],["todo(\"start",{"_index":1255,"t":{"192":{"position":[[2148,11]]}}}],["token",{"_index":1788,"t":{"359":{"position":[[20,9],[577,8]]},"361":{"position":[[44,8],[179,8]]},"515":{"position":[[120,7],[323,5],[563,5],[636,11]]},"517":{"position":[[174,5],[261,5],[302,5]]},"519":{"position":[[67,5],[116,5]]},"521":{"position":[[56,24]]},"526":{"position":[[76,5],[137,5]]},"533":{"position":[[34,5]]},"540":{"position":[[89,5],[411,11],[565,9]]},"542":{"position":[[575,9]]},"545":{"position":[[72,12],[250,9]]},"547":{"position":[[2066,7]]},"616":{"position":[[249,5]]},"618":{"position":[[37,5]]},"620":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"623":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"625":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"627":{"position":[[230,5],[300,6]]},"642":{"position":[[20,9],[577,8]]},"644":{"position":[[44,8],[179,8]]},"690":{"position":[[1245,8],[1290,6],[1308,6],[1342,5],[1371,15],[1397,12],[1420,12],[1445,5],[1467,5],[1577,5],[1614,6],[1639,5],[1675,37],[1720,5]]},"698":{"position":[[120,7],[323,5],[563,5],[636,11]]},"700":{"position":[[174,5],[261,5],[302,5]]},"702":{"position":[[67,5],[116,5]]},"704":{"position":[[56,24]]},"709":{"position":[[76,5],[137,5]]},"716":{"position":[[34,5]]},"720":{"position":[[89,5],[411,11],[565,9]]},"722":{"position":[[575,9]]},"725":{"position":[[72,12],[250,9]]},"727":{"position":[[2067,7]]},"746":{"position":[[249,5]]},"748":{"position":[[37,5]]},"750":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"753":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"755":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"757":{"position":[[12,9]]},"759":{"position":[[230,5],[300,6]]}}}],["tokenizer、quant",{"_index":2855,"t":{"542":{"position":[[388,19]]},"722":{"position":[[388,19]]}}}],["tokenize后为tensor",{"_index":1795,"t":{"359":{"position":[[161,19],[433,19]]},"642":{"position":[[161,19],[433,19]]}}}],["tokens。vqgan",{"_index":3279,"t":{"690":{"position":[[1269,12]]}}}],["token或random",{"_index":2189,"t":{"419":{"position":[[92,12]]}}}],["token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做dot",{"_index":2235,"t":{"421":{"position":[[1264,57]]}}}],["token进行遮挡后,喂入encoder中。对于每个被mask掉的词汇,bert",{"_index":2190,"t":{"419":{"position":[[105,68]]}}}],["token)出发进行思考,产生了自回归模型是否有必要与向量量化(vector",{"_index":2735,"t":{"517":{"position":[[186,38]]},"700":{"position":[[186,38]]}}}],["top",{"_index":83,"t":{"29":{"position":[[132,6],[161,6]]},"340":{"position":[[0,3],[73,3],[364,3],[433,3],[492,3]]},"342":{"position":[[0,3]]},"344":{"position":[[62,3],[70,3]]}}}],["topologicalsort",{"_index":741,"t":{"107":{"position":[[1758,30]]}}}],["torch",{"_index":2143,"t":{"393":{"position":[[3234,5]]},"437":{"position":[[299,5]]},"439":{"position":[[288,5]]},"509":{"position":[[7,5],[37,5],[112,5]]},"731":{"position":[[285,5]]},"742":{"position":[[7,5]]}}}],["torch.cat([clip.tokenize(p",{"_index":1790,"t":{"359":{"position":[[57,27],[332,27]]},"642":{"position":[[57,27],[332,27]]}}}],["torch.concat((a",{"_index":2545,"t":{"504":{"position":[[295,16]]}}}],["torch.linspac",{"_index":2279,"t":{"437":{"position":[[309,15]]},"439":{"position":[[298,15]]}}}],["torch.log",{"_index":2354,"t":{"444":{"position":[[1444,9]]}}}],["torch.log(torch.softmax(predict",{"_index":2360,"t":{"444":{"position":[[1590,32]]}}}],["torch.nn",{"_index":2277,"t":{"437":{"position":[[260,8]]},"439":{"position":[[249,8]]},"444":{"position":[[1481,8]]},"509":{"position":[[64,8]]}}}],["torch.nn.crossentropyloss",{"_index":2652,"t":{"509":{"position":[[1630,27]]}}}],["torch.nn.crossentropyloss相当于torch.softmax",{"_index":2353,"t":{"444":{"position":[[1400,41]]}}}],["torch.nn.funct",{"_index":2144,"t":{"393":{"position":[[3247,19]]}}}],["torch.nn.modul",{"_index":2624,"t":{"509":{"position":[[971,17]]}}}],["torch.nn.nllloss",{"_index":2355,"t":{"444":{"position":[[1456,17]]}}}],["torch.nn.sequenti",{"_index":2603,"t":{"509":{"position":[[505,20]]}}}],["torch.optim.sgd(net.paramet",{"_index":2650,"t":{"509":{"position":[[1582,33]]}}}],["torch.rand(4",{"_index":2537,"t":{"504":{"position":[[104,13],[143,13]]}}}],["torch.reshape(x",{"_index":3293,"t":{"731":{"position":[[347,16]]}}}],["torch.size([2",{"_index":2544,"t":{"504":{"position":[[269,14]]}}}],["torch.size([4",{"_index":2549,"t":{"504":{"position":[[390,14]]}}}],["torch.stack((a",{"_index":2540,"t":{"504":{"position":[[182,15]]}}}],["torch.sum(y_hat.argmax(dim=1",{"_index":2637,"t":{"509":{"position":[[1328,29]]}}}],["torch.tensor([1",{"_index":2362,"t":{"444":{"position":[[1640,16],[1823,16]]},"494":{"position":[[371,16]]},"504":{"position":[[1043,16]]}}}],["torch.tensor([4",{"_index":2512,"t":{"494":{"position":[[399,16]]},"504":{"position":[[1071,16]]}}}],["torch.tensor([[0",{"_index":2087,"t":{"393":{"position":[[955,17],[1135,17],[3539,17],[3719,17]]}}}],["torch.tensor([[0.1",{"_index":2562,"t":{"504":{"position":[[777,19]]}}}],["torch.tensor([[1",{"_index":2089,"t":{"393":{"position":[[1045,17],[3629,17]]},"494":{"position":[[542,17]]},"504":{"position":[[1211,17]]}}}],["torch.tensor([[2",{"_index":2359,"t":{"444":{"position":[[1543,17],[1778,17]]}}}],["torch.tensor([[3",{"_index":2553,"t":{"504":{"position":[[487,17]]}}}],["torch.tensor([[4",{"_index":2522,"t":{"494":{"position":[[584,17]]},"504":{"position":[[1252,17]]}}}],["torch.tensor(input",{"_index":2066,"t":{"393":{"position":[[388,20],[3435,20]]}}}],["torch.tensor(np.arange(9",{"_index":3292,"t":{"731":{"position":[[295,26]]}}}],["torchaudio",{"_index":1767,"t":{"351":{"position":[[74,10]]},"634":{"position":[[74,10]]}}}],["torchvis",{"_index":1766,"t":{"351":{"position":[[62,11]]},"634":{"position":[[62,11]]}}}],["tqdm",{"_index":1772,"t":{"351":{"position":[[147,4]]},"634":{"position":[[147,4]]}}}],["trace",{"_index":3345,"t":{"739":{"position":[[144,5]]}}}],["trade",{"_index":2918,"t":{"547":{"position":[[2451,29]]},"727":{"position":[[2452,29]]}}}],["train",{"_index":1611,"t":{"306":{"position":[[987,12]]},"365":{"position":[[334,5]]},"393":{"position":[[828,9]]},"467":{"position":[[214,5]]},"469":{"position":[[144,8]]},"471":{"position":[[0,5],[14,5]]},"509":{"position":[[1758,6],[2492,5]]},"540":{"position":[[484,8],[980,8]]},"554":{"position":[[799,9]]},"566":{"position":[[340,9]]},"620":{"position":[[1518,7]]},"648":{"position":[[334,5]]},"720":{"position":[[484,8],[980,8]]},"750":{"position":[[1518,7]]}}}],["train(lenet",{"_index":2695,"t":{"509":{"position":[[2762,12]]}}}],["train(net",{"_index":2638,"t":{"509":{"position":[[1368,10]]}}}],["train_acc",{"_index":2680,"t":{"509":{"position":[[2187,9],[2349,10]]}}}],["train_acc:.3f",{"_index":2685,"t":{"509":{"position":[[2502,16]]}}}],["train_it",{"_index":2639,"t":{"509":{"position":[[1379,11],[2656,11],[2775,11]]}}}],["train_l",{"_index":2678,"t":{"509":{"position":[[2155,7],[2339,9]]}}}],["train_l:.3f",{"_index":2684,"t":{"509":{"position":[[2477,14]]}}}],["train_lay",{"_index":1857,"t":{"365":{"position":[[280,12],[379,12],[394,14]]},"648":{"position":[[280,12],[379,12],[394,14]]}}}],["trained的cnn,该cnn通常使用预训练的incept",{"_index":1601,"t":{"306":{"position":[[89,33]]}}}],["training&fin",{"_index":2231,"t":{"421":{"position":[[1030,13]]}}}],["tran",{"_index":2975,"t":{"554":{"position":[[691,5],[707,5]]}}}],["transform",{"_index":415,"t":{"82":{"position":[[1413,9]]},"270":{"position":[[20,23]]},"275":{"position":[[0,11]]},"287":{"position":[[2,11],[104,11],[486,18],[609,11]]},"296":{"position":[[0,11]]},"375":{"position":[[114,14],[240,13],[463,20],[587,16]]},"399":{"position":[[93,11]]},"407":{"position":[[340,11]]},"423":{"position":[[412,11]]},"562":{"position":[[56,12]]},"564":{"position":[[57,11],[101,12]]},"570":{"position":[[20,23]]},"575":{"position":[[0,11]]},"587":{"position":[[2,11],[104,11],[486,18],[609,11]]},"616":{"position":[[330,12],[472,12],[782,11]]},"623":{"position":[[217,28]]},"625":{"position":[[270,12],[320,11]]},"658":{"position":[[114,14],[240,13],[463,20],[587,16]]},"679":{"position":[[154,20],[175,11],[247,11],[306,11]]},"681":{"position":[[29,11],[155,11]]},"683":{"position":[[120,11]]},"690":{"position":[[866,11],[1205,12]]},"692":{"position":[[47,16],[95,12]]},"746":{"position":[[330,12],[472,12],[782,11]]},"753":{"position":[[217,28]]},"755":{"position":[[270,12],[320,11]]}}}],["transformer_lay",{"_index":1989,"t":{"375":{"position":[[484,17]]},"658":{"position":[[484,17]]}}}],["transformerencoder(transformer_lay",{"_index":1995,"t":{"375":{"position":[[631,37]]},"658":{"position":[[631,37]]}}}],["transformerencoderlayer(d_model=512",{"_index":1990,"t":{"375":{"position":[[504,36]]},"658":{"position":[[504,36]]}}}],["transformermapperv2(nn.modul",{"_index":1976,"t":{"375":{"position":[[78,31]]},"658":{"position":[[78,31]]}}}],["transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。bert",{"_index":2185,"t":{"417":{"position":[[98,92]]}}}],["transformer中有lay",{"_index":1987,"t":{"375":{"position":[[413,18]]},"658":{"position":[[413,18]]}}}],["transformer实战练习,代码见github",{"_index":3011,"t":{"562":{"position":[[5,28]]}}}],["transformer是sequ",{"_index":1444,"t":{"270":{"position":[[70,20]]},"570":{"position":[[70,20]]}}}],["transformer由encoder和decoder组成,编码器和解码器都包含6个block",{"_index":1447,"t":{"272":{"position":[[0,58]]},"572":{"position":[[0,58]]}}}],["transformer的推理阶段,自回归类型的decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(error",{"_index":1520,"t":{"289":{"position":[[0,131]]},"589":{"position":[[0,131]]}}}],["transformer训练时采取的teach",{"_index":1500,"t":{"283":{"position":[[826,33]]},"583":{"position":[[826,33]]}}}],["transformer(residu",{"_index":3259,"t":{"679":{"position":[[120,20]]}}}],["treat",{"_index":1027,"t":{"130":{"position":[[336,7]]}}}],["treebank",{"_index":2226,"t":{"421":{"position":[[747,33]]}}}],["true",{"_index":312,"t":{"67":{"position":[[834,5]]},"94":{"position":[[231,11]]},"98":{"position":[[198,16]]},"105":{"position":[[698,5],[1559,5]]},"107":{"position":[[1047,5],[1108,6]]},"109":{"position":[[71,4]]}}}],["true;//加入拓扑排序的顶点为n",{"_index":757,"t":{"107":{"position":[[2214,30]]}}}],["truncat",{"_index":1810,"t":{"359":{"position":[[725,19]]},"642":{"position":[[725,19]]}}}],["trung",{"_index":2974,"t":{"554":{"position":[[685,5],[730,5]]}}}],["truth",{"_index":1631,"t":{"308":{"position":[[755,6]]},"419":{"position":[[248,21]]}}}],["truth一次性喂到decod",{"_index":1524,"t":{"289":{"position":[[176,38]]},"589":{"position":[[176,38]]}}}],["truth做bc",{"_index":3477,"t":{"817":{"position":[[64,9]]}}}],["truth做cross",{"_index":2243,"t":{"425":{"position":[[119,11]]}}}],["truth对nois",{"_index":1661,"t":{"318":{"position":[[556,11]]}}}],["truth就是sampl",{"_index":1624,"t":{"308":{"position":[[437,18]]}}}],["truth就是第3步中sample出的噪声ϵ\\epsilon",{"_index":1690,"t":{"324":{"position":[[783,32]]}}}],["truth的bc",{"_index":3480,"t":{"817":{"position":[[119,9]]}}}],["truth的策略,但是还额外需要一个encoder来产生lat",{"_index":1626,"t":{"308":{"position":[[553,34]]}}}],["tsinghua",{"_index":1777,"t":{"353":{"position":[[30,8]]},"636":{"position":[[30,8]]}}}],["ttt",{"_index":1710,"t":{"338":{"position":[[367,17]]},"521":{"position":[[594,3],[772,3]]},"523":{"position":[[365,3]]},"704":{"position":[[594,3],[772,3]]},"706":{"position":[[365,3]]}}}],["ttt从t,…,1t,\\ldots,1t,…,1范围循环ttt",{"_index":1693,"t":{"326":{"position":[[54,33]]}}}],["ttt是从1,…,t1,\\ldots,t1,…,t范围中sample出的一个integ",{"_index":1680,"t":{"324":{"position":[[50,46]]}}}],["ttt计数的循环,若t>1t>1t>1,则从normal",{"_index":1694,"t":{"326":{"position":[[88,34]]}}}],["tune",{"_index":1519,"t":{"287":{"position":[[580,28]]},"379":{"position":[[1119,9]]},"417":{"position":[[267,13]]},"554":{"position":[[139,10],[158,54],[459,6]]},"587":{"position":[[580,28]]},"662":{"position":[[1119,9]]}}}],["tuning范式与scratch范式的训练效果做了对比,其中scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(converg",{"_index":2232,"t":{"421":{"position":[[1044,109]]}}}],["tutori",{"_index":3263,"t":{"685":{"position":[[16,9],[95,9]]}}}],["two",{"_index":280,"t":{"67":{"position":[[170,5]]},"540":{"position":[[970,3]]},"616":{"position":[[1246,3]]},"720":{"position":[[970,3]]},"746":{"position":[[1246,3]]}}}],["tx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon",{"_index":1683,"t":{"324":{"position":[[196,71]]}}}],["type(m",{"_index":2643,"t":{"509":{"position":[[1451,7],[1475,7]]}}}],["typedef",{"_index":287,"t":{"67":{"position":[[323,7],[540,7]]},"69":{"position":[[0,7]]},"105":{"position":[[126,7],[274,7]]},"107":{"position":[[198,7],[415,7]]},"109":{"position":[[165,7],[185,7],[357,7],[390,7],[489,7],[585,7]]},"112":{"position":[[100,7]]},"114":{"position":[[100,7]]},"116":{"position":[[186,7]]}}}],["typic",{"_index":2705,"t":{"515":{"position":[[78,9]]},"698":{"position":[[78,9]]}}}],["t}\\left[\\left\\|\\varepsilon",{"_index":2746,"t":{"521":{"position":[[240,26]]},"704":{"position":[[240,26]]}}}],["u",{"_index":172,"t":{"53":{"position":[[198,1],[218,1],[239,1]]},"109":{"position":[[1992,2],[2264,3],[2310,6],[2512,9]]},"304":{"position":[[638,1],[696,1],[810,1]]},"692":{"position":[[38,1]]},"770":{"position":[[347,1]]},"815":{"position":[[0,4],[124,1]]}}}],["u,int",{"_index":844,"t":{"109":{"position":[[2247,5]]}}}],["u==v",{"_index":850,"t":{"109":{"position":[[2361,6]]}}}],["u=q.front();//取队首顶点u",{"_index":747,"t":{"107":{"position":[[1926,20]]}}}],["u\\ell_uℓu",{"_index":2913,"t":{"547":{"position":[[2221,11]]},"727":{"position":[[2222,11]]}}}],["udg",{"_index":786,"t":{"109":{"position":[[374,4]]}}}],["ui",{"_index":1971,"t":{"372":{"position":[[43,2],[241,2],[266,12],[279,2]]},"655":{"position":[[43,2],[241,2],[266,12],[279,2]]}}}],["ull",{"_index":231,"t":{"62":{"position":[[381,3],[588,3]]}}}],["uncertainti",{"_index":2308,"t":{"444":{"position":[[139,12]]}}}],["unchang",{"_index":2507,"t":{"494":{"position":[[322,9]]}}}],["uncom",{"_index":1103,"t":{"130":{"position":[[1907,9]]},"194":{"position":[[851,9]]}}}],["uncondit",{"_index":1275,"t":{"211":{"position":[[145,13],[171,13]]}}}],["undefin",{"_index":1065,"t":{"130":{"position":[[1101,9]]}}}],["understand",{"_index":1595,"t":{"304":{"position":[[887,13]]},"421":{"position":[[125,13]]}}}],["unfreez",{"_index":1853,"t":{"365":{"position":[[161,8],[271,8],[507,8]]},"648":{"position":[[161,8],[271,8],[507,8]]}}}],["unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.zssgan.zssgan.determine_opt_lay",{"_index":1851,"t":{"365":{"position":[[70,77]]},"648":{"position":[[70,77]]}}}],["unifi",{"_index":1676,"t":{"322":{"position":[[833,7]]},"616":{"position":[[1431,7]]},"690":{"position":[[2021,5]]},"746":{"position":[[1431,7]]}}}],["uniqu",{"_index":416,"t":{"82":{"position":[[1448,6],[1520,9]]}}}],["unique_copi",{"_index":417,"t":{"82":{"position":[[1491,11]]}}}],["unit",{"_index":2873,"t":{"547":{"position":[[544,6]]},"727":{"position":[[544,6]]}}}],["unordered_map",{"_index":91,"t":{"29":{"position":[[253,14]]},"47":{"position":[[136,14]]}}}],["unordered_multimap",{"_index":93,"t":{"29":{"position":[[288,22]]}}}],["unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound",{"_index":152,"t":{"47":{"position":[[171,69]]}}}],["unordered_multiset",{"_index":92,"t":{"29":{"position":[[268,19]]},"47":{"position":[[151,19]]}}}],["unordered_set",{"_index":90,"t":{"29":{"position":[[238,14]]},"47":{"position":[[121,14]]}}}],["unset",{"_index":3409,"t":{"774":{"position":[[222,5],[238,5],[255,5]]}}}],["unsign",{"_index":232,"t":{"62":{"position":[[385,8]]},"102":{"position":[[1001,8]]}}}],["until",{"_index":2474,"t":{"476":{"position":[[646,5]]}}}],["unzipped_list",{"_index":3331,"t":{"735":{"position":[[389,14],[448,15]]}}}],["up",{"_index":3145,"t":{"616":{"position":[[907,2]]},"746":{"position":[[907,2]]}}}],["updat",{"_index":2458,"t":{"471":{"position":[[47,6]]}}}],["update='append",{"_index":3116,"t":{"611":{"position":[[261,16],[336,16]]},"613":{"position":[[227,16]]}}}],["upper_bound",{"_index":434,"t":{"82":{"position":[[2014,11]]}}}],["url:rec",{"_index":3267,"t":{"688":{"position":[[8,10]]}}}],["url:video",{"_index":3288,"t":{"694":{"position":[[8,9]]}}}],["us",{"_index":11,"t":{"9":{"position":[[25,5]]},"15":{"position":[[25,5]]},"21":{"position":[[25,5]]},"58":{"position":[[0,5]]},"60":{"position":[[250,5]]},"84":{"position":[[1481,5]]},"105":{"position":[[53,5]]},"107":{"position":[[119,5]]},"112":{"position":[[79,5]]},"114":{"position":[[79,5]]},"116":{"position":[[165,5]]},"130":{"position":[[760,4],[1206,4],[2025,6]]},"192":{"position":[[931,4]]},"194":{"position":[[969,6]]},"393":{"position":[[698,5],[2651,3]]},"467":{"position":[[39,4],[250,5]]},"469":{"position":[[70,4],[132,4],[215,4]]},"471":{"position":[[126,4]]},"515":{"position":[[354,5],[472,5],[973,3]]},"564":{"position":[[53,3]]},"620":{"position":[[1628,4],[1730,4]]},"698":{"position":[[354,5],[472,5],[973,3]]},"750":{"position":[[1628,4],[1730,4]]},"795":{"position":[[65,5]]}}}],["usag",{"_index":2819,"t":{"540":{"position":[[653,5]]},"720":{"position":[[653,5]]}}}],["user",{"_index":367,"t":{"80":{"position":[[839,5]]}}}],["usual",{"_index":2072,"t":{"393":{"position":[[654,7]]}}}],["util",{"_index":555,"t":{"90":{"position":[[0,11]]}}}],["utils/text_templates.pi",{"_index":2010,"t":{"377":{"position":[[76,23]]},"660":{"position":[[76,23]]}}}],["utkarsh",{"_index":2958,"t":{"554":{"position":[[497,12]]}}}],["uttr",{"_index":3037,"t":{"566":{"position":[[410,4],[575,4]]}}}],["ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​f(u,v)ej2π(ux+vy)dudv(8",{"_index":1351,"t":{"228":{"position":[[810,60]]}}}],["ux+vy)}dxdy\\tag{7}f(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7",{"_index":1348,"t":{"228":{"position":[[630,61]]}}}],["ux}du\\tag{6}f(x)=∫−∞∞​f(u)ej2πuxdu(6",{"_index":1344,"t":{"228":{"position":[[473,37]]}}}],["ux}dx\\tag{5}f(u)=∫−∞+∞​f(x)e−j2πuxdx(5",{"_index":1341,"t":{"228":{"position":[[357,39]]}}}],["ux}{n}}\\tag{10}f(x)=n1​u=0∑n−1​f(u)ejn2πux​(10",{"_index":1358,"t":{"228":{"position":[[1093,47]]}}}],["ux}{n}}\\tag{9}f(u)=x=0∑n−1​f(x)e−jn2πux​(9",{"_index":1355,"t":{"228":{"position":[[958,43]]}}}],["v",{"_index":838,"t":{"109":{"position":[[1995,8],[2612,2]]},"112":{"position":[[1118,2]]},"114":{"position":[[820,2]]},"393":{"position":[[74,1]]},"399":{"position":[[271,1]]},"403":{"position":[[562,1],[592,1]]}}}],["v,int",{"_index":845,"t":{"109":{"position":[[2253,5]]}}}],["v.push_back(w",{"_index":930,"t":{"112":{"position":[[1179,15]]},"114":{"position":[[881,15]]}}}],["v1",{"_index":3486,"t":{"824":{"position":[[21,12]]}}}],["v3",{"_index":1881,"t":{"367":{"position":[[126,2],[1319,2],[1348,2]]},"650":{"position":[[126,2],[1319,2],[1348,2]]}}}],["v3模型。在计算fid时,生成图像和真实图像分别输入到预训练的cnn中,提取出各自的特征表示向量(representation)。这两个represent",{"_index":1602,"t":{"306":{"position":[[123,105]]}}}],["v=g.vertexs[u].connectors[i];//u的后继节点v",{"_index":749,"t":{"107":{"position":[[2011,38]]}}}],["v]^{h_k",{"_index":3210,"t":{"623":{"position":[[823,8]]},"753":{"position":[[823,8]]}}}],["v_n",{"_index":1120,"t":{"141":{"position":[[137,6]]},"145":{"position":[[171,4],[203,6]]}}}],["v_t",{"_index":1118,"t":{"141":{"position":[[127,4]]},"143":{"position":[[53,5]]},"145":{"position":[[193,4]]}}}],["vae",{"_index":3181,"t":{"620":{"position":[[1388,3],[1686,4],[1721,3]]},"673":{"position":[[87,3],[105,3],[249,3],[506,3]]},"675":{"position":[[13,3],[87,3],[247,3]]},"677":{"position":[[13,3],[168,3],[270,3],[312,3]]},"679":{"position":[[291,3]]},"690":{"position":[[263,3],[310,3],[322,3],[331,3],[335,25],[380,3],[401,8],[410,64],[510,3],[521,3],[549,3],[610,3],[727,3],[887,3],[2094,15]]},"750":{"position":[[1388,3],[1686,4],[1721,3]]}}}],["vaes(vari",{"_index":3253,"t":{"673":{"position":[[512,16]]}}}],["vae、gan以及diffus",{"_index":1554,"t":{"300":{"position":[[0,18]]}}}],["vae、vqvae(2017",{"_index":3272,"t":{"690":{"position":[[233,21]]}}}],["vae在训练过程中,期待ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g",{"_index":1648,"t":{"312":{"position":[[129,47]]}}}],["vae的数学原理,从vae到diffus",{"_index":1674,"t":{"322":{"position":[[735,38]]}}}],["vae(vector",{"_index":3250,"t":{"673":{"position":[[177,10],[318,10]]}}}],["vae)与diffus",{"_index":1670,"t":{"322":{"position":[[591,14]]}}}],["vae)的训练策略是使用encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为decoder的输入,加上文字prompt",{"_index":1647,"t":{"312":{"position":[[39,86]]}}}],["vae,vq",{"_index":3254,"t":{"675":{"position":[[240,6]]}}}],["val",{"_index":470,"t":{"84":{"position":[[677,4],[722,6],[1038,4]]},"86":{"position":[[497,4],[698,4],[743,6],[982,4]]}}}],["valid",{"_index":2435,"t":{"467":{"position":[[13,10],[139,10]]},"469":{"position":[[34,11]]},"471":{"position":[[54,10]]},"566":{"position":[[474,5]]}}}],["valu",{"_index":571,"t":{"92":{"position":[[361,6],[510,8]]},"393":{"position":[[940,6],[1263,6],[1319,6],[1434,7],[1986,18],[2146,6],[2182,6],[2248,9],[3524,6],[3827,6],[3883,6],[3998,7],[4305,6],[4341,6],[4407,9]]},"515":{"position":[[161,6],[446,6],[629,6],[1026,6]]},"698":{"position":[[161,6],[446,6],[629,6],[1026,6]]}}}],["value^{n",{"_index":2154,"t":{"395":{"position":[[262,8]]}}}],["vanilla",{"_index":2798,"t":{"540":{"position":[[209,7]]},"720":{"position":[[209,7]]}}}],["var",{"_index":2852,"t":{"542":{"position":[[192,3]]},"616":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"620":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"623":{"position":[[1092,3]]},"625":{"position":[[266,3],[292,3],[316,3]]},"627":{"position":[[413,3],[506,3]]},"690":{"position":[[987,9],[997,21]]},"722":{"position":[[192,3]]},"746":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"750":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"753":{"position":[[1092,3]]},"755":{"position":[[266,3],[292,3],[316,3]]},"757":{"position":[[27,3],[252,3]]},"759":{"position":[[413,3],[506,3]]},"761":{"position":[[260,4],[294,4],[333,4],[373,4]]}}}],["varepsilon_\\theta",{"_index":2759,"t":{"521":{"position":[[627,23]]},"704":{"position":[[627,23]]}}}],["varepsilon_\\theta\\left(x_t",{"_index":2747,"t":{"521":{"position":[[267,27]]},"704":{"position":[[267,27]]}}}],["varepsilonxt​=αˉt​x​+1−αˉt",{"_index":2756,"t":{"521":{"position":[[517,33]]},"704":{"position":[[517,33]]}}}],["variant",{"_index":2725,"t":{"515":{"position":[[793,9]]},"673":{"position":[[5,7]]},"690":{"position":[[281,7]]},"698":{"position":[[793,9]]}}}],["variat",{"_index":1645,"t":{"312":{"position":[[0,18]]},"322":{"position":[[545,25]]},"673":{"position":[[198,11],[339,11]]}}}],["vc++6.0中指针初始化为0xcccccccc",{"_index":809,"t":{"109":{"position":[[873,26]]}}}],["vc++6.0中指针初始化为0xcccccccc,如果不将指针初始化为null",{"_index":818,"t":{"109":{"position":[[1221,45]]}}}],["vec",{"_index":3435,"t":{"795":{"position":[[819,4]]}}}],["vec.empti",{"_index":3440,"t":{"795":{"position":[[970,13]]}}}],["vec.push_back(remaind",{"_index":3438,"t":{"795":{"position":[[903,25]]}}}],["vec.rbegin",{"_index":3441,"t":{"795":{"position":[[1023,13]]}}}],["vec.rend",{"_index":3442,"t":{"795":{"position":[[1043,11]]}}}],["vector",{"_index":75,"t":{"29":{"position":[[17,17]]},"31":{"position":[[94,19],[224,12]]},"58":{"position":[[68,6]]},"84":{"position":[[0,10],[149,81],[231,27],[433,12],[1301,33],[1338,55],[1472,8]]},"105":{"position":[[29,8]]},"107":{"position":[[50,8]]},"365":{"position":[[845,10]]},"513":{"position":[[87,6]]},"515":{"position":[[103,6],[815,6]]},"648":{"position":[[845,10]]},"690":{"position":[[693,7]]},"696":{"position":[[87,6]]},"698":{"position":[[103,6],[815,6]]}}}],["vector::iter",{"_index":723,"t":{"107":{"position":[[1177,24]]}}}],["vector为底层容器,堆heap",{"_index":354,"t":{"80":{"position":[[448,41]]}}}],["vector对象,存储的是int",{"_index":458,"t":{"84":{"position":[[277,27]]}}}],["vector对象,并从由迭代器first和last定义的序列[first",{"_index":463,"t":{"84":{"position":[[380,41]]}}}],["vector的s",{"_index":98,"t":{"31":{"position":[[61,18]]}}}],["vector)zzz",{"_index":2736,"t":{"519":{"position":[[92,10]]},"702":{"position":[[92,10]]}}}],["ver",{"_index":798,"t":{"109":{"position":[[644,5]]}}}],["veri",{"_index":1110,"t":{"130":{"position":[[2018,4]]},"194":{"position":[[962,4]]},"393":{"position":[[2930,4]]}}}],["verifi",{"_index":2837,"t":{"540":{"position":[[1122,6]]},"616":{"position":[[738,8]]},"720":{"position":[[1122,6]]},"746":{"position":[[738,8]]}}}],["vernum",{"_index":804,"t":{"109":{"position":[[798,7],[1339,7],[1456,8]]}}}],["vernum,arcnum",{"_index":796,"t":{"109":{"position":[[621,14]]}}}],["vers[a].firstarc",{"_index":835,"t":{"109":{"position":[[1752,18],[1793,18],[1875,17]]}}}],["vers[i].data=tmp[i",{"_index":824,"t":{"109":{"position":[[1473,21]]}}}],["vers[i].firstarc",{"_index":807,"t":{"109":{"position":[[847,17]]}}}],["version/src/project0/build目录下执行mak",{"_index":1021,"t":{"130":{"position":[[43,35]]}}}],["version/src/projecti/build",{"_index":1003,"t":{"120":{"position":[[287,33]]},"124":{"position":[[114,29]]}}}],["version/src/projecti/build文件夹下进行,即要在终端中通过cd",{"_index":1261,"t":{"194":{"position":[[17,49]]}}}],["version/src/projecti/build目录下创建.bochsrc",{"_index":1075,"t":{"130":{"position":[[1379,41]]}}}],["version/src/projecti/build目录下的makefi",{"_index":1034,"t":{"130":{"position":[[593,39],[1158,39]]}}}],["version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefil",{"_index":1028,"t":{"130":{"position":[[369,71]]}}}],["version/src/projecti/src/geeko",{"_index":1002,"t":{"120":{"position":[[232,37]]}}}],["version/src/projecti/src/geekos/main.c",{"_index":1172,"t":{"192":{"position":[[9,40]]}}}],["version/src/目录下会存在project0",{"_index":999,"t":{"120":{"position":[[131,26]]}}}],["vert",{"_index":2377,"t":{"450":{"position":[[83,5]]},"452":{"position":[[92,5],[273,5]]}}}],["vert^2_1",{"_index":2378,"t":{"450":{"position":[[91,9]]},"452":{"position":[[100,9],[281,9]]}}}],["vert_2",{"_index":2297,"t":{"442":{"position":[[181,7]]}}}],["vertex",{"_index":288,"t":{"67":{"position":[[338,6],[414,8],[516,7],[578,8]]},"105":{"position":[[141,6],[198,8],[250,7],[312,8]]},"107":{"position":[[213,6],[289,8],[391,7],[453,8]]}}}],["vertex(int",{"_index":293,"t":{"67":{"position":[[460,10]]},"105":{"position":[[219,10]]},"107":{"position":[[335,10]]}}}],["vertexs.resize(1",{"_index":308,"t":{"67":{"position":[[752,18]]},"107":{"position":[[627,18]]}}}],["vertexs.resize(n",{"_index":305,"t":{"67":{"position":[[697,18]]},"105":{"position":[[431,18]]},"107":{"position":[[572,18]]}}}],["vertexs.s",{"_index":659,"t":{"105":{"position":[[516,16]]},"107":{"position":[[712,16]]}}}],["vertexs[id1].connectors.push_back(id2",{"_index":660,"t":{"105":{"position":[[560,39],[609,39]]},"107":{"position":[[756,39],[856,39]]}}}],["vertexs[id1].indegre",{"_index":713,"t":{"107":{"position":[[962,24]]}}}],["vertexs[id1].outdegre",{"_index":711,"t":{"107":{"position":[[796,25],[936,25]]}}}],["vertexs[id2].connectors.push_back(id1",{"_index":661,"t":{"105":{"position":[[649,39]]},"107":{"position":[[896,39]]}}}],["vertexs[id2].indegre",{"_index":712,"t":{"107":{"position":[[822,24],[1013,24]]}}}],["vertexs[id2].outdegre",{"_index":714,"t":{"107":{"position":[[987,25]]}}}],["vertexs[id].connectors.s",{"_index":673,"t":{"105":{"position":[[920,30],[1353,30]]}}}],["vertexs[id].connectors[i",{"_index":674,"t":{"105":{"position":[[968,26],[1401,26]]}}}],["vertextyp",{"_index":778,"t":{"109":{"position":[[218,10],[511,10],[941,10],[2108,10]]}}}],["vertic",{"_index":3386,"t":{"770":{"position":[[124,11]]}}}],["vga_update_interv",{"_index":1097,"t":{"130":{"position":[[1805,20]]},"194":{"position":[[749,20]]}}}],["vgaromimag",{"_index":1081,"t":{"130":{"position":[[1509,12]]},"194":{"position":[[453,12]]}}}],["vi",{"_index":3109,"t":{"611":{"position":[[26,3]]},"613":{"position":[[26,3]]}}}],["via",{"_index":2924,"t":{"549":{"position":[[110,3]]},"554":{"position":[[627,3]]}}}],["video",{"_index":3185,"t":{"620":{"position":[[1680,5]]},"685":{"position":[[121,5]]},"750":{"position":[[1680,5]]}}}],["viet",{"_index":2976,"t":{"554":{"position":[[697,4]]}}}],["vis.line([0",{"_index":3111,"t":{"611":{"position":[[116,14]]}}}],["vis.line([[0",{"_index":3119,"t":{"613":{"position":[[41,14]]}}}],["vis.line([loss.item",{"_index":3117,"t":{"611":{"position":[[289,23]]}}}],["visdom",{"_index":3107,"t":{"606":{"position":[[12,6]]},"609":{"position":[[0,28],[37,6]]},"611":{"position":[[5,6],[19,6],[32,8]]},"613":{"position":[[5,6],[19,6],[32,8]]}}}],["visdom.serv",{"_index":3108,"t":{"609":{"position":[[54,13]]}}}],["visit",{"_index":664,"t":{"105":{"position":[[753,8],[1132,8]]}}}],["visit(vertextyp",{"_index":781,"t":{"109":{"position":[[290,16]]}}}],["visit[cnt]=0",{"_index":886,"t":{"109":{"position":[[2992,13]]}}}],["visit[max_vertex_num",{"_index":839,"t":{"109":{"position":[[2077,22]]}}}],["visit[p",{"_index":859,"t":{"109":{"position":[[2568,8]]}}}],["visit[u]=0",{"_index":863,"t":{"109":{"position":[[2679,11]]}}}],["visit[u]=1",{"_index":847,"t":{"109":{"position":[[2298,11]]}}}],["visited.count(id1",{"_index":675,"t":{"105":{"position":[[998,19],[1431,19]]}}}],["visited.insert(id1",{"_index":677,"t":{"105":{"position":[[1044,20],[1497,20]]}}}],["visited.insert(start",{"_index":668,"t":{"105":{"position":[[802,22],[1216,22]]}}}],["visual",{"_index":2795,"t":{"540":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"616":{"position":[[11,6],[352,6],[1409,6]]},"618":{"position":[[168,6]]},"690":{"position":[[1262,6],[1632,6],[1668,6],[1713,6]]},"720":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"746":{"position":[[11,6],[352,6],[1409,6]]},"748":{"position":[[168,6]]}}}],["vit",{"_index":3275,"t":{"690":{"position":[[668,8],[934,16]]}}}],["viz.line([[y1",{"_index":3123,"t":{"613":{"position":[[177,14]]}}}],["viz.line([real_y_data",{"_index":3114,"t":{"611":{"position":[[208,23]]}}}],["vllm",{"_index":2859,"t":{"542":{"position":[[761,4]]},"722":{"position":[[760,4]]}}}],["vnode",{"_index":792,"t":{"109":{"position":[[504,6],[547,7]]}}}],["vnv_nvn",{"_index":1156,"t":{"177":{"position":[[68,21]]}}}],["voc1voc_1voc1​词汇向量输入时,在decoder中,voc1voc_1voc1",{"_index":1531,"t":{"291":{"position":[[177,87]]},"591":{"position":[[177,87]]}}}],["vocabulari",{"_index":1486,"t":{"283":{"position":[[6,16]]},"583":{"position":[[6,16]]}}}],["vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(nlp",{"_index":1487,"t":{"283":{"position":[[23,95]]},"583":{"position":[[23,95]]}}}],["voc中,类别种类为20类,因此在预测阶段输出的[7",{"_index":3503,"t":{"824":{"position":[[422,27]]}}}],["void",{"_index":715,"t":{"107":{"position":[[1073,4]]},"109":{"position":[[285,4],[2215,4]]},"112":{"position":[[1073,4],[1360,4],[1475,4],[1590,4]]},"114":{"position":[[775,4],[1041,4],[1148,4],[1255,4]]},"116":{"position":[[539,4]]},"192":{"position":[[82,4],[1294,4],[1833,4]]}}}],["voxceleb1",{"_index":3018,"t":{"566":{"position":[[24,10],[72,10]]}}}],["vq",{"_index":3218,"t":{"623":{"position":[[1241,2],[1261,2]]},"625":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]},"673":{"position":[[78,8],[102,2],[161,15],[310,7],[503,2]]},"675":{"position":[[10,2],[79,7],[237,2]]},"677":{"position":[[10,2],[165,2],[267,2],[309,2]]},"679":{"position":[[288,2]]},"690":{"position":[[260,2],[307,2],[328,2],[377,2],[507,2],[525,23],[553,56],[690,2],[724,2],[821,2],[884,2]]},"753":{"position":[[1241,2],[1261,2]]},"755":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]}}}],["vqgan",{"_index":2860,"t":{"545":{"position":[[5,5]]},"620":{"position":[[1033,5],[1212,5],[1331,5]]},"625":{"position":[[346,5]]},"677":{"position":[[0,5],[63,15]]},"690":{"position":[[893,5],[1234,10]]},"725":{"position":[[5,5]]},"750":{"position":[[1033,5],[1212,5],[1331,5]]},"755":{"position":[[346,5]]}}}],["vqgan、vqvae、var、maskgit",{"_index":2734,"t":{"517":{"position":[[108,23]]},"700":{"position":[[108,23]]}}}],["vqgan(2021",{"_index":3274,"t":{"690":{"position":[[650,17]]}}}],["vqgan(2022",{"_index":3276,"t":{"690":{"position":[[677,12]]}}}],["vqgan(vector",{"_index":3255,"t":{"677":{"position":[[101,17]]}}}],["vqgan,rq",{"_index":3260,"t":{"679":{"position":[[297,8]]}}}],["vqvae",{"_index":3182,"t":{"620":{"position":[[1505,5]]},"625":{"position":[[64,5]]},"673":{"position":[[31,5]]},"675":{"position":[[0,5]]},"750":{"position":[[1505,5]]},"755":{"position":[[64,5]]},"757":{"position":[[6,5]]}}}],["vqvae、vqgan",{"_index":3239,"t":{"666":{"position":[[517,47]]}}}],["vqvae、vqga、dal",{"_index":2850,"t":{"542":{"position":[[64,21]]},"722":{"position":[[64,21]]}}}],["vrtype",{"_index":779,"t":{"109":{"position":[[248,6],[433,6]]}}}],["vtv_tvt",{"_index":1155,"t":{"177":{"position":[[47,20]]}}}],["vt​∪vn​)∗(1",{"_index":1122,"t":{"141":{"position":[[157,15]]}}}],["vt​∪vn​)∗(3",{"_index":1135,"t":{"145":{"position":[[229,15]]}}}],["vt∗(2)",{"_index":1123,"t":{"143":{"position":[[6,9]]}}}],["vt∗​(2",{"_index":1127,"t":{"143":{"position":[[72,9]]}}}],["vt∪vn)∗(1)",{"_index":1115,"t":{"141":{"position":[[73,14]]}}}],["vt∪vn)∗(3)\\alpha",{"_index":1132,"t":{"145":{"position":[[115,19]]}}}],["vvv",{"_index":1719,"t":{"340":{"position":[[216,3]]},"342":{"position":[[166,3]]}}}],["v当前是第k",{"_index":846,"t":{"109":{"position":[[2268,10]]}}}],["v的入度减1",{"_index":751,"t":{"107":{"position":[[2067,9]]}}}],["w",{"_index":1832,"t":{"363":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"365":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"370":{"position":[[72,1],[346,1],[618,1]]},"375":{"position":[[13,1]]},"450":{"position":[[89,1]]},"452":{"position":[[98,1],[237,2],[279,1],[332,2],[345,1]]},"464":{"position":[[451,1]]},"476":{"position":[[564,1],[608,1],[612,1]]},"623":{"position":[[448,1]]},"646":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"648":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"653":{"position":[[72,1],[346,1],[618,1]]},"658":{"position":[[13,1]]},"737":{"position":[[170,3]]},"753":{"position":[[448,1]]},"824":{"position":[[307,2]]}}}],["w')o(co​×ci​×h×w×h′×w",{"_index":2433,"t":{"464":{"position":[[470,23]]}}}],["w'co​×h′×w",{"_index":2426,"t":{"464":{"position":[[165,11]]}}}],["w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\parti",{"_index":2390,"t":{"452":{"position":[[177,59]]}}}],["w1,p1),(w2,p2),…,(wv,pv)}\\left\\{\\left(w_1",{"_index":1735,"t":{"342":{"position":[[207,44]]}}}],["w1,w2w_{1",{"_index":2877,"t":{"547":{"position":[[789,17]]},"727":{"position":[[789,17]]}}}],["w=q.front",{"_index":929,"t":{"112":{"position":[[1157,12]]},"114":{"position":[[859,12]]}}}],["w][b,1,h,w]的tensor",{"_index":3528,"t":{"832":{"position":[[196,46]]}}}],["w][b,1,h,w]的tensor,再将二者concat后通过7×77",{"_index":3532,"t":{"836":{"position":[[97,36]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b",{"_index":3529,"t":{"834":{"position":[[24,56]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b",{"_index":3531,"t":{"836":{"position":[[24,66]]}}}],["w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b",{"_index":3543,"t":{"842":{"position":[[56,40]]}}}],["w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b",{"_index":3527,"t":{"832":{"position":[[153,36]]}}}],["w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b",{"_index":3525,"t":{"832":{"position":[[30,36]]}}}],["w_2\\\\1&d(u,v",{"_index":1428,"t":{"250":{"position":[[525,14]]}}}],["w_2\\end{cases}\\tag{24}h(u,v)=⎩⎨⎧​101​d(u,v)w2​​(24",{"_index":1429,"t":{"250":{"position":[[540,76]]}}}],["w_code",{"_index":1955,"t":{"370":{"position":[[143,20]]},"653":{"position":[[143,20]]}}}],["w_encod",{"_index":1958,"t":{"370":{"position":[[292,9]]},"653":{"position":[[292,9]]}}}],["w_i",{"_index":1730,"t":{"340":{"position":[[604,3]]},"342":{"position":[[713,3]]}}}],["w_k",{"_index":3215,"t":{"623":{"position":[[1029,3]]},"753":{"position":[[1029,3]]}}}],["w_key",{"_index":2086,"t":{"393":{"position":[[947,5],[1286,5],[3531,5],[3850,5]]}}}],["w_khk​×wk",{"_index":3199,"t":{"623":{"position":[[559,10],[878,10]]},"753":{"position":[[559,10],[878,10]]}}}],["w_k}rk​∈[v]hk​×wk",{"_index":3211,"t":{"623":{"position":[[839,18]]},"753":{"position":[[839,18]]}}}],["w_queri",{"_index":2088,"t":{"393":{"position":[[1035,7],[1311,7],[3619,7],[3875,7]]}}}],["w_t",{"_index":2401,"t":{"452":{"position":[[496,4]]}}}],["w_valu",{"_index":2090,"t":{"393":{"position":[[1125,7],[1337,7],[3709,7],[3901,7]]}}}],["w_{2}w1​,w2",{"_index":2878,"t":{"547":{"position":[[807,12]]},"727":{"position":[[807,12]]}}}],["wall",{"_index":1071,"t":{"130":{"position":[[1266,4],[1315,4]]}}}],["warn",{"_index":1025,"t":{"130":{"position":[[321,8]]}}}],["waveform",{"_index":3021,"t":{"566":{"position":[[107,9]]}}}],["wci​×h×w",{"_index":2419,"t":{"464":{"position":[[29,8]]}}}],["web",{"_index":1970,"t":{"372":{"position":[[39,3]]},"655":{"position":[[39,3]]}}}],["web_ui",{"_index":1974,"t":{"372":{"position":[[298,8]]},"655":{"position":[[298,8]]}}}],["weight",{"_index":790,"t":{"109":{"position":[[440,7]]},"393":{"position":[[642,7],[910,7],[2137,8],[3494,7],[4296,8]]},"494":{"position":[[336,7]]},"761":{"position":[[420,7]]}}}],["weighted_valu",{"_index":2116,"t":{"393":{"position":[[2230,15],[2323,16],[4389,15],[4482,16]]}}}],["weighted_values.sum(dim=0",{"_index":2121,"t":{"393":{"position":[[2569,26],[4527,26]]}}}],["welcom",{"_index":3354,"t":{"761":{"position":[[101,8]]}}}],["well",{"_index":2127,"t":{"393":{"position":[[2705,4]]},"616":{"position":[[397,5]]},"746":{"position":[[397,5]]}}}],["werror",{"_index":1032,"t":{"130":{"position":[[507,6]]}}}],["whether",{"_index":2797,"t":{"540":{"position":[[201,7]]},"720":{"position":[[201,7]]}}}],["while(!q.empti",{"_index":746,"t":{"107":{"position":[[1903,18]]},"112":{"position":[[1133,17]]},"114":{"position":[[835,17]]}}}],["while(1",{"_index":1179,"t":{"192":{"position":[[150,8],[1362,8]]}}}],["while(cin",{"_index":487,"t":{"84":{"position":[[1537,9]]}}}],["while(g.s",{"_index":669,"t":{"105":{"position":[[825,14],[1273,14]]}}}],["while(in[p1]!=pre[rt",{"_index":980,"t":{"116":{"position":[[398,22]]}}}],["while(it!=g.vertexs.end",{"_index":725,"t":{"107":{"position":[[1226,27]]}}}],["while(m",{"_index":720,"t":{"107":{"position":[[1128,7]]}}}],["while(mid[p1]!=rt",{"_index":913,"t":{"112":{"position":[[431,18],[774,18]]},"114":{"position":[[315,18],[544,18]]}}}],["while(~scanf(\"%d\",&n",{"_index":950,"t":{"112":{"position":[[1720,22]]},"114":{"position":[[1385,22]]}}}],["wh×w",{"_index":3201,"t":{"623":{"position":[[612,4]]},"753":{"position":[[612,4]]}}}],["wide",{"_index":2720,"t":{"515":{"position":[[687,4]]},"698":{"position":[[687,4]]}}}],["win='win_id",{"_index":3112,"t":{"611":{"position":[[137,13],[247,13],[322,13]]},"613":{"position":[[68,13],[213,13]]}}}],["window",{"_index":3417,"t":{"785":{"position":[[0,20]]}}}],["winograd",{"_index":2229,"t":{"421":{"position":[[812,8]]}}}],["wisdom",{"_index":2703,"t":{"515":{"position":[[13,6]]},"698":{"position":[[13,6]]}}}],["wise",{"_index":1466,"t":{"277":{"position":[[1087,10]]},"363":{"position":[[1074,4]]},"365":{"position":[[1129,4],[1253,15]]},"377":{"position":[[441,4],[599,4]]},"577":{"position":[[1087,10]]},"646":{"position":[[1074,4]]},"648":{"position":[[1129,4],[1253,15]]},"660":{"position":[[441,4],[599,4]]},"819":{"position":[[73,7]]}}}],["wise)以及逐点(point",{"_index":3482,"t":{"819":{"position":[[57,15]]}}}],["without",{"_index":2700,"t":{"513":{"position":[[79,7]]},"540":{"position":[[253,7]]},"620":{"position":[[1581,7]]},"696":{"position":[[79,7]]},"720":{"position":[[253,7]]},"750":{"position":[[1581,7]]}}}],["wi​∈ck",{"_index":1732,"t":{"340":{"position":[[641,7]]}}}],["wi​∈cp",{"_index":1752,"t":{"342":{"position":[[750,7]]}}}],["wi∈ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":1727,"t":{"340":{"position":[[537,38]]}}}],["wi∈cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":1749,"t":{"342":{"position":[[646,38]]}}}],["wl",{"_index":3552,"t":{"865":{"position":[[321,65]]}}}],["wl/wait",{"_index":3551,"t":{"865":{"position":[[305,10]]}}}],["wnli(winograd",{"_index":2227,"t":{"421":{"position":[[781,13]]}}}],["word",{"_index":1469,"t":{"279":{"position":[[0,9]]},"423":{"position":[[186,4]]},"579":{"position":[[0,9]]}}}],["work",{"_index":1040,"t":{"130":{"position":[[681,5]]},"515":{"position":[[289,5],[950,4]]},"620":{"position":[[1614,4],[1725,4]]},"698":{"position":[[289,5],[950,4]]},"739":{"position":[[41,4]]},"750":{"position":[[1614,4],[1725,4]]},"763":{"position":[[106,4]]}}}],["work.109",{"_index":1061,"t":{"130":{"position":[[1040,9]]}}}],["workshop",{"_index":2956,"t":{"554":{"position":[[480,10]]}}}],["worship",{"_index":1297,"t":{"217":{"position":[[77,7]]}}}],["write",{"_index":1104,"t":{"130":{"position":[[1925,5]]},"194":{"position":[[869,5]]}}}],["wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1",{"_index":2396,"t":{"452":{"position":[[394,40]]}}}],["www和偏置项bbb",{"_index":2470,"t":{"476":{"position":[[458,39]]}}}],["w∥12​≤θ(1",{"_index":2382,"t":{"450":{"position":[[142,11]]}}}],["w∥12≤θ(1)min",{"_index":2374,"t":{"450":{"position":[[22,13]]}}}],["w为bbox的宽高,c为该bbox是否存在object",{"_index":3501,"t":{"824":{"position":[[337,30]]}}}],["w归约为文法开始符号",{"_index":1169,"t":{"182":{"position":[[103,31]]}}}],["x",{"_index":44,"t":{"15":{"position":[[100,1],[124,2],[147,1],[155,1]]},"17":{"position":[[91,2],[114,1],[131,1]]},"39":{"position":[[118,3]]},"45":{"position":[[241,12],[274,10]]},"62":{"position":[[41,3],[69,5],[84,3]]},"72":{"position":[[4,2]]},"84":{"position":[[525,8],[1534,2],[1550,2]]},"86":{"position":[[290,8],[317,8]]},"222":{"position":[[308,1],[414,1]]},"437":{"position":[[43,3],[305,1]]},"439":{"position":[[42,1],[50,1],[54,1],[178,1],[190,1],[294,1]]},"509":{"position":[[382,3],[873,3],[1092,2],[1135,1],[1157,1],[1162,2],[1171,1],[1917,3],[1986,2]]},"731":{"position":[[291,1],[343,1],[386,4],[504,4]]},"735":{"position":[[142,5],[278,4],[506,5]]}}}],["x)%mod",{"_index":219,"t":{"62":{"position":[[115,9]]}}}],["x)=11+e−x(1)\\sigma(x",{"_index":2266,"t":{"437":{"position":[[0,23]]}}}],["x)=\\mathbb{e}_{\\varepsilon",{"_index":2745,"t":{"521":{"position":[[212,27]]},"704":{"position":[[212,27]]}}}],["x)>(i",{"_index":216,"t":{"62":{"position":[[28,10]]}}}],["x)\\mu(x)μ(x",{"_index":2900,"t":{"547":{"position":[[1716,14],[1816,14]]},"727":{"position":[[1717,14],[1817,14]]}}}],["x)\\sigma(x)σ(x",{"_index":2901,"t":{"547":{"position":[[1733,17],[1836,18]]},"727":{"position":[[1734,17],[1837,18]]}}}],["x,y)(x",{"_index":1312,"t":{"220":{"position":[[0,41],[90,15]]}}}],["x.reshap",{"_index":2598,"t":{"509":{"position":[[393,10]]}}}],["x.shape[0",{"_index":2676,"t":{"509":{"position":[[2099,11]]}}}],["x.to(devic",{"_index":2630,"t":{"509":{"position":[[1139,13],[1175,12],[1993,13]]}}}],["x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​做weight",{"_index":1686,"t":{"324":{"position":[[445,122]]}}}],["x0x_0x0",{"_index":2779,"t":{"523":{"position":[[436,8]]},"706":{"position":[[436,8]]}}}],["x0∼p(x∣z)x_0",{"_index":2780,"t":{"523":{"position":[[448,12]]},"706":{"position":[[448,12]]}}}],["x1",{"_index":3295,"t":{"731":{"position":[[381,2],[611,2]]}}}],["x1,...,xt−1][x_1,...,x_{t",{"_index":3270,"t":{"690":{"position":[[85,26]]}}}],["x1,x2,...,xt−1)(x_1",{"_index":3176,"t":{"620":{"position":[[1126,21]]},"750":{"position":[[1126,21]]}}}],["x1[0",{"_index":3321,"t":{"731":{"position":[[1195,21],[1232,20]]}}}],["x1[0,:,:]+x2[0,:,:](1)x1[0",{"_index":3306,"t":{"731":{"position":[[846,27]]}}}],["x1[1,:,:]+x2[1,:,:](2)x1[1",{"_index":3309,"t":{"731":{"position":[[924,27]]}}}],["x1[2,:,:]+x2[2,:,:](3)x1[2",{"_index":3312,"t":{"731":{"position":[[1002,27]]}}}],["x1与x2在第0维度上维度相同,所以python",{"_index":3305,"t":{"731":{"position":[[798,47]]}}}],["x2",{"_index":3298,"t":{"731":{"position":[[499,2],[616,2]]}}}],["x2[0",{"_index":3307,"t":{"731":{"position":[[882,5],[1220,8]]}}}],["x2[0,0",{"_index":3322,"t":{"731":{"position":[[1256,15]]}}}],["x2[1",{"_index":3310,"t":{"731":{"position":[[960,5]]}}}],["x2[2",{"_index":3313,"t":{"731":{"position":[[1038,5]]}}}],["x86",{"_index":996,"t":{"120":{"position":[[89,12]]},"130":{"position":[[835,5]]}}}],["x86/elf",{"_index":1048,"t":{"130":{"position":[[854,7]]}}}],["x86_64与i386",{"_index":1033,"t":{"130":{"position":[[561,16]]}}}],["x using namespace std; int main() { string s; cin >> s; int maxx = 0, flag = 0; sort(s.begin(), s.end()); do { int now = 0; for (int i = 0; i < s.size(); i++) { now = now * 10 + s[i] - '0'; } if (now % 30 == 0) { flag = 1; maxx = max(maxx, now); } } while (next_permutation(s.begin(), s.end())); if (flag == 1) { cout << maxx << endl; return 0; } else { cout << -1 << endl; } }","s":"参考代码","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#参考代码","p":6},{"i":11,"t":"使用C++ STL提供的排列组合模版 首先将代排列组合的字符串或数组进行排序 sort(list.begin(), list.end()); 使用排列组合模版 do { something(); } while (next_permutation(list.begin(), list.end())); 此时,在每一个do循环中,list按从小到大的顺序进行排列组合遍历","s":"题解","u":"/docs/Algorithms/题解/排列组合(求30的倍数)","h":"#题解","p":6},{"i":13,"t":"提示 在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆,小诺很好奇那些地方被刷过多少种颜色的油漆。 输入描述: 若干行输入,每行两个数字B[i],E[i](0<=B[i]<=E[i]<=200000)表示这次刷的墙壁是哪一段 (假设每次刷的时候油漆颜色都和之前的不同),以0 0结束 又若干行输入,每行两个数字begin[i],end[i](0<=begin[i]<=end[i]<=200000)表示小诺询问的段, 以0 0结束 输出描述: 对于每个小诺的询问输出(end[i]-begin[i]+1)行,表示对应询问段的每个点被多少种颜色的油漆覆盖过。","s":"一维前缀和(刷出一道墙)","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"","p":12},{"i":15,"t":"#include using namespace std; int main() { vector colors(200001, 0); int B, E; while (scanf(\"%d %d\", &B, &E)) { if (B == 0 && E == 0) { break; } colors[B]++; // 刷墙起点标记 colors[E + 1]--; // 刷墙终点标记 } // 计算前缀和 for (int i = 1; i < colors.size(); i++) { colors[i] += colors[i - 1]; } int begin, end; while (scanf(\"%d %d\", &begin, &end)) { if (begin == 0 && end == 0) { break; } for (int i = begin; i <= end; i++) { printf(\"%d\\n\", colors[i]); } } return 0; }","s":"参考代码","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#参考代码","p":12},{"i":17,"t":"使用前缀和思想简化时间复杂度,设计前缀和数组,使输出的数组中元素的值代表其对应节点被刷的次数。 首先初始化前缀和数组,使每一个元素等于为0。 该题的巧妙之处就在于:对于每一个输入的索引B与E,B作为开始刷的节点索引令前缀和数组中对应元素的值+1+1+1,E+1作为刷墙结束的下一个节点的索引令对应的值−1-1−1。这样在所有输入结束后的计算前缀和阶段,在每一个值为[1,−1)[1, -1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点E的下一个索引为E+1的元素值由于−1-1−1而抵消影响(自身值为−1-1−1加上之前元素所累积的1而归零),此时数组中元素的值才代表其对应节点被刷的次数。 关于超时,可以在函数中加入以下代码消除流操作的缓冲区,并使用\"\\n\"代替endl。 ios::sync_with_stdio(false);","s":"题解","u":"/docs/Algorithms/题解/一维前缀和(刷出一道墙)","h":"#题解","p":12},{"i":19,"t":"提示 设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值","s":"反序输出","u":"/docs/Algorithms/题解/反序输出","h":"","p":18},{"i":21,"t":"#include using namespace std; int main() { for (int i = 1000; i <= 9999; i++) { int x = i * 9, y = 0; while (x > 0) { y = y * 10 + x % 10; x /= 10; } if (i == y) { cout << i << endl; } } return 0; }","s":"参考代码","u":"/docs/Algorithms/题解/反序输出","h":"#参考代码","p":18},{"i":23,"t":"反序输出可以分为两部分:拆分以及反序拼接 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分 while (x > 0) { y = y * 10 + x % 10; // 拼接与拆分 x /= 10; } 拼接:将s中的数字拼接成整数 int sum = 0; for (int i = 0; i < s.size(); i++) { sum = sum * 10 + s[i]; }","s":"题解","u":"/docs/Algorithms/题解/反序输出","h":"#题解","p":18},{"i":25,"t":"提示 欢迎来到笔记本的算法部分","s":"Welcome","u":"/docs/Algorithms/intro","h":"","p":24},{"i":27,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Algorithms/intro","h":"#支持我","p":24},{"i":29,"t":"信息 转载自Sonder的笔记本 [TOC]","s":"机试技巧与STL","u":"/docs/Algorithms/机试技巧与STL","h":"","p":28},{"i":31,"t":"CTRL + J 列出成员 Ctrl+E,D 格式化全部代码 Ctrl+K,F 格式化选中的代码 CTRL + SHIFT + E 显示资源视图 F12 转到定义 CTRL + F12 转到声明 CTRL + ALT + J 对象浏览 CTRL + ALT + F1 帮助目录 CTRL + F1 动态帮助 CTRL + K, CTRL + C 注释选择的代码 CTRL + K, CTRL + U 取消对选择代码的注释 CTRL + U 转小写 CTRL + SHIFT + U 转大写 F5 运行调试 CTRL + F5 运行不调试 F10 跨过程序执行 F11 单步逐句执行","s":"vs2018 快捷键","u":"/docs/Algorithms/机试技巧与STL","h":"#vs2018-快捷键","p":28},{"i":34,"t":"头文件 说明 头文件 说明 头文件 说明 assert.h 断言相关 ctype.h 字符类型判断 errno.h 标准错误机制 float.h 浮点限制 limits.h 整形限制 locale.h 本地化接口 math.h 数学函数 setjmp.h 非本地跳转 signal.h 信号相关 stdarg.h 可变参数处理 stddef.h 宏和类型定义 stdio.h 标准I/O stdlib.h 标准工具库 string.h 字符串和内存处理 time.h 时间相关","s":"标准c库","u":"/docs/Algorithms/机试技巧与STL","h":"#标准c库","p":28},{"i":36,"t":"using namespace std; 头文件 说明 头文件 说明 头文件 说明 algorithm 通用算法 deque 双端队列 vector 向量 iterator 迭代器 stack 栈 map 图(键值对) list 列表 string 字符串 set 集合 queue 队列 bitset bit类 numeric 数值算法","s":"c++ STL","u":"/docs/Algorithms/机试技巧与STL","h":"#c-stl","p":28},{"i":38,"t":"#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;","s":"常用头","u":"/docs/Algorithms/机试技巧与STL","h":"#常用头","p":28},{"i":40,"t":"//求最大值和最小值 #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) //取余 #define mod(x) ((x)%MOD) //for循环 #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i) //返回数组元素的个数 #define ARR_SIZE(a) (sizeof((a))/sizeof((a[0]))) //初始化数组 #define MT(x,i) memset(x,i,sizeof(x)) #define MEM(a,b) memset((a),(b),sizeof(a)) //符号重定义 #define LL long long #define ull unsigned long long #define pii pair //常见常数 #define PI acos(-1.0) #define eps 1e-12 #define INF 0x3f3f3f3f //int最大值 const int INF_INT = 2147483647; const ll INF_LL = 9223372036854775807LL; const ull INF_ULL = 18446744073709551615Ull; const ll P = 92540646808111039LL; const ll maxn = 1e5 + 10, MOD = 1e9 + 7; const int Move[4][2] = {-1,0,1,0,0,1,0,-1}; const int Move_[8][2] = {-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};","s":"常用宏定义","u":"/docs/Algorithms/机试技巧与STL","h":"#常用宏定义","p":28},{"i":43,"t":"struct InitMember { int first; double second; char* third; float four; };","s":"定义","u":"/docs/Algorithms/机试技巧与STL","h":"#定义","p":28},{"i":45,"t":"方法一:定义时赋值​ struct InitMember test = {-10,3.141590,\"method one\",0.25}; 方法二:定义后逐个赋值​ struct InitMember test; test.first = -10; test.second = 3.141590; test.third = \"method two\"; test.four = 0.25; 方法三:定义时乱序赋值(C++风格)​ struct InitMember test = { second:3.141590, third:\"method three\", first:-10, four:0.25 }; 方法四:构造函数​ //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { ... ... ... return true; } } Graph; Graph g(8, false);","s":"初始化","u":"/docs/Algorithms/机试技巧与STL","h":"#初始化","p":28},{"i":47,"t":"typedef struct{int id;int h;} node; bool operator <(const node& a,const node & b){return (a.h)<(b.h);}","s":"运算符重载","u":"/docs/Algorithms/机试技巧与STL","h":"#运算符重载","p":28},{"i":50,"t":"int *x = new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针) int *a = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址 char *b = new char[10]; //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p","s":"常规","u":"/docs/Algorithms/机试技巧与STL","h":"#常规","p":28},{"i":52,"t":"//列值固定 const int MAXCOL = 3; cin>>row; //申请一维数据并将其转成二维数组指针 int *pp_arr = new int[nRow * MAXCOL]; int (*p)[MAXCOL] = (int(*)[MAXCOL])pp_arr; //此时p[i][j]就可正常使用","s":"动态申请列大小固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请列大小固定的二维数组","p":28},{"i":54,"t":"cin>>row>>col; int **p = new int*[row]; for (int i = 0; i < row; i ++) { p[i] = new int[col]; }","s":"动态申请大小不固定的二维数组","u":"/docs/Algorithms/机试技巧与STL","h":"#动态申请大小不固定的二维数组","p":28},{"i":56,"t":"参考: https://blog.csdn.net/f_zyj/article/details/51594851 https://download.csdn.net/download/f_zyj/9988653","s":"常用STL","u":"/docs/Algorithms/机试技巧与STL","h":"#常用stl","p":28},{"i":58,"t":"STL底层说明​ C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> ... 每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品. 4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时 (stack和queue其实是适配器,而不叫容器,因为是对容器的再封装) 6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现 7.set 底层数据结构为红黑树,有序,不重复 8.multiset 底层数据结构为红黑树,有序,可重复 9.map 底层数据结构为红黑树,有序,不重复 10.multimap 底层数据结构为红黑树,有序,可重复 11.hash_set 底层数据结构为hash表,无序,不重复 12.hash_multiset 底层数据结构为hash表,无序,可重复 13.hash_map 底层数据结构为hash表,无序,不重复 14.hash_multimap 底层数据结构为hash表,无序,可重复 CCF 编译出错原因: 不允许C++STL容器嵌套(需要满足相应的格式)​ 就是要在后面的“>”之间,必须得有一个空格,如果有多层,那每层都得有一个空格。 map > user;","s":"简述","u":"/docs/Algorithms/机试技巧与STL","h":"#简述","p":28},{"i":60,"t":"头文件:lgorithm 函数参数,返回值以及具体的使用方法请自行去头文件找定义!!! 不修改内容的序列操作​ 函数 说明 adjacent_find 查找两个相邻(Adjacent)的等价(Identical)元素 all_ofC++11 检测在给定范围中是否所有元素都满足给定的条件 any_ofC++11 检测在给定范围中是否存在元素满足给定条件 count 返回值等价于给定值的元素的个数 count_if 返回值满足给定条件的元素的个数 equal 返回两个范围是否相等 find 返回第一个值等价于给定值的元素 find_end 查找范围A中与范围B等价的子范围最后出现的位置 find_first_of 查找范围A中第一个与范围B中任一元素等价的元素的位置 find_if 返回第一个值满足给定条件的元素 find_if_notC++11 返回第一个值不满足给定条件的元素 for_each 对范围中的每个元素调用指定函数 mismatch 返回两个范围中第一个元素不等价的位置 none_ofC++11 检测在给定范围中是否不存在元素满足给定的条件 search 在范围A中查找第一个与范围B等价的子范围的位置 search_n 在给定范围中查找第一个连续n个元素都等价于给定值的子范围的位置 修改内容的序列操作​ 函数 说明 copy 将一个范围中的元素拷贝到新的位置处 copy_backward 将一个范围中的元素按逆序拷贝到新的位置处 copy_ifC++11 将一个范围中满足给定条件的元素拷贝到新的位置处 copy_nC++11 拷贝 n 个元素到新的位置处 fill 将一个范围的元素赋值为给定值 fill_n 将某个位置开始的 n 个元素赋值为给定值 generate 将一个函数的执行结果保存到指定范围的元素中,用于批量赋值范围中的元素 generate_n 将一个函数的执行结果保存到指定位置开始的 n 个元素中 iter_swap 交换两个迭代器(Iterator)指向的元素 moveC++11 将一个范围中的元素移动到新的位置处 move_backwardC++11 将一个范围中的元素按逆序移动到新的位置处 random_shuffle 随机打乱指定范围中的元素的位置 remove 将一个范围中值等价于给定值的元素删除 remove_if 将一个范围中值满足给定条件的元素删除 remove_copy 拷贝一个范围的元素,将其中值等价于给定值的元素删除 remove_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素删除 replace 将一个范围中值等价于给定值的元素赋值为新的值 replace_copy 拷贝一个范围的元素,将其中值等价于给定值的元素赋值为新的值 replace_copy_if 拷贝一个范围的元素,将其中值满足给定条件的元素赋值为新的值 replace_if 将一个范围中值满足给定条件的元素赋值为新的值 reverse 反转排序指定范围中的元素 reverse_copy 拷贝指定范围的反转排序结果 rotate 循环移动指定范围中的元素 rotate_copy 拷贝指定范围的循环移动结果 shuffleC++11 用指定的随机数引擎随机打乱指定范围中的元素的位置 swap 交换两个对象的值 swap_ranges 交换两个范围的元素 transform 对指定范围中的每个元素调用某个函数以改变元素的值 unique 删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。 unique_copy 拷贝指定范围的唯一化(参考上述的 unique)结果 划分操作​ 函数 说明 is_partitionedC++11 检测某个范围是否按指定谓词(Predicate)划分过 partition 将某个范围划分为两组 partition_copyC++11 拷贝指定范围的划分结果 partition_pointC++11 返回被划分范围的划分点 stable_partition 稳定划分,两组元素各维持相对顺序 排序操作​ 函数 说明 is_sortedC++11 检测指定范围是否已排序 is_sorted_untilC++11 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序 partial_sort_copy 拷贝部分排序的结果 sort 排序 stable_sort 稳定排序 二分法查找操作​ 函数 说明 binary_search 判断范围中是否存在值等价于给定值的元素 equal_range 返回范围中值等于给定值的元素组成的子范围 lower_bound 返回指向范围中第一个值大于或等于给定值的元素的迭代器 upper_bound 返回指向范围中第一个值大于给定值的元素的迭代器 集合操作​ 函数 说明 includes 判断一个集合是否是另一个集合的子集 inplace_merge 就绪合并 merge 合并 set_difference 获得两个集合的差集 set_intersection 获得两个集合的交集 set_symmetric_difference 获得两个集合的对称差 set_union 获得两个集合的并集 堆操作​ 函数 说明 is_heap 检测给定范围是否满足堆结构 is_heap_untilC++11 检测给定范围中满足堆结构的最大子范围 make_heap 用给定范围构造出一个堆 pop_heap 从一个堆中删除最大的元素 push_heap 向堆中增加一个元素 sort_heap 将满足堆结构的范围排序 最大/最小操作​ 函数 说明 is_permutationC++11 判断一个序列是否是另一个序列的一种排序 lexicographical_compare 比较两个序列的字典序 max 返回两个元素中值最大的元素 max_element 返回给定范围中值最大的元素 min 返回两个元素中值最小的元素 min_element 返回给定范围中值最小的元素 minmaxC++11 返回两个元素中值最大及最小的元素 minmax_elementC++11 返回给定范围中值最大及最小的元素 next_permutation 返回给定范围中的元素组成的下一个按字典序的排列 prev_permutation 返回给定范围中的元素组成的上一个按字典序的排列","s":"algorithm","u":"/docs/Algorithms/机试技巧与STL","h":"#algorithm","p":28},{"i":62,"t":"头文件:vector 在STL的vector头文件中定义了vector(向量容器模版类),vector容器以连续数组的方式存储元素序列,可以将vector看作是以顺序结构实现的线性表。当我们在程序中需要使用动态数组时,vector将会是理想的选择,vector可以在使用过程中动态地增长存储空间。 vector模版类需要两个模版参数,第一个参数是存储元素的数据类型,第二个参数是存储分配器的类型,其中第二个参数是可选的,如果不给出第二个参数,将使用默认的分配器 下面给出几个常用的定义vector向量对象的方法示例: vector s; // 定义一个空的vector对象,存储的是int类型的元素 vector s(n); // 定义一个含有n个int元素的vector对象 vector s(first, last); // 定义一个vector对象,并从由迭代器first和last定义的序列[first, last)中复制初值 vector的基本操作: s[i] // 直接以下标方式访问容器中的元素 s.front() // 返回首元素 s.back() // 返回尾元素 s.push_back(x) // 向表尾插入元素x s.size() // 返回表长 s.empty() // 表为空时,返回真,否则返回假 s.pop_back() // 删除表尾元素 s.begin() // 返回指向首元素的随机存取迭代器 s.end() // 返回指向尾元素的下一个位置的随机存取迭代器 s.insert(it, val) // 向迭代器it指向的元素前插入新元素val s.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val s.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 s.erase(it) // 删除由迭代器it所指向的元素 s.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) s.reserve(n) // 预分配缓冲空间,使存储空间至少可容纳n个元素 s.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 s.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 s.clear() // 删除容器中的所有元素 s.swap(v) // 将s与另一个vector对象进行交换 s.assign(first, last) // 将序列替换成由迭代器first和last所指定的序列[first, last),[first, last)不能是原序列中的一部分 // 要注意的是,resize操作和clear操作都是对表的有效元素进行的操作,但并不一定会改变缓冲空间的大小 // 另外,vector还有其他的一些操作,如反转、取反等,不再一一列举 // vector上还定义了序列之间的比较操作运算符(>、<、>=、<=、==、!=),可以按照字典序比较两个序列。 // 还是来看一些示例代码吧…… /* * 输入个数不定的一组整数,再将这组整数按倒序输出 */ #include #include using namespace std; int main() { vector L; int x; while(cin >> x) { L.push_back(x); } for (int i = L.size() - 1; i >= 0; i--) { cout << L[i] << \" \"; } cout << endl; return 0; }","s":"vector","u":"/docs/Algorithms/机试技巧与STL","h":"#vector","p":28},{"i":64,"t":"头文件:list 下面给出几个常用的定义list对象的方法示例: lista{1,2,3} lista(n) //声明一个n个元素的列表,每个元素都是0 lista(n, m) //声明一个n个元素的列表,每个元素都是m lista(first, last) //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器 list的基本操作: a.begin() // 返回指向首元素的随机存取迭代器 a.end() // 返回指向尾元素的下一个位置的随机存取迭代器 a.push_front(x) // 向表头插入元素x a.push_back(x) // 向表尾插入元素x a.pop_back() // 删除表尾元素 a.pop_front() // 删除表头元素 a.size() // 返回表长 a.empty() // 表为空时,返回真,否则返回假 a.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 a.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 a.clear() // 删除容器中的所有元素 a.front() // 返回首元素 a.back() // 返回尾元素 a.swap(v) // 将a与另一个list对象进行交换 a.merge(b) // 调用结束后b变为空,a中元素包含原来a和b的元素 a.insert(it, val) // 向迭代器it指向的元素前插入新元素val a.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val a.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 a.erase(it) // 删除由迭代器it所指向的元素 a.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) a.remove(x) // 删除了a中所有值为x的元素 a.assign(n, val) // 将a中的所有元素替换成n个val元素 a.assign(b.begin(), b.end()) //将a变成b","s":"list","u":"/docs/Algorithms/机试技巧与STL","h":"#list","p":28},{"i":66,"t":"头文件:string string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。 string和char*的区别 string是一个类, char*是一个指向字符的指针。 string封装了char*,管理这个字符串,是一个char*型的容器。也就是说string是一个容器,里面元素的数据类型是char*。 string不用考虑内存释放和越界。 string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。 string提供了一系列的字符串操作函数 查找find,拷贝copy,删除erase,替换replace,插入insert. 构造和析构函数: 表达式 效果 string s 生成一个空字符串 string s(str) copy构造函数,生成一个str的复制品 string s(str,idx) 将string内始于位置idx的部分当作字符串s的初值 string s(str,idx,len) 将string内始于位置idx且长度最多为len的部分当作字符串s的初值 string s(cstr) 以C-string字符串cstr作为字符串s的初值 string s(cstr,len) 以C-string字符串cstr的前len个字符作为字符串s的初值 string s(num,c) 生成一个字符串,包含num个字符c string s(beg,end) 以区间[beg,end]内所有字符作为字符串s的初值 操作函数: 操作函数 效果 =,assign() 赋以新值 swap() 交换两个字符串的内容 +=, append(),push_back() 添加字符 insert() 插入字符 erase() 删除字符 clear() 移除全部字符 resize() 改变字符数量 replace() 替换字符 + 串联字符串 ==,!=,<,<=,>,>=,compare() 比较字符串内容 size(),length() 返回字符数量,等效函数 max_size() 返回字符的最大可能个数 empty() 判断字符串是否为空 capacity() 返回重新分配之前的字符容量 reserve() 保留一定量内存以容纳一定数量的字符 [ ],at() 存取单一字符 >>,getline() 从stream中读取某值 << 将某值写入stream copy() 将内容复制为一个C-string c_str() 将内容以C-string形式返回 data() 将内容以字符数组形式返回 substr() 返回某个子字符串 begin(),end() 提供正常的迭代器支持 rbegin(),rend() 提供逆向迭代器支持","s":"string","u":"/docs/Algorithms/机试技巧与STL","h":"#string","p":28},{"i":68,"t":"头文件:utility STL的utility头文件中描述了一个看上去非常简单的模版类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较运算符模版函数。 Example,想要定义一个对象表示一个平面坐标点,则可以: pair p; cin >> p.first >> p.second; pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second,分别表示首元素和尾元素。 在其中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。当然,也可以通过重载这几个运算符来重新指定自己的比较逻辑。 除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair需要两个参数,分别为元素对的首元素和尾元素。","s":"pair","u":"/docs/Algorithms/机试技巧与STL","h":"#pair","p":28},{"i":70,"t":"头文件:map 在STL的头文件中map中定义了模版类map和multimap,用有序二叉树表存储类型为pair的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key值必须是唯一的,multimap则允许有重复的Key值。 可以将map看作是由Key标识元素的元素集合,这类容器也被称为“关联容器”,可以通过一个Key值来快速决定一个元素,因此非常适合于需要按照Key值查找元素的容器。 map模版类需要四个模版参数,第一个是键值类型,第二个是元素类型,第三个是比较算子,第四个是分配器类型。其中键值类型和元素类型是必要的。 定义map对象的代码示例: map m; map的基本操作: /* 向map中插入元素 */ m[key] = value; // [key]操作是map很有特色的操作,如果在map中存在键值为key的元素对, 则返回该元素对的值域部分,否则将会创建一个键值为key的元素对,值域为默认值。所以可以用该操作向map中插入元素对或修改已经存在的元素对的值域部分。 m.insert(make_pair(key, value)); // 也可以直接调用insert方法插入元素对,insert操作会返回一个pair,当map中没有与key相匹配的键值时,其first是指向插入元素对的迭代器,其second为true;若map中已经存在与key相等的键值时,其first是指向该元素对的迭代器,second为false。 /* 查找元素 */ int i = m[key]; // 要注意的是,当与该键值相匹配的元素对不存在时,会创建键值为key(当另一个元素是整形时,m[key]=0)的元素对。 map::iterator it = m.find(key); // 如果map中存在与key相匹配的键值时,find操作将返回指向该元素对的迭代器,否则,返回的迭代器等于map的end()(参见vector中提到的begin()和end()操作)。 /* 删除元素 */ m.erase(key); // 删除与指定key键值相匹配的元素对,并返回被删除的元素的个数。 m.erase(it); // 删除由迭代器it所指定的元素对,并返回指向下一个元素对的迭代器。 /* 其他操作 */ m.size(); // 返回元素个数 m.empty(); // 判断是否为空 m.clear(); // 清空所有元素","s":"map","u":"/docs/Algorithms/机试技巧与STL","h":"#map","p":28},{"i":72,"t":"头文件:stack stack模版类的定义在stack头文件中。 stack模版类需要两个模版参数,一个是元素类型,另一个是容器类型,但是只有元素类型是必要的,在不指定容器类型时,默认容器的类型为deque。 定义stack对象的示例代码如下: stack s; stack ss; stack的基本操作有: s.push(x); // 入栈 s.pop(); // 出栈 s.top(); // 访问栈顶 s.empty(); // 当栈空时,返回true s.size(); // 访问栈中元素个数","s":"stack","u":"/docs/Algorithms/机试技巧与STL","h":"#stack","p":28},{"i":74,"t":"头文件:queue queue模版类的定义在queue头文件中。 queue与stack相似,queue模版类也需要两个模版参数,一个元素类型,一个容器类型,元素类型时必须的,容器类型时可选的,默认为deque类型。 定义queue对象的示例代码必须如下: queue q; queue qq; queue的基本操作: q.push(x); // 入队列 q.pop(); // 出队列 q.front(); // 访问队首元素 q.back(); // 访问队尾元素 q.empty(); // 判断队列是否为空 q.size(); // 访问队列中的元素个数","s":"queue","u":"/docs/Algorithms/机试技巧与STL","h":"#queue","p":28},{"i":76,"t":"头文件:set set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。 定义set对象的示例代码如下: set s; set ss; set的基本操作: s.begin() // 返回指向第一个元素的迭代器 s.clear() // 清除所有元素 s.count() // 返回某个值元素的个数 s.empty() // 如果集合为空,返回true(真) s.end() // 返回指向最后一个元素之后的迭代器,不是最后一个元素 s.equal_range() // 返回集合中与给定值相等的上下限的两个迭代器 s.erase() // 删除集合中的元素 s.find() // 返回一个指向被查找到元素的迭代器 s.get_allocator() // 返回集合的分配器 s.insert() // 在集合中插入元素 s.lower_bound() // 返回指向大于(或等于)某值的第一个元素的迭代器 s.key_comp() // 返回一个用于元素间值比较的函数 s.max_size() // 返回集合能容纳的元素的最大限值 s.rbegin() // 返回指向集合中最后一个元素的反向迭代器 s.rend() // 返回指向集合中第一个元素的反向迭代器 s.size() // 集合中元素的数目 s.swap() // 交换两个集合变量 s.upper_bound() // 返回大于某个值元素的迭代器 s.value_comp() // 返回一个用于比较元素间的值的函数","s":"set","u":"/docs/Algorithms/机试技巧与STL","h":"#set","p":28},{"i":78,"t":"头文件:set 在set头文件中,还定义了另一个非常实用的模版类multiset(多重集合)。多重集合与集合的区别在于集合中不能存在相同元素,而多重集合中可以存在。 定义multiset对象的示例代码如下: multiset s; multiset ss; multiset和set的基本操作相似,需要注意的是,集合的count()能返回0(无)或者1(有),而多重集合是有多少个返回多少个。","s":"multiset","u":"/docs/Algorithms/机试技巧与STL","h":"#multiset","p":28},{"i":80,"t":"头文件:bitset 在 STLSTL 的头文件中 bitset中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。 bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。 定义 bitsetbitset 对象的示例代码: const int MAXN = 32; bitset bt; // bt 包括 MAXN 位,下标 0 ~ MAXN - 1,默认初始化为 0 bitset bt1(0xf); // 0xf 表示十六进制数 f,对应二进制 1111,将 bt1 低 4 位初始化为 1 bitset bt2(012); // 012 表示八进制数 12,对应二进制 1010,即将 bt2 低 4 位初始化为 1010 bitset bt3(\"1010\"); // 将 bt3 低 4 位初始化为 1010 bitset bt4(s, pos, n);// 将 01 字符串 s 的 pos 位开始的 n 位初始化 bt4 bitsetbitset 基本操作: bt.any() // bt 中是否存在置为 1 的二进制位? bt.none() // bt 中不存在置为 1 的二进制位吗? bt.count() // bt 中置为 1 的二进制位的个数 bt.size() // bt 中二进制位的个数 bt[pos] // 访问 bt 中在 pos 处的二进制位 bt.test(pos) // bt 中在 pos 处的二进制位是否为 1 bt.set() // 把 bt 中所有二进制位都置为 1 bt.set(pos) // 把 bt 中在 pos 处的二进制位置为 1 bt.reset() // 把 bt 中所有二进制位都置为 0 bt.reset(pos) // 把 bt 中在pos处的二进制位置为0 bt.flip() // 把 bt 中所有二进制位逐位取反 bt.flip(pos) // 把 bt 中在 pos 处的二进制位取反 bt[pos].flip() // 同上 bt.to_ulong() // 用 bt 中同样的二进制位返回一个 unsigned long 值 os << bt // 把 bt 中的位集输出到 os 流","s":"bitset","u":"/docs/Algorithms/机试技巧与STL","h":"#bitset","p":28},{"i":83,"t":"#include #include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b) ) //定义图的定点 typedef struct Vertex { int id; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1) {} Vertex(int nid) : id(nid) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); } return true; } //广度优先搜索 vector BFS(int start) { set visited; vector g, rst; g.push_back(start); visited.insert(start); while(g.size() > 0) { int id = g[0]; g.erase(g.begin()); rst.push_back(id); for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); visited.insert(id1); } } } return rst; } //深度优先搜索 vector DFS(int start) { set visited; vector g, rst; g.push_back(start); //cout << \"push \" << start << \" \"; visited.insert(start); rst.push_back(start); bool found; while(g.size() > 0) { int id = g[g.size()-1]; found = false; for(int i = 0; i < vertexs[id].connectors.size(); i++) { int id1 = vertexs[id].connectors[i]; if (visited.count(id1) == 0) { g.push_back(id1); rst.push_back(id1); visited.insert(id1); //cout << \"push \" << id1 << \" \"; found = true; break; } } if (!found) { int id2 = g[g.size()-1]; rst.push_back(-1 * id2); //cout << \"pop \" << id2 << \" \"; g.pop_back(); } } //cout << endl; return rst; } } Graph; int main() { Graph g(8, false); g.addEdge(0, 1); g.addEdge(0, 3); g.addEdge(1, 2); g.addEdge(3, 4); g.addEdge(3, 5); g.addEdge(4, 5); g.addEdge(4, 6); g.addEdge(5, 6); g.addEdge(5, 7); g.addEdge(6, 7); vector bv = g.BFS(0); cout << \"宽度优先搜索节点顺序:\"; for(int j = 0; j < bv.size(); j++) cout << bv[j] << \" \"; cout << endl; cout << \"深度优先搜索节点顺序:\"; Graph g1(6, false); g1.addEdge(0, 1); g1.addEdge(0, 4); g1.addEdge(0, 5); g1.addEdge(1, 5); g1.addEdge(4, 5); g1.addEdge(5, 2); g1.addEdge(5, 3); g1.addEdge(2, 3); vector route = g1.DFS(0); for(int i = 0; i < route.size(); i++) cout << route[i] << \" \"; cout << endl; char ch; cin >> ch; return 0; }","s":"不带出入度的最简模板","u":"/docs/Algorithms/机试技巧与STL","h":"#不带出入度的最简模板","p":28},{"i":85,"t":"#include #include #include #include #define MAX(a, b) ((a) > (b) ? (a) : (b) ) using namespace std; int n,m; vector inDegreelist,outDegreelist; //定义图的定点 typedef struct Vertex { int id,inDegree,outDegree; vector connectors; //存储节点的后续连接顶点编号 Vertex() : id(-1),inDegree(0),outDegree(0) {} Vertex(int nid) : id(nid),inDegree(0),outDegree(0) {} } Vertex; //定义Graph的邻接表表示 typedef struct Graph { vector vertexs; //存储定点信息 int nVertexs; //计数:邻接数 bool isDAG; //标志:是有向图吗 Graph(int n, bool isDAG) : nVertexs(n), isDAG(isDAG) { vertexs.resize(n); } Graph() : nVertexs(1), isDAG(1) { vertexs.resize(1); } //向图中添加边 bool addEdge(int id1, int id2) { if (!(MAX(id1, id2) < vertexs.size())) return false; if (isDAG) { vertexs[id1].connectors.push_back(id2); vertexs[id1].outDegree++; vertexs[id2].inDegree++; } else { vertexs[id1].connectors.push_back(id2); vertexs[id2].connectors.push_back(id1); vertexs[id1].outDegree++; vertexs[id1].inDegree++; vertexs[id2].outDegree++; vertexs[id2].inDegree++; } return true; } } Graph; Graph g; void init(){ cin>>n>>m; g=Graph(n, true); int src,dst; while(m--){ cin>>src>>dst; g.addEdge(src,dst); } vector::iterator it = g.vertexs.begin(); while(it!=g.vertexs.end()){ inDegreelist.push_back(it->inDegree); outDegreelist.push_back(it->outDegree); it++; } } int countin(int n){ return count(inDegreelist.begin(),inDegreelist.end(),n); } int countout(int n){ return count(outDegreelist.begin(),outDegreelist.end(),n); } bool Is_List(){ //有一个inDegree为0的头和一个outDegree为0的尾,且其余节点入度与出度都为1; return (countin(0)==1)&&(countout(0)==1)&&(countin(1)==n-1)&&(countout(1)==n-1); } bool Is_Tree(){ //有一个inDegree为0的头且其余节点inDegree均为1,且不是链表; return (countin(0)==1)&&(countin(1)==n-1); } bool topologicalSort(){//拓扑排序判断有环无环 int num=0;//记录加入拓扑排序的顶点数 queue q; for(int i=0;i #include #ifndef BASE #define BASE #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int bool; #endif #define VertexType char //点类型 #define VRType int //边类型 #define maxSize 100 void Visit(VertexType e) { printf(\"%c\", e); } #define MAX_VERTEX_NUM 20 typedef enum{DG, UDG} GraphKind; typedef struct ArcNode{ int adjV; //边指向的顶点 VRType weight; //权重 struct ArcNode *next; }ArcNode; //边 typedef struct VNode{ VertexType data; ArcNode *firstarc; }VNode, AdjList[MAX_VERTEX_NUM]; //顶点 typedef struct{ GraphKind kind; int vernum,arcnum; AdjList vers; }ALGraph; /*------------------------ |7.14 创建有向图的邻接表| ------------------------*/ Status InitGraph_AL(ALGraph *pG) { //初始化 int i; pG->arcnum = 0; pG->vernum = 0; for (i=0; ivers[i].firstarc = NULL; //VC++6.0中指针初始化为0xcccccccc return OK; } int LocateVex_AL(ALGraph G, VertexType e) { //定位值为e的元素下标 int i; for (i=0; i弧的数目->各顶点的信息->各条弧的信息 int i,a,b; char tmp[MAX_VERTEX_NUM]; char h,t; ArcNode *p, *q; InitGraph_AL(pG); //VC++6.0中指针初始化为0xcccccccc,如果不将指针初始化为NULL,会出错 //图的类型 pG->kind = DG; //顶点数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->vernum = i; //弧的数目 scanf(\"%d\", &i); if (i<0) return ERROR; pG->arcnum = i; //各顶点信息 scanf(\"%s\", tmp); for (i=0; ivernum; ++i) pG->vers[i].data=tmp[i]; //弧的信息 for (i=0; iarcnum; ++i) { scanf(\"%s\", tmp); h = tmp[0]; t = tmp[2]; a = LocateVex_AL(*pG, h); b = LocateVex_AL(*pG, t); if (a<0 || b<0) return ERROR; p = (ArcNode *)malloc(sizeof(ArcNode)); if (!p) exit(OVERFLOW); p->adjV=b;p->next=NULL; if (pG->vers[a].firstarc) { //已经有边了 for (q = pG->vers[a].firstarc; q->next; q=q->next) ; //找到最后一条 q->next = p; } else { //第一条边 pG->vers[a].firstarc = p; } } return OK; } /*---------------------------------------------------------------- |7.28 有向图-从u-v的所有简单路径 | ----------------------------------------------------------------*/ int visit[MAX_VERTEX_NUM]; //前面定义了 VertexType paths[maxSize][MAX_VERTEX_NUM]; //存放路径 int path[MAX_VERTEX_NUM]; //路径 int pathnum=0; //当前是第几条路径 void FindAllPath(ALGraph G, int u,int v,int k) { //u->v当前是第k个位置 int i; ArcNode *p; visit[u]=1; //走到了u path[k]=u; //添加到路径->下标位置为k的结点是u(第k+1个是u) if (u==v) { //找到了 for (i=0; i<=k; i++) {//复制到paths paths[pathnum][i] = G.vers[path[i]].data; } paths[pathnum][i]='\\0'; //结束符 pathnum++; //找下一条路径 } else { //u的邻边开始找 for (p=G.vers[u].firstarc; p; p=p->next) { if (visit[p->adjV]==0) FindAllPath(G, p->adjV, v, k+1); //去这个邻接点找 } } // 回溯到上一个结点 // 注意:回溯应该写在外面-->也就是不管有没有找到都要回溯 visit[u]=0; path[k]=0; } int main() { /*7.28 6 11 ABCDEF B,A B,D C,B C,F D,C D,E D,F E,A F,A F,B F,E B->A A->B D->A */ int i,j; int cnt; ALGraph G; char tmp[20]; CreateDG_AL(&G); while (1) { scanf(\"%s\", tmp); //A->B i = LocateVex_AL(G, tmp[0]); j = LocateVex_AL(G, tmp[3]); for (cnt=0; cnt #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; // 中序+先序=>二叉树 int mid_pr_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示先序遍历 { // 这里不能等于,因为假设:len==1,则la==ra,直接返回,但是实际上是有一个 rt 的,却没被建立 if(la>ra) return 0; int rt=pr[lb]; // 因为先序遍历第一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); // 左子树(锁定左子树范围的下标) T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); // 右子树(锁定右子树范围的下标) return rt; } // 中序+后序=>二叉树 int mid_po_build(int la,int ra,int lb,int rb) // la,ra:表示中序遍历 lb,rb:表示后序遍历 { if(la>ra) return 0; int rt=po[rb]; // 因为后序遍历最后一个是根节点 int p1=la,p2; while(mid[p1]!=rt) p1++; // 在中序遍历中找到根节点 p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); // 左子树(锁定左子树范围的下标) T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); // 右子树(锁定右子树范围的下标) return rt; } // 求树高 int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } // 层序遍历 void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a); using namespace std; typedef long long ll; const int maxn=50; int mid[maxn],po[maxn],pr[maxn]; int first; struct node { int l,r; }T[maxn]; int mid_pr_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=pr[lb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_pr_build(la,p1-1,lb+1,lb+p2); T[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb); return rt; } int mid_po_build(int la,int ra,int lb,int rb) { if(la>ra) return 0; int rt=po[rb]; int p1=la,p2; while(mid[p1]!=rt) p1++; p2=p1-la; T[rt].l=mid_po_build(la,p1-1,lb,lb+p2-1); T[rt].r=mid_po_build(p1+1,ra,lb+p2,rb-1); return rt; } int getHeight(int rt) { if(rt==0) return 0; return 1+max(getHeight(T[rt].l),getHeight(T[rt].r)); } void bfs(int rt) { queue q; vector v; q.push(rt); while(!q.empty()) { int w=q.front(); q.pop(); v.push_back(w); if(T[w].l!=0) q.push(T[w].l); if(T[w].r!=0) q.push(T[w].r); } int len=v.size(); for(int i=0;i #include #define mem(a,b) memset(a,b,sizeof a) #define ssclr(ss) ss.clear(), ss.str(\"\") #define INF 0x3f3f3f3f #define MOD 1000000007 using namespace std; typedef long long ll; const int maxn=5e4+1000; int f; int pre[maxn], in[maxn]; struct node { int l,r,d; }T[maxn]; int create(int l1,int r1,int l2,int r2) // in pre { if(l2>r2) return -1; int rt=l2; int p1=l1,p2; while(in[p1]!=pre[rt]) p1++; p2=p1-l1; T[rt].d=pre[rt]; T[rt].l=create(l1,p1-1,l2+1,l2+p2); T[rt].r=create(p1+1,r1,l2+p2+1,r2); return rt; } void postT(int rt) { if(rt==-1 || !f) return; postT(T[rt].l); postT(T[rt].r); if(f) f=0, printf(\"%d\\n\",T[rt].d); } int main() { int n; scanf(\"%d\",&n); for(int i=0;i a(10,3); // 定义一个长度为10的vector,初始化为3; a.size(); // vector的size,所有容器都有 a.empty(); // 范围vector是否为空,所有容器都有 a.clear(); // 清空 a.front(); // 第一个数 a.back(); // 最后一个数 a.push_back(); // 在最后插入一个数 a.pop_back(); // 删除最后一个数 // vector支持比较运算 vector a(4,3),b(3,4); if(a > b) cout << \"Yes\"; else cout << \"No\"","s":"vector","u":"/docs/Algorithms/STL模板","h":"#vector","p":95},{"i":100,"t":"pair a; a = {20,\"abc\"}; a.first(); // 获取第一个元素 a.second(); // 获取第二个元素 // pair也能进行sort","s":"pair","u":"/docs/Algorithms/STL模板","h":"#pair","p":95},{"i":102,"t":"string a = \"Acwing\"; a.size(); // 获取string的大小 a.empty(); // 判断是否为空 a.clear(); // 清空 a += \"def\"; cout << a. substr(1,2) << endl; // 第一个参数起始位置,第二个参数是字符串长度","s":"string","u":"/docs/Algorithms/STL模板","h":"#string","p":95},{"i":104,"t":"query a; a.size(); a.empty(); a.push(1); // 队尾插入元素 a.front(); // 返回队头元素 a.back(); // 返回队尾元素 a.pop(); // 删除队头元素","s":"query","u":"/docs/Algorithms/STL模板","h":"#query","p":95},{"i":106,"t":"// 默认是大根堆 priority_queue heap; heap.clear(); heap.size(); heap.empty(); // 如何定义一个小根堆: 1. 插入负数 2. 直接定义 heap.push(-x); // 黑科技方法 priority_queue,greater> q;","s":"priority_queue","u":"/docs/Algorithms/STL模板","h":"#priority_queue","p":95},{"i":108,"t":"stack s; s.size(); s.empty(); s.push(); s.top(); s.pop();","s":"stack","u":"/docs/Algorithms/STL模板","h":"#stack","p":95},{"i":110,"t":"deque a; a.size(); a.empty(); a.clear(); a.front(); a.back(); a.push_back(); a.pop_back();","s":"deque","u":"/docs/Algorithms/STL模板","h":"#deque","p":95},{"i":112,"t":"set s; // 不能有重复元素 // s.begin()/end() multiset MS; // 可以有重复元素 s.insert(1); 插入一个数 s.size(); s.empty(); s.clear(); s.find(1); // 查找一个元素,如果不存在的话返回end迭代器 s.erase(1); // 输入是一个数x,输出所有x (2)输入一个迭代器,删除这个迭代器 // set 最核心的操作 s.lower_bound(); // 范围大于等于x的最小的数 s.upper_bound(); // 返回大于x的最小的数","s":"set/multiset","u":"/docs/Algorithms/STL模板","h":"#setmultiset","p":95},{"i":114,"t":"#include // 和python里面的字典非常的相似 map a; a[\"2\"] = 3; a.insert({\"1\",1}); a.erase({\"1\",1}); a.find({\"1\",1}); unordered_set, unordered_map, unordered_multiset, unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound()这样的操作 (哈希表的内部是无序的)","s":"map/multimap","u":"/docs/Algorithms/STL模板","h":"#mapmultimap","p":95},{"i":116,"t":"可以省下来8位的空间 bitset<10000> s; // 支持所有的基本操作: // 移位操作:<< >> // == != // count() 返回有多少个1 // any() 判断是否至少有一个1 // none() 判断是否全为0 // set(),把所有为置为1 // set(k,v), 将第k个变为v // reset(), 把所有位变成0 // flip(), 把所有位取反","s":"biset","u":"/docs/Algorithms/STL模板","h":"#biset","p":95},{"i":120,"t":"词法分析:分析输入串如何构成句子,得到单词序列 语法分析:分析单词序列如何构成程序,构造语法分析树 语义分析:审查语义错误,为代码生成收集类型信息 中间代码生成 代码优化 目标代码生成 表管理、错误检查和处理贯穿整个过程","s":"1.1 编译程序的逻辑结构","u":"/docs/Curriculum/编译原理/Note","h":"#11-编译程序的逻辑结构","p":117},{"i":122,"t":"前端是指与源语言有关、与目标机无关的部分 如词法分析、语法分析、语义分析、中间代码生成、代码优化中与机器无关的部分 后端是指与目标机有关的部分 如代码优化中与机器有关的部分、目标代码的生成","s":"1.2 前端和后端","u":"/docs/Curriculum/编译原理/Note","h":"#12-前端和后端","p":117},{"i":124,"t":"遍是指从头到尾扫描一遍源程序","s":"1.3 遍的概念","u":"/docs/Curriculum/编译原理/Note","h":"#13-遍的概念","p":117},{"i":127,"t":"若从文法的开始符号开始存在以下推导,则称α\\alphaα为该文法的一个句型,句型中既可以包含终结符,也可以包含非终结符,也可以是空串 S⇒∗α, α∈(VT∪VN)∗(1)S \\Rightarrow^* \\alpha,\\space \\alpha \\in (V_T \\cup V_N)^* \\tag{1}S⇒∗α, α∈(VT​∪VN​)∗(1)","s":"2.1 句型","u":"/docs/Curriculum/编译原理/Note","h":"#21-句型","p":117},{"i":129,"t":"S⇒∗β, β∈VT∗(2)S \\Rightarrow^* \\beta,\\space \\beta \\in V_T^* \\tag{2}S⇒∗β, β∈VT∗​(2) 则称β\\betaβ是该文法的句子","s":"2.2 句子:","u":"/docs/Curriculum/编译原理/Note","h":"#22-句子","p":117},{"i":131,"t":"0型文法,又称无限制文法、短语文法 1型文法,又称文有关文法 2型文法,又称上下文无关文法(Context-Free Grammar,CFG) 可用来构建语法树,语法树是上下文无关文法推导和规约的图形化表示 A→β, A∈VN, β∈(VT∪VN)∗(3)\\Alpha \\rightarrow \\beta,\\space \\Alpha \\in V_N, \\space \\beta \\in (V_T \\cup V_N)^* \\tag{3}A→β, A∈VN​, β∈(VT​∪VN​)∗(3) 3型文法,又称正规文法(Regular Grammar,RG) 左线性文法 右线性文法","s":"2.3 文法的分类:","u":"/docs/Curriculum/编译原理/Note","h":"#23-文法的分类","p":117},{"i":133,"t":"如果在推导的任何一步都是对产生式左部中的最左/右非终结符进行替换,则称为最左/右推导,其中最右推导也被成为规范推导","s":"2.4 最左/右推导:","u":"/docs/Curriculum/编译原理/Note","h":"#24-最左右推导","p":117},{"i":137,"t":"确定的有穷自动机(DFA) DFA的定义及组成 确定的含义:在状态转换的每一步,FA根据当前的状态及扫描的输入字符,便能唯一地知道FA的下一状态。 提示 在状态转换图中的直观体现就是,在确定行表示的当前状态以及列确定的路径后,得到的目的状态不会是元素个数大于1的集合。 DFA的可接受以及接受集的定义:从开始状态开始,经过该符号串表示的路径,若能到达终态则称该符号串可被改DFA接受。 不确定的有穷自动机(NFA) NFA的确定化,即将NFA转换为DFA(子集法) 步骤: 画出DFA转换表 提示 转换表中在状态一列中,状态包含原NFA终态的集合要标*,代表其为等价DFA的终态 计算move(T,a)move(T, a)move(T,a) 计算ϵ−closure(T)\\epsilon -closure(T)ϵ−closure(T) 为转换表中的状态重命名 确定初态和终态 DFA的最小化(分割法) 步骤如下: 提示 考试时注意过程怎么写,下面使用需要三轮分割的列子演示步骤 在分割完成后,对可以化简的集合选出一个状态作为代表,删除其他多余状态,重新画图","s":"3.2 有穷自动机(FA)","u":"/docs/Curriculum/编译原理/Note","h":"#32-有穷自动机fa","p":117},{"i":141,"t":"描述程序语法结构的规则可以使用2型文法(上下文无关语法,CFG) 语法分析方法包含确定的和不确定的分析方法,确定的语法分析方法根据输入符号,唯一选择产生式 确定的自顶向下分析方法:根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导","s":"第四章:自顶向下语法分析方法","u":"/docs/Curriculum/编译原理/Note","h":"#第四章自顶向下语法分析方法","p":117},{"i":144,"t":"提示 FOLLOW集的求法可以按照下图技巧进行 若要求的非终结符是开始符号,则直接将#插入FOLLOW集中 在所有产生式的右部中找到要求的非终结符 看非终结符的右侧是什么元素 若无元素,则直接将该产生式左部的FOLLOW集加入到该非终结符的FOLLOW集中 若为终结符,直接将该终结符加入到FOLLOW集中 若为非终结符,将FIRST(该非终结符)减去ϵ\\epsilonϵ的所有终结符元素都加入至FOLLOW集中","s":"2. Follow集的定义","u":"/docs/Curriculum/编译原理/Note","h":"#2-follow集的定义","p":117},{"i":146,"t":"提示 需要注意的是FIRST集、FOLLOW集是针对于符号串而言的,而SELECT集是针对于产生式而言的","s":"3. SELECT集的定义","u":"/docs/Curriculum/编译原理/Note","h":"#3-select集的定义","p":117},{"i":149,"t":"提示 考试时注意书写过程,需要画出以下两张表","s":"5. LL(1)文法的判别","u":"/docs/Curriculum/编译原理/Note","h":"#5-ll1文法的判别","p":117},{"i":151,"t":"预测分析表通过计算SELECT集得到,形如下表 行标为各非终结符,列标为输入符号,若从某一非终结符开始的产生式的SELECT集包含某一输入符号,则对应产生式就是行列确定的元素值。","s":"6. 预测分析表","u":"/docs/Curriculum/编译原理/Note","h":"#6-预测分析表","p":117},{"i":153,"t":"消除左公因子(回溯) 警告 同一非终结符的多个产生式存在共同前缀,会导致回溯现象,需要消除 消除左递归 警告 左递归文法会使递归下降分析器陷入无限循环 消除直接左递归 消除间接左递归 通过代入法变成直接左递归再消除","s":"7. 非LL(1)文法到LL(1)文法的等价变换","u":"/docs/Curriculum/编译原理/Note","h":"#7-非ll1文法到ll1文法的等价变换","p":117},{"i":156,"t":"从的底部向顶部的方向构造语法分析树,采用最左归约的方式,即最右推导的逆过程 提示 注意辨别:自顶向下的语法分析采用最左推导的方式 最右推导是规范推导,最左归约是最右推导的逆过程,又称规范归约","s":"5.1 概念","u":"/docs/Curriculum/编译原理/Note","h":"#51-概念","p":117},{"i":158,"t":"算符优先分析法 按照算符的优先关系和结合性质进行语法分析 LR分析法(重点) 规范规约:句柄作为可归约串","s":"5.2 方法","u":"/docs/Curriculum/编译原理/Note","h":"#52-方法","p":117},{"i":161,"t":"移入:将下一个输入符号移到栈顶 归约:被归约的符号串的右端处于栈顶,语法分析器在栈中确定这个串的左端非终结符来替换该串 接受:宣布语法分析过程成功完成 报错:发现一个语法错误,并调用错误恢复子程序","s":"5.4 移入-归约分析器的4种动作","u":"/docs/Curriculum/编译原理/Note","h":"#54-移入-归约分析器的4种动作","p":117},{"i":163,"t":"前导知识:4种项目状态 归约项目:·在最后 接受项目:拓广文法的开始符号的产生式,且·在最后 移进项目:·后面是终结符VTV_TVT​ 待约项目:·后面是非终结符VNV_NVN​ 移入-归约分析 LR(0)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1pL4y1E7RE/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,action的每一列都要写 SLR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV12u411S7Us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在写预测分析表的reduce项时,只写产生式左部的FOLLOW集对应的action列 LR(1)分析表 / 构造其识别活前缀DFA https://www.bilibili.com/video/BV1Vm4y1Q7XB/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533 在构造项目集时,要加入前向搜索符;并且,在写预测分析表的reduce项时只写前向搜索符对应的action列 LALR(1)分析表 / 构造其识别活前缀DFA 在构造项目集时,要加入前向搜索符,但是要合并同心集,把相同表达式但是不同前向搜索符的前向搜索符合并,并且在写预测分析表的reduce项时只写前向搜索符集对应的action列 https://www.bilibili.com/video/BV13r4y1m7sQ/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533","s":"5.5 重要题型","u":"/docs/Curriculum/编译原理/Note","h":"#55-重要题型","p":117},{"i":166,"t":"词法分析:从左到右扫描源程序,识别出各个单词,确定单词类型并形成单词序列,进行词法错误检查,对标识符进行登记,即符号表管理 语法分析:从词法分析输出的单词序列识别出各类短语,构造语法分析树,并进行语法错误检查 语义分析:审查程序是否具有语义错误,为代码生成阶段收集类型信息,不符合规范时报错(符号表是语义正确性检查的依据) 中间代码生成:生成中间代码,如三地址指令、四元式、波兰式、逆波兰式、树形结构等 代码优化:对代码进行等价变换以求提高执行效率,提高速度或节省空间 目标代码生成:将中间代码转化成目标机上的机器指令代码或汇编代码(符号表是对符号分配地址的依据)","s":"1 编译程序各阶段功能","u":"/docs/Curriculum/编译原理/Note","h":"#1-编译程序各阶段功能","p":117},{"i":168,"t":"就产生语法树的方向而言,可大致分为自顶向下的语法分析和自底向上的语法分析两大类。 自顶向下的语法分析方法:主流方法为递归下降分析法。根据当前的输入符号唯一地确定选用哪个产生式替换相应的非终结符以往下推导。 自底向上的语法分析方法:将输入串w归约为文法开始符号S的过程。 提示 LR(0), SLR(1), LR(1) LR(0)文法可能存在移进-归约冲突、归约-归约冲突 SLR(1)文法在构造的过程中不存在归约-归约冲突,但有可能出现移进-归约冲突,可以由FOLLOW集解决的话则是SLR(1)文法","s":"2 语法分析方法的概念","u":"/docs/Curriculum/编译原理/Note","h":"#2-语法分析方法的概念","p":117},{"i":170,"t":"翻译模式是适合语法制导语义计算的另一种描述形式,可以体现一种合理调用语义动作的算法。 S-翻译模式: 仅涉及综合属性的翻译模式,通常将语义动作集合置于产生式右端末尾。 L-翻译模式: 既可以包含综合属性,也可以包含继承属性。","s":"3 翻译模式","u":"/docs/Curriculum/编译原理/Note","h":"#3-翻译模式","p":117},{"i":172,"t":"在文法基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作,称之为属性文法。 S-属性文法: 只包含综合属性的属性文法成为S-属性文法 L-属性文法: 可以包含综合属性,也可以包含继承属性,但要求产生式右部的文法符号的继承属性的计算只取决于该符号左边符号的属性","s":"4 属性文法","u":"/docs/Curriculum/编译原理/Note","h":"#4-属性文法","p":117},{"i":174,"t":"符号表是编译程序中用于收集标识符的属性信息的数据结构。 各阶段作用: 语义分析阶段:语义合法性检查的依据 目标代码生成阶段:对符号名进行地址分配的依据","s":"5 符号表","u":"/docs/Curriculum/编译原理/Note","h":"#5-符号表","p":117},{"i":176,"t":"在上一篇博客中我们完成了GeekOS环境的配置,下面我们来验证环境配置的成功与否以及project 0的实现。","s":"GeekOS project 0的实现","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"","p":175},{"i":178,"t":"编写geekos-version/src/projecti/src/geekos/main.c文件 编写函数project0实现检测键盘输入Ctrl+d结束线程。 void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios!---------\\n\"); # 这里需要注意素质 Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } 在main函数中添加以下代码,实现自定义函数的调用,创建线程。 struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); 总体代码 /* * GeekOS C code entry point * Copyright (c) 2001,2003,2004 David H. Hovemeyer * Copyright (c) 2003, Jeffrey K. Hollingsworth * Copyright (c) 2004, Iulian Neamtiu * $Revision: 1.51 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file \"COPYING\". */ #include #include #include #include #include #include #include #include #include #include #include void project0(){ Print(\"To Exit hit Ctrl + d.\\n\"); Keycode keycode; while(1) { if(Read_Key(&keycode)) { if(!((keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)))// 不是特殊键或者弹起 { int asciiCode = keycode & 0xff;//d if((keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')//ctrl+d { Print(\"\\n---------Adios! Motherfucker!---------\\n\"); Exit(1); }else { Print(\"%c\",(asciiCode=='\\r') ? '\\n' : asciiCode); } } } } } /* * Kernel C code entry point. * Initializes kernel subsystems, mounts filesystems, * and spawns init process. */ void Main(struct Boot_Info* bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); Init_TSS(); Init_Interrupts(); Init_Scheduler(); Init_Traps(); Init_Timer(); Init_Keyboard(); Set_Current_Attr(ATTRIB(BLACK, GREEN|BRIGHT)); Print(\"Welcome to GeekOS!\\n\"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); // TODO(\"Start a kernel thread to echo pressed keys and print counts\"); struct Kernel_Thread *thread; thread = Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false); /* Now this thread is done. */ Exit(0); }","s":"编写C语言代码","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#编写c语言代码","p":175},{"i":180,"t":"每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行,即要在终端中通过cd进入该目录。 执行 make depend make 此时,该目录下会生成bochs.out、depend.mak以及fd.img文件,bochs.out文件是日志输出文件,depend.mak是编译中间生成的文件,最终生成的fd.img是最重要的GeekOS映像文件,有了它才能使用bochs运行GeekOS操作系统。感恩它! 目录下的文件应该是这样的结构: 下面就可以使用bochs运行GeekOS系统了,可以说bochs的运行依赖两个文件,一个是配置文件.bochsrc,一个是映像文件fd.img,映像文件的加载路径需要在.bochsrc文件中定义,在环境配置的博客中已经介绍过了。这里再贴一下内容。 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 在这个目录下打开终端,执行 bochs 选择6,按下回车 可能会出现黑屏情况,这是因为进入了调试模式,终端正在等待命令,在终端输入 c 即可完成bochs的正式启动,最终的效果","s":"使用Linux的编译系统对C语言代码进行编译","u":"/docs/Curriculum/操作系统课设/GeekOS-project-0","h":"#使用linux的编译系统对c语言代码进行编译","p":175},{"i":184,"t":"GeekOS是一个基于x86体系结构的微操作系统内核. 由美国马理兰大学的教师开发, 主要用于操作系统课程设计的教育. 出于教学目的, 这个系统内核设计简单, 却又兼备实用性, 它可以运行在真正的X86 PC硬件平台. 在下载好GeekOS后, 在geekos-version/src/目录下会存在project0-project6这7个文件夹, 分别代表GeekOS设计的7个学习任务. 在环境搭建完成之后, 我们进行的每一个项目的代码编写几乎都在geekos-version/src/projecti/src/geekos/文件夹下, 每一个项目的编译都在geekos-version/src/projecti/build文件夹下进行, 即要在终端中通过cd进入该目录, 再执行make depend和make命令.","s":"GeekOS:","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#geekos","p":181},{"i":186,"t":"bochs是一个x86硬件平台的模拟器. GeekOS运行依托于bochs. 在安装好Linux操作系统后需要安装bochs以及nasm, 以完成GeekOS环境的搭建.","s":"bochs:","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#bochs","p":181},{"i":188,"t":"GeekOS的开发环境可分为两部分, 一部分是编译环境, 一部分是运行环境. 在编译过程中, 使用Linux自带的编译环境以及编译命令对特定的GeekOS project进行编译即可. 首先在终端中通过cd命令进入geekos-version/src/projecti/build目录, 再执行make depend和make命令. 编译后生成bochs的镜像文件fd.img, 这是bochs运行所必须的文件,也是GeekOS运行环境的前置配置.","s":"二者之间的关系","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#二者之间的关系","p":181},{"i":190,"t":"安装其实非常简单, 这里主要花篇幅介绍安装后解决报错的配置.","s":"安装与配置","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装与配置","p":181},{"i":192,"t":"需要下载GeekOS Files, 安装bochs, nasm等. GeekOS直接下载压缩包, 解压即可. arch系用户通过以下命令即可完成bochs和nasm的安装. yay -S bochs nasm 其他发行版的安装方法这里不再赘述, 可选择从群文件里下载源文件并编译安装, 师兄师姐也在群文件里给了一些教程指导.","s":"安装","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#安装","p":181},{"i":194,"t":"完成安装后, 我们就可以开始对project0中的代码进行完善了, 并在geekos-version/src/project0/build目录下执行make depend以及make命令, 目的是编译project0的代码, 生成bochs的镜像文件fd.img以构建GeekOS的运行环境. 但很多报错就是在make这一步产生的, 因此在安装完成后还需要进行配置. 配置分为两部分, 一个是对GeekOS中makefile的修改, 另一部分是对bochs的配置文件的修改. GeekOS中makefile的配置​ 综合网上很多师兄师姐的博客,这三个错误应该是每个人都会遇到的,所以当你不确定自己能不能运行时,请全部完成这三个步骤. 问题: warnings being treated as errors 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefile文件, 所以在每个项目编译前都要修改一次) // 修改第149行: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror // 修改后: CC_GENERAL_OPTS := $(GENERAL_OPTS) 问题: X86_64与i386输出不兼容 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Target C compiler. gcc 2.95.2 or later should work. 100行 TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32 # Host C compiler. This is used to compile programs to execute on # the host platform, not the target (x86) platform. On x86/ELF # systems, such as Linux and FreeBSD, it can generally be the same # as the target C compiler. 106行 HOST_CC := gcc -m32 # Target linker. GNU ld is probably to only one that will work.109行 TARGET_LD := $(TARGET_CC_PREFIX)ld -m elf_i386 问题: undefined reference to '__stack_chk_fail' 解决方案: 修改geekos-version/src/projecti/build目录下的makefie文件 # Flags used for all C source files // 修改前:148行 GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) // 修改后: GENERAL_OPTS := -O -Wall -fno-stack-protector $(EXTRA_C_OPTS) bochs配置文件的修改​ 在geekos-version/src/projecti/build目录下创建.bochsrc文件 # An example .bochsrc file. # You will need to edit these lines to reflect your system. vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest # 请根据自己的实际安装路径更改 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest # 请根据自己的实际安装路径更改 megs: 8 boot: a floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out # keyboard_serial_delay: 200 # vga_update_interval: 300000 mouse: enabled=0 private_colormap: enabled=0 # i440fxsupport: enabled=0 # Uncomment this to write all bochs debugging messages to # bochs.out. This produces a lot of output, but can be very # useful for debugging the kernel. #debug: action=report 到此为止, 所有的配置工作已经完成, 可以正常的进行下一步的代码完善. 如果需要验证自己是否配置成功, 可以参照下一篇博客GeekOS project 0的实现, 在本篇博客中会有完整的C语言代码编写以及编译、使用bochs执行的过程.","s":"配置","u":"/docs/Curriculum/操作系统课设/Environment-Configuration","h":"#配置","p":181},{"i":196,"t":"提示 欢迎来到笔记本的课程学习部分","s":"Welcome","u":"/docs/Curriculum/intro","h":"","p":195},{"i":198,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Curriculum/intro","h":"#支持我","p":195},{"i":200,"t":"提示 在以前的文章图像生成模型中已经大概介绍了目前SOTA的图像生成模型的共同点,并初步了解了Diffusion Model,在这篇文章中将详细讲解扩散模型的数学原理等。","s":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"","p":199},{"i":202,"t":"首先回顾一下扩散模型的基本概念和生成过程,可以大概分为两步: Forward Process:对训练集中的图片不断加入与图片shape相同的、从某随机分布中sample出的噪声,直至图片可以被认为是从该随机分布中sample出的矩阵。 Forward Process又叫做Diffusion Process,在这一步中产生的噪声-加入噪声的图像对可以用来训练Noise Predictor,即从有噪声的图像中预测出其中的噪声,再从输入中减去噪声得到降噪后的图片。 图像生成的原理 这一步的目的也同样在之前的文章图像生成模型中提到过:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。 Reverse Process:使用Diffusion Process训练的Noise Predictor,根据文字Prompt对从随机分布中sample出的图片大小的噪声图片进行降噪,得到原图。 值得注意的是,变分自编码器(Variational Auto-Encoder, abbr. VAE)与Diffusion Model非常相似:VAE对训练集中的原始图像使用Encoder将其变换为某种Latent Representation,这种Latent Representation的分布也是符合某种随机分布的,VAE再通过Decoder将期待生成的目标域图像还原出来。 在下面的文章中我们也会学习一下VAE的数学原理,从VAE到Diffusion Model的具体数学推导,可以参考胡老师推荐的论文Understanding Diffusion Models: A Unified Perspective。 下面我们以DDPM论文中的原图来分析DDPM的训练与推理过程。","s":"基本概念","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#基本概念","p":199},{"i":204,"t":"循环开始,重复以下步骤; 首先从数据集中sample出原始图像x0\\mathbf{x}_0x0​; ttt是从1,…,T1,\\ldots,T1,…,T范围中sample出的一个integer; ϵ\\epsilonϵ是从Normal Distribution中sample出的与x0\\mathbf{x}_0x0​相同大小的噪声; 根据如下规则进行梯度下降,训练Noise Predictor: ∇θ∥ϵ−ϵθ(αˉtx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon}-\\boldsymbol{\\epsilon}_{\\theta}(\\sqrt{\\bar{\\alpha}_{t}}\\mathbf{x}_{0}+\\sqrt{1-\\bar{\\alpha}_{t}}\\boldsymbol{\\epsilon},t)\\right\\|^{2}\\tag{1}∇θ​∥∥​ϵ−ϵθ​(αˉt​​x0​+1−αˉt​​ϵ,t)∥∥​2(1) 首先对x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​做weighted sum产生加入噪声后的图像。通常来说,αˉ1\\bar{\\alpha}_1αˉ1​至αˉT\\bar{\\alpha}_TαˉT​是递减的,当在第2步中sample到的ttt越大,则原始图像x0\\mathbf{x}_0x0​对新图像的贡献越大。 ϵθ\\epsilon_{\\theta}ϵθ​是Noise Predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的Ground Truth就是第3步中sample出的噪声ϵ\\epsilonϵ; 直至噪声预测模型ϵθ\\epsilon_\\thetaϵθ​训练至收敛。","s":"训练过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#训练过程","p":199},{"i":206,"t":"从Normal Distribution中sample出图片大小的噪声xT\\mathbf{x}_TxT​; ttt从T,…,1T,\\ldots,1T,…,1范围循环TTT次; 对与每一次以ttt计数的循环,若t>1t>1t>1,则从Normal Distribution中sample出z\\mathbf{z}z,否则z=0\\mathbf{z}=\\mathbf{0}z=0; 根据如下公式得到降噪后的图像: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtz(2)\\mathbf{x}_{t-1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t}-\\frac{1-\\alpha_{t}}{\\sqrt{1-\\bar{\\alpha}_{t}}}\\boldsymbol{\\epsilon}_{\\theta}(\\mathbf{x}_{t},t)\\right)+\\sigma_{t}\\mathbf{z}\\tag{2}xt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​,t))+σt​z(2) 其中,xt\\mathbf{x}_txt​代表上一步骤中输出的降噪后的图像,xt−1\\mathbf{x}_{t-1}xt−1​代表当前步骤即将输出的降噪后的图像,ϵθ\\epsilon_\\thetaϵθ​代表Noise Predictor预测出的噪声,αˉ1,αˉ2,...αˉT\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_Tαˉ1​,αˉ2​,...αˉT​以及α1,α2,...αT\\alpha_1,\\alpha_2,...\\alpha_Tα1​,α2​,...αT​是两组权重序列; 结束本次for循环; 当t=1t=1t=1时,得到x0\\mathbf{x}_0x0​,即最终降噪后的图像。","s":"推理过程","u":"/docs/Deep-Learning/大模型基础/Diffusion-Model","h":"#推理过程","p":199},{"i":208,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"","p":207},{"i":210,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构","p":207},{"i":213,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#整体结构-1","p":207},{"i":215,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":207},{"i":217,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#具体结构","p":207},{"i":219,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#decoder","p":207},{"i":221,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 提示 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":207},{"i":225,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#损失函数","p":207},{"i":227,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing","p":207},{"i":229,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":207},{"i":231,"t":"正确发音 How to pronounce Adversarial? /ˌædvərˈseriəl/","s":"生成式对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"","p":230},{"i":234,"t":"生成器(Generator)通常接收一个来自潜在空间(latent space)的随机向量作为输入。这个潜在空间通常是一个随机分布,比如均匀分布或正态分布。生成器的任务是将这个随机向量映射成与训练数据相似的样本。","s":"将随机分布作为输入","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#将随机分布作为输入","p":230},{"i":236,"t":"当需要解决的任务需要富有“创造力”时,即根据不同的输入,可以产生多个不一样且正确的输出时。这样的设计使得生成器能够生成多样性的样本,因为每个不同的随机向量都可能导致生成器输出不同的样本。在训练过程中,通过不断调整生成器的参数,使得生成器的输出在数据分布中更难以被判别器区分。","s":"为什么要添加分布","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#为什么要添加分布","p":230},{"i":238,"t":"GAN的工作原理: 生成器生成数据: 生成器从潜在空间中采样并生成一些数据。 真实数据与生成数据进入判别器: 真实数据和生成器生成的数据一起输入判别器。 判别器训练: 判别器被训练来正确分类真实数据和生成数据。 生成器训练: 生成器被训练来生成能够欺骗判别器的数据。生成器的目标是生成足够逼真的数据,以至于判别器无法准确区分真假。 迭代: 生成器和判别器交替训练,迭代进行,直到生成器生成的数据足够逼真。 训练的目标: 生成器目标: 生成更逼真的数据,以欺骗判别器。 判别器目标: 区分真实数据和生成数据,提高对真实数据的分类准确性。 GAN的训练是一个博弈过程,生成器和判别器相互竞争,最终达到平衡,生成器生成的数据足够逼真,判别器也无法准确判别真伪。这种模型在图像生成、风格转换等任务中取得了显著的成功。","s":"核心思想","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#核心思想","p":230},{"i":240,"t":"GAN(Generative Adversarial Network,生成对抗网络)包括两个主要的组件:生成器(Generator)和判别器(Discriminator)。这两个组件通过对抗训练的方式一起学习。 生成器(Generator): 它负责生成与训练数据相似的新样本。生成器接收来自潜在空间(latent space)的随机向量作为输入,并输出一个与训练数据类似的样本。生成器的目标是欺骗判别器,使其无法区分生成的样本和真实的训练数据。 判别器(Discriminator): 它负责判别输入的样本是真实的训练数据还是生成器生成的假样本。判别器的目标是尽可能准确地分类输入的样本。 GAN的核心思想是通过对抗过程训练生成器和判别器,不断提高它们的性能。生成器试图生成逼真的样本,而判别器试图正确地区分真实样本和生成样本。这个对抗的训练过程可以被视为在两个分布之间进行的最优控制。","s":"具体结构与作用","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#具体结构与作用","p":230},{"i":242,"t":"结构: 生成器是一个神经网络,通常是一个反卷积神经网络(Generator Network),其输入通常是一个随机噪声(潜在空间中的点),输出是与训练数据相似的图像或数据。 作用: 生成器的目标是学习生成与真实数据相似的数据。通过迭代训练,生成器的参数被调整,使其生成的数据能够愈发逼真。 Unconditional Generation​ Unconditional generation(无条件生成)指的是在生成模型中生成样本时,不受任何条件的约束。在这种情况下,生成器仅根据其学到的分布生成数据,而无需关注特定的输入条件或上下文。 对于生成对抗网络(GAN)或变分自动编码器(VAE)等生成模型,unconditional generation通常表现为从潜在空间中采样,然后将这些样本输入生成器,以生成新的、与训练数据相似的样本。这种生成方式是随机的,因为每次从潜在空间中采样都会导致生成不同的样本。 Conditional Generation​","s":"生成器(Generator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#生成器generator","p":230},{"i":244,"t":"结构: 判别器是一个二元分类器,通常是一个卷积神经网络(Discriminator Network)。它的输入可以是真实数据或生成器生成的数据,输出是一个概率,表示输入数据是真实数据的概率。 作用: 判别器的目标是学习区分真实数据和生成器生成的数据。它被训练成对真实数据给出高概率,对生成的数据给出低概率。","s":"判别器(Discriminator)","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#判别器discriminator","p":230},{"i":246,"t":"首先随机初始化生成器和判别器,接下来在每一轮训练中重复以下策略。 第一步,在生成器通过随机噪声神生成样本后,固定生成器的参数,将生成器产生的输出与训练资料中的标签作为判别器的输入,判别器为每个输入样本打分,代表其为真实样本的概率。 为了最小化损失函数使得判别器为真实样本赋分更高,为生成样本赋分更低,设计以下损失函数: Lossreal=−Ex∼pdata(x)[log⁡D(x)](1)Loss_{real}=-E_{x\\sim p_\\text{data}{(x)}}[\\log D(x)]\\tag{1}Lossreal​=−Ex∼pdata​(x)​[logD(x)](1) 其中,D(x)D(x)D(x)是判别器的输出,xxx是真实样本,EEE是数学期望。 Lossfake=−Ez∼pz(z)[log(1−D(G(z)))](2)Loss_{fake}=-E_{z\\sim p_z(z)}[log(1-D(G(z)))]\\tag{2}Lossfake​=−Ez∼pz​(z)​[log(1−D(G(z)))](2) 其中,G(z)G(z)G(z)是生成器的输出,zzz是随机噪声,EEE是数学期望。 将真实样本和生成样本的损失相加,形成判别器的总体损失。 Lossdiscriminator=Lossreal+Lossfake(3)Loss_{discriminator}=Loss_{real}+Loss_{fake}\\tag{3}Lossdiscriminator​=Lossreal​+Lossfake​(3) 最小化损失函数,更新判别器的参数。 第二步,在判别器参数更新后,固定判别器的参数,随机分布的向量再次输入至生成器中,得到生成样本,此时生成样本被送入参数固定的判别器中得到生成样本属于真实样本的概率。在生成器的训练过程中,我们的目的是让生成器生成的样本尽可能的接近真实样本。 LG=−Ez∼pz(z)[log⁡D(G(z))](4)L_G=-E_{z\\sim p_z(z)}[\\log D(G(z))]\\tag{4}LG​=−Ez∼pz​(z)​[logD(G(z))](4) 其中,G(z)G(z)G(z)是生成器的输出,D(G(z))D(G(z))D(G(z))是生成样本输入到判别器后的输出,zzz是随机噪声,EEE是数学期望。","s":"训练算法","u":"/docs/Deep-Learning/大模型基础/GAN","h":"#训练算法","p":230},{"i":248,"t":"提示 本笔记使用的教材是陈天华所著、清华大学出版社的《数字图像处理及应用:使用MATLAB分析与实现》。 Take me to church, I'll worship like a dog at the shrine of your lies. I'll tell you my sins, and you can sharpen your knife. Offer me that deathless death, good god, let me give you my life.","s":"数字图像处理复习笔记","u":"/docs/Curriculum/数字图像处理/Note","h":"","p":247},{"i":251,"t":"为了从模拟图像产生数字图像,需要进行采样与量化,即对模拟图像在空间(x,y)(x, y)(x,y)方向上以及亮度函数f(x,y)f(x, y)f(x,y)进行离散化处理。 采样: 模拟图像在空间(x,y)(x, y)(x,y)上的离散化称为采样。 若在x和y方向上均进行等间距的采样,则称为均匀采样。 采样点的多少以及采样的间隔直接影响着图像的质量。 量化: 模拟图像经过采样后,在时间和空间上被离散化为像素,但采样所得的像素点的像素值依然是连续量。量化过程就是以离散的灰度值信息代替连续的模拟量灰度信息的过程,是一对多的过程。 量化可以分为线性量化以及非线性量化。 灰度级一般以2的整数次幂表示,如大多图像为彩色RGB图像,256个灰度级,位深度为8(28=2562^8=25628=256),则对于分辨率为256×256的图像来说,需要256×256×3×8位表示,即每一个像素实际上使用24位表示。","s":"图像的采样与量化","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像的采样与量化","p":247},{"i":253,"t":"4邻域N4(p)N_4(p)N4​(p)即该像素上下左右的四个点,8邻域N8(p)N_8(p)N8​(p),对角邻域ND(p)N_D(p)ND​(p)。 像素之间的距离度量必须满足三种关系: 非负性 对称性 三角不等式 三种距离度量: 已知,点ppp的坐标为(x,y)(x, y)(x,y),点qqq的坐标为(s,t)(s,t)(s,t)。 欧氏距离: De(p,q)=(x−s)2+(y−t)2(1)D_e(p,q)=\\sqrt{(x-s)^2+(y-t)^2}\\tag{1}De​(p,q)=(x−s)2+(y−t)2​(1) 城市距离 D4(p,q)=∣x−s∣+∣y−t∣(2)D_4(p,q)=\\vert x-s\\vert+\\vert y-t\\vert \\tag{2}D4​(p,q)=∣x−s∣+∣y−t∣(2) 棋盘距离 D8(p,q)=max(∣x−s∣,∣y−t∣)(3)D_8(p,q)=max(\\vert x-s\\vert,\\vert y-t\\vert)\\tag{3}D8​(p,q)=max(∣x−s∣,∣y−t∣)(3)","s":"距离度量","u":"/docs/Curriculum/数字图像处理/Note","h":"#距离度量","p":247},{"i":255,"t":"MSE越小代表待测图像与参考图像越接近,均方误差公式如下: MSE=1MN∑x=1M∑y=1N[f(x,y)−g(x,y)]2(4)MSE=\\frac{1}{MN}\\sum_{x=1}^{M}\\sum_{y=1}^{N}[f(x,y)-g(x,y)]^2\\tag{4}MSE=MN1​x=1∑M​y=1∑N​[f(x,y)−g(x,y)]2(4) SNR:参考图像像素值的平方均值与均方误差的比值的对数的10倍。越大代表图像质量越好 PSNR:峰值信噪比,图像所允许的最大像素值的平方与均方误差的比值的对数的10倍,这是信噪比的改良版本,消除了图像自身像素值对评价指标的影响。越大代表图像质量越好 SSIM为结构相似系数,越大代表图像质量越好","s":"图像质量评价","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像质量评价","p":247},{"i":259,"t":"可以使用傅里叶变换的函数需要满足狄利克莱条件(Dirichlet Condition): 具有有限个间断点 具有有限个极值点 绝对可积 傅里叶变换的特性: 信息 傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 连续傅里叶变换​ 一维连续傅里叶变换 F(u)=∫−∞+∞f(x)e−j2πuxdx(5)F(u)=\\int_{-\\infty}^{+\\infty}f(x)e^{-j2\\pi ux}dx\\tag{5}F(u)=∫−∞+∞​f(x)e−j2πuxdx(5) 一维连续傅里叶逆变换 f(x)=∫−∞∞F(u)ej2πuxdu(6)f(x)=\\int_{-\\infty}^{\\infty}F(u)e^{j2\\pi ux}du\\tag{6}f(x)=∫−∞∞​F(u)ej2πuxdu(6) 二维连续傅里叶变换 F(u,v)=∫−∞∞∫−∞∞f(x,y)e−j2π(ux+vy)dxdy(7)F(u,v)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}f(x,y)e^{-j2\\pi (ux+vy)}dxdy\\tag{7}F(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7) 二维连续傅里叶逆变换 f(x,y)=∫−∞∞∫−∞∞F(u,v)ej2π(ux+vy)dudv(8)f(x,y)=\\int_{-\\infty}^{\\infty}\\int_{-\\infty}^{\\infty}F(u,v)e^{j2\\pi (ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​F(u,v)ej2π(ux+vy)dudv(8) 离散傅里叶变换​ 一维离散傅里叶变换 F(u)=∑x=0N−1f(x)e−j2πuxN(9)F(u)=\\sum_{x=0}^{N-1}f(x)e^{-j\\frac{2\\pi ux}{N}}\\tag{9}F(u)=x=0∑N−1​f(x)e−jN2πux​(9) 一维离散傅里叶逆变换 f(x)=1N∑u=0N−1F(u)ej2πuxN(10)f(x)=\\frac{1}{N}\\sum_{u=0}^{N-1}F(u)e^{j\\frac{2\\pi ux}{N}}\\tag{10}f(x)=N1​u=0∑N−1​F(u)ejN2πux​(10) 二维离散傅里叶变换 F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−j2π(uxM+vyN)(11)F(u,v)=\\sum_{x=0}^{M-1}\\sum_{y=0}^{N-1}f(x,y)e^{-j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{11}F(u,v)=x=0∑M−1​y=0∑N−1​f(x,y)e−j2π(Mux​+Nvy​)(11) 二维离散傅里叶逆变换 f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(uxM+vyN)(12)f(x,y)=\\frac{1}{MN}\\sum_{u=0}^{M-1}\\sum_{v=0}^{N-1}F(u,v)e^{j2\\pi (\\frac{ux}{M}+\\frac{vy}{N})}\\tag{12}f(x,y)=MN1​u=0∑M−1​v=0∑N−1​F(u,v)ej2π(Mux​+Nvy​)(12)","s":"傅里叶变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#傅里叶变换","p":247},{"i":262,"t":"下图展示了点运算的主要应用:对比度拉伸 主要应用: 对比度拉伸 光度学标定 显示标定 轮廓线 裁剪","s":"点运算","u":"/docs/Curriculum/数字图像处理/Note","h":"#点运算","p":247},{"i":264,"t":"使用齐次坐标对图像进行比例缩放。 全比例缩放是指x方向和y方向使用相同的比例系数。 当对图像进行放大时,会产生之前没有的像素,此时需要使用插值来解决。","s":"比例缩放","u":"/docs/Curriculum/数字图像处理/Note","h":"#比例缩放","p":247},{"i":266,"t":"最近邻法插值​ 双线性插值(Bilinear)​ 例题:","s":"灰度级插值","u":"/docs/Curriculum/数字图像处理/Note","h":"#灰度级插值","p":247},{"i":269,"t":"线性变换​ 是指将输入图像的灰度值的动态范围按线性关系变换至指定范围或灰度的整个动态范围。 按比例线性变换 均匀线性变换 限幅线性变换 分段线性拉伸 非线性变换​ 对数拉伸可以拉伸低亮度区域,压缩高亮度区域。 指数拉伸可以拉伸高亮度区域,压缩低亮度区域。 注意,上述的拉伸是指新的图像在该灰度范围内分布的更均匀,即出现的灰度级更多;压缩的意义是指新的图像在该灰度范围内分布的更狭窄,即出现的灰度级更少。 例题: 答:该图像存在较亮的问题,灰度直方图分布在较高的区域。从直接灰度变换增强法的角度,我们可以采用指数函数变换,对高灰度区进行扩展。 提示 分析:该图像中没有低灰度的像素,全部集中在高灰度部分,因此使用指数函数变换将原来的集中的高灰度区域进行拉伸,扩展其灰度分布的范围,从而起到增强效果。","s":"直接灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直接灰度变换","p":247},{"i":271,"t":"直方图均衡化​ 目的: 将一非均匀灰度概率密度分布的图像,通过某种灰度变换,将其变成一幅具有均匀灰度概率密度分布的目的图像。 步骤: 根据原始图像计算原始灰度密度分布函数rkr_krk​ 计算变换函数,即累积密度分布函数sks_ksk​ 计算均衡化后的灰度级s(k)s(k)s(k),即使用以下公式进行均衡化映射: s(k)=ceil(sk×L−1)(13)s(k)=\\mathbf{ceil}(s_k\\times L-1)\\tag{13}s(k)=ceil(sk​×L−1)(13) 其中,LLL是原直方图中灰度级数。 画出最终均衡化后的直方图 例题: 直方图规定化​ 目的: 调整原始图像的直方图使其符合某一规定的直方图的要求。 思想: 将原始图像和规定图像进行均衡化后,二者的灰度概率密度分布相同,进行对应映射即可。 步骤: 对原始图像进行均衡化,得到映射后的s(k)s(k)s(k) 对规定的图像直方图进行均衡化,得到映射后的z(k)z(k)z(k) 由于s(k)s(k)s(k)和z(k)z(k)z(k)都是归一化后的均匀分布,使用二者之间的就近原则将s(k)s(k)s(k)对应到给出的规定直方图的灰度级 画出规定化后的直方图 例题: 此时已经获得了原始图像均衡化后的灰度级与目标规定化输出的图像的灰度级之间的映射关系,最后一步按照rkr_krk​画出目标规定化输出的图像直方图即可。","s":"直方图灰度变换","u":"/docs/Curriculum/数字图像处理/Note","h":"#直方图灰度变换","p":247},{"i":273,"t":"空域滤波可以根据作用分为平滑滤波以及锐化滤波。 平滑滤波​ 信息 噪声的特点: 随机性 叠加性 噪声与图像之间具有相关性 线性平滑滤波​ 邻域平均滤波 加权平均滤波 高斯滤波 非线性平滑滤波​ 中值滤波 最大值滤波 最小值滤波 锐化滤波​ 锐化滤波消除或减弱图像的低频分量从而增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。 梯度法 拉普拉斯算子,非线性滤波 定向滤波:检测特定方向边缘的滤波,通常在模板上表现为在该特定方向上模板值较大。 下面的表格展示了水平方向的定向锐化模板 -1 -1 -1 2 2 2 -1 -1 -1 下面的表格展示了对角方向的定向锐化模板 -1 2 -1 -1 2 -1 -1 2 -1","s":"空域滤波增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#空域滤波增强","p":247},{"i":275,"t":"图像从空域变换到频域后,低频分量对应图像中灰度值变化缓慢的区域,可能是图像的背景;高频分量表示图像中灰度值变化迅速的区域,可能是图像的噪声或物体的边缘。 在图像频谱(经过中心偏移的)中,中心代表低频信息,四周代表高频信息。","s":"第6章 图像频域增强","u":"/docs/Curriculum/数字图像处理/Note","h":"#第6章-图像频域增强","p":247},{"i":277,"t":"抑制、衰减高频分量,保留低频分量。 理想低通滤波器(ILPF)​ 提示 ILPF means Ideal Low Pass Filter. H(u,v)={1D(u,v)≤D00D(u,v)>D0(14)H(u,v)=\\begin{cases}1&D(u,v)\\leq D_0\\\\ 0&D(u,v)>D_0\\end{cases}\\tag{14}H(u,v)={10​D(u,v)≤D0​D(u,v)>D0​​(14) D(u,v)=u2+v2(15)D(u,v)=\\sqrt{u^2+v^2}\\tag{15}D(u,v)=u2+v2​(15) 在截止频率D0D_0D0​处垂直截止,通过频率和截止频率在D0D_0D0​处具有不连续性,通带和阻带之间没有过渡,会产生无限的振铃效应。 巴特沃斯低通滤波器(BLPF)​ 通带与阻带之间过度平坦,通过频率和截止频率之间没有明显的不连续性,不会出现振铃效应。 H(u,v)=11+(2−1)[D(u,v)D0]2n(16)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D(u,v)}{D_0}]^{2n}}\\tag{16}H(u,v)=1+(2​−1)[D0​D(u,v)​]2n1​(16) 其中,取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率D0D_0D0​。 即当D(u,v)D(u,v)D(u,v)达到截止频率时,D(u,v)D0=1\\frac{D(u,v)}{D_0}=1D0​D(u,v)​=1,此时H(u,v)=0.707H(u,v)=0.707H(u,v)=0.707。 指数低通滤波器(ELPF)​ 一般情况下,取H(u,v)H(u,v)H(u,v)下降到最大值的1/2时的D(u,v)D(u,v)D(u,v)作为截止频率。 H(u,v)=e−[D(u,v)D0]n(17)H(u,v)=e^{-[\\frac{D(u,v)}{D_0}]^n}\\tag{17}H(u,v)=e−[D0​D(u,v)​]n(17) 截止频率和通过频率之间具有更光滑的过渡,没有振铃现象。且指数低通滤波器比巴特沃斯低通滤波器衰减更快,处理后的图像更模糊。 梯形低通滤波器(TLPF)​ 由于在D0D_0D0​尾部包含高频分量D1D_1D1​,处理后图像的清晰度较理想低通滤波器有所改善,但会出现振铃效应, H(u,v)={1D(u,v)D1(18)H(u,v)=\\begin{cases}1&D(u,v)D_1\\end{cases}\\tag{18}H(u,v)=⎩⎨⎧​1D0​−D1​D(u,v)−D1​​0​D(u,v)D1​​(18)","s":"低通滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#低通滤波","p":247},{"i":279,"t":"抑制低频分量,保留高频分量。 理想高通滤波器(IHPF)​ H(u,v)={1D(u,v)>D00D(u,v)≤D0(19)H(u,v)=\\begin{cases}1&D(u,v)>D_0\\\\ 0&D(u,v)\\leq D_0\\end{cases}\\tag{19}H(u,v)={10​D(u,v)>D0​D(u,v)≤D0​​(19) 性质与理想低通滤波器一样,垂直截断,具有无限振铃效应。 巴特沃斯高通滤波器(BHPF)​ H(u,v)=11+(2−1)[D0D(u,v)]2n(20)H(u,v)=\\frac{1}{1+(\\sqrt{2}-1)[\\frac{D_0}{D(u,v)}]^{2n}}\\tag{20}H(u,v)=1+(2​−1)[D(u,v)D0​​]2n1​(20) 通常采取H(u,v)H(u,v)H(u,v)下降到最大值的0.707时的D(u,v)D(u,v)D(u,v)作为截止频率,没有振铃效应。 指数高通滤波器(EHPF)​ H(u,v)=e−[D0D(u,v)]n(21)H(u,v)=e^{-[\\frac{D_0}{D(u,v)}]^n}\\tag{21}H(u,v)=e−[D(u,v)D0​​]n(21) 梯形高通滤波器(THPF)​ H(u,v)={1D(u,v)>D0D(u,v)−D1D0−D1D1≤D(u,v)≤D00D(u,v)D_0\\\\ \\\\ \\frac{D(u,v)-D_1}{D_0-D_1}&D_1\\leq D(u,v)\\leq D_0\\\\ \\\\ 0&D(u,v)D0​D1​≤D(u,v)≤D0​D(u,v)w2(24)H(u,v)=\\begin{cases}1&D(u,v) w_2\\end{cases}\\tag{24}H(u,v)=⎩⎨⎧​101​D(u,v)w2​​(24)","s":"带通和带阻滤波","u":"/docs/Curriculum/数字图像处理/Note","h":"#带通和带阻滤波","p":247},{"i":284,"t":"伪彩色图像的增强一般用于B超、石油开采以及安检方面。","s":"伪彩色图像的处理","u":"/docs/Curriculum/数字图像处理/Note","h":"#伪彩色图像的处理","p":247},{"i":288,"t":"退化原因​ 成像系统镜头聚焦不准产生的散焦 相机与景物之间的相对运动 成像系统存在的各种非线性因素以及系统本身的性能 模拟图像在数字化过程中,因数字化的精度和误差而损失图像细节 成像系统中存在的各种随机噪声 复原机理​ 图像复原的过程一般是沿着图像退化的逆向过程进行的。首先根据先验知识分析退化原因,了解图像变质的原理,在此基础上建立图像的退化模型,然后以图像退化的逆过程对图像进行处理。 图像复原与图像增强的区别和联系​ 联系:二者从表面上看都是为了提高图像的质量。 区别:二者在目的和过程上都有明显的区别。 在目的上,图像增强是为了提高图像的视感质量,增强后的图像可能损失一些信息,并与原始图像有一定的差异;而图像复原是为了使待复原的图像与原始图像尽可能的接近。 在过程上。图像增强一般不考虑图像退化的真实过程,而是使用特定技术来突出和强调图像中所关注的特征;而图像复原是直接针对图像产生退化的原因建立相应的数学模型,并沿着退化的逆向进行复原。","s":"图像退化机理","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化机理","p":247},{"i":290,"t":"图像f(x,y)f(x,y)f(x,y)经过退化系统H(x,y)H(x,y)H(x,y)后再与噪声n(x,y)n(x,y)n(x,y)叠加,得到最后退化的图像g(x,y)g(x,y)g(x,y)。 退化系统的一般特性: 线性特性。 空间位置不变性:经过退化系统后的输出只有输入有关,而与输入在图像中的位置无关。","s":"图像退化模型","u":"/docs/Curriculum/数字图像处理/Note","h":"#图像退化模型","p":247},{"i":293,"t":"最佳阈值法​ 假设图像由物体和背景两部分组成,且物体像素的分布和背景像素的分布均符合正态分布,物体像素的正态分布概率密度函数的均值为μ\\muμ,背景像素的正态分布概率密度函数的均值为ν\\nuν,则最佳阈值法确定的阈值为 t=μ+ν2(25)t=\\frac{\\mu +\\nu}{2}\\tag{25}t=2μ+ν​(25) 判别分析法​ 通过计算灰度直方图的0阶矩和1阶矩最大化类间方差从而得到最佳阈值。","s":"阈值分割法","u":"/docs/Curriculum/数字图像处理/Note","h":"#阈值分割法","p":247},{"i":295,"t":"什么是图像的边缘? 图像中结构具有突变的地方,表明一个区域的终结,也是另一个区域的开始,这种不连续性称为边缘。 边缘信号的类型? 阶跃型,但实际情况中不可能有完全理想的突变。突变处为边缘点。 渐变型,逐渐增大或逐渐减小。渐变的中间位置为边缘点。 台阶型。台阶的中间为边缘点或认为台阶两侧为两个边缘点。","s":"边缘检测的基本原理","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测的基本原理","p":247},{"i":297,"t":"Robert算子​ 一阶导数算子。 利用局部差分方法,采用对角线方向相邻两像素之差近似梯度幅值检测边缘。 对噪声敏感,不能抑制噪声。 Sobel算子​ 一阶导数算子。 先进行加权平均,然后进行微分运算。 对噪声具有一定的抑制能力。 Prewitt算子​ 一阶导数算子。 利用局部差分平均方法寻找边缘。两个模板一个检测水平边缘,一个检测竖直边缘。 对噪声具有一定的抑制能力。 Laplace算子​ 二阶导数算子。 使噪声成分得到加强,对噪声更敏感。 与Marr边缘检测算子一样,一般先进行低通滤波平滑后再进行二阶微分运算。 Canny边缘检测​ 使用高斯滤波平滑图像 计算梯度幅值和方向 NMS非极大值抑制,保留每个像素点上梯度强度的极大值,删掉其他值 使用双阈值方法确定强边界和弱边界 滞后边界跟踪","s":"边缘检测算子","u":"/docs/Curriculum/数字图像处理/Note","h":"#边缘检测算子","p":247},{"i":299,"t":"傅里叶频谱图的特征: 频率分布:傅里叶频谱图展示了图像在不同频率下的强度分布。高频部分对应图像中的边缘和细节,低频部分对应图像中的整体结构和大致轮廓。 能量分布:图像中不同频率的能量在频谱图中以不同强度的幅度呈现。高幅度的频率分量通常标示着图像中强烈的变化或边缘。 平移不变性:傅里叶变换具有平移不变性,这意味着在频域中图像的平移对应于幅度谱中相位的改变而不影响幅度谱本身。 如何在频域实现图像平滑 利用傅里叶变换将图像从空域转换为频域; 将频域图像进行中心偏移,使得低频信息在频谱中央; 利用滤波函数生成一个与图像大小相同的二维频域矩阵; 将图像的频域与滤波器的频域相应相乘; 将相乘后的频域再次逆平移到频域的原始位置; 将得到的频域进行逆傅里叶变换,得到滤波后的空域图像。 一阶边缘检测算子与Laplace算子的异同。 相同点:都可以检测边缘并且对噪声敏感 不同点:一阶边缘检测算子检测到的边缘都有明确的方向,而Laplace算子对各种方向的边缘都有较好的响应 已知一幅图像受到加性随机噪声污染,分析并写出三种去除或降低噪声的方法。 空域滤波(均值滤波、中值滤波),频域滤波(巴特沃斯低通滤波),图像恢复技术。 分析采样和量化的过程,以及它们对数字化图像质量的影响。 采样是把空间上连续的图像转换为离散的抽样点,即像素。量化将抽样后所得的连续的像素值离散化为整数值。 对数字化图像质量的影响: 采样间隔越大,所得图像像素数越少,图像空间分辨率越低,质量越差。反之图像质量好,但数据量大。 量化等级越多(灰度级数越多),所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大。反之,图像质量差,会出现假轮廓现象,但数据量小。 图像噪声的特点。 随机性 叠加性 噪声与图像之间具有相关性 什么是线性灰度拉伸?线性灰度拉伸可以分为几种情况? 线性灰度拉伸是将输入图像的灰度值的动态范围按线性关系拉伸扩展至指定范围或灰度的整个动态范围。 线性拉伸可分为按比例线性拉伸和分段线性拉伸两种方法。同时,按比例线性拉伸又可以分为均匀线性拉伸以及限幅线性拉伸。 伪彩色图像处理可以应用在哪些方面? B超 石油开采 安检","s":"课后习题中的问答题","u":"/docs/Curriculum/数字图像处理/Note","h":"#课后习题中的问答题","p":247},{"i":301,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"","p":300},{"i":304,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":300},{"i":306,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#安装依赖","p":300},{"i":308,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#下载预训练生成器","p":300},{"i":312,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的初始化","p":300},{"i":314,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":300},{"i":316,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":300},{"i":318,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-1","p":300},{"i":320,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#训练-stage-2","p":300},{"i":322,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#定量分析指标","p":300},{"i":325,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":300},{"i":327,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#web-ui","p":300},{"i":330,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":300},{"i":332,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":300},{"i":334,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/大模型基础/Prompt Learning/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":300},{"i":337,"t":"在文字生成模型中根据模型的输入是否与前一时刻的输出有关可以分为自回归AR模型与非自回归NAR模型两种,这两种生成方式的利与弊在图像生成中仍然存在。","s":"回顾文字生成的两种方法","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#回顾文字生成的两种方法","p":335},{"i":339,"t":"Transformer-based的文字生成模型有很多,如GPT模型,大多使用自回归(Autoregressive, abbr. AR)的方法逐token生成。 什么是ARM ARM(Autoregressive Model,自回归模型)是一类用于建模时间序列数据的统计模型,其中当前时刻的观测值被认为是过去时刻观测值的线性组合,加上一个随机误差项。这类模型的核心思想是,当前时刻的数据依赖于先前时刻的数据。 若把文字生成的AR方法对应到图像生成中的使用,即一个一个像素生成图像。由于当前对高清图像像素的需求越来越高,自回归的生成方式导致速度非常缓慢,但优点是后面生成的每一个像素都考虑了之前的所有像素,从而使生成的图像更清晰、更细腻、更加符合预期。","s":"自回归方法(AR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#自回归方法ar","p":335},{"i":341,"t":"若使用NAR非自回归的方法一次生成所有像素,各像素在生成时无法考虑之间的语义信息,生成的图像质量普遍低于自回归方法生成的图像。","s":"非自回归方法(NAR)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#非自回归方法nar","p":335},{"i":343,"t":"VAE、GAN以及Diffusion Model等生成模型,都不只是单独使用文字作为输入来生成图像,而是使用了从已知的随机分布(e.g. Normal Distribution)中sample出向量作为模型额外输入的方法。 大致的思想如下图所示,由于期待生成的图像并不是固定的,可以将预期输出看作是一个分布,即P(x∣y)P(x|y)P(x∣y),而图像生成模型需要完成的任务就是将输入的从某一随机分布中sample出的向量对应到图像预期输出分布中的某一个图像。 信息 总结:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字Prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。","s":"目前图像生成模型的共同点","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#目前图像生成模型的共同点","p":335},{"i":345,"t":"Stable Diffusion是目前图像生成的SOTA模型之一,在本章中我们快速的了解一下Stable Diffusion的大致框架以及原理。","s":"生成模型的共同结构","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成模型的共同结构","p":335},{"i":347,"t":"目前,如Stable Diffusion等SOTA图像生成模型都具备以下所示的三个模块,通常情况下这三个模块分开训练,最终通过特殊的逻辑和规则组合在一起。 Text Encoder:根据输入的text prompt进行嵌入表示 Generation Model:接受Text Encoder输出的prompt表示以及从随机分布sample出的图像大小的向量,得到“中间产物”,中间产物有以下两种情况: 具有视觉意义但经过压缩比较模糊的图像 不具备视觉特征的矩阵(Latent Representation) Decoder:以上述的“中间产物”作为输入,生成出高清图像 通用框架的三个组成部分如下图所示: 再附上Stable Diffusion、DALL-E系列以及Google的Imagen的结构说明。 其中Imagen将压缩版本的图片作为Generation Model的中间产物,Stable Diffusion以及DALL-E将Latent Representation作为中间产物。 根据Imagen的实验结果,相对于Decoder即Diffusion Model的模型大小,Text Encoder的模型大小对图像生成模型的影响是非常大的。Text Encoder可以帮助模型理解prompt中在训练资料的文字-图像对中没有出现的新的词汇,从而提高图像生成的表现。 Scaling text encoder size is more important than U-Net size. While scaling the size of the diffusion model U-Net improves sample quality, we found scaling the text encoder size to be significantly more impactful than the U-Net size. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding","s":"通用框架概览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架概览","p":335},{"i":349,"t":"下面介绍两种用于评估图像生成模型的常用Benchmark:FID与CLIP Score。 FID(Fréchet Inception Distance)​ FID提供一个Pre-trained的CNN,该CNN通常使用预训练的Inception v3模型。在计算FID时,生成图像和真实图像分别输入到预训练的CNN中,提取出各自的特征表示向量(Representation)。这两个Representation越接近,代表输出的图像越像预期的“真实”图片。 在FID中,做出了如下重要的假设:将生成的图像真实的图像经过CNN输出的Representation看作是sample自两个高斯分布的随机变量。然后,通过计算两个特征向量的均值和协方差矩阵来得到两个高斯分布的参数。最后,利用两个高斯分布之间的Fréchet距离来衡量生成图像与真实图像之间的差异。 FID=∥μ1−μ2∥22+tr(Σ1+Σ2−2(Σ1Σ2)12)(1)\\mathrm{FID}=\\left\\|\\mu_1-\\mu_2\\right\\|_2^2+\\mathrm{tr}\\left(\\Sigma_1+\\Sigma_2-2\\left(\\Sigma_1\\Sigma_2\\right)^{\\frac12}\\right)\\tag{1}FID=∥μ1​−μ2​∥22​+tr(Σ1​+Σ2​−2(Σ1​Σ2​)21​)(1) 其中,μ1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;Σ1\\Sigma_1Σ1​和Σ2\\Sigma_2Σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr(⋅)表示矩阵的迹运算。 高斯分布的均值向量从观测到的数据中计算出来的。对于一个nnn-维高斯分布,其均值向量可以表示为一个长度为nnn的列向量,其中的每一个元素都是一个特定维度的平均数,这可以通过在每个维度上进行简单的算术平均来完成。 值得注意的是,FID指标需要一定数量的生成图像和真实图像来进行统计估计。这是因为FID的计算是基于两个高斯分布之间的距离计算的,因此需要足够多的样本数量才能够获得较为准确的概率分布估计。 CLIP Score​ CLIP Score中的CLIP指的就是OpenAI的CLIP(Contrastive Language-Image Pre-Training)模型。 具体来说,CLIP Score的计算方式是将用于生成图像的文字prompt输入至CLIP的Text Encoder中得到一个Representation,再将对应prompt生成的图像输入至CLIP的Image Encoder中得到对应的Representation,计算二者之间的距离,即得到CLIP Score。分数越小,代表文字和图像更align。","s":"Benchmark","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#benchmark","p":335},{"i":351,"t":"Generation Model​ Generation Model的生成过程其实就是Denoise的过程。具体来讲,输入文字Prompt以及从随机分布中sample出的与预期生成图像具有相同大小的噪声矩阵,预测出输入图片中的噪声分布,在输入图像中减去噪声,输出去噪后的图像。Generation Model的最终输出是中间产物,这个中间产物可以是图像的压缩版本,也可以是一个Latent Representation。因此,训练Generation Model其实就是训练一个Noise Predictor。 中间产物是压缩图像​ 当Generation Model的中间产物是压缩图像时,如Diffusion模型,在训练Generation Model时的训练资料可以通过对数据集中的原始图片添加与图像大小一致地从已知随机分布中sample出的噪声来获得。此时加入噪声后的图像可以作为压缩图像输入至Noise Predictor中,而需要预测出的噪声分布的Ground Truth就是sample出的噪声。 中间产物是Latent Representation​ 中间产物是Latent Representation时,同样采取从已知随机分布中sample出噪声再添加到网络的输入作为生成Ground Truth的策略,但是还额外需要一个Encoder来产生Latent Representation。 这里的Encoder使用数据集中的图片(即期待模型最终输出的图片)作为输入,输出该图片的某种Latent Representation,经过从随机分布中sample出的噪声的加入,输入至Noise Predictor中。从随机分布中sample出的噪声就是Noise Predictor的Ground Truth。 Decoder​ Generation Model的训练需要大量成对的(Pair)文字-图像资料。而对于Decoder来说,它的输入是中间产物(即Generation Model生成的压缩的图片或Latent Representation),输出的是还原出的高分辨率的图像,它的训练是不需要额外pair的文字-图像资料。 中间产物是压缩图像​ 当Generation Model的输出是压缩版本的图像时,Decoder的训练资料可以将从互联网上fetch到的图像作为label,并对这些图像做Down Sampling来获得压缩版本的图像作为Decoder训练时的输出。 中间产物是Latent Representation​ 当中间产物是Latent Representation时,需要训练一个Auto-Encoder,使用Encoder-Decoder的结构训练生成模型的Decoder。 具体来讲,向Encoder中输入数据集中的高清预期图片,Encoder将其转换为某种Latent Representation,Decoder再吃Encoder的输出,最终输出还原出的高清label图片,训练的方向是让输出的图片与输入的图片越接近越好。在这个过程中,不需要额外的标注,Auto-Encoder和生成模型的Decoder一起更新参数。","s":"通用框架解析","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#通用框架解析","p":335},{"i":353,"t":"在这个模块大致介绍目前常见的几种图像生成模型,其中Diffusion Model以及GAN将在以后的文章中详细讲解。","s":"常见图像生成模型速览","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#常见图像生成模型速览","p":335},{"i":355,"t":"变分自编码器(Variational Auto-Encoder, abbr. VAE)的训练策略是使用Encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为Decoder的输入,加上文字prompt后,期待模型产生合适的图像。 提示 VAE在训练过程中,期待Ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g. Normal Distribution),并不是Encoder直接输出一个Distrubution。","s":"变分自编码器(VAE)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#变分自编码器vae","p":335},{"i":357,"t":"基于流的生成模型采用特殊的网络结构的设计,将Encoder设计为可逆的(invertible),在训练阶段喂入多张图片,期待模型的向量符合某个随机分布。而在预测阶段,由于Encoder是可逆的,输入从该随机分布中sample出来的向量,期待输出对应的图像。 注意,由于Encoder是可逆的,在训练阶段其输入的图片矩阵的形状应该等于输出的随机分布向量的形状,在推理阶段亦然。","s":"基于流的生成模型(Flow-Based Generative Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#基于流的生成模型flow-based-generative-model","p":335},{"i":359,"t":"GAN模型的结构分为Generator和Discriminator,其中Generator接受来自随机分布的向量,产生预期图像;Discriminator接受生成器输出的图像或真实图像,输出输入的图像是真实图像的概率。在训练过程中,通过固定生成器参数来更新辨别器参数、固定辨别器参数更新生成器参数的往复交替训练来形成“两个网络对抗”的效果,从而使得生成器生成的图像更逼真(与输入的真实图像更近似)、辨别器识别是否是输入的真实图像的精确度更高。","s":"生成对抗网络(GAN)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#生成对抗网络gan","p":335},{"i":361,"t":"扩散模型的核心思想是对输入的图片加入噪声使其成为从某一随机分布sample出的向量,并在这个过程中训练出Noise Predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的Noise Predictor对噪声denoise从而获得生成的图片。 以DDPM(Denoising Diffusion Probabilistic Models)模型为例,模型在denoise时为每个denoise步骤赋予一个编号,越早进行denoise的步骤编号越大,因此,这个编号也代表着图像中噪声的严重程度。在Denoise模块中,模型根据输入的带有噪声的图片、文字prompt以及噪声的严重程度(即denoise的步骤)预测出该图片中噪声的分布,然后将输入的图片中减去预测出的噪声得到denoise后的图片。 Denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从Gaussian Distribution中sample出的噪声的方法来获得,这个加噪声的过程我们称为Forward Process or Diffusion Process。此时将加入噪声后的图片、文字prompt以及denoise的步骤序号作为输入,sample出的噪声作为Ground Truth对noise predictor进行训练。","s":"扩散模型(Diffusion Model)","u":"/docs/Deep-Learning/大模型基础/Image-Generation-Models","h":"#扩散模型diffusion-model","p":335},{"i":363,"t":"参考资料:Sampling for Text Generation","s":"生成模型中的采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"","p":362},{"i":365,"t":"生成模型的核心任务是学习数据的概率分布,并能够生成新的样本。采样(Sampling)是模型从其内部概率分布中生成新数据的关键步骤。采样不仅决定了生成数据的质量和多样性,还影响着模型对潜在空间的探索方式。 没有合适的采样策略,生成的结果可能会过于保守(总是生成相似的内容)或者过于随机(生成无意义的数据)。","s":"引言","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#引言","p":362},{"i":367,"t":"生成模型通常通过学习训练数据中的复杂概率分布来工作。这些模型试图捕捉到数据之间的统计规律,并以此为基础生成新的样本。我们通常希望模型能够捕捉到数据的复杂分布,并能够生成新的、合理的样本。如果不使用采样,模型可能会倾向于生成最常见的样本,这会导致生成的样本缺乏多样性,无法覆盖数据分布的全貌。直接从模型的概率分布中采样往往会带来一些问题,例如: 确定性解:模型可能倾向于给出单一最优解,这会导致生成结果缺乏多样性。 过拟合:模型可能过度拟合训练数据,从而在生成时重复相同的模式。 非典型样本:由于概率分布的长尾效应,直接采样可能会生成非常罕见且不符合实际的样本。","s":"为什么需要采样?","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#为什么需要采样","p":362},{"i":369,"t":"概率的长尾效应是指在概率分布中,某些事件虽然发生的概率非常小,但在分布的尾部仍存在一定的非零概率。在语言模型和其他生成模型中,长尾效应同样存在,指的是模型可能为一些非常罕见的词汇或序列分配非零的概率。 在生成模型中,长尾效应可能导致的问题在于模型有时会生成那些在训练数据集中很少见甚至从未出现过的样本。这是因为模型试图捕获训练数据中的所有统计特性,包括那些稀有的事件。在训练过程中,即使这些稀有事件只出现了一次,模型也可能学会为它们分配一定的概率。 当我们在生成过程中直接从模型的概率分布中采样时,如果模型的输出分布具有长尾特性,那么即使是那些概率很小的事件也可能被选中。例如,在文本生成中,模型可能会生成一些非常罕见的词汇组合,这些组合在语义上可能并不合理,或者语法上不符合常规。","s":"长尾效应","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#长尾效应","p":362},{"i":371,"t":"为了克服上述问题,研究人员开发了多种采样技巧,旨在控制生成过程中的随机性和多样性。","s":"采样技巧","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#采样技巧","p":362},{"i":373,"t":"温度是一种调整模型输出多样性的方法,它通过改变模型预测概率分布的形状来实现。较低的温度值会使得概率分布更加尖锐,而较高的温度值则会让分布变得更加平坦。 假设模型的原始概率分布为 p(xi)p(x_i)p(xi​),那么通过温度调整后的概率分布可以表示为: p′(xi)=exp⁡(log⁡(p(xi))T)∑jexp⁡(log⁡(p(xj))T)p'(x_i) = \\frac{\\exp\\left(\\frac{\\log(p(x_i))}{T}\\right)}{\\sum_j \\exp\\left(\\frac{\\log(p(x_j))}{T}\\right)}p′(xi​)=∑j​exp(Tlog(p(xj​))​)exp(Tlog(p(xi​))​)​ p(xi)p(x_i)p(xi​):表示原始模型对第 iii 个选项的预测概率。 TTT:温度参数,一般是一个正数。 当 T>1T > 1T>1 时,分布变得更平坦,这意味着模型更倾向于生成概率较低但仍然合理的样本;当 T<1T < 1T<1 时,分布变得更尖锐,模型倾向于生成高概率的样本,这会降低生成内容的多样性。","s":"温度(Temperature)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#温度temperature","p":362},{"i":375,"t":"Top-k 采样是一种减少模型输出中低概率事件的方法。这种方法仅考虑最有可能发生的 k 个候选结果进行采样,从而避免生成那些极不可能出现的样本。 Top-k 采样算法从输出概率分布中选择概率最高的前 k 个候选项,并在这些候选项中进行随机采样。具体步骤如下: 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 选择概率最高的前 k 个候选项。设这些候选项的集合为 CkC_kCk​ 对于 CkC_kCk​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项。 公式化表示如下: Ck={wi∣pi is among the top k probabilities in P}C_k=\\left\\{w_i \\mid p_i \\text{ is among the top k probabilities in }P\\right\\}Ck​={wi​∣pi​ is among the top k probabilities in P} pi′=pi∑wj∈Ckpj for wi∈Ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_k} p_j} \\text { for } w_i \\in C_kpi′​=∑wj​∈Ck​​pj​pi​​ for wi​∈Ck​ 其中, pi′p_i^{\\prime}pi′​​ 是重新归一化后的概率。","s":"Top-k 采样","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-k-采样","p":362},{"i":377,"t":"Top-p 采样,也称为 Nucleus 采样,是一种更加灵活的采样方法,它不是固定选择前 k 个元素,而是选择累积概率达到某个阈值 p 的最小集合进行采样。 获取模型输出的概率分布 P={p1,p2,…,pV}P=\\left\\{p_1, p_2, \\ldots, p_V\\right\\}P={p1​,p2​,…,pV​} ,其中 VVV 是词汇表的大小 将概率分布按从高到低排序,得到排序后的候选项和对应的概率 {(w1,p1),(w2,p2),…,(wV,pV)}\\left\\{\\left(w_1, p_1\\right),\\left(w_2, p_2\\right), \\ldots,\\left(w_V, p_V\\right)\\right\\}{(w1​,p1​),(w2​,p2​),…,(wV​,pV​)} ,其中 p1≥p2≥…≥pVp_1 \\geq p_2 \\geq \\ldots \\geq p_Vp1​≥p2​≥…≥pV​ 找到最小的 k,使得前 k 个候选项的概率和大于等于阈值 ppp,设这些候选项的集合为 CpC_pCp​ 对于 CpC_pCp​ 中的每个候选项,重新归一化它们的概率,使得这些候选项的概率和为 1 从归一化后的概率分布中随机采样一个候选项 Cp={wi∣∑j=1ipj≥p}C_p=\\left\\{w_i \\mid \\sum_{j=1}^i p_j \\geq p\\right\\}Cp​={wi​∣j=1∑i​pj​≥p} pi′=pi∑wj∈Cppj for wi∈Cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j \\in C_p} p_j} \\text { for } w_i \\in C_ppi′​=∑wj​∈Cp​​pj​pi​​ for wi​∈Cp​ 其中,pi′p_i^{\\prime}pi′​ 是重新归一化后的概率。","s":"Top-p 采样(Nucleus Sampling)","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#top-p-采样nucleus-sampling","p":362},{"i":379,"t":"采样技巧对于生成模型的成功至关重要。它们不仅可以帮助我们生成更加多样的结果,还可以改善生成质量。通过适当调整温度参数、使用 Top-k 或 Top-p 采样,我们可以有效地控制生成过程中的随机性,确保模型既能探索多样化的可能性,又能保持生成内容的合理性。","s":"结论","u":"/docs/Deep-Learning/大模型基础/Sampling-for-Generation","h":"#结论","p":362},{"i":381,"t":"提示 在自监督学习的模型中,出现了很多以芝麻街任务命名的经典模型和论文。","s":"自监督学习(Self-Supervised Learning)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"","p":380},{"i":383,"t":"自监督学习是无监督学习的一种方法,利用未标记的数据来训练模型。与传统的监督学习不同,自监督学习不需要依赖人工标注的标签数据,而是通过自动构建任务来生成伪标签,从而指导模型的学习。 自监督学习的基本原理是,通过对输入数据进行某种变换或操作,使得模型能够从中提取有用的特征和语义信息。例如,在自然语言处理领域,一种常见的自监督学习任务是预测下一个单词;在计算机视觉领域,一种常见的自监督学习任务是预测图像中的缺失部分。这些任务可以帮助模型学习到输入数据中的潜在结构和规律,从而提高其泛化能力和性能。","s":"介绍","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#介绍","p":380},{"i":385,"t":"下面以BERT为例,介绍自监督模型。","s":"BERT(Bidirectional Encoder Representation from Transformers)","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#bertbidirectional-encoder-representation-from-transformers","p":380},{"i":387,"t":"BERT的结构其实是Transformer的Encoder部分,仅使用Encoder做特征抽取器。 BERT(Bidirectional Encoder Representations from Transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。BERT并不是一个用于特定任务的模型,而是一个通用的语言表示模型。 使用 BERT 的一般步骤包括: 预训练(Pretraining):在大规模无标签数据上对 BERT 进行预训练,学习通用的语言表示。 微调(Fine-tuning):将预训练的 BERT 模型应用于特定任务,并在有标签的数据上进行微调,以适应该任务。 应用于下游任务(Downstream Tasks):微调后的 BERT 模型可以被用于执行特定的下游任务,如文本分类、命名实体识别等。","s":"结构","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#结构","p":380},{"i":389,"t":"Masking Input​ BERT模型的自监督性质主要体现在其训练数据并不需要人为标注label,而是通过对输入句子中的部分词汇做mask,将输入数据的部分内容使用special token或random token进行遮挡后,喂入Encoder中。对于每个被mask掉的词汇,BERT输出一个概率分布向量,表示这个词汇属于词汇表中的哪一个。 BERT的损失函数主要是Masked Language Model(MLM)任务的交叉熵损失,通过最小化Encoder输出的概率分布与Ground Truth之间的交叉熵损失函数来训练模型。 L=−1N∑i=1Nyilog⁡(pi)(1)L=-\\frac1N\\sum_{i=1}^Ny_i\\log(p_i)\\tag{1}L=−N1​i=1∑N​yi​log(pi​)(1) 其中: NNN是输出的概率分布向量的维度。 yiy_{i}yi​是概率分布向量标签。 pip_{i}pi​是模型预测的概率分布向量。 Next Sentence Prediction​","s":"Self-Supervised Pretraining","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#self-supervised-pretraining","p":380},{"i":391,"t":"在预训练之后,BERT 的模型参数可以被用于多个下游任务,如文本分类、命名实体识别、问答等。 首先,我们先来了解一下NLP任务中很重要的一个Benchmark:GLUE。 Benchmark: GLUE​ GLUE(General Language Understanding Evaluation)是一个评估自然语言处理模型在多个任务上综合性能的基准(benchmark)。它旨在测试模型对各种语言任务的通用理解能力。GLUE benchmark 包含了多个任务,每个任务都有一个对应的数据集和评估标准。 MNLI(MultiNLI):自然语言推理任务,要求模型判断给定的两个句子之间的关系是蕴含、矛盾还是中立。 QQP(Quora Question Pairs):问题匹配任务,要求模型判断两个问题是否语义上等价。 QNLI(Question-answering Natural Language Inference):句子分类任务,要求模型判断给定问题和句子之间的关系。 RTE(Recognizing Textual Entailment):文本蕴涵任务,要求模型判断给定的两个文本之间是否存在蕴涵关系。 STS-B(Semantic Textual Similarity Benchmark):语义文本相似度任务,要求模型度量两个文本之间的语义相似度。 CoLA(Corpus of Linguistic Acceptability):语言可接受性判断任务,要求模型判断一个句子是否语法上正确。 MRPC(Microsoft Research Paraphrase Corpus):短语匹配任务,要求模型判断两个句子是否语义上等价。 SST-2(Stanford Sentiment Treebank):情感分类任务,要求模型判断给定句子的情感极性。 WNLI(Winograd NLI):自然语言推理任务,属于 Winograd 模式的变体,要求模型判断一个给定的句子对是否存在蕴含关系。 GLUE 提供了一个全面的测试平台,有助于评估和比较不同自然语言处理模型在多个任务上的性能。 Downstream Tasks​ Sentiment Analysis​ BERT作为自监督的预训练模型,从大语料库中学习到了一定的语言知识,在做文字情感分析时,只需要在下游连接上对应的分类器网络,即使只有比较少量的训练资料也能得到比较好的效果。 下图将Pre-training&Fine-tuning范式与Scratch范式的训练效果做了对比,其中Scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(Convergence)并且效果也更好。 立场分析​ Extraction-based Question Answering​ BERT也可以用来完成截取式问答任务,提供一篇文章以及问题,要求输出两个integer代表答案短语在该文章中的起始位置以及结束位置。 具体的解决方案:选择输入文章的所有token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做Dot Product,在经过Softmax之后选择最大的得分所对应的索引。得到的两个索引分别是答案短语在文章中开始的位置以及结束的位置。 其他应用​ 虽然以上的应用都是NLP领域的,但是BERT是Seq2Seq模型,图片、语音等信号也都可以作为Sequence输入至BERT中,因此BERT也可以通过迁移学习应用至多模态领域。","s":"Fine-tuning","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#fine-tuning","p":380},{"i":393,"t":"BERT在大规模语料库(Corpus)上预训练后,输出的向量表示了对应输入token的意思,特别地,是考虑了上下文信息的意思。比如,对于水果的苹果已经苹果公司的苹果,BERT对一样的苹果有不同的输出。即对一个处在不同上下文信息中的相同词汇,BERT有不同的Embedding。类似于Word Embedding中的CBOW,BERT可以看作是Contextualized Word Embedding。 BERT模型的核心就是通过预训练来学习上下文信息,进而对每个输入token生成相应的向量表示。这个向量表示考虑了上下文信息,所以对于处在不同上下文中的相同词汇,BERT会有不同的Embedding。 ——来自讯飞星火大模型 虽然 BERT 的确是一种基于大规模语料库的预训练模型,但它并不是一种简单的词嵌入方法,而是一种深度神经网络模型。 在 BERT 中,每个单词都被嵌入到一个高维空间中,并且这些嵌入向量是通过多层 Transformer 编码器生成的。这些编码器的每一层都包含多个自注意力子层和一个前馈神经网络子层,它们共同作用来捕捉文本中的上下文关系和其他语义特征。 因此,BERT 中的嵌入向量不仅仅是单个单词的词义表征,还包括整个句子或段落中的语境信息。这意味着即使两个单词在不同的上下文中出现,它们的嵌入向量也可能非常相似,因为它们共享相同的语义结构。 总之,BERT 可以被视为一种上下文感知词嵌入技术,但它的实现方式比传统的词嵌入方法要复杂得多。 ——来自腾讯混元大模型","s":"Why does BERT work?","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#why-does-bert-work","p":380},{"i":395,"t":"GPT的结构是Transformer的Decoder部分,可以承担生成的任务。 GPT的自监督学习的特征体现在:在训练过程中,GPT根据输入的token预测输入的下一个token应该是什么,对输出的distribution与Ground Truth做Cross Entropy Loss来更新参数。","s":"GPT: Generative Pre-trained Transformer","u":"/docs/Deep-Learning/大模型基础/Self-Supervised-Learning","h":"#gpt-generative-pre-trained-transformer","p":380},{"i":397,"t":"提示 输入:shape为[5,5,3][5, 5, 3][5,5,3]的图像 输出要求:shape为[5,5,4][5, 5, 4][5,5,4]的feature map 使用3×33 \\times 33×3卷积核,padding=1,stride=1padding=1, stride=1padding=1,stride=1","s":"深度可分离卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"","p":396},{"i":399,"t":"卷积层共4个filter(输出通道为4),每个filter3个kernel(输入通道为3) 其中,每个filter都对输入图像的所有通道完成一次卷积,filter中的kernel分别对输入的通道进行具体卷积运算 不考虑卷积偏置,参数量为 3×3×3×4=108(1)3 \\times 3 \\times 3 \\times 4 = 108 \\tag{1}3×3×3×4=108(1)","s":"常规卷积","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#常规卷积","p":396},{"i":401,"t":"使用1个filter,其中包含3个kernel。每个kernel分别对输入图像的3个通道单独进行卷积,参数量为 3×3××3=27(2)3 \\times 3 \\times \\times 3 = 27 \\tag{2}3×3××3=27(2) 代码实现也较为简单,只需令Conv2d的输出通道与输入通道相同即可","s":"逐通道卷积-Depthwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐通道卷积-depthwise-convolution","p":396},{"i":403,"t":"使用1×11 \\times 11×1卷积核,每个filter对上一步的feature map在深度方向进行一次加权组合,参数量为 1×1×3×4=12(3)1 \\times 1 \\times 3 \\times 4 = 12 \\tag{3}1×1×3×4=12(3) 提示 图片源自知乎","s":"逐点卷积-Pointwise Convolution","u":"/docs/Deep-Learning/基础知识/深度可分离卷积","h":"#逐点卷积-pointwise-convolution","p":396},{"i":407,"t":"σ(x)=11+e−x(1)\\sigma(x) = \\frac{1}{1 + e^{-x}} \\tag{1}σ(x)=1+e−x1​(1) dσdx=σ (1−σ)(2)\\frac{{\\rm d}\\sigma}{{\\rm d}x} = \\sigma \\space (1 - \\sigma) \\tag{2}dxdσ​=σ (1−σ)(2) 优点:可以将数据压缩至[0, 1)区间内,有较大实用意义 致命问题:在输入值较小或较大时,Sigmoid函数的梯度趋近于零,会导致网络参数长时间得不到更新,即梯度弥散问题 from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.sigmoid(x) # 当x为100时,sigmoid(x)就接近于0了","s":"Sigmoid函数 / Logistic函数","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#sigmoid函数--logistic函数","p":404},{"i":409,"t":"f(x)={0x<0xx≥0(3)f(x) = \\begin{cases} 0 & x < 0\\\\ x & x \\geq 0\\\\ \\end{cases} \\tag{3}f(x)={0x​x<0x≥0​(3) df(x)dx={0x<01x≥0(4)\\frac {{\\text d}f(x)}{{\\text d}x} = \\begin{cases} 0 & x < 0\\\\ 1 & x \\geq 0\\\\ \\end{cases} \\tag{4}dxdf(x)​={01​x<0x≥0​(4) from torch.nn import functional as F import torch x = torch.linspace(-100, 100, 10) F.relu(x)","s":"线性整流单元(Rectified Linear Unit, ReLU)","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#线性整流单元rectified-linear-unit-relu","p":404},{"i":412,"t":"L2范数是对元素求平方和后再开根号,需要.pow(2)后才可作为损失函数 微小的误差可能对网络性能带来极大的影响 LossMSE=∑[y−f(x)]2(5)Loss_{MSE} = \\sum{[{y - f(x)]^2}} \\tag{5}LossMSE​=∑[y−f(x)]2(5) ∥y−f(x)∥2=∑[y−f(x)]22(6)\\Vert y - f(x) \\Vert_2 = \\sqrt[2]{\\sum{[y - f(x)]^2}} \\tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6)","s":"Mean Squared Error 均方误差","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#mean-squared-error-均方误差","p":404},{"i":414,"t":"信息熵​ Cross Entropy中的Entropy指的是信息熵,可以理解为不确定性。衡量一个概率分布本身的不确定程度。 It's a measure of surprise, higher entrpoy means less information and higher uncertainty. 假设一个离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率为PiP_iPi​,则其信息熵的定义为 H(P)=−∑inPi log2(Pi)=∑inPi log2(1Pi)(7)\\begin{align} H(P) &= -\\sum_i^n{P_i}\\space{log_2(P_i)} \\\\ &= \\sum_i^n{P_i}\\space{log_2({\\frac{1}{P_i}}}) \\tag{7} \\end{align}H(P)​=−i∑n​Pi​ log2​(Pi​)=i∑n​Pi​ log2​(Pi​1​)​(7) KL散度​ 在概率论或信息论中,KL散度( Kullback–Leibler Divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。 存在两个概率分布P和Q,其离散型随机变量XXX的可能取值为X=x1,x2,...,xnX=x_1,x_2,...,x_nX=x1​,x2​,...,xn​,而取值事件xix_ixi​发生的概率分别为Pi,QiP_i,Q_iPi​,Qi​. KL散度是非对称的,即 DKL(P ∣∣ Q)≠DKL(Q ∣∣ P)(8)D_{KL}(P \\space || \\space Q) \\neq D_{KL}(Q \\space || \\space P)\\tag{8}DKL​(P ∣∣ Q)=DKL​(Q ∣∣ P)(8) DKL(P ∣∣ Q)=∑Pi [log2(Pi)−log2(Qi)](9)D_{KL}(P \\space || \\space Q) = \\sum{P_i\\space [log_2(P_i)-log_2(Q_i)]}\\tag{9}DKL​(P ∣∣ Q)=∑Pi​ [log2​(Pi​)−log2​(Qi​)](9) 特别的,DKL(PLabel ∣ QPred)D_{KL}(P_{Label} \\space | \\space Q_{Pred})DKL​(PLabel​ ∣ QPred​)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 交叉熵​ 衡量两个概率分布P和Q之间的不确定性程度。交叉熵的数学表达为 H(P, Q)=H(P)+DKL(P ∣∣ Q)=−∑Pi log2(Qi)(10)\\begin{align} H(P, \\space Q) &= H(P) + D_{KL}(P\\space || \\space Q) \\\\ &= - \\sum{P_i}\\space{log_2({Q_i})} \\tag{10} \\end{align}H(P, Q)​=H(P)+DKL​(P ∣∣ Q)=−∑Pi​ log2​(Qi​)​(10) PyTorch中的CrossEntropyLoss​ torch.nn.CrossEntropyLoss相当于torch.softmax + torch.log + torch.nn.nllloss. import torch.nn as nn # 使用NLLLoss实现 nllloss = nn.NLLLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) predict = torch.log(torch.softmax(predict, dim=-1)) label = torch.tensor([1, 2]) nllloss(predict, label) # output: tensor(0.2684) # 使用CrossEntropyLoss实现 cross_loss = nn.CrossEntropyLoss() predict = torch.Tensor([[2, 3, 1], [3, 7, 9]]) label = torch.tensor([1, 2]) cross_loss(predict, label) # output: tensor(0.2684)","s":"Cross Entropy Loss 交叉熵损失","u":"/docs/Deep-Learning/基础知识/激活函数与Loss的梯度","h":"#cross-entropy-loss-交叉熵损失","p":404},{"i":416,"t":"信息 参考链接: Illustrated: Self-Attention 动图轻松理解Self-Attention(自注意力机制)","s":"自注意力(Self-Attention)","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"","p":415},{"i":419,"t":"CNN模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个CNN模型的架构,具有较强的固定性。 信息 在视觉中,输入大多为数字图像,其形状可以大致分为由尺寸和通道数来决定。 从输入图像的尺寸看,当CNN中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如FCN(Fully Convolution Network),FCN通过最后通过反卷积将tensor还原到原始图像尺寸,即在CNN中,输入与输出(下游任务的要求)都影响着CNN网络的结构。 从通道数看,CNN本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的CNN模型,但在测试阶段分别使用通道数为 1 和 6 的数据进行推理的情形为例,进行分析: 通道数为1的测试集: 情况: 如果使用通道数为 1 的数据进行推理,即灰度图像,而模型在训练时是使用 RGB 数据集训练的,模型可能会受到一些影响。 解释: 模型可能在训练时学到了关于颜色的特定信息,而在测试时,如果输入是灰度图像,那些颜色信息将不可用。 建议: 在这种情况下,模型可能会失去对颜色信息的敏感性,可能需要进行进一步的调整或微调,以适应灰度图像的特性。 通道数为6的测试集: 情况: 如果使用通道数为 6 的数据进行推理,模型可能会面临额外的挑战,因为它在训练时只见过 3 个通道的数据。 解释: 模型在训练时学到的权重是基于 3 个通道的数据的,对于额外的通道,模型可能无法有效利用这些信息。 建议: 对于通道数不匹配的情况,可以考虑进行通道的适当组合或调整。这可能包括降低通道数(例如,只使用前 3 个通道),或者通过某种方式将 6 个通道映射到 3 个通道,例如通过某种特定的数据预处理。 当模型的输入更复杂(sophisticated),是长度不定的向量序列(sequence)时,CNN不能很好地处理,且不能解决输出由输入和模型自行决定的下游任务,如生成类任务。","s":"输入与输出的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入与输出的局限性","p":415},{"i":421,"t":"CNN中存在局部连接和权值共享的归纳偏置: 局部连接:CNN使用卷积层通过滑动卷积核在输入上进行局部感受野的操作。每个神经元只与输入的一小部分区域相连,这意味着每个神经元只能接触到局部的上下文信息。 权值共享: 权值共享的主要思想是,对于输入图像的不同位置使用相同的权重参数进行卷积操作。这意味着,无论卷积操作发生在图像的左上角、右下角,或者其他任何位置,都使用相同的卷积核进行权值计算。CNN的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得CNN具有更强的归纳偏置。 提示 在多通道卷积中,卷积核不同通道之间的权重参数是独立的。这使得网络能够学习不同通道之间的特征组合。这种设计有效地捕捉了输入数据中的多通道信息,提高了网络的表达能力。 CNN的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得CNN更适用于图像处理等任务。但也正是这种设计理念,使得CNN在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此Self-Attention应运而生,允许每个位置关注到序列中地所有其他位置。这种全局关联性质使得Transformer能够捕捉序列中的长距离依赖关系。","s":"关联上下文信息的局限性","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#关联上下文信息的局限性","p":415},{"i":424,"t":"A self-attention module takes in nnn inputs and returns nnn outputs. What happens in this module? In layman’s terms, the self-attention mechanism allows the inputs to interact with each other (“self”) and find out who they should pay more attention to (“attention”). The outputs are aggregates of these interactions and attention scores. Self-Attention接受任意向量数量的向量序列的输入,输出每一个向量所有向量(包括自身)的注意力分数。这使得Self-Attention在捕捉长距离依赖和处理序列中的全局关系时非常有效。","s":"什么是Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#什么是self-attention","p":415},{"i":426,"t":"自注意力机制的核心思想是为序列中的每个向量分配一个权重(即注意力分数),该权重表示该元素与其他元素的关联强度。这个权重是通过计算输入序列中所有元素与当前元素之间的关系来确定的。通常,这个计算过程使用一个可学习的权重矩阵来完成,即用来生成Key,Query以及Value的权重矩阵。","s":"Self-Attention的核心思想","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的核心思想","p":415},{"i":428,"t":"信息 定性分析详见文末。 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。 定义输入​ Self-Attention的输入是向量序列,其向量数量是任意的,计算每个输入向量之间的注意力分数。在本例中输入向量个数为3,同时为了统一性分析,计输入向量个数为batchbatchbatch个。 # define the input, which has a shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) 初始化权重矩阵​ 每个输入向量都会与3个权重向量做乘法得到3个新的向量,分别为key,query以及value。在本例中将新的向量维度设为3,由于输出的k、q、v矩阵大小均为(3,3)(3, 3)(3,3),因此每个权重矩阵的形状应该是(4,3)(4, 3)(4,3)。为了统一性分析,计key,query以及value各向量维度为numnumnum。 In a neural network setting, these weights are usually small numbers, initialised randomly using an appropriate random distribution like Gaussian, Xavier and Kaiming distributions. This initialisation is done once before training. 在实际应用中,权重通常是较小的数字,通过适当的随机分布(比如高斯、Xavier和Kaiming分布)进行随机初始化。 # define the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) 计算key,query以及value​ # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) 计算原始的注意力分数​ 我们要为每一个输入向量计算它对所有向量的注意力分数,包括对自身的。 原始注意力分数的计算方式为,使用自身的query分别与所有向量的key做内积(dot product),得到的scalar数量与输入向量个数相同,都为batchbatchbatch,即scores矩阵的形状应为(batch,batch)(batch, batch)(batch,batch)。 # compute raw self-attention scores scores = queries @ keys.T print(\"attention scores:\\n\", scores) 注意,代码中提供的是计算所有向量的注意力分数,而图中演示的只是计算input #1的注意力分数。 对每一个向量计算出的注意力分数做softmax​ # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) 将注意力分数与对应的value相乘​ 每一个输入向量对所有batchbatchbatch个向量计算得到的注意力分数,都要与其对应的value向量相乘,计算加权的注意力分数。最终的注意力分数矩阵的形状应为(batch,num)(batch, num)(batch,num)。 # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) 加权注意力分数求和​ 最后一步,对于每个向量得到的加权注意力分数进行求和,得到维度为numnumnum的注意力分数向量,考虑到有batchbatchbatch个输入向量,因此最终的注意力分数矩阵的形状为(batch,num)(batch, num)(batch,num)。 根据推导,显然,最终Self-Attention的输出向量维度与value向量的维度相同,输出向量的数量与输入向量的数量相同。 # compute outputs outputs = weighted_values.sum(dim=0) 总结​ As mentioned in the above paragraph, we don’t only use dot product to find relevance. But we scale it as well by a factor of the square root of key dimension dk. This helps in making sure that the dot-products between query and key don’t grow too large for dk. If the dot product becomes too large then the softmax output will be very small. To avoid this, we scale the dot product. 在计算dot product后,为了避免点积运算经过softmax后的输出太小,在点积后除以key向量维度的平方根来进行缩放。 Attention(Q,K,V)=softmax(QKTdk)V(1)Attention(Q,K,V)=\\textit{softmax}(\\frac{QK^T}{\\sqrt{d_k}})V \\tag{1}Attention(Q,K,V)=softmax(dk​​QKT​)V(1) 完整代码​ # simple code for Self-Attention import torch import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plot # define the input, which has the shape of (3, 4) inputs = [[1, 0, 1, 0], [0, 2, 0, 2], [1, 1, 1, 1]] inputs = torch.tensor(inputs, dtype=torch.float32) # initialize the weights for keys, queries and values w_key = torch.tensor([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 1, 0]], dtype=torch.float32) w_query = torch.tensor([[1, 0, 1], [1, 0, 0], [0, 0, 1], [0, 1, 1]], dtype=torch.float32) w_value = torch.tensor([[0, 2, 0], [0, 3, 0], [1, 0, 3], [1, 1, 0]], dtype=torch.float32) # compute keys, queries and values keys = inputs @ w_key queries = inputs @ w_query values = inputs @ w_value print(\"keys:\\n\", keys) # (3, 3) print(\"queries:\\n\", queries) # (3, 3) print(\"values:\\n\", values) # (3, 3) # compute raw self-attention score scores = queries @ keys.T print(\"attention scores:\\n\", scores) # normalize the attention score score_softmax = F.softmax(scores, dim=-1) # select the highest dimension print(\"attention scores after normalization:\\n\", score_softmax) # compute the weighted values by doting score_softmax with values # please be advised, this is dot product weighted_values = values[:, None] * score_softmax.T[:, :, None] print(\"weighted scores: \\n\", weighted_values) # compute outputs outputs = weighted_values.sum(dim=0)","s":"Self-Attention的实现","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention的实现","p":415},{"i":430,"t":"多头自注意力机制是对自注意力机制的扩展,假设扩展成为nnn -head self-attention,则对每个输入向量生成对应的key,query和value后,再次使用nnn个可学习的权重矩阵生成nnn个不同的key0,...,keyn−1key^{0}, ..., key^{n-1}key0,...,keyn−1,query0,...,queryn−1query^{0}, ..., query^{n-1}query0,...,queryn−1以及value0,...,valuen−1value^{0}, ..., value^{n-1}value0,...,valuen−1。 在计算attention score时,使用每一个query查询对应的key,即query0query^{0}query0只与其他每一个输入向量的key0key^{0}key0做dot product。","s":"Multi-Head Self-Attention","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#multi-head-self-attention","p":415},{"i":432,"t":"Self-Attention可以看作是复杂化的CNN,CNN只能在感受野范围内考虑上下文信息,而Self-Attention可以自己学习感受野。","s":"Self-Attention与CNN的对比","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention与cnn的对比","p":415},{"i":434,"t":"自注意力机制(Self-Attention Mechanism)是深度学习领域中的一种重要机制,尤其在处理序列数据和图像特征时展现出了强大能力。下面将以一个典型的自注意力机制为例,使用 Transformer 架构中的多头自注意力(Multi-Head Self-Attention)来说明其计算过程,以帮助理解其工作原理。假设我们的输入是一个序列,比如文本序列,其长度为 LLL,每个词向量的维度为 DDD​。 信息 注意考虑自注意力机制的实际意义,其输出是输入序列每个元素对每个位置的注意力分数。 因此,对于单头自注意力中的 Q、K 和 V 的维度 n_dim 通常等于输入序列的词嵌入维度 d_model。 对于多头自注意力机制而言,n_dim 通常等于 d_model // num_heads,即词嵌入维度除以多头自注意力的头数。","s":"Self Attention 的计算","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#self-attention-的计算","p":415},{"i":436,"t":"假设我们有一个文本序列,长度为 LLL,每个词表示为一个 DDD 维的向量。那么,整个输入的形状可以表示为 L×DL \\times DL×D 的矩阵。","s":"输入形状","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#输入形状","p":415},{"i":438,"t":"自注意力机制的核心思想是让序列中的每个元素(词向量)能够关注到序列中的其他元素,从而更好地理解它们之间的关系。具体来说,它通过计算三个向量——查询(Query,Q)、键(Key,K)和值(Value,V)来进行。 Query、Key、Value的生成: 首先,通过矩阵乘法,将输入的词向量矩阵分别与三个不同的权重矩阵相乘,生成 Q、K、V 三个矩阵。假设权重矩阵的维度均为 D×dkD \\times d_kD×dk​(其中 dkd_kdk​ 是查询和键的维度),那么 Q、K、V 的形状均为 L×dkL \\times d_kL×dk​。 计算注意力权重: 接下来,计算 Q 与 K 之间的相似度,通常使用点积(Dot Product)的方式,即每个查询向量 Q 与所有键向量 K 进行点积。点积的结果是一个 L×LL \\times LL×L 的矩阵,其中的每个元素表示查询向量与键向量之间的相似度。为了使这个矩阵中的元素处于同一尺度,通常会除以 dk\\sqrt{d_k}dk​​,以避免过大的点积值导致 softmax 函数饱和。 然后,对上述得到的矩阵应用 softmax 函数,得到注意力权重矩阵。这个矩阵的每一行都是一个概率分布,表示序列中每个元素对其他元素的注意力权重。 加权求和: 最后,将注意力权重矩阵与值矩阵 V 进行矩阵乘法,得到最终的注意力输出。这个过程可以视为对 V 矩阵中的每个值向量进行加权求和,权重由注意力权重矩阵决定。","s":"自注意力机制的计算步骤","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力机制的计算步骤","p":415},{"i":440,"t":"在实际应用中,往往采用多头自注意力(Multi-Head Attention)来增强模型的表示能力。具体来说,就是将上述过程重复多次,每次使用不同的权重矩阵来生成 Q、K、V,然后将多次得到的注意力输出进行拼接或平均,形成最终的多头注意力输出。","s":"多头自注意力","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#多头自注意力","p":415},{"i":442,"t":"假设输入的文本序列长度为 L=5L=5L=5,每个词向量的维度为 D=512D=512D=512,dk=512d_k=512dk​=512(查询和键的维度)。那么,Q、K、V 的形状均为 5×5125 \\times 5125×512。在计算注意力权重时,得到的矩阵形状为 5×55 \\times 55×5。最后的注意力输出形状同样为 5×5125 \\times 5125×512(如果是多头自注意力,则可能需要将多个头的输出拼接或平均,具体形状取决于头的数量和后续处理方式)。 自注意力机制通过让序列中的每个元素都能“看到”其他元素,并根据它们之间的关系调整自己的表示,从而增强了模型对序列数据的理解能力,这对于处理自然语言处理任务(如翻译、文本生成等)和图像特征提取(如在视觉 Transformer 中)等场景都有着重要作用。","s":"示例","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#示例","p":415},{"i":444,"t":"提示 参考资料:https://blog.csdn.net/yeziyezi210/article/details/103864518 自注意力中有多种掩码类型,但实现方式大致相同,其作用大概可以分为一下几种。 防止注意力机制关注填充(padding)标记 实现因果注意力(causal attention),即每个位置只能关注它自己和之前的位置,常用于 Decoder 中 在特定任务中屏蔽某些不相关的输入","s":"自注意力中的掩码 Mask","u":"/docs/Deep-Learning/大模型基础/Self-Attention","h":"#自注意力中的掩码-mask","p":415},{"i":446,"t":"提示 正则化与权重衰退","s":"正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"","p":445},{"i":448,"t":"正则化(Regularization)是机器学习中用于控制模型过拟合的一种技术。在模型训练过程中,我们通常要最小化一个损失函数来得到最佳的模型参数。但是当模型过于复杂时,容易出现过拟合现象,即在训练数据上表现很好,但在测试数据上表现很差。这是因为模型过于依赖训练数据的噪声和细节,而忽略了真正的规律。 正则化通过在损失函数中增加一个惩罚项(Penalty)来对模型进行约束,防止其过分依赖训练数据。 常见的正则化方法包括L1正则化(硬性限制)、L2正则化(柔性限制)等。 L1正则化会使得一部分参数变为0,从而实现特征选择的效果;L2正则化则会使得模型参数尽量接近0,也就是使得模型更加平滑。在使用正则化时,需要调整正则化强度的超参数,以达到最优的泛化性能。","s":"什么是正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#什么是正则化","p":445},{"i":450,"t":"min l(w,b) subject to ∥w∥12≤θ(1)min \\space l(w, b) \\space \\text{subject to} \\space \\Vert w \\Vert^2_1 \\leq \\theta \\tag{1}min l(w,b) subject to ∥w∥12​≤θ(1) L1正则化限制权重参数的L1范数小于某一特定的超参数 通常不限制偏移bbb 更小的超参数θ\\thetaθ意味着更强的正则项","s":"L1正则化","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l1正则化","p":445},{"i":452,"t":"L2正则化是指在模型的损失函数中,加入对模型参数的L2范数进行惩罚的一种方法。公式如下所示: l(w,b)+λ2∥w∥12(2)l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\tag{2}l(w,b)+2λ​∥w∥12​(2) 其中,λ\\lambdaλ是一个正则化系数超参数 此时在更新梯度时,具有如下公式 ∂∂w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\partial w} \\big(l(w, b) + \\frac{\\lambda}{2} \\Vert w \\Vert^2_1 \\big) = \\frac{\\partial l(w, b)}{\\partial w} + \\lambda w \\tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3) wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1-\\eta \\lambda)w_t + \\eta \\frac{\\partial l(w_t, b_t)}{\\partial w_t} \\tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4) 通常ηλ<1\\eta \\lambda < 1ηλ<1,因此又叫做权重衰退","s":"L2正则化与权重衰退","u":"/docs/Deep-Learning/基础知识/正则化与权重衰退","h":"#l2正则化与权重衰退","p":445},{"i":455,"t":"AlexNet是指2012年由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,AlexNet的表现远远超过了其他参赛的网络模型,并且在ImageNet比赛中获得了第一名。 标志着新的一轮神经网络热潮的开始","s":"背景","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#背景","p":453},{"i":457,"t":"ReLU激活函数 Dropout正则化、丢弃法 最大池化MaxPooling","s":"新的概念和技术","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#新的概念和技术","p":453},{"i":459,"t":"由于输入的图片更大,设置了更大的卷积核尺寸和步长 更大的池化窗口,使用最大池化 在卷积层中设置了更大的输出通道,提取更深层的特征、识别更多的模式 激活函数从Sigmoid改成了ReLU,减缓梯度消失 在卷积层和输出层之间仍使用两个全连接隐藏层,但在输出层之前增加了Dropout层做正则化 使用了数据增强data augmentation","s":"与LeNet比较","u":"/docs/Deep-Learning/基础知识/AlexNet","h":"#与lenet比较","p":453},{"i":462,"t":"K-fold cross-validation is a technique used in machine learning to evaluate the performance of a model. The basic idea behind k-fold cross-validation is to split the dataset into kkk partitions, or folds, and then train and test the model kkk times, using a different fold for testing each time.","s":"What is k-fold cross-validation?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#what-is-k-fold-cross-validation","p":460},{"i":464,"t":"In each iteration of k-fold cross-validation, one of the kkk folds is used as the test set, while the remaining k−1k-1k−1 folds are used as the training set. This process is repeated kkk times, with each fold being used exactly once as the test set. The results from each iteration can then be averaged to produce a more accurate estimate of the model's performance.","s":"How does k-fold cross-validation work?","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#how-does-k-fold-cross-validation-work","p":460},{"i":466,"t":"train set: to train the model and do parameter update validation set: to choose hyperparameter test set: the final test, only used once","s":"Summary","u":"/docs/Deep-Learning/基础知识/K-foldCross-validation","h":"#summary","p":460},{"i":469,"t":"kh=kw=1k_h=k_w=1kh​=kw​=1的卷积不识别空间模式,丢弃了空间信息,只是融合通道 相当于输入形状为HW×ciHW \\times c_iHW×ci​,权重形状为co×cic_o \\times c_ico​×ci​的全连接层","s":"1x1 卷积","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#1x1-卷积","p":467},{"i":471,"t":"输入:ci×H×Wc_i \\times H \\times Wci​×H×W 核:co×ci×kh×kwc_o \\times c_i \\times k_h \\times k_wco​×ci​×kh​×kw​ 偏差:co×cic_o \\times c_ico​×ci​ 输出:co×H′×W′c_o \\times H' \\times W'co​×H′×W′ 输出H′以及W′H'以及W'H′以及W′的计算: shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(1)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1) 计算复杂度:O(co×ci×H×W×H′×W′)O(c_o \\times c_i \\times H \\times W \\times H' \\times W')O(co​×ci​×H×W×H′×W′) 总结: 输出的通道数是卷积层的超参数 每个输入通道有独立的二维卷积核,所有通道结果相加得到一个输出结果 每个输出通道有独立的三维卷积核","s":"二维卷积层","u":"/docs/Deep-Learning/基础知识/ConvolutionalLayer","h":"#二维卷积层","p":467},{"i":474,"t":"现代图片具有较大的像素,使用全连接层导致参数爆炸 针对图片的特征提取和模式识别,应具备以下原则: 平移不变性 局部性","s":"卷积的诞生&核心特征","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#卷积的诞生核心特征","p":472},{"i":476,"t":"将全连接层的一维输入和输出变换为二维的矩阵,公式如下 其中i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w代表输入神经元的二维索引坐标 yi,j=∑h,wwi,j,h,w∗xh,w(1)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}} \\tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1) 进一步将权重以及输入的索引变形,公式如下 其中a,ba,ba,b的取值可负可正,直到遍历所有权重以及输入神经元,实现全连接 yi,j=∑h,wwi,j,h,w∗xh,w=∑a,bvi,j,a,b∗xi+a,j+b(2)y_{i,j}=\\sum_{h,w}{w_{i,j,h,w}*x_{h,w}}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}} \\tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2) 在公式(2)中,当i,ji,ji,j发生变化时,即产生平移,权重也发生平移,不满足平移不变性。 为了解决这一问题,将公式(2)变形为如下 此时参数权值共享,满足了平移不变性 yi,j=∑a,bvi,j,a,b∗xi+a,j+b=∑a,bva,b∗xi+a,j+b(3)y_{i,j}=\\sum_{a,b}{v_{i,j,a,b}*x_{i+a,j+b}}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}} \\tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3) 再考虑局部性,在进行特征提取以及模式识别时,只需关注周围的局部特征,因此公式(3)中的a,ba,ba,b可缩小范围,并不用来实现全连接,此时a,ba,ba,b代表着卷积核的感受野,即kernel size 此时完成了全连接层到卷积层的转换","s":"重新考察全连接层","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#重新考察全连接层","p":472},{"i":478,"t":"对全连接层使用平移不变性和局部性得到卷积层,卷积是特殊的全连接 yi,j=∑a,bva,b∗xi+a,j+b=∑a=−ΔΔ∑b=−ΔΔva,b∗xia,j+b(4)y_{i,j}=\\sum_{a,b}{v_{a,b}*x_{i+a,j+b}}=\\sum_{a=-\\Delta}^{\\Delta}\\sum_{b=-\\Delta}^{\\Delta}{v_{a,b}*x_{i_a,j+b}} \\tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−Δ∑Δ​b=−Δ∑Δ​va,b​∗xia​,j+b​(4) 卷积层输出形状的计算 shapeoutput=shapeinput−sizekernel+2∗paddingstride+1(5)shape_{output} = \\frac{shape_{input}-size_{kernel}+2*padding}{stride}+1 \\tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5)","s":"总结","u":"/docs/Deep-Learning/基础知识/FromFullyConnectedLayerToConvolutionalLayer","h":"#总结","p":472},{"i":481,"t":"Logistic Regression直译为逻辑回归,是一种用来解决二分类问题的机器学习方法,用于估计某种事物的可能性。 逻辑回归经过sigmoid函数输出的结果可将其视为probability,而后根据设定的置信度阈值来判断该特征向量对应的标签是1还是0,用以解决二分类问题。","s":"什么是Logistic Regression","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#什么是logistic-regression","p":479},{"i":483,"t":"线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量。 逻辑回归以线性回归为理论支持,通过Sigmoid函数引入了非线性因素。 线性回归常用MSE函数作为损失函数,而逻辑回归作为分类任务的解决方案通常搭配交叉熵损失函数进行训练。","s":"逻辑回归(Logistic Regression)和线性回归(Linear Regression)","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归logistic-regression和线性回归linear-regression","p":479},{"i":485,"t":"从历史角度方面看,逻辑回归在诞生时使用MSE作为损失函数,其目标是让输出的概率更接近于1,与回归任务的目标相似。","s":"逻辑回归到底是回归任务(Regression)还是分类任务(Classification)?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#逻辑回归到底是回归任务regression还是分类任务classification","p":479},{"i":487,"t":"逻辑回归以及其他分类任务在测试角度上的目标让提高分类准确率acc,但并不会将maximize accuracy作为数学上的训练方法,即在训练过程中不使用与acc有关的损失函数。 逻辑回归中的训练目标(评估函数)与预测目标(评估函数)并不相同,但方向一致。 acc=∑I(predi==yi)len(Y)(1)acc = \\frac{\\sum{I(pred_i==y_i)}}{len(Y)} \\tag{1}acc=len(Y)∑I(predi​==yi​)​(1) 如果在训练过程中以最大化acc为目标,当参数在训练过程中向标签方向更新使得逻辑回归输出的正确类的概率增大时,考虑以下两种情况: gradient = 0 if accuracy unchanged but weights changed: xxxxxxxxxx19 1a = torch.tensor([1, 2, 3])2b = torch.tensor([4, 5, 6])3c = zip(a, b)4for i in c:5 print(i)6'''7(tensor(1), tensor(4))8(tensor(2), tensor(5))9(tensor(3), tensor(6))10'''11a = torch.tensor([[1, 2, 3], [3, 2, 1]])12b = torch.tensor([[4, 5, 6], [6, 5, 4]])13c = zip(a, b)14for i in c:15 print(i)16'''17(tensor([1, 2, 3]), tensor([4, 5, 6]))18(tensor([3, 2, 1]), tensor([6, 5, 4]))19'''python gradient not continuous since the number of correct is not continunous: 当上一轮迭代的输出概率很接近阈值时,下一次迭代的概率提升了很少一点但是仍超过了阈值,且一个batch中有大量样本均存在这种情况,此时acc有显著提升而网络的权重的更新极小,此时,与acc有关的Loss函数对权重求导得到的梯度会出现梯度爆炸或者说不连续的情况。","s":"为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数?","u":"/docs/Deep-Learning/基础知识/LogisticRegression","h":"#为什么逻辑回归或其他分类任务不使用分类准确率作为损失函数","p":479},{"i":490,"t":"卷积层会对输入的局部区域进行卷积操作,因此对于输入图像中的每个位置都会产生一个响应。然而,在某些情况下,我们并不关心输入图像中每个位置的细节,而只是想获取该区域的一些重要特征。 假设我们想分类一张猫的图片,那么我们可能只需要提取出它的眼睛、鼻子、嘴巴和耳朵等特征,而不必考虑这些特征在图像中的精确位置。","s":"卷积对像素位置信息是敏感的","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#卷积对像素位置信息是敏感的","p":488},{"i":492,"t":"池化层通过对输入的局部区域进行降采样操作,减少了特征图的大小,从而使得模型对于输入位置的微小变化更加鲁棒。例如,如果我们将一个对象稍微平移一点,它依然可以被正确地识别,因为池化层可以保留输入图像的关键特征,而忽略掉微小的位置变化。 但是需要注意的是,当池化的步幅和池化区域的大小过大时,会导致模型丢失较多的细节信息,从而影响模型性能。因此,在实际应用中,需要根据具体任务来选择适当的池化参数。 缓解卷积层对位置的敏感性,提高鲁棒:池化操作通常用于卷积层之后,使模型对于输入位置的微小变化更加鲁棒,减少图像中的噪声和冗余信息 减小特征图大小:池化操作会通过在特定位置上合并特征值来缩小输入特征图的空间大小,降低计算开销。 减少参数数量:池化操作减小了特征图的空间大小,从而也减小了需要训练的权重参数数量,更容易训练和优化。","s":"池化层的作用","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化层的作用","p":488},{"i":494,"t":"池化层将输入特征图分割成若干个区域,然后对每个区域进行汇聚操作,将该区域内的特征值合并成一个值。这个操作可以使用不同的方法实现,如最大值池化、平均值池化等。 最常见的是最大值池化,其中每个区域的输出值是该区域内特征值的最大值,这样可以保留图像中最显著的特征,同时减少噪声和冗余信息的影响。","s":"池化的实现","u":"/docs/Deep-Learning/基础知识/PoolingLayer","h":"#池化的实现","p":488},{"i":497,"t":"感知机是一种二元线性分类模型,旨在寻找一个超平面(在二维空间中即为一条直线),将不同类别的实例划分到不同的区域。感知机的训练过程包括迭代地对样本进行分类,并根据分类错误的情况调整超平面的参数,使得分类准确率逐步提高。感知机是基础的机器学习算法之一,其思想和方法对神经网络等更复杂的模型也具有启发意义。","s":"什么是感知机","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#什么是感知机","p":495},{"i":499,"t":"输入向量:感知机的输入向量是一个n维向量x=(x1,x2,...,xn)x=(x_1,x_2,...,x_n)x=(x1​,x2​,...,xn​),表示一个样本的各个特征值。 权值向量:感知机的权值向量也是一个n维向量w=(w1,w2,...,wn)w=(w_1,w_2,...,w_n)w=(w1​,w2​,...,wn​),表示每个特征对应的权重。 偏置项:偏置项bbb是一个常数,可看作是模型的截距,用于调整阈值函数的位置。 内积运算:感知机将输入向量和权值向量进行内积运算,并加上偏置项,得到输入信号z=w∗x+bz=w*x+bz=w∗x+b。 阈值函数:将输入信号zzz带入阈值函数,如符号函数sign(z)sign(z)sign(z),即可得到分类结果。 损失函数:感知机使用误分类点到超平面的距离来作为损失函数,即 L(y,z)=max(0,−y∗z)(1)L(y,z)=max(0,-y*z) \\tag{1}L(y,z)=max(0,−y∗z)(1) 其中yyy是样本的真实标签,zzz是预测值。 参数更新:根据当前样本误分类情况来对权值向量www和偏置项bbb进行迭代更新。 收敛条件:当全部训练样本被正确分类或达到最大迭代次数时,感知机算法停止迭代。 感知机训练流程伪代码如下所示: initialize w = 0 and b = 0 repeat if yi * zi <= 0 then w = w + yi * xi and b = b + yi end if until all classified correctly","s":"详细原理","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#详细原理","p":495},{"i":501,"t":"感知机是一个二分类模型,最早的AI模型之一 求解算法等价于使用批量大小为1的梯度下降 要求数据集线性可分,不能拟合XOR异或等非线性问题,导致第一次AI寒冬","s":"总结","u":"/docs/Deep-Learning/基础知识/Perceptron","h":"#总结","p":495},{"i":504,"t":"concat与stack函数 stack函数对输入的两个张量在指定的维度进行堆叠,是创建了新的维度 concat函数对输入的张量在指定维度进行拼接,没有创建新的维度 # stack和concat函数 a = torch.rand(4, 3) # A班4位同学,每位同学3科成绩 b = torch.rand(4, 3) # B班4位同学,每位同学3科成绩 c = torch.stack((a, b), dim=0) # 理解:年级所有同学的3科成绩(假设年级只有A班和B班两个班,每个班只有四名同学) print(c.shape) # torch.Size([2, 4, 3]) d = torch.concat((a, b), dim=1) # 理解:a是A班4位同学3科成绩,b是这4名同学其他3门课的成绩,拼接后代表这4名同学的6科成绩 print(d.shape) # torch.Size([4, 6]) list和tensor乘法不同之处 list的*乘法是复制元素,改变list的shape tensor的*乘法是对tensor中的元素进行点乘计算 a = torch.tensor([[3, 3, 3, 3]]) b = [3] # list的*乘是复制元素进行扩展 print(a * 3) # tensor([[9, 9, 9, 9]]) print(b * 3) # [3, 3, 3] 最大值 / 最小值索引:argmax / argmin 需要通过参数dim指定操作的维度,dim的理解 官方解释:The dimension to reduce 以二维张量举例,dim=1即在每一行中选出一个最大值 / 最小值元素的索引,索引的shape应为[dim0, 1],即reduce了dim=1的维度 # 最大值最小值索引 a = torch.tensor([[0.1, 0.9, 0.3], [0.9, 0.8, 0.99], [0.1, 0.7, 0.8], [0.88, 0.1, 0.2]]) # [4, 3] print(\"argmax output: \", a.argmax(dim=0), a.argmax(dim=1)) # argmax output: tensor([1, 0, 1]) tensor([1, 2, 2, 0]) Python zip函数 zip函数可以理解为压缩,将输入的两个迭代器的最外层对应元素压缩为一个新的元素 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) c = zip(a, b) for i in c: print(i) ''' (tensor(1), tensor(4)) (tensor(2), tensor(5)) (tensor(3), tensor(6)) ''' a = torch.tensor([[1, 2, 3], [3, 2, 1]]) b = torch.tensor([[4, 5, 6], [6, 5, 4]]) c = zip(a, b) for i in c: print(i) ''' (tensor([1, 2, 3]), tensor([4, 5, 6])) (tensor([3, 2, 1]), tensor([6, 5, 4])) '''","s":"常用函数部分","u":"/docs/Deep-Learning/基础知识/PytorchBasics","h":"#常用函数部分","p":502},{"i":506,"t":"原文链接:https://arxiv.org/pdf/2406.11838 参考资料:何恺明:Autoregressive Image Generation without Vector Quantization.","s":"Autoregressive Image Generation without Vector Quantization","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"","p":505},{"i":508,"t":"Conventional wisdom holds that autoregressive models for image generation are typically accompanied by vector-quantized tokens. We observe that while a discrete-valued space can facilitate representing a categorical distribution, it is not a necessity for autoregressive modeling. In this work, we propose to model the per-token probability distribution using a diffusion procedure, which allows us to apply autoregressive models in a continuous-valued space. Rather than using categorical cross-entropy loss, we define a Diffusion Loss function to model the per-token probability. This approach eliminates the need for discrete-valued tokenizers. We evaluate its effectiveness across a wide range of cases, including standard autoregressive models and generalized masked autoregressive (MAR) variants. By removing vector quantization, our image generator achieves strong results while enjoying the speed advantage of sequence modeling. We hope this work will motivate the use of autoregressive generation in other continuous-valued domains and applications.","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#摘要","p":505},{"i":510,"t":"由于语言先天的离散性质,在自然语言领域的自回归模型都是在离散的隐空间中学习数据的概率分布。因此,当自回归模型推广到连续的数据空间(如图像生成)进行发展时,研究人员将主要的精力放在了如何更有效地将连续数据离散化上,如 VQGAN、VQVAE、VAR、MaskGIT 等。 然而,本文作者从 Autoregressive 模型的性质本身(即根据先前的 token 预测下一个 token)出发进行思考,产生了自回归模型是否有必要与向量量化(Vector Quantization)表示相结合的疑问,作者发现,自回归生成模型与 token 是离散表示的还是连续表示的并没有关系,真正需要解决的问题是如何对每个 token 的概率分布进行建模,同时该概率分布可以通过损失函数来学习和约束(训练),并用于从中进行采样(生成)。","s":"研究动机","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#研究动机","p":505},{"i":512,"t":"本文提出的模型融合了目前图像生成领域的三大主流范式的思想,分别为自回归生成、掩码生成以及扩散生成: 模型首先根据自回归模型性质为每个 token 生成条件向量(conditional vector)zzz 之后使用扩散过程建模每个 token 的概率分布 最后结合掩码生成的思想加速训练和推理过程","s":"主要方法与实现","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#主要方法与实现","p":505},{"i":514,"t":"具体而言,如下图所示,假设连续值向量 x∈Rdx \\in \\mathbb{R}^dx∈Rd,是当前位置要预测的 token。自回归模型在这个位置产生一个条件向量 z∈RDz \\in \\mathbb{R}^Dz∈RD​​ 。 本文使用 Diffusion Loss 根据 zzz 对 xxx 建模概率分布 p(x∣z)p(x \\mid z)p(x∣z)​ 。 L(z,x)=Eε,t[∥ε−εθ(xt∣t,z)∥2]L(z, x)=\\mathbb{E}_{\\varepsilon, t}\\left[\\left\\|\\varepsilon-\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)\\right\\|^2\\right]L(z,x)=Eε,t​[∥ε−εθ​(xt​∣t,z)∥2] 其中: ε∈Rd\\varepsilon \\in \\mathbb{R}^dε∈Rd 是从 N(0,I)\\mathcal{N}(0, \\mathbf{I})N(0,I) 采样的噪声向量 xt=αˉtx+1−αˉtεx_t=\\sqrt{\\bar{\\alpha}_t x}+\\sqrt{1-\\bar{\\alpha}_t} \\varepsilonxt​=αˉt​x​+1−αˉt​​ε,其中 αˉt\\bar{\\alpha}_tαˉt​ 定义了一个 noise schedule ttt 是 noise schedule 的时间步 噪声预测网络 εθ\\varepsilon_\\thetaεθ​ 由参数 θ\\thetaθ 控制,是一个小型 MLP 网络,εθ(xt∣t,z)\\varepsilon_\\theta\\left(x_t \\mid t, z\\right)εθ​(xt​∣t,z) 表示此网络将 xtx_txt​ 作为输入,并且以 ttt 和 zzz​​​ 作为条件。MLP 网络的具体组成如下所示: 对于扩散过程,作者采用了 cosine 函数作为 noise schedule,在训练过程中设定为 1000 步,在推理过程中设定为 100 步。同时,Diffusion Loss 原生支持 CFG 策略。","s":"Diffusion Loss","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#diffusion-loss","p":505},{"i":516,"t":"在推理时,需要从分布 p(x∣z)p(x \\mid z)p(x∣z) 中采样样本。采样是通过逆扩散过程进行的: xt−1=1αt(xt−1−αt1−αˉtϵθ(xt∣t,z))+σtδx_{t-1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t-\\frac{1-\\alpha_t}{\\sqrt{1-\\bar{\\alpha}_t}} \\epsilon_\\theta\\left(x_t \\mid t, z\\right)\\right)+\\sigma_t \\deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt​δ 这里 δ\\deltaδ 是从高斯分布 N(0,I)\\mathcal{N}(0, I)N(0,I) 中采样的, σt\\sigma_tσt​ 是时间步 ttt 的噪声水平。以 xT∼N(0,I)x_T \\sim \\mathcal{N}(0, I)xT​∼N(0,I) 开始,此过程生成一个样本 x0x_0x0​ 使得 x0∼p(x∣z)x_0 \\sim p(x \\mid z)x0​∼p(x∣z)​。","s":"采样","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#采样","p":505},{"i":519,"t":"本文为了提高生成速度,结合了 MAE 和 MaskGIT 模型的思想,如下图的 b 和 c 所示,将随机顺序生成的思想和每次预测出一个 patch 的 token 的思想加入到本文的模型中。 掩码信息通过位置编码送入 Decoder 中,使模型在以随机顺序预测序列时获取到 token 的位置信息。","s":"结合掩码生成模型的思想 MAR","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#结合掩码生成模型的思想-mar","p":505},{"i":526,"t":"对于 MAR 模型,AR 步数越小,每次预测的一个 patch 的 token 数越大,速度越快,精度越低,默认设置为 64 步。","s":"MAR 模型速度与效果的 trade-off","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Image-Generation-without-Vector-Quantization","h":"#mar-模型速度与效果的-trade-off","p":505},{"i":529,"t":"LeNet是由Yann LeCun等人于1998年提出的卷积神经网络结构,该结构由卷积层、池化层和全连接层组成,可以高效地处理手写数字图像,并在MNIST数据集上取得了很好的性能。 LeNet-5的成功标志着卷积神经网络在计算机视觉领域中的崛起,并促进了深度学习的快速发展。","s":"背景","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#背景","p":527},{"i":531,"t":"import torch import numpy as np from torch import nn as nn from torch.nn import functional as F from d2l import torch as d2l from matplotlib import pyplot as plt import os os.environ['http_proxy'] = 'http://127.0.0.1:7890' os.environ['https_proxy'] = 'https://127.0.0.1:7890' class LeNetReshape(nn.Module): def __init__(self): super(LeNetReshape, self).__init__() def forward(self, x): return x.reshape(-1, 1, 28, 28) class LeNet5(nn.Module): def __init__(self): super(LeNet5, self).__init__() self.net = torch.nn.Sequential( LeNetReshape(), # 激活函数应为Sigmoid nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Conv2d(6, 16, kernel_size=5), nn.LeakyReLU(), nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(), nn.Linear(16 * 5 * 5, 120), nn.LeakyReLU(), nn.Linear(120, 84), nn.Sigmoid(), nn.Linear(84, 10)) def forward(self, x): return self.net(x) def evaluate_accuracy_gpu(net, data_iter, device=None): if isinstance(net, torch.nn.Module): net.eval() if not device: device = next(iter(net.parameters())).device metric = d2l.Accumulator(2) for X, y in data_iter: if isinstance(X, list): X = [x.to(device) for x in X] else: X = X.to(device) y = y.to(device) metric.add(d2l.accuracy(net(X), y), y.numel()) # 此处accuracy是统计 return metric[0] / metric[1] def accuracy(y_hat, y): return torch.sum(y_hat.argmax(dim=1) == y) def train(net, train_iter, test_iter, num_epochs, lr, device): def init_weights(m): if type(m) == nn.Linear or type(m) == nn.Conv2d: nn.init.xavier_uniform_(m.weight) net.apply(init_weights) net.to(device) optimizer = torch.optim.SGD(net.parameters(), lr=lr) loss = torch.nn.CrossEntropyLoss() loss.to(device) animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs], legend=['train loss', 'train acc', 'test acc']) timer, num_batches = d2l.Timer(), len(train_iter) metric = d2l.Accumulator(3) net.train() for epoch in range(num_epochs): for batch, (X, y) in enumerate(train_iter): timer.start() optimizer.zero_grad() X, y = X.to(device), y.to(device) y_hat = net(X) l = loss(y_hat, y) l.backward() optimizer.step() metric.add(l * X.shape[0], accuracy(y_hat, y), y.numel()) timer.stop() train_l = metric[0] / metric[2] train_acc = metric[1] / metric[2] if (batch + 1) % (num_batches // 5) == 0 or batch == num_batches - 1: animator.add(epoch + (batch + 1) / num_batches, (train_l, train_acc, None)) test_acc = evaluate_accuracy_gpu(net, test_iter) animator.add(epoch + 1, (None, None, test_acc)) print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, test acc {test_acc:.3f}') print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec on {str(device)}') plt.show() batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) lr, num_epochs = 0.9, 10 lenet = LeNet5() train(lenet, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())","s":"代码实现","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#代码实现","p":527},{"i":533,"t":"在分类模型中,最后两个全连接层之间不要使用ReLU激活函数。因为ReLU的范围是[0, +∞),它会将所有负数都变成0。而最后一层全连接层输出了类别信息,倒数第二层的输出值包含着非常重要的类别信息,此时使用激活函数很可能会导致信息丢失。","s":"问题","u":"/docs/Deep-Learning/基础知识/LeNet","h":"#问题","p":527},{"i":535,"t":"相关链接 论文:arXiv 参考资料: Transformer模型详解(图解最完整版) 【機器學習2021】Transformer (下) Transformer是Sequence-to-Sequence (Seq2Seq) 模型,模型的输入是向量序列,输出同样是向量序列,且输出的长度由模型经过学习决定。","s":"NeurIPS 2017: Attention Is All You Need","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"","p":534},{"i":537,"t":"Transformer由Encoder和Decoder组成,编码器和解码器都包含6个Block,整体结构如下图所示。","s":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构","p":534},{"i":540,"t":"Transformer Encoder结构如下图所示。其中,Add指的是残差连接Residual Connection,Norm指的是Layer Normalization。","s":"整体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#整体结构-1","p":534},{"i":542,"t":"对于输入的句子,对一个词汇的嵌入向量的奇数维度使用sine函数进行编码,对偶数维度使用cosine函数计算编码。 公式如下所示,其中pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel​次位置编码。 PE(pos,2i)=sin(pos100002i/dmodel)(1)PE_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{1}PE(pos,2i)​=sin(100002i/dmodel​pos​)(1) PE(pos,2i+1)=cos(pos100002i/dmodel)(2)PE_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model}}}}) \\tag{2}PE(pos,2i+1)​=cos(100002i/dmodel​pos​)(2) 根据三角函数的性质,对于pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1维度的线性组合,使得位置向量中蕴含了相对位置的信息。 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)(3)\\begin{array}{l}PE(pos+k,2i)=PE(pos,2i)\\times PE(k,2i+1)+PE(pos,2i+1)\\times PE(k,2i)\\\\PE(pos+k,2i+1)=PE(pos,2i+1)\\times PE(k,2i+1)-PE(pos,2i)\\times PE(k,2i)\\end{array} \\tag{3}PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)−PE(pos,2i)×PE(k,2i)​(3) 最终,位置编码向量的维度与词汇的嵌入维度相同,进行element-wise的相加操作。 InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i) \\tag{4}InputEmbedding(pos,i)=WordEmbedding(pos,i)+PositionEncoding(pos,i)(4)","s":"位置编码(Positional Encoding)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#位置编码positional-encoding","p":534},{"i":544,"t":"输入向量由Word Embedding和Positional Embedding相加得到。输入序列经过Mutil-Head Self-Attention之后,通过Residual Connection加上自身的输入向量,再经过Layer Normalization,之后送入FCN并进行Residual Connection加上送入FCN的输入自身,最终再进行Layer Normalization,以上构成了一个Encoder Block。每一个Block输出的向量序列长度等于输入的向量序列长度。","s":"具体结构","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#具体结构","p":534},{"i":546,"t":"Decoder的任务是生成输出,可以根据是否一次性生成输出分为Autoregressive(自回归,abbr. AT)以及Non-Autoregressive(非自回归,abbr. NAT)两种模式。 自回归类型的Decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token作为下一次的输入,通常每次生成一个词或一个符号。这种方式的缺点是需要保存和更新词表中的所有可能选项,因此在大词汇表上可能会变得非常慢。然而,它的优点是能够利用上下文信息来生成输出,这有助于提高翻译的质量。 非自回归类型的Decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。NAT的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于AT。","s":"Decoder","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#decoder","p":534},{"i":548,"t":"整体结构​ 词汇表(Vocabulary)​ 词汇表(Vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(NLP)中,词汇表是训练模型时所使用的唯一单词的集合,由具体的生成任务而确定。 Decoder每一步的输出是一个经过Softmax的Probability Distribution(概率分布),代表着词汇表中每一个词汇当前生成的概率,取最大概率值的词汇便是模型当前时间步输出的词汇。 Begin符号​ 解码器(Decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(Encoder)的输出。特别地,首个时间步的输入是Begin符号以及编码器(Encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(Encoder)的输出,直到生成序列的结束。 特殊符号 Begin符号是在Lexicon中添加的特殊符号,用来表示Decoder生成的开始。Begin符号通常被嵌入到一个低维的连续向量空间中,这个向量空间是通过嵌入层(Embedding Layer)学习得到的,在嵌入层中,离散的符号被映射到一个实数向量。 Begin符号又叫Start符号或SOS符号(Start Of Sentence),都是表示生成的开始。End符号又叫EOS符号(End Of Sentence)。 End符号​ 在Decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过Softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向Decoder的输出中加入End符号的生成,即每一次输出除了词汇表的所有词汇外还有End符号的概率,当End符号是在所有词汇中概率最大的词汇时,生成停止。 掩码多头自注意力机制(Masked Multi-Head Self-Attention)​ 为什么使用掩码多头自注意力 掩码多头自注意力与Transformer训练时采取的Teacher Forcing策略有很大的关系,具体分析见下文《Teacher Forcing与Masked Multi-Head Self-Attention》的讨论环节:Teacher Forcing与Masked Multi-Head Self-Attention 观察Decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的Decoder当前时间步之前的所有输出单词经过嵌入后的向量表示。 掩码多头自注意力机制用于确保在生成序列的过程中,每个位置只能关注到该位置及其之前的位置。这是通过在Self-Attention的计算中应用一个掩码(mask)来实现的。这确保了在生成序列时,每个位置只能查看到它之前的信息,而不能查看到未来的信息,从而实现了自回归性质。 具体来说,添加掩码后的自注意力机制在生成注意力分数时不再考虑输入序列的所有向量。如在输入向量aia^iai在计算注意力分数时,只将aia^iai的query向量与a1a^1a1至aia^{i}ai的iii个key向量做dot product,而不考虑aia^iai之后的输入的key。 提示 对于第sss个时间步,Masked Mutil-Head Self-Attention的输入是时间步sss之前Decoder生成的所有输出单词的嵌入表示。 交叉注意力(Cross-Attention)​ 交叉注意力是连接Encoder和Decoder的桥梁,也是Decoder输入的重要组成部分。 交叉注意力接收两个输入序列,一个来自编码器(Encoder)的输出序列(通常是输入序列的表示),另一个来自解码器(Decoder),是经过掩码多头自注意力机制的输出序列(通常是正在生成的序列的中间表示)。 在交叉注意力中,每次计算注意力得分的query来自解码器,key和value来自编码器。解码器每个向量的查询(Query)与编码器位置的键(Key)进行点积得到了注意力分数,通过Softmax操作后转换为注意力权重,再与编码器位置的值(Value)weighted sum得到加权注意力分数,最终将加权注意力分数求和得到每个输入向量的输出。","s":"Autoregressive Decoder(AT)","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#autoregressive-decoderat","p":534},{"i":552,"t":"在 Transformer 中,Encoder 不像 Decoder 需要生成序列,因此它通常不涉及标签的预测。Encoder 的训练通常是在整个模型中的联合训练中进行的,通过优化整个模型的损失函数来进行。 Transformer 的整体训练过程一般分为以下几个步骤: 编码器(Encoder)的正向传播: 输入序列经过编码器的正向传播,产生一组上下文表示。 解码器(Decoder)的正向传播: 解码器接收上下文表示,并生成目标序列。 计算损失: 通过比较生成的目标序列与实际目标序列,计算损失。在 Decoder 中,通常使用交叉熵损失函数。 反向传播: 根据损失,进行反向传播,更新模型参数。这个过程中,梯度通过整个模型传播,包括 Encoder 和 Decoder。 整个模型的参数(包括 Encoder 和 Decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,Encoder 的表示对于 Decoder 的性能至关重要。在训练过程中,梯度从损失函数传播回整个模型,包括 Encoder 和 Decoder,从而更新它们的参数。 需要注意的是,Transformer 模型通常使用的是端到端的训练方式,整个模型的参数是一次性更新的。在某些场景下,你可能会看到对 Encoder 或 Decoder 进行微调(fine-tuning)的情况,但这是在特定应用场景下的调整,不是 Transformer 模型的标准训练方式。","s":"损失函数","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#损失函数","p":534},{"i":554,"t":"在Transformer的推理阶段,自回归类型的Decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入Decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(Error Propagation)。 因此使用Teacher Forcing策略,将Ground Truth一次性喂到Decoder中,使模型更快收敛并且避免误差积累的问题。 但是,自回归Decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用Teacher Forcing时却可以得到第i+1i+1i+1个及其之后词汇的注意力信息,如果不添加其他策略显然会对模型的泛化能力造成很大的影响,而且这并不符合自回归(Autoregression)的特性。为了解决这个问题,掩码多头注意力机制应运而生,在训练阶段将模型在时间发展顺序的右侧的输入masked掉,防止模型学习到不该学习的注意力。","s":"Teacher Forcing","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing","p":534},{"i":556,"t":"参考文献:MultiHead-Attention和Masked-Attention的机制和原理 与Encoder的多头自注意力不同,在Decoder中,为注意力机制应用了掩码,使模型只能关注到当前位置及其之前的位置,而不能访问未来的信息。这解决了引入Teacher Forcing出现的问题,避免了训练与推理阶段的Mismatch,维护了自回归的特性。 具体来说,模拟推理过程中第一个词汇时的场景。当模型只有voc1voc_1voc1​词汇向量输入时,在Decoder中,voc1voc_1voc1​与自身计算注意力分数,于是有 [o1]=[α1,1′][v1](5)\\begin{bmatrix}o_1\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\end{bmatrix}\\tag{5}[o1​​]=[α1,1′​​][v1​​](5) 我们再模拟训练过程中使用Teacher Forcing,一次性输入为两个词汇voc1voc_1voc1​与voc2voc_2voc2​的情况,于是有 [o1o2]=[α1,1′α2,1′α1,2′α2,2′][v1v2](6)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&\\alpha_{2,1}^{\\prime}\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6) 然而,为了使训练过程中符合推理时自回归的特性,理想的输出应该是 [o1o2]=[α1,1′0α1,2′α2,2′][v1v2](7)\\begin{bmatrix}o_1\\\\o_2\\end{bmatrix}=\\begin{bmatrix}\\alpha_{1,1}^{\\prime}&0\\\\\\alpha_{1,2}^{\\prime}&\\alpha_{2,2}^{\\prime}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\end{bmatrix} \\tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7) 继续扩展,当有nnn个输入词汇时,应该有 [o1o2⋮on]=[α1,1′0⋯0α1,2′α2′⋯0⋮⋮⋮α1,n′α2,n′⋯αn,n′][v1v2⋮vn](8)\\begin{bmatrix}o_1\\\\o_2\\\\\\vdots\\\\o_n\\end{bmatrix}=\\begin{bmatrix}\\alpha'_{1,1}&0&\\cdots&0\\\\\\alpha'_{1,2}&\\alpha'_2&\\cdots&0\\\\\\vdots&\\vdots&&\\vdots\\\\\\alpha'_{1,n}&\\alpha'_{2,n}&\\cdots&\\alpha'_{n,n}\\end{bmatrix}\\begin{bmatrix}v_1\\\\v_2\\\\\\vdots\\\\v_n\\end{bmatrix}\\tag{8}⎣⎡​o1​o2​⋮on​​⎦⎤​=⎣⎡​α1,1′​α1,2′​⋮α1,n′​​0α2′​⋮α2,n′​​⋯⋯⋯​00⋮αn,n′​​⎦⎤​⎣⎡​v1​v2​⋮vn​​⎦⎤​(8) 因此,我们需要将当前时间步计算的词汇的时间顺序右侧的输入词汇全部掩码,置为0。 在源码中,有如下片段实现掩码: if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = scores.softmax(dim=-1) 在源码中,将mask置为负无穷是因为这是在经过Softmax之前进行的掩码,在经过Softmax之后负无穷小就变成了0。","s":"Teacher Forcing与Masked Multi-Head Self-Attention","u":"/docs/Deep-Learning/论文笔记/Attention-Is-All-You-Need","h":"#teacher-forcing与masked-multi-head-self-attention","p":534},{"i":558,"t":"原文链接:https://arxiv.org/pdf/2406.06525","s":"Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"","p":557},{"i":560,"t":"We introduce LlamaGen, a new family of image generation models that apply original “next-token prediction” paradigm of large language models to visual generation domain. It is an affirmative answer to whether vanilla autoregressive models, e.g., Llama, without inductive biases on visual signals can achieve state-of-the-art image generation performance if scaling properly. We reexamine design spaces of image tokenizers, scalability properties of image generation models, and their training data quality. The outcome of this exploration consists of: (1) An image tokenizer with downsample ratio of 16, reconstruction quality of 0.94 rFID and codebook usage of 97% on ImageNet benchmark. (2) A series of class-conditional image generation models ranging from 111M to 3.1B parameters, achieving 2.18 FID on ImageNet 256×256 benchmarks, outperforming the popular diffusion models such as LDM, DiT. (3) A text-conditional image generation model with 775M parameters, from two-stage training on LAION-COCO and high aesthetics quality images, demonstrating competitive performance of visual quality and text alignment. (4) We verify the effectiveness of LLM serving frameworks in optimizing the inference speed of image generation models and achieve 326% - 414% speedup. We release all models and codes to facilitate open-source community of visual generation and multimodal foundation models.","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#摘要","p":557},{"i":562,"t":"文章首先介绍了在 NLP 领域发展迅猛的 Autoregressive 模型,引出了在视觉领域的 Autoregressive 模型的发展。VQVAE、VQGA、DALL-E 和 Parti 等。同时指出了先前视觉 AR 模型存在开源社区发展不足,限制了 AR 方法继续研究的问题。此外,作者还提到了以 MaskGIT 为代表的 Masked-prediction Model 以及 VAR 方法,但是仍然体现出了与语言 LLMs 流行使用的自回归方法的较大差异。 同时还介绍了与 AR 思想不同的 Diffusion Models,作者指出,由于 DMs 与在 NLP 的 LLMs 常用的自回归思想有较大的差异,因此给语言和视觉的统一带来了很大的挑战。 作者同时总结了图像生成模型的三个要点: 优秀的 image compressor,即 AR 模型所使用的 image tokenizer、quantizer scalable image generation models,即模型的可扩展性(指参数量方面) 高质量的训练数据 可以看出,本文作者从统一语言和视觉两个模态的想法出发,强调与语言 LLMs 统一,而不是在视觉归纳偏置的引导下改进模型的结构,引出了本文的工作。 图像重建能力高、Codebook 利用率高达 97% 的 image tokenizer 基于语言模态中的 SOTA 模型 Llama 的可扩展的图像生成模型 高质量的训练数据,本文提出的文本条件图像生成模型,首先在 LAION-COCO 的 50 million 子集上进行训练,然后在 10 million 高质量图像上进行微调。展示出了视觉质量和文本对齐的竞争性能。 使用 语言模态中常用的 LLM serving framework vLLM 来优化图像生成模型的推理速度。","s":"Motivation 与主要贡献","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#motivation-与主要贡献","p":557},{"i":565,"t":"使用了与 VQGAN 相同的 encoder-quantizer-decoder 结构。 作者认为 Codebook 会极大地影响 image tokenization 的表现,因此对 Codebook 做出了以下优化,这种设计极大地增强了图像重建质量和 Codebook 的利用率。 对 Codebook 中的向量施加 l2l_2l2​-normalization,降低 Codebook 中向量的维度 CCC,增加 Codebook 的容量大小 KKK​​。 Codebook 以及 Image Tokenizer 的训练损失函数如下所示。","s":"Image Tokenizer","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-tokenizer","p":557},{"i":567,"t":"本文的 Autoregressive Model 的结构主要参考了 Llama 的结构,将语言模态中的 SOTA 模型直接引入至图像生成中,统一语言和视觉模态的操作。同时,这样做的好处是可以让视觉生成模型充分利用语言模态的 LLMs 社区中取得的前沿技术。 使用 RMSNorm 进行归一化,RMSNorm 是对 Layer Normalization 的一种改进。 RMSNorm 使用平方根的均值来归一化,而不是像 LayerNorm 那样使用整个样本的均值和方差。 RMSNorm 移除了 LayerNorm 中的 re-center 操作(即移除了均值项),可以看作 LayerNorm 在均值为 0 时的一个特例。 RMSNorm(x)=x1n∑i=1nxi2∗gRMSNorm(x)=\\frac x{\\sqrt{\\frac1n\\sum_{i=1}^nx_i^2}}*gRMSNorm(x)=n1​∑i=1n​xi2​​x​∗g 其中,xxx 是输入向量,nnn 是向量维度,ggg​ 是可缩放的参数。 RMSNorm 的优势在于其计算简单,尤其是在处理较长序列时,可以更有效地进行归一化。 使用 SwiGLU 激活函数,SwiGLU 结合了 GLU(Gated Linear Unit)和 Swish 函数,引入了门控机制来控制输入信号的传递方式。 组成部分: GLU 部分:使用 sigmoid 函数作为门控器,对输入信号进行筛选和选择性放大。 Swish 部分:非线性函数,类似于 ReLU,但在负值区域有平滑的非线性特性。 SwiGLU(x)=σ(xW1+b1)⊙(xW2+b2)\\mathrm{SwiGLU}(x)=\\sigma(xW_1+b_1)\\odot(xW_2+b_2)SwiGLU(x)=σ(xW1​+b1​)⊙(xW2​+b2​) 其中,xxx 是输入向量,W1,W2W_{1}, W_{2}W1​,W2​ 是权重矩阵,b1,b2b_1, b_2b1​,b2​ 是偏置向量,σ\\sigmaσ 是激活函数,通常为 GELU(高斯误差线性单元),⊙\\odot⊙ 表示逐元素乘法。 SwiGLU 引入两个线性变换和一个门控机制来增强模型的表现力,优点在于通过门控机制对输入进行加权,能够更灵活地捕捉复杂的输入模式。 本文提出的LlamaGen 模型的每一层都使用了 2D RoPE。 RoPE(Rotary Position Embedding)是一种位置编码方法,旨在解决绝对位置编码在处理较长序列时的局限性。RoPE 通过将位置信息引入到输入向量的相位中,增强了模型对相对位置的敏感度。其基本思想是将输入向量按位旋转,旋转角度与位置相关。 RoPE⁡(xi)=xi⋅cos⁡(θi)+xi+1⋅sin⁡(θi)\\operatorname{RoPE}\\left(x_i\\right)=x_i \\cdot \\cos \\left(\\theta_i\\right)+x_{i+1} \\cdot \\sin \\left(\\theta_i\\right)RoPE(xi​)=xi​⋅cos(θi​)+xi+1​⋅sin(θi​) xix_ixi​ 是输入向量的第 iii 个元素。 θi\\theta_iθi​ 是位置 iii 处的旋转角度,通常由固定的正弦和余弦函数生成。 RoPE 的优势在于能够更好地捕捉序列中的相对位置关系,提高模型的长距离依赖能力。 为了与语言模态的 LLMs 保持统一,作者没有使用 AdaLN。 AdaLN(Adaptive Layer Normalization)是一种自适应层归一化方法,旨在为不同的样本动态调整归一化参数。与传统的层归一化方法不同,AdaLN 根据输入数据自适应地调整均值和方差,从而更好地适应不同的输入特征。 AdaLN⁡(x)=x−μ(x)σ(x)⋅γ+β\\operatorname{AdaLN}(x)=\\frac{x-\\mu(x)}{\\sigma(x)} \\cdot \\gamma+\\betaAdaLN(x)=σ(x)x−μ(x)​⋅γ+β xxx 是输入向量。 μ(x)\\mu(x)μ(x) 和 σ(x)\\sigma(x)σ(x) 分别是输入 xxx 的均值和标准差。 γ\\gammaγ 和 β\\betaβ 是可训练的缩放和平移参数。 在 AdaLN 中,均值 μ(x)\\mu(x)μ(x) 和标准差 σ(x)\\sigma(x)σ(x)​ 是通过一个子网络(通常是一个简单的前馈网络)从输入数据中动态预测的。这使得归一化过程更加灵活,能够适应更复杂的输入模式。 LlamaGen 的训练使用了 CFG(Classifier-free Guidance)策略来提高视觉质量和文本-图像对齐。 训练阶段: 在训练期间,条件信息被随机丢弃,并用一个空的无条件嵌入进行替换。这种方法有助于减少模型对特定条件的依赖性,从而改善生成结果的一般化能力。 推理阶段: 对于每个 token,其 logit ℓg\\ell_gℓg​ 是通过以下方式形成的: ℓg=ℓu+s(ℓc−ℓu)\\ell_g = \\ell_u + s(\\ell_c - \\ell_u)ℓg​=ℓu​+s(ℓc​−ℓu​) 其中: ℓc\\ell_cℓc​ 表示条件logit,即基于输入文本提示的信息生成的logit。 ℓu\\ell_uℓu​ 表示无条件logit,即不考虑任何条件信息时生成的logit。 sss 是Classifier-free Guidance的比例因子,用于控制条件logit和无条件logit之间的平衡。 通过这种方式,模型可以利用无条件logit提供的通用信息,同时保留条件logit中的特定上下文信息。这种混合方法有助于提高生成图像的质量和与输入文本的对齐程度。 作者在文章的实验部分给出了使用 CFG 的结果,实验表明,CFG 过高会导致 FID 分数的下降,可以看作是多样性和保真度之间的权衡(trade-off),随着 CFG 的提高,准确率的提高和召回率的降低证明了这点。","s":"Image Generation Autoregressive Model","u":"/docs/Deep-Learning/论文笔记/Autoregressive-Model-Beats-Diffusion-Llama-for-Scalable-Image-Generation","h":"#image-generation-autoregressive-model","p":557},{"i":569,"t":"相关链接 论文:arXiv 代码:GitHub 参考资料: 54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读 【论文精读】Diffusion Model 开山之作DDPM","s":"NeurIPS 2020: Denoising Diffusion Probabilistic Models","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"","p":568},{"i":572,"t":"条件概率的定义​ 条件概率是指在给定另一个事件发生的条件下,某一事件发生的概率。条件概率通常用符号P(A∣B)P(A\\mid B)P(A∣B)表示,读作“在 B 发生的条件下 A 发生的概率”。 条件概率的计算公式为: P(A∣B)=P(A,B)P(B)P(A\\mid B)=\\frac{P(A,B)}{P(B)}P(A∣B)=P(B)P(A,B)​ 其中: P(A,B)P(A,B)P(A,B)是事件AAA、BBB同时发生的概率,也叫联合概率 P(B)P(B)P(B)是事件BBB独立发生的概率 全概率公式​ 对于事件AAA而言,假设有一组互斥且穷尽的条件事件B1,B2,…BnB_{1},B_{2},\\ldots B_{n}B1​,B2​,…Bn​构成一个完备事件组,则事件AAA的概率等于事件AAA在每个条件事件BiB_iBi​下发生的概率与该条件事件发生概率的乘积和。 P(A)=∑i=1nP(A∣Bi)⋅P(Bi)P(A)=\\sum_{i=1}^nP(A\\mid B_i)\\cdot P(B_i)P(A)=i=1∑n​P(A∣Bi​)⋅P(Bi​) 可以看出,全概率公式是由“因”(条件事件BiB_iBi​)推“果”(结果事件AAA)的过程,即当知道某结果事件的原因后,推断由该原因导致这件事发生的概率是多少。 贝叶斯公式​ 贝叶斯公式在观测到结果事件AAA发生后,计算其条件事件BiB_iBi​在事件AAA已经发生的条件下而发生的后验概率。 继续沿用上述全概率公式的符号定义,则有: P(Bi∣A)=P(A∣Bi)⋅P(Bi)P(A)P(B_i\\mid A)=\\frac{P(A\\mid B_i)\\cdot P(B_i)}{P(A)}P(Bi​∣A)=P(A)P(A∣Bi​)⋅P(Bi​)​ 其中: P(Bi)P(B_i)P(Bi​)以及P(A)P(A)P(A)称为先验概率 P(Bi∣A)P(B_i\\mid A)P(Bi​∣A)称为后验概率 P(A∣Bi)P(A\\mid B_i)P(A∣Bi​)称为似然","s":"先验概率与后验概率","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#先验概率与后验概率","p":568},{"i":574,"t":"条件概率的一般形式​ P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A)P(A,B,C)=P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid A,B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣A,B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣A,B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid A,B)P(B,C∣A)=P(B∣A)⋅P(C∣A,B) 其中,第二行公式的推导如下: P(B,C∣A)=P(A,B,C)P(A)=P(A,B,C)P(A,B,C)P(C∣A,B)⋅P(B∣A)=P(B∣A)⋅P(C∣A,B)\\begin{align*} P(B,C \\mid A) &= \\frac{P(A,B,C)}{P(A)} \\\\ &= \\frac{P(A,B,C)}{\\frac{P(A,B,C)}{P(C \\mid A,B) \\cdot P(B \\mid A)}} \\\\ &= P(B \\mid A) \\cdot P(C \\mid A,B) \\end{align*}P(B,C∣A)​=P(A)P(A,B,C)​=P(C∣A,B)⋅P(B∣A)P(A,B,C)​P(A,B,C)​=P(B∣A)⋅P(C∣A,B)​ 高斯分布的KL散度​ 对于两个单一变量的高斯分布p∼N(μ1,σ12)p\\sim \\mathcal{N}(\\mu_1,\\sigma_1^2)p∼N(μ1​,σ12​)和q∼N(μ2,σ22)q\\sim \\mathcal{N}(\\mu_2,\\sigma_2^2)q∼N(μ2​,σ22​)而言,它们的KL散度定义为: DKL(p,q)=log⁡σ2σ1+σ12+(μ1−μ2)22σ22−12D_{KL}(p,q)=\\log\\frac{\\sigma_2}{\\sigma_1}+\\frac{\\sigma_1^2+(\\mu_1-\\mu_2)^2}{2\\sigma_2^2}-\\frac12DKL​(p,q)=logσ1​σ2​​+2σ22​σ12​+(μ1​−μ2​)2​−21​","s":"条件概率与高斯分布的KL散度","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#条件概率与高斯分布的kl散度","p":568},{"i":576,"t":"马尔科夫链指当前状态的概率只与上一时刻有关,例如若满足马尔科夫关系A→B→CA\\to B\\to CA→B→C,则有: P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A)P(A,B,C) =P(C\\mid A,B)\\cdot P(A,B)=P(C\\mid B)\\cdot P(B\\mid A)\\cdot P(A)P(A,B,C)=P(C∣A,B)⋅P(A,B)=P(C∣B)⋅P(B∣A)⋅P(A) P(B,C∣A)=P(B∣A)⋅P(C∣B)P(B,C\\mid A)=P(B\\mid A)\\cdot P(C\\mid B)P(B,C∣A)=P(B∣A)⋅P(C∣B)","s":"马尔科夫链条件概率形式","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#马尔科夫链条件概率形式","p":568},{"i":578,"t":"从任意高斯分布N(μ,σ2)\\mathcal{N}(\\mu,\\sigma^2)N(μ,σ2)采样xxx时,可以先从标准高斯分布N(0,1)\\mathcal{N}(0,1)N(0,1)中sample出zzz,再令 x=σ∗z+μx=\\sigma * z + \\mux=σ∗z+μ 优势: 由于线性变化,采样过程中对其他参数都有明确的导数,可以进行反向传播 可以通过线性变换来控制参数化的采样 标准正态分布具有易采样的性质","s":"参数重整化技巧","u":"/docs/Deep-Learning/论文笔记/Denoising-Diffusion-Probabilistic-Models","h":"#参数重整化技巧","p":568},{"i":580,"t":"相关链接 论文:arXiv 代码:GitHub 参考文献: Latent Diffusion Models论文解读 Stable Diffusion就是在这篇文章的基础上,使用LDM进行开发的。","s":"CVPR 2022: High-Resolution Image Synthesis with Latent Diffusion Models","u":"/docs/Deep-Learning/论文笔记/High-Resolution-Image-Synthesis-with-Latent-Diffusion-Models","h":"","p":579},{"i":583,"t":"本篇论文主要基于 IPL 的思想实现。本仓库大部分从 IPL-Zero-Shot-Generative-Model-Adaptation fork 而来并做出了一定修改。","s":"本科毕业论文:基于 Prompt Learning 的视觉-语言大模型在图像生成中的应用与研究","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"","p":582},{"i":586,"t":"conda create -n ipl python=3.8 conda activate ipl","s":"创建 Anaconda 虚拟环境","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#创建-anaconda-虚拟环境","p":582},{"i":588,"t":"请确保 NVIDIA 驱动、CUDA 以及 PyTorch 之间版本互相匹配。 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia pip install ftfy regex tqdm ninja pip install git+https://github.com/openai/CLIP.git","s":"安装依赖","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#安装依赖","p":582},{"i":590,"t":"预训练的源域生成器可以通过 Google Drive 或者 Tsinghua Cloud 下载,并将其置于 ./pre_stylegan 文件夹中。","s":"下载预训练生成器","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#下载预训练生成器","p":582},{"i":594,"t":"ctx_init 参数用于初始化 prompts,官方提供的演示 context 是a photo of a。 source_prompts = [prompt_prefix + \" \" + args.source_class] target_prompts = [prompt_prefix + \" \" + args.target_class] 源域的初始提示词 source_prompts 是 ctx_init 与源域标签的组合。若源域标签为 photo,则源域的初始提示词是 a photo of a photo。目标域的初始提示词同理。","s":"prompts 的初始化","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的初始化","p":582},{"i":596,"t":"源域以及目标域的初始提示词接下来会进行 tokenize: source_tokenized_prompts = torch.cat([clip.tokenize(p) for p in source_prompts]).to(device) # (1, 77) 'sot a photo of a photo eot' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 1125, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 target_tokenized_prompts = torch.cat([clip.tokenize(p) for p in target_prompts]).to(device) # (1, 77) 'sot a photo of a disney' 在经过tokenize后为tensor [[49406, 320, 1125, 539, 320, 4696, 49407, etc]] # 77是CLIP在tokenize方法中缺省的context_length,超过context_length将被truncate,不足的将用0补齐 tokenize 是 CLIP 对送入的 prompt 字符串进行标记化处理,在头部和尾部添加 startoftext 以及 endoftext 标记,最终为两个首尾标记和全部单词生成 int 标记。其中 CLIP 模型缺省的 context_length 是77,若 prompt 大于 77 会进行截断(truncate),若小于 77 会进行补零,因此 source_tokenized_prompts 与 target_tokenized_prompts 的形状均为 (1, 77)。 在提示词标记化之后,将进行嵌入表示 embedding: source_embedding = clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度 target_embedding = clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtype) # (1, 77, 512) 其中512是CLIP中的n_dim,token_embedding层的词嵌入的维度","s":"prompts 的 tokenize 与 embedding","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#prompts-的-tokenize-与-embedding","p":582},{"i":598,"t":"在 Mapper 生成 prompts 后进行 prompts 的特征提取时,需要传入 tokenize 之后的人工初始化 prompt(‘a photo of a photo.’或‘a photo of a disney.’),用于选择 eot 符号对应的维度来进行特征投影(因为 eot 作为整个句子的结尾,被认为该维度包含更多的信息。具体做法:由于在 tokenize 之后,eot 符号对应的维度的值最大,因此可使用 argmax 来定位),以保证最后得到的特征形状与图像特征提取的输出形状相同,使得后续可以进行对比学习的损失计算。","s":"compute_text_features 的实现细节","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#compute_text_features-的实现细节","p":582},{"i":600,"t":"Z空间与W空间​ # Z空间到W空间的变换 sample_z = mixing_noise(args.batch_mapper, 512, args.mixing, device) # (batch_size, 512) sample_w = net.generator_frozen.style(sample_z) # (batch_size, 512) Z 空间和 W 空间是 StyleGAN 模型中两种不同的隐变量空间,分别用于控制生成图像的随机特征和样式信息。W 空间通过对 Z 空间的映射得到。 Z 空间(Latent Space Z): Z 空间是随机噪声空间,通常由随机噪声向量组成,表示了图像的随机特征。 在 StyleGAN 中,Z 空间的维度通常为 512 维。这意味着一个 Z 向量由 512 个数字组成,每个数字表示了图像的一个随机特征的强度或者方向。 W 空间(Style Space W): W 空间经过特征解耦的隐空间,与 Z 空间相比更加解耦合。 在 StyleGAN 中,W 空间的维度也通常为 512 维,是通过mapping network进行映射得到的,mapping network 由 PixelNorm 层与 EqualLinear 层构成。以下代码节选自sg2_model.py: '''mapping network''' layers = [PixelNorm()] for i in range(n_mlp): layers.append( EqualLinear( style_dim, style_dim, lr_mul=lr_mlp, activation=\"fused_lrelu\" ) ) self.style = nn.Sequential(*layers) Z 空间与 W 空间的关系: 在 StyleGAN 中,通常会先将一个 Z 向量映射到 W 空间,然后再将 W 向量输入到生成器网络中生成图像。 Z 空间提供了初始随机噪声,而 W 空间则通过特征解耦提供更多控制图像风格的灵活性。通过对 Z 和 W 之间的映射以及 W 在生成器中的应用,StyleGan 实现了高度可控且具有良好生成效果的图像合成。 损失函数​ 在代码中,stage 1 的损失函数是 global_clip_loss,该损失由三部分组成: 对比学习损失:Mapper 生成的源域 prompts 的特征(注意,这里的 prompts 特征是与人工初始化的 prompts 的特征做过 element-wise 相加后的特征)与源域图像特征的余弦相似度组成的对比学习损失; 目标域正则化损失:Mapper 生成的目标域 prompts 的特征与目标域文本标签特征的余弦相似度,这里生成的目标域 prompts 特征同样也是与人工初始化的 prompts 做过加法的。注意该损失有权重 lambda_l。 源域正则化:计算生成的源域prompts与源域标签之间的余弦相似度,由 lambda_src 控制,默认是 0。","s":"训练 stage 1","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-1","p":582},{"i":602,"t":"确定目标域生成域需要更新的层​ 在训练的第二阶段进行前向传播时,需要先对目标域生成器(generator_trainable)的所有层进行 unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.ZSSGAN.ZSSGAN.determine_opt_layers,最后 freeze 所有层后再 unfreeze 选择的网络层。 if self.training and self.auto_layer_iters > 0: self.generator_trainable.unfreeze_layers() # unfreeze train_layers = self.determine_opt_layers() # layer to train if not isinstance(train_layers, list): train_layers = [train_layers] self.generator_trainable.freeze_layers() self.generator_trainable.unfreeze_layers(train_layers) # unfreeze 具体选择带更新网络层的策略: 将 W 空间的隐向量送入目标域生成器(SG2Generator)中,并进行反向传播,此时可以通过反向传播后 W 空间隐向量不同维度的更新幅度来衡量不同网络层的影响力,因此选出更新幅度最大的维度就可以确定在 Model Adaption 中需要更新的网络层。 之所以 W 空间编码在 n_latent 维度上的序号就代表着对应的网络层数的序号,是因为 StyleGAN 生成器的结构决定了这一点:StyleGAN 生成器中,W 空间编码的不同维度会被送入生成器网络的不同层,控制这些层的特征映射 (feature mapping)。具体来说,W 空间编码的每个维度会被重复 n_latent 次,作为该层的风格向量 (style vector),通过 AdaIN (Adaptive Instance Normalization) 层控制该层的特征映射。因此,W 空间编码的第 i 个维度会影响生成器网络中第 i 层的特征映射。当某个维度的 W 值被更新的程度较大时,就意味着该维度对应的层在生成目标图像时起到了重要作用,需要被优化。 损失函数​ stage 2 的损失函数是 CLIP Loss 类中的 clip_directional_loss,该损失函数由两部分组成: edit_direciton:源域生成器与目标域生成器生成的图片在经过 image encdoer 后做 element-wise 的相减,最后除以自身的 L2 Norm 方便后续与 target_direction 计算余弦相似度。 target_direction:Mapper 产生的源域和目标域 prompts 的 text_features 做element-wise相减后,最后初一自身的 L2 Norm 以便后续与 edit_direction 计算余弦相似度。","s":"训练 stage 2","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#训练-stage-2","p":582},{"i":604,"t":"测试所用 nada 权重 Google Drive 链接:StyleGAN-NADA Models 参考文献:GAN 的几种评价指标 Inception Score(IS) 评估图像的质量和多样性 质量:把生成的图片 xxx 输入 Inception V3 中,得到输出 1000 维的向量 yyy,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小。用专业术语说, p(y∣x)p(y|x)p(y∣x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。 多样性: 如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y)p(y)p(y) 熵很大(均匀分布)。 因此,对于 IS 我们需要求的两个量就是 p(y∣x)p(y|x)p(y∣x) 和 p(y)p(y)p(y)。实际中,选取大量生成样本,用经验分布模拟 p(y)p(y)p(y): p^(y)=1N∑i=1Np(y∣x(i))\\hat{p}(y)=\\frac{1}{N}\\sum_{i=1}^{N}p(y|\\mathbf{x}^{(i)})p^​(y)=N1​∑i=1N​p(y∣x(i)) Inception Score 的完整公式如下: IS=exp⁡(Ex[KL(p(y∣x)∣∣p(y))])IS=\\exp\\left(\\mathbb{E}_x[KL(p(y|x)||p(y))]\\right)IS=exp(Ex​[KL(p(y∣x)∣∣p(y))]) 其中 Ex\\mathbb{E}_xEx​ 表示对所有图像的期望,KL(p(y∣x)∣∣p(y))KL(p(y|x)||p(y))KL(p(y∣x)∣∣p(y)) 表示每张图像的 KL 散度,exp⁡\\expexp 表示取指数。 通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布 p(y)p(y)p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 IS 分别为 (2.2960, 0.2042) 以及 (2.6420, 0.1959)。 Fréchet Inception Distance(FID) 评估目标域的风格 计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ImageNet,在 Inception V3 的“世界观”下,凡是不像 ImageNet 的数据,都是不真实的,都不能保证输出一个 sharp 的 predition distribution。因此,要想更好地评价生成网络,就要使用更加有效的方法计算真实分布与生成样本之间的距离。 FID 距离计算真实样本,生成样本在特征空间之间的距离。首先利用 Inception 网络来提取特征,然后使用高斯模型对特征空间进行建模,再去求解两个特征之间的距离,较低的 FID 意味着较高图片的质量和多样性。 StyleGAN-nada 以及 IPL 在经过 batch_size 为 2,iteration 为 300 的训练后(其中 IPL 的 Mapper 是以 batch_size 为 32,iteration 为 300 进行训练的),二者的 FID 分别为 84 以及 58。 Single Image Fréchet Inception Score(SIFID) FID 测量生成的图像的深层特征分布与真实图像的分布之间的偏差。在 ICCV 2019 Best Paper 中提出了 SIFID,只使用一张真实目标域的图像。与 FID 不同,SFID 不使用 Inception Network 中最后一个池化层之后的激活矢量(每个图像一个向量),而是在第二个池层之前的卷积层输出处使用深层特征的内部分布(feature map 中每个位置一个向量)。最终 SIFID 是真实图像和生成的样本中这些特征的统计数据之间的 FID。 Structural Consistency Score(SCS) 评估图像的结构保存能力 Identity Similarity(ID) 评估图像的特征保存能力 定量分析结果​ IS(Inception Score)↑ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 2.296 2.642 2.701 FFHQ Photo→Anime Painting 2.320 2.464 2.578 FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e 2.489 2.715 2.851 FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf 2.173 2.482 2.517 AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism SFID(Single Fréchet Inception Distance)↓ 数据集 源域→目标域 NADA IPL IPL* FFHQ Photo→Disney 84 58 54 FFHQ Photo→Anime Painting FFHQ Photo→Wall painting FFHQ Photo→Ukiyo-e FFHQ Photo→Pixar character FFHQ Photo→Tolkien elf FFHQ Photo→Werewolf AFHQ Photo→Cartoon AFHQ Photo→Pointillism AFHQ Photo→Cubism","s":"定量分析指标","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#定量分析指标","p":582},{"i":607,"t":"新增了对自定义图像进行风格迁移的功能。 HyperStyle 中的 e4e encoder 将自定义的真实图像编码至 StyleGAN2 中的 W 空间生成 latent codes,再将其分别输入至源域生成器以及目标域生成器以代替原始的从正态分布中 sample 出的随机向量生成的 w_codes,从而得到相应的图片。其中 e4e encoder 来源于 HyperStyle 提供的预训练 checkpoint。 使用方法:运行 inference.py,设置对应的参数,如生成器以及 e4e encoder 的路径、图像路径等,最后运行即可。 修改日志​ 第一次尝试只加载了 w_encoder 类及其对应 checkpoint 参数,导致并未将真实图片编码到 StyleGAN 的 W 空间中,没有 inversion 出合理的结果。 第二次尝试使用了 restyle_e4e_encoder,但是没有使用 dlib 进行 alignment,也没有使用 restyle 模型在反演时使用的多次进行前向传播来修正 latent code 的策略。此次尝试虽然反演出了合理的人像,但是人像的特征保存能力非常弱。 第三次尝试解决了上一次发现的问题,加入 dlib 提供的 landmark 检测以实现 alignment,并且使用 run_loop 函数在 restyle_e4e_encoder 中进行多次前向传播以修正得到的 W 空间的 latent code,效果较好。 对比 pSp 和 e4e encoder,pSp 对人脸图像的还原能力较强,但是会导致目标域图像具有随机的彩色光晕。","s":"支持自定义图像的风格迁移","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#支持自定义图像的风格迁移","p":582},{"i":609,"t":"参考 MIT 开源项目 pytorch-deployment 进行生成模型的 Web UI 部署。参考项目使用的是 StarGANv2 模型,对其进行优化使得其可以部署 StyleGAN 模型。 分别对人像和宠物图像生成了两个单独的卡片和 HTML 网页,网页可以完成两种功能: 使用参考图像进行零样本跨域适应,同时可以在网页下拉框中选择预期的目标域风格(由于没有合适的 restyle encoder,宠物图像不支持选择参考图像) 直接使用随机数生成源域图像并进行零样本跨域适应 UI 独立代码可以参考本人仓库 stylegan-ui,但功能有限,完整的 UI 代码已经合并到主程序中,请参考 ./web_ui 中的具体代码。 部分效果展示图​ 主页: 人物画像的零样本域适应(初始状态): 人物画像的零样本域适应(使用参考图像生成状态): 宠物画像的零样本域适应(初始状态): 宠物画像的零样本域适应(使用随机数生成状态):","s":"Web UI","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#web-ui","p":582},{"i":612,"t":"Mapper 的作用是从 W 空间的隐式代码中学习出符合源域图片特征以及符合目标域文字特征的 prompts。 改进后的 Mapper 结构: class TransformerMapperV2(nn.Module): \"\"\" 改良版transformer mapper,增加多头注意力,减小transformer encoder的层数,防止学习到的源域图像细节过拟合 同时去掉开头的PixelNorm,防止与transformer中的layer normalization冲突 并在transformer encoder之后加入Pixel Norm以及全连接层 \"\"\" def __init__(self, opts, n_dim): super(TransformerMapperV2, self).__init__() self.opts = opts self.n_dim = n_dim layers = [] # transformer中有layer normalization,不需要进行PixelNorm # 自定义Transformer编码器层配置 transformer_layer = TransformerEncoderLayer(d_model=512, nhead=4, dim_feedforward=1024, dropout=0.1) # 构建Transformer编码器 self.transformer_encoder = TransformerEncoder(transformer_layer, num_layers=2) layers.append(self.transformer_encoder) # 再过一次PixelNorm以及全连接层,将每个点归一化(除以模长),避免输入noise的极端权重,改善稳定性 layers.append(PixelNorm()) self.linear = EqualLinear(512, 512, lr_mul=0.01, activation='fused_lrelu') layers.append(self.linear) # 最后一个全连接层,输出维度保持不变 self.final_linear = EqualLinear(512, n_dim * opts.n_ctx, lr_mul=0.01, activation='fused_lrelu') layers.append(self.final_linear) self.mapping = nn.Sequential(*layers).to(device)","s":"改进:Mapper 结构的设计","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进mapper-结构的设计","p":582},{"i":614,"t":"在 IPL 的官方代码实现中,人工设计的 prompts 有两处,一是 ctx_init,由命令行参数赋值,即 \"a photo of a\",另一处是 utils/text_templates.py 中的 templates,下面分别分析这两处的具体作用。 ctx_init 的作用(与域标签拼接后的 ctx_init)​ ctx_init 在 compute_text_features 函数中用于定位 eot 层符号所表示的维度来进行投影,使得文字特征与图像特征维度相同,并不参与 text_features 的实际计算。但是在该函数中,Mapper 输出的 image-specific prompts 已经与域标签的嵌入表示进行了 concat。 在 stage 1 训练 Mapper 损失函数中,Mapper 学习到的 image-specfic prompts 在与源域标签进行 concat 并得到文字编码后,会与 ctx_init 的文字编码进行 element-wise 的相加,最后再与源域生成器输出的图片的图像编码进行对比损失计算; 同理,在 stage 2 训练目标域生成器时,Mapper 输出的 image-specific prompts 在分别与源域、目标域标签 concat 后送入文字编码器得到文字特征,再与 ctx_init 的文字特征进行 element-wise 相加,最后二者相减得到 text_direction。 templates 的作用​ templates 是提前准备好的一系列字符串,其中字符串的格式全部类似于 a photo of a {}. 原始 hhfq 数据集的模板共有 79 个字符串。 与 ctx_init 起作用的函数不同,templates 在第一阶段的训练的 domain regularization loss 中使用到的 get_text_features 函数起作用,用于与目标域标签进行格式化连接后成为 image-specific prompts 向目标域靠近的方向。即 domain loss 使学习到的 prompts 向以目标域标签为中心的字符串对齐。 思考​ IPL 方法对 Mapper 学习到的 prompts 除了(1)使用对比学习使 prompts 学习到源域图片的特征以及(2)使用域正则化使得 prompts 向目标域标签对齐之外,并没有使用其他与人工设计的 prompts 有关的正则化方式来约束 prompts 的学习,因此人工设计的 prompts 可能并没有起到太大的约束作用。 如果对比学习损失是为了让 Mapper 自监督学习到图片的特征外,那么是否可以对域正则化损失进行改进,约束学习到的 prompts 向人工设计的初始化 prompts 对齐,以实现类似于 Stable Diffusion 类似的 prompts 控制图像生成的效果。","s":"问题:训练阶段人工 prompts 的作用是什么?","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#问题训练阶段人工-prompts-的作用是什么","p":582},{"i":616,"t":"对第一阶段的损失函数做出修改,更新domain loss,将原始 domain loss 中使用的以目标域标签为中心的模板更换成自定义模板,使目标域的image-specific prompts与自定义模板对齐。 经过多次实验和分析,刻意让 Mapper 输出的image-specific prompts 去逼近用户设置的 prompts,会产生一些隐式细节的丢失。因为 Mapper 本身存在的目的就是学习出人工无法准确描述的细节(包括源域图像的自身细节以及目标域风格的细节),如果对 Mapper 的损失函数中加上太多人为设计的限制,很显然会造成细节的丢失并且出现同质的现象。 因此,为了达到既使用精心设计的 prompts 来优化域适应,同时又不影响 Mapper 自主学习双域特征,在原有两个损失函数的基础上,新增一个权重较小的损失函数,用于将 Mapper 学习到的目标域 prompts 向自定义模板对齐。 用于生成 prompts 的 GPT、Claude prompts​ 中文提示词: 针对将普通人像转换成迪士尼风格人物画像的任务,给出60个描述迪士尼人像特有特征的文字prompt。 将上述生成的60个prompts放在同一个Python列表中,即每一个prompt作为该列表的字符串元素,输出整个Python列表。 英文提示词: For the task of converting a {source class} photo into a {target_class} photo, provide some text prompts describing the distinctive features of Disney character portraits. Put the generated 60 prompts into the same Python list, with each prompt as a string element of the list, and output the entire Python list. 对 global_clip_loss 的改进​ IPL 训练第一阶段的损失函数除了源域 prompts 与源域图像之间的对比学习损失函数外,还有将目标域 prompts 与目标域标签计算余弦相似度的 domain regularization。 对 domain regularization 进行改进,引入开发者自定义的 prompts,约束 Mapper 学习到的目标域 prompts 向开发者自定义的 prompts 对齐,以此来进行 prompt tuning,发挥 prompt learning 的更大优势,并增强自定义性。 对 clip_directional_loss 的改进​ IPL 训练第二阶段的损失函数,使用 criteria.clip_loss.CLIPLoss.clip_directional_loss。","s":"改进:使学习到的 prompts 向用户自主设计的 prompts 模板对齐","u":"/docs/Deep-Learning/实战练习/Undergraduate-Dissertation","h":"#改进使学习到的-prompts-向用户自主设计的-prompts-模板对齐","p":582},{"i":618,"t":"相关链接 论文:CVPR 2023 open access 代码:Piscart-AI-Research 文章的命名风格借鉴了CVPR 2022的文章Few Shot Generative Model Adaption via Relaxed Spatial Structural Alignment","s":"CVPR 2023: Zero-shot Generative Model Adaptation via Image-specific Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"","p":617},{"i":620,"t":"本文提出了Image-specific Prompt Learning(IPL)方法来解决风格迁移任务中生成模型从源域到目标域的适应问题。一个Latent Mapper来从源域图像中学习出包含图像特征且适应目标域的prompt,从而指导目标域生成器的训练。 This produces a more precise adaptation direction for every cross-domain image pair, endowing the target-domain generator with greatly enhanced flexibility. 训练资料是源域和目标域的文字标签以及源域的图像,并不需要目标域的图像。此外,IPL独立于生成模型,可以自由选择Diffusion Model或GAN等。","s":"摘要","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#摘要","p":617},{"i":623,"t":"Generative Model Adaption的任务是使在大规模源域图片上训练的生成模型适应到数据有限的目标域中,根据目标域训练资料的大小可以分为few-shot和zero-shot。 few-shot​ 对于few-shot任务,一般是通过有限的目标域训练集资料fine-tune预训练模型。 然而,fine-tune通常会导致过拟合。为了解决过拟合问题,通常使用的方法是施加强正则化、使用扰动法、跨域对齐或数据增强。 相关文献方法 强正则化:Han Zhang, Zizhao Zhang, Augustus Odena, and Honglak Lee. Consistency regularization for generative adversarial networks. In ICLR, 2019. 扰动法:Sangwoo Mo, Minsu Cho, and Jinwoo Shin. Freeze the discriminator: a simple baseline for fine-tuning GANs. In CVPR Workshops, 2020. 跨域对齐:Utkarsh Ojha, Yijun Li, Jingwan Lu, Alexei A Efros, Yong Jae Lee, Eli Shechtman, and Richard Zhang. Fewshot image generation via cross-domain correspondence. In CVPR, 2021. 数据增强:Ngoc-Trung Tran, Viet-Hung Tran, Ngoc-Bao Nguyen, Trung-Kien Nguyen, and Ngai-Man Cheung. On data augmentation for GAN training. TIP, 2021. zero-shot​ 对于零样本的图像生成模型的适应任务,NADA率先引入了CLIP模型来获取必须的先验知识,通过预训练大模型的语言理解能力实现在目标域只需要文字标签而不需要图片,将源域和目标域之间的差距编码为在CLIP空间上文字引导的适应方向。 此后,CVPR 2022发表的DiffusionCLIP使用了Diffusion模型代替NADA中的StyleGANs,获得了更好的特征保存能力。 然而这些方法都是采用了固定的适应方向,只包含基础的域知识,而不是图片特定的特征。在本文中,作者发现这种共享的、固定的适应方向会导致Mode Collapse(模式坍塌),因此提出了从每个源域图像中学习出多样且准确的prompt,为生成模型向目标域的适应提供更精确的方向。","s":"Generative Model Adaption","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#generative-model-adaption","p":617},{"i":625,"t":"Prompt工程最初是一种Knowledge Probing(知识探测)方法,给定完形填空(cloze-style)类的prompt,引导模型产生相对应的答案。 然而人工设计的prompt通常不是最优的,可能提供不准确的适应方向。为了解决这个问题,在NLP领域的Prompt Learning发展迅速,并随着视觉-语言大模型的发展,应用在了视觉任务中。 Kaiyang Zhou等人首先在图像分类任务中采用上下文优化,在词嵌入空间中对具有连续向量的上下文词进行建模。随后Prompt Learning在计算机视觉中的许多下游任务都得到了探索,例如目标检测、视频理解和迁移学习等。","s":"Prompt Learning","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#prompt-learning","p":617},{"i":628,"t":"IPL方法分两个阶段。 第一阶段:训练Latent Mapper​ 第一阶段的主要任务是训练Lantent Mapper来为每一个训练集的源域图片生成一组prompt。Latent Mapper接收源域图像的latent representation,生成一组prompt向量。第一阶段需要解决两个问题,即在zero-shot的背景下,如何实现prompt与源域图像特征的对齐以及prompt与目标域空间的对齐,因此第一阶段的训练分两部分进行。 第一部分是Latent Mapper输出的prompt与目标域标签concat后送入来自CLIP的Text Encoder得到目标域图片prompt在CLIP空间的编码表示,并与目标域标签经过Text Encoder后的编码共同作为Domain Loss的输入来约束从源域中学习到的prompt与目标域空间对齐。 第二部分是Latent Mapper输出的prompt与源域标签concat后送入来自CLIP的Text Encoder得到源域图片prompt描述在CLIP空间的编码表示,同时源域图像再经过来自CLIP的Image Encoder后得到其在CLIP空间的编码表示。将源域的prompt文字和图像编码表示作为contrastive learning loss的输入,约束学习到的prompt与源域图像的特征对齐。 第二阶段:将Latent Mapper插入目标域生成器的训练过程​ 第二阶段利用Directional CLIP Loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的latent representation分别输入至源域生成器和目标域生成器中得到对应的图像,同时指导风格迁移方向的源域以及目标域的prompt描述由Latent Mapper接收源域图像的隐式表示后输出再分别与源域和目标域标签concat而得到。分别将源域图像、生成的目标域图像以及源域、目标域的图片prompt描述一起输入至Directional CLIP Loss,从而约束由源域图像生成器初始化的目标域图像生成器向目标域的迁移学习。","s":"概述","u":"/docs/Deep-Learning/论文笔记/Zero-shot-Generative-Model-Adaptation-via-Image-specific-Prompt-Learning","h":"#概述","p":617},{"i":631,"t":"实战练习 Transformer实战练习,代码见Github仓库。 This is a practice of Transformer, follow the guide of Github Repo.","s":"Speaker Classification","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"","p":630},{"i":633,"t":"Classify the speaker of given features, learn how to use Transformer and how to adjust parameters of transformer.","s":"Overview","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#overview","p":630},{"i":635,"t":"The original dataset is VoxCeleb1. We randomly select 600 speakers from VoxCeleb1, then preprocess the raw waveforms into mel-spectrograms. You can download the preprocessed dataset from Google Drive. Arguments: data_dir: The path to the data directory. metadata_path: The path to the metadata. segment_len: The length of audio segment for training. The architecture of dataset directory is shown below, where uttr-{random string}.pt represents PyTorch data file containing valid mel-spectrogram data. data directory/ ├── mapping.json ├── metadata.json ├── testdata.json └── uttr-{random string}.pt","s":"Dataset","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#dataset","p":630},{"i":637,"t":"This is also the assignment solution of ML2021Spring HW4.","s":"Related","u":"/docs/Deep-Learning/实战练习/Speaker Classification","h":"#related","p":630},{"i":639,"t":"自回归模型(Autoregressive Models)在图像生成领域扮演着重要角色,它们基于一个核心假设:当前像素值依赖于之前的像素值。这种依赖关系可以通过条件概率来表达,其中每一个像素的生成都是基于之前已经生成的像素的条件分布。在传统的视觉自回归图像生成任务中,这通常意味着从左到右和从上到下的顺序生成每个像素。","s":"图像生成:自回归模型","u":"/docs/Deep-Learning/图像生成与视频生成大模型/Autoregressive","h":"","p":638},{"i":641,"t":"自回归(Autoregressive,简称AR)模型是一种统计模型,用于描述时间序列中的每个值作为其之前值的函数。在机器学习中,自回归模型被广泛应用于序列数据的生成任务,如文本、语音和图像生成。自回归模型通过逐步预测下一个值,依次生成整个序列。 假设有一个序列 x=(x1,x2,…,xT)x=\\left(x_1, x_2, \\ldots, x_T\\right)x=(x1​,x2​,…,xT​) ,自回归模型的目标是学习条件概率分布 p(xt∣x= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 }","s":"参考代码","u":"/docs/Tui-Mian/机试/大数除法","h":"#参考代码","p":781},{"i":788,"t":"将大数除法与进制转换相结合。 提示 北京大学机试真题,N诺链接 完整代码如下: #include using namespace std; string division(string s, int divisor) { /* * 通过模拟列竖式手算除法完成字符串存储的大数除法 */ string quotient; // 商 int idx = 0; // 当前处理的数字在原始字符串中的位置 int remainder = 0; // 余数 int temp = 0; while (idx < s.size()) { // 一直循环处理到索引等于长度 temp = remainder * 10 + (s[idx] - '0'); // 当前进行除法运算的temp if (temp >= divisor) { // 如果能除的动,则将当前的商插入quotient,并更新余数 quotient.push_back(temp / divisor + '0'); remainder = temp % divisor; } else { // 除不动时分两种情况 if (!quotient.empty()) { // 商目前不为空,此时按照竖式方法,需要向商中加入0,再接着下一次循环 quotient.push_back('0'); } remainder = temp; // 商目前为空,按照竖式计算方法,只更新余数,商保持为空 } idx++; // 更新索引位置 } if (quotient.empty()) { // 如果一直除不动,循环结束商还为空,则赋值为0字符串 quotient.assign(\"0\"); } return quotient; // 返回商字符串 } int main() { string s; while (cin >> s) { vector vec; int len = s.size(); while (s != \"0\") { int remainder = (s[len - 1] - '0') % 2; vec.push_back(remainder); s = division(s, 2); len = s.size(); } if (vec.empty()) { cout << \"0\"; } else { for (auto it = vec.rbegin(); it != vec.rend(); it++) { cout << *it; } } cout << endl; } return 0; }","s":"扩展","u":"/docs/Tui-Mian/机试/大数除法","h":"#扩展","p":781},{"i":790,"t":"告示栏的启用 在docusaurus.config.js的themeConfig中加入以下代码 announcementBar: { id: 'announcementBar-3', content: 'Welcome to my notebook!', isCloseable: false, }, 告示栏的背景个性化 在custom.css中加入以下代码 div[class^='announcementBar_'] { background: repeating-linear-gradient( -35deg, var(--ifm-color-primary-lighter), var(--ifm-color-primary-lighter) 20px, var(--ifm-color-primary-lightest) 10px, var(--ifm-color-primary-lightest) 40px ); font-weight: 700; }","s":"告示栏","u":"/docs/Others/博客搭建/告示栏","h":"","p":789},{"i":793,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 提示 P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"面试常考问题","u":"/docs/Tui-Mian/数学/概率论","h":"#面试常考问题","p":791},{"i":796,"t":"未知,可能是由Windows休眠模式导致","s":"一、发生原因","u":"/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#一发生原因","p":794},{"i":798,"t":"使用ntfsfix修复ntfs磁盘 安装ntfsfix yay -S ntfsfix 查看问题分区 df -h 修复 sudo ntfsfix /dev/your_partition 重启 reboot","s":"二、解决方案","u":"/docs/Others/Linux/问题解决/双系统挂载Windows磁盘为只读文件","h":"#二解决方案","p":794},{"i":801,"t":"树的性质: 一棵 N 个结点的树有 N-1 条边 树的总度数+1=树的结点数 树的度=树中度最大结点的度数 二叉树的性质: 叶子结点数等于度为 2 的结点数加 1,即n0 = n2 + 1 树转化为二叉树: 参考资料:知乎 加线。在所有的兄弟结点之间加一条线。 去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。 调整。每个结点的原来的孩子是结点的左孩子,由原来的兄弟结点转过来的孩子是结点的右孩子。 二叉排序树:每个结点的左子树上的所有结点值都更小,每个结点的右子树上的所有结点的值都更大。 平衡二叉排序树:要么是空树,要么左子树的高度与右子树的高度之差小于等于1。","s":"树","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#树","p":799},{"i":803,"t":"图的表示: 邻接矩阵 邻接表:每一行表示的是一个顶点所连接的顶点,链表不具有指向性 邻接表的搜索 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。 Kruskal算法 Prim算法 最短路径 ​ ​","s":"图","u":"/docs/Tui-Mian/计算机基础综合/数据结构","h":"#图","p":799},{"i":806,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1 线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 提示 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 提示 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"一、线性代数","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#一线性代数","p":804},{"i":808,"t":"简述大数定理。 大数定理描述了大样本情况下随机变量的均值与其期望值之间的关系。对于独立同分布的随机变量序列,随着样本数量的增加,样本均值会以较高的概率接近其期望值。 简述中心极限定理。 当独立随机变量的数量足够大时,它们的和(或平均值)的分布会逐渐接近一个正态分布。即使原始随机变量不服从正态分布,但当样本容量足够大时,和(或平均值)的分布仍然呈现出正态分布的特征。 什么是全概率公式。 对于事件A而言,假设有一组互斥且穷尽的条件事件B,则事件A的概率等于事件A在每个条件事件下发生的概率与该条件事件发生概率的乘积和。 什么是最大似然估计。 基本思想是在已知观测数据的情况下,通过调整参数的取值,找到使得观测数据出现概率最大的参数值。 大致过程: 构建参数化的概率模型,即构建似然函数,表示在给定参数下观测数据出现的概率 取似然函数的对数,方便计算与优化 最大化似然函数,求解参数的最优值 简述贝叶斯定理。 贝叶斯定理描述了在给定观测数据的条件下,计算事件的后验概率的方法。 P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \\frac{P(B|A) * P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)∗P(A)​ 其中: P(A∣B)P(A|B)P(A∣B)表示在观测到事件 B 发生的条件下,事件 A 发生的概率,称为后验概率 P(B∣A)P(B|A)P(B∣A)表示在事件 A 发生的条件下,事件 B 发生的概率,称为似然; P(A)P(A)P(A)和P(B)P(B)P(B)分别是事件 A 和事件 B 独立发生的先验概率。 优点:它能够将主观先验知识与观测数据相结合,通过不断更新后验概率来进行推断和决策。 P问题、NP问题以及NP完全问题 提示 P stands for Polynomial 意为多项式 P问题是可以在多项式时间内解决的问题 NP问题是可以在多项式时间内验证解的正确性的问题 NP完全问题是一类特殊的NP问题,没有已知的高效解决算法,并且可以在多项式时间内归约到任何其他的NP问题","s":"二、概率论","u":"/docs/Tui-Mian/数学/夏令营面试数学部分复习","h":"#二概率论","p":804},{"i":810,"t":"提示 欢迎来到笔记本的推免复习部分","s":"Welcome","u":"/docs/Tui-Mian/intro","h":"","p":809},{"i":812,"t":"如果可以帮到你的话就给个免费的 Star 吧!","s":"支持我!","u":"/docs/Tui-Mian/intro","h":"#支持我","p":809},{"i":816,"t":"显著性目标检测Salient Object Detection,相当于语义分割中的二分类任务,只有前景和背景","s":"(一)SOD任务","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一sod任务","p":813},{"i":818,"t":"下图为U-2-Net的整体结构 提示 residual [rɪˈzɪdjuəl] 在encoder阶段,每个block之后使用maxpooling下采样两倍 在decoder阶段,每个block之后使用双线性插值上采样两倍 下图为Residual U-block的结构 提示 卷积是如何改变输出的通道数的? 卷积核的通道数等于输入的通道数,卷积核的个数等于输出的通道数 图片来源知乎 在特征融合阶段,每一层的encoder-decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的feature map通道数也为1。将每一层的feature map进行concat拼接,得到6通道的融合feature map,最后使用1x1卷积以及sigmoid激活函数得到最终的融合特征图输出","s":"(二)网络结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二网络结构","p":813},{"i":820,"t":"损失函数是7个损失项的加权求和 共有6层encoder-decoder结构,将每一层对应的feature map与ground truth做BCE Loss得到6个损失项 第7个损失项是最终融合得到的feature map与ground truth的BCE Loss 在论文中,每个损失项的权重都为1 canny边缘检测: 使用高斯滤波进行平滑 计算像素梯度 非极大值抑制 双阈值检测强边缘、弱边缘 边缘连接","s":"(三)损失函数","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三损失函数","p":813},{"i":822,"t":"深度可分离卷积的优点是可以在大致保持卷积效果的情况下减少参数量 在实现原理上可分为两个步骤:深度卷积(depth wise)以及逐点(point wise)卷积 深度卷积是一种在每个输入通道上分别进行卷积操作的卷积方法,每个输入通道只与对应的卷积核进行卷积。 逐点卷积通过使用1×11 \\times 11×1卷积对深度卷积的结果再次卷积","s":"(四)深度可分离卷积","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四深度可分离卷积","p":813},{"i":825,"t":"PR曲线所围成的面积即使该类的AP值","s":"(一)mAP","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一map","p":813},{"i":827,"t":"提示 参考资料:【精读AI论文】YOLO V1目标检测,看我就够了 1.预测阶段​ 下图为YOLOv1的算法框架 下图为YOLOv1的网络结构 输入[448, 448, 3]图像,输出[7, 7, 30]的tensor(包含所有预测框的坐标、置信度和类别结果),通过解析输出的tensor得到预测结果 首先将输入图片划分为S×SS \\times SS×S个grid cell。在YOLOv1中S=7S=7S=7 每个grid cell预测出BBB个bounding box预测框(bbox),每个bbox的中心点都落在该grid cell中。在YOLOv1中B=2B=2B=2 每个bbox包含(x, y, h, w, c)五种信息,其中x, y为bbox左上角坐标,h, w为bbox的宽高,c为该bbox是否存在object的概率 同时每个grid cell预测出一组与数据集有关的条件类别概率。在YOLOv1论文使用的数据集Pascal VOC中,类别种类为20类,因此在预测阶段输出的[7, 7, 30]的tensor含义如下图所示 每个grid cell选出条件类别概率最大的类别,因此每个grid cell只能检测一个物体 提示 这也是YOLOv1小目标和密集目标识别能力差的原因 每个bbox的置信度与其父grid cell的类别概率相乘得到全概率,如下图所示 进行NMS后处理: 对某一特定类别,首先根据全概率置信度排序 将此时最大置信度的bbox与其他所有置信度更小的bbox做IoU判断,若IoU大于设置的阈值,则抹除置信度小的bbox 将剩余的次大的置信度重复步骤2,抹除所有置信度更小的其IoU超过阈值的bbox 提示 非极大值抑制只在预测阶段进行 在训练阶段,所有bbox都会在Loss Function中起到更新的作用,因此不进行NMS 2. 训练过程的损失函数​","s":"(二)YOLOv1","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov1","p":813},{"i":829,"t":"1. BN层​ 2. 高分辨率训练​ 3. Anchor​ YOLOv2引入了anchor机制代替bbox,将图像划分为13×1313 \\times 1313×13个grid cell,每个grid cell生成5个anchor anchor是通过k-means聚类在数据集上生成的不同尺寸的先验框 对数据集进行anchor宽高比的聚类,聚类数越大,覆盖的IoU越大,但同时模型也更复杂","s":"(二)YOLOv2","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二yolov2","p":813},{"i":831,"t":"1. 特征融合​ YOLOv5使用CSPNet实现特征融合,CSP模块由主干和分支构成,主干提取低维特征,分支提取高维特征 主干通过卷积和池化提取特征,形成不同尺寸的特征图 分支将主干输出的特征图作为输入,逐步卷积和上采样提取高级别语义特征 主干特征图通过卷积对通道数降维之后与分支在通道维度上concat 提示 在特征提取以及融合阶段可以加入Canny边缘检测得到的特征图进行特征融合 2. 前处理​ 对填充黑色像素进行了改善,以填充更少的黑像素,提高了精度 3. 特征金字塔FCN​","s":"(三)YOLOv5","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三yolov5","p":813},{"i":833,"t":"提示 有关CSP特征融合可以参考:https://blog.csdn.net/weixin_55073640/article/details/122614176 CBAM是通道+空间注意力机制(SENet是通道注意力机制)","s":"三、CBAM","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三cbam","p":813},{"i":835,"t":"通道注意力:原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,代表不同通道之间的重要程度,将其与原始特征图相乘 空间注意力:经过通道注意力的特征图[b,c,h,w][b, c, h, w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,代表宽高维度的像素之间的重要程度,将其与原始特征图相乘","s":"(一)总体结构","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一总体结构","p":813},{"i":837,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid函数产生最终的通道注意力特征图","s":"(二)通道注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二通道注意力","p":813},{"i":839,"t":"原始特征图[b,c,h,w][b, c, h, w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b, 1, h, w][b,1,h,w]的tensor,再将二者concat后通过7×77 \\times 77×7卷积学习特征并降维,最后送入sigmoid函数得到最终的空间注意力特征图","s":"(三)空间注意力","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三空间注意力","p":813},{"i":841,"t":"作者分别对通道注意力以及空间注意力使用最大池化还是平均池化做了消融实验,结果反映二者都用最大池化以及平均池化再相加效果最好(且对于7×77 \\times 77×7卷积与3×33 \\times 33×3卷积的消融实验发现,7×77 \\times 77×7卷积效果更好) 作者对先通道注意力还是先空间注意力做了消融实验,结果发现先通道再空间效果更好","s":"(四)其他注意事项","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四其他注意事项","p":813},{"i":843,"t":"Focal Loss通过引入修正项和样本关注度超参数,增加困难样本的关注度,来解决类别不均衡问题。 YOLO损失函数分为分类损失以及回归损失,可以在分类损失中引入Focal Loss代替原来的交叉熵损失","s":"四、Focal Loss","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#四focal-loss","p":813},{"i":845,"t":"Squeeze and Excitation Squeeze挤压操作就是将[b,c,h,w][b, c, h, w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b, c, 1, 1][b,c,1,1]的tensor,该tensor还要经过所示的全连接层-ReLU-全连接层结构 Excitation激励操作就是通过sigmoid函数得到每个通道之间的重要程度系数","s":"五、SENet","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#五senet","p":813},{"i":847,"t":"自注意力机制通过计算元素之间的相似度来确定它们之间的关联性,并对其进行加权处理以获得上下文信息。 自注意力机制通过对输入的元素进行线性变换来得到查询(Query)向量、键(Key)向量和值(Value)向量。 通过点积和缩放点积计算相似程度 通过自注意力机制,每个元素都可以通过与其他元素的相似度计算和加权求和,获取到与它们相关的上下文信息。相似度高的元素将获得更高的权重,因此更受到关注和影响,从而建立起元素之间的关联性。","s":"六、自注意力机制","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#六自注意力机制","p":813},{"i":850,"t":"This content has been encrypted.","s":"(一)英文自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#一英文自我介绍","p":813},{"i":852,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(二)西电广研院自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#二西电广研院自我介绍","p":813},{"i":854,"t":"1. 英文自我介绍​ This content has been encrypted. 2. 中文自我介绍​ This content has been encrypted.","s":"(三)电子科技大学自我介绍","u":"/docs/Tui-Mian/简历/简历面试准备","h":"#三电子科技大学自我介绍","p":813},{"i":856,"t":"提示 参考链接: 线性代数极简入门 《线性代数》高清教学视频 “惊叹号”系列 宋浩老师","s":"线性代数","u":"/docs/Tui-Mian/数学/线性代数","h":"","p":855},{"i":858,"t":"线性相关与线性无关:向量组中的任一向量都不能被其它向量线性表示,就说向量组线性无关;否则就是线性相关。 矩阵转置:将矩阵的行和列互相交换 矩阵求逆:对于方阵A,若存在方阵B使得AB=BA=单位方阵I,则方阵B为方阵A的逆矩阵,记为A−1A^{-1}A−1","s":"一、基础知识","u":"/docs/Tui-Mian/数学/线性代数","h":"#一基础知识","p":855},{"i":860,"t":"线性代数中的初等行变换。 交换两行 用非零常数乘以某一行 用一行的倍数加到另一行上 如何理解矩阵的秩。 矩阵的秩是指矩阵的列空间(或行空间)的维数,简而言之是矩阵中所有非零行(或列)向量构成的集合所组成的最大线性无关组的向量个数。 提示 宋浩八字:非零子式的最高阶数 任意矩阵的行秩都等于列秩。 矩阵的秩与线性方程组解的关系。 对于n元线性方程组而言: 当系数矩阵的秩等于增广矩阵的秩且秩等于n时,有唯一解 当系数矩阵的秩等于增广矩阵的秩且秩大于n时,有无穷多解 当系数矩阵的秩不等于增广矩阵的秩时,无解 提示 当系数矩阵的秩小于增广矩阵的秩时,说明系数矩阵中的某一列向量(或行向量)可以被其他列向量(或行向量)线性表示,此时该行不能提供额外的线性独立信息 简述向量组线性无关的含义。 含义:若一个向量组是线性无关的,则该向量组中的每个向量都不能表示成其他向量的线性组合。 意义:如果一个向量组线性无关,那么该向量组所张成的空间就是一个最小维度的向量空间,并且该向量空间中的任何向量都可由这些向量线性组合表示。 判定方法:如果一个向量组中的所有向量都不可以由其他向量线性组合得到,则称该向量组为线性无关的。否则,如果存在某个向量可以表示成其他向量的线性组合,则该向量组就不是线性无关的。 解释正定矩阵以及半正定矩阵。 简述特征值的含义。 特征值描述了矩阵在特定方向(特征向量方向)上的缩放因子,特征向量表示矩阵在这个特定方向上的不变性。 简述矩阵分解的物理意义。 矩阵分解是将一个矩阵表示为一些特定形式的矩阵乘积的过程。 矩阵分解的种类以及物理意义: LU分解:将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积。物理意义包括解线性方程组、计算矩阵的行列式和逆矩阵等。 QR分解:将矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。物理意义包括最小二乘问题、矩阵的特征值计算等。 特征值分解:将矩阵分解为一个特征向量矩阵和一个对角矩阵的乘积。物理意义包括矩阵的幂、指数和对称矩阵的对角化等。 奇异值分解(SVD):将矩阵分解为一个正交矩阵、一个对角矩阵和一个正交矩阵的乘积。物理意义包括降维、矩阵逼近和图像压缩等。","s":"二、面试常考问题","u":"/docs/Tui-Mian/数学/线性代数","h":"#二面试常考问题","p":855},{"i":863,"t":"自己在准备夏令营和预推免期间浏览了很多经验贴,按照科协的传统,也支持一下互联网精神,还是给师弟师妹们留下点文字资料吧。 希望可以帮到大家,也感谢那些曾经帮助过我的经验贴和师兄师姐。 文章均为个人经历与想法,不代表任何单位的官方立场,仅供参考。","s":"前言","u":"/docs/Tui-Mian/Summary","h":"#前言","p":861},{"i":865,"t":"常见名词 含义解释 928/929 每年的公历9月28日(2023年是9月29日),是研招网全国推免系统开放的日子,也是已经拿到offer的推免生上岸的日子。 没offer的也不用着急,因为每个学生只能上一个学校,928/929当天就算手里一堆offer的学生也是只能选择最想去的学校而释放掉其他offer。稳住心态沉住气,一般10月20日推免系统才关闭,这段时间足够联系导师上岸了。 优营 优营就是夏令营的优秀营员。 不同学校优营的效力不同,有些学校的优营直接等于拟录取,928/929当天填报系统即可上岸;但有些学校的优营只能保证在后期的预推免或九推的初筛中不被刷掉,仍需参加后续考核才能获得拟录取资格。 wl/waiting list wl就是递补名单,有些学校的夏令营优营评选中设置递补名单。如果后期有其他优营学生放鸽子不来的话,就会按顺序补录到递补名单中的学生。","s":"扫盲","u":"/docs/Tui-Mian/Summary","h":"#扫盲","p":861},{"i":867,"t":"本科学校:理工类普通一本(四非) 专业:计算机科学与技术CS rank:前1%(非rank 1 or 2的top选手) 英语:四级594 & 六级586 竞赛:非ACMer,一个CV类比赛国一,其他都是更不上台面的奖项了 奖学金:国家奖学金(夏令营结束之后才拿的,基本没用到)、省人民政府奖学金、CASC奖学金 科研及论文:无正经科研经历,EI水会一篇 从某种程度上来说,本科出身和rank基本上决定了上限。","s":"个人情况","u":"/docs/Tui-Mian/Summary","h":"#个人情况","p":861}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,0.47,1,8.582,2,7.272]],["t/5",[0,0.457]],["t/7",[0,0.358,3,8.159,4,2.799,5,9.782,6,8.159,7,8.159,8,8.159]],["t/9",[0,0.499,4,2.397,9,2.227,10,3.021,11,1.871,12,2.328,13,2.328,14,3.887,15,2.328,16,2.589,17,3.097,18,3.021,19,6.988,20,3.757,21,6.345,22,3.767,23,4.878,24,7.655,25,2.514,26,2.139,27,3.192,28,3.767,29,3.767,30,3.767,31,4.088,32,4.236,33,2.182]],["t/11",[0,0.467,34,3.921,35,6.951,36,7.656,37,9.411,38,7.656,39,7.656,40,7.656]],["t/13",[0,0.467,20,4.318,41,7.656,42,7.656,43,7.656,44,7.656]],["t/15",[0,0.501,4,2.353,9,2.161,10,2.932,11,1.816,12,2.259,13,2.259,14,4.132,15,2.259,20,3.568,33,2.117,45,2.44,46,3.656,47,3.755,48,4.342,49,5.109,50,4.768,51,5.109,52,3.656,53,3.656,54,3.656,55,6.86,56,6.528,57,5.668,58,3.656]],["t/17",[0,0.353,20,3.26,59,8.027,60,8.027,61,8.027,62,8.027,63,8.027,64,8.027,65,8.027]],["t/19",[0,0.397,66,9.051]],["t/21",[0,0.501,9,2.827,10,3.835,11,2.375,12,2.955,13,2.955,14,3.996,15,2.955,20,3.268,26,4.569,31,3.395,32,3.518,33,2.77,67,3.662,68,4.782,69,5.2,70,3.835,71,6.046]],["t/23",[0,0.502,4,1.815,14,3.668,17,2.846,20,3.454,25,3.531,26,5.227,27,4.483,69,5.028,71,5.076,72,5.291,73,7.206]],["t/25",[0,0.457]],["t/27",[0,0.452,74,6.808]],["t/29",[0,0.39,2,7.532,75,8.889]],["t/31",[0,0.506,34,2.07,48,2.559,76,9.595,77,4.872,78,4.042,79,4.042,80,6.074,81,6.074,82,6.074,83,6.074,84,4.054,85,5.369,86,6.074,87,4.042,88,4.042]],["t/34",[0,0.506,89,5.589,90,5.589,91,5.589,92,5.589,93,5.589,94,5.589,95,5.589,96,5.589,97,5.589,98,5.589,99,5.589,100,5.589,101,5.589,102,5.589,103,5.589,104,5.589]],["t/36",[0,0.503,11,2.873,12,3.574,13,3.574,16,3.976,105,5.252,106,5.252,107,3.494,108,4.901,109,4.639,110,3.166,111,3.86,112,3.86,113,4.639,114,4.901,115,5.784,116,5.784]],["t/38",[11,3.481,12,4.331,13,4.331,117,7.008,118,7.008,119,7.008,120,7.008,121,7.008,122,7.008,123,7.008,124,7.008,125,7.008,126,5.621,127,7.008,128,7.008,129,7.008,130,7.008,131,7.008]],["t/40",[0,0.473,4,2.076,14,3.44,26,1.711,69,3.578,71,4.161,132,6.422,133,3.013,134,3.013,135,3.013,136,3.013,137,3.013,138,3.013,139,2.217,140,3.013,141,3.013,142,3.013,143,3.013,144,3.013,145,2.416,146,3.013,147,5.554,148,5.096,149,4.833,150,2.735,151,3.013,152,2.735,153,3.013,154,3.013,155,3.013,156,3.013,157,3.013,158,2.416,159,2.735,160,2.735,161,6.037,162,3.013,163,3.013,164,3.013,165,3.013,166,3.013,167,3.013,168,1.907,169,3.013,170,2.735,171,3.013,172,2.735,173,2.553,174,2.217,175,3.013,176,3.013,177,3.013,178,3.013,179,3.013,180,3.013,181,3.013]],["t/43",[0,0.413,14,3.803,182,5.11,183,6.951,184,5.263,185,6.951,186,7.656,187,5.864,188,7.656,189,6.951,190,7.656]],["t/45",[0,0.496,14,3.031,26,2.772,33,1.767,34,1.562,45,2.035,182,5.091,183,5.54,184,2.097,191,4.673,192,3.05,193,3.05,194,3.05,195,3.05,196,3.05,197,3.05,198,3.05,199,2.336,200,3.05,201,3.05,202,3.05,203,3.05,204,3.05,205,3.05,206,3.355,207,5.909,208,2.769,209,2.584,210,2.446,211,2.769,212,2.584,213,2.584,214,2.769,215,6.464,216,2.584,217,2.584,218,4.673,219,4.135,220,2.584,221,1.64,222,2.584,223,2.584,224,2.584,225,2.769,226,2.769,227,2.769,228,2.584,229,2.584,230,2.584,231,2.244,232,2.769,233,2.336]],["t/47",[0,0.326,161,5.273,206,5.106,218,5.688,234,7.427,235,7.427,236,4.701,237,8.063,238,7.427,239,7.427,240,7.427,241,7.427]],["t/50",[0,0.445,14,4.768,26,3.819,47,3.68,69,3.975,187,5.149,189,7.874,242,6.816,243,6.723,244,4.774,245,6.723,246,6.723,247,6.723]],["t/52",[0,0.474,14,4.799,161,4.839,242,4.839,248,8.748,249,3.604,250,6.815,251,6.815,252,6.815,253,6.815,254,6.815,255,6.815]],["t/54",[0,0.485,14,4.424,20,2.847,168,4.436,242,6.323,256,7.008,257,7.008,258,7.008,259,7.008,260,7.008]],["t/56",[0,0.39,261,8.889,262,8.889]],["t/58",[0,0.483,4,1.64,34,2.449,35,6.24,57,3.518,113,3.835,249,2.529,263,4.782,264,4.782,265,4.782,266,4.782,267,4.782,268,2.159,269,4.782,270,4.782,271,6.872,272,4.782,273,4.782,274,4.782,275,4.782,276,4.782,277,4.782,278,4.782,279,4.782,280,4.782,281,8.795,282,4.782,283,4.782,284,4.782,285,4.782,286,4.782,287,4.782,288,4.782]],["t/60",[0,0.511,9,1.148,108,1.645,221,2.828,289,1.941,290,1.941,291,1.941,292,1.941,293,1.941,294,1.645,295,1.941,296,1.941,297,1.487,298,1.941,299,1.941,300,1.941,301,1.941,302,1.941,303,1.941,304,1.941,305,1.941,306,1.941,307,1.763,308,1.941,309,1.941,310,1.645,311,1.941,312,1.941,313,1.941,314,1.941,315,1.941,316,0.888,317,1.941,318,1.941,319,1.941,320,1.941,321,1.941,322,1.645,323,1.941,324,1.941,325,1.941,326,1.763,327,1.941,328,1.941,329,1.941,330,1.763,331,1.941,332,1.941,333,1.941,334,1.941,335,1.763,336,1.941,337,0.937,338,3.35,339,1.941,340,1.941,341,1.941,342,1.763,343,1.941,344,1.941,345,1.941,346,1.941,347,1.941,348,1.941,349,1.941,350,1.941,351,1.941,352,1.941,353,1.941,354,1.941,355,1.941,356,1.941,357,1.941,358,1.941,359,1.941,360,1.941,361,1.941,362,1.941,363,1.941,364,1.941,365,1.941,366,1.941,367,1.941,368,1.941,369,1.941,370,1.941,371,1.941,372,1.941,373,1.763,374,1.941,375,1.941,376,1.941,377,1.941,378,1.941]],["t/62",[0,0.501,4,0.879,9,2.504,11,1.273,12,1.583,13,1.583,14,2.69,15,1.583,17,1.378,20,1.72,23,2.171,25,1.71,27,2.171,31,3.007,32,1.885,33,1.484,45,4.198,69,3.201,107,4.796,184,1.761,221,2.912,379,2.562,380,2.562,381,2.562,382,2.562,383,2.562,384,7.209,385,2.562,386,2.562,387,2.562,388,2.562,389,1.962,390,2.562,391,2.326,392,5.414,393,4.916,394,2.326,395,2.326,396,4.916,397,2.326,398,2.562,399,2.562,400,2.562,401,4.235,402,2.326,403,2.171,404,2.562,405,2.562,406,2.562,407,2.562,408,2.562,409,2.171,410,1.962,411,2.562,412,2.562,413,2.562,414,2.562]],["t/64",[0,0.494,69,3.235,111,4.475,184,2.424,221,2.943,384,6.862,393,6.862,394,3.201,395,3.201,396,4.968,397,3.201,402,3.201,415,3.526,416,5.472,417,3.526,418,2.828,419,3.526,420,3.526,421,3.526,422,3.526,423,3.526,424,3.526,425,3.526,426,2.988,427,3.526,428,2.701,429,2.701,430,5.472,431,2.828,432,2.828,433,2.828,434,3.526,435,3.526,436,3.526,437,3.526,438,6.705,439,3.526,440,3.526,441,3.526,442,3.526,443,3.526,444,3.526,445,3.526,446,3.526,447,3.526]],["t/66",[0,0.495,16,7.086,17,1.832,34,3.798,187,2.608,310,2.885,326,3.092,335,3.092,448,3.405,449,3.405,450,3.405,451,3.405,452,3.405,453,3.405,454,3.405,455,3.405,456,3.405,457,3.405,458,3.405,459,3.405,460,3.405,461,3.405,462,3.405,463,3.405,464,3.405,465,3.405,466,3.405,467,3.092,468,3.405,469,3.405,470,3.405,471,2.885,472,3.405,473,3.405,474,3.405,475,3.405,476,3.405,477,3.405,478,3.405,479,3.405,480,5.325,481,3.092,482,2.273,483,3.405,484,3.405,485,3.405]],["t/68",[0,0.406,18,5.957,168,4.701,185,6.743,486,7.427,487,7.427,488,6.293,489,7.427,490,7.427,491,7.427,492,7.427,493,7.427,494,7.427]],["t/70",[0,0.502,14,3.235,110,4.951,418,3.561,495,4.44,496,5.518,497,4.44,498,4.44,499,4.44,500,6.512,501,6.512,502,5.223,503,4.44,504,4.44,505,4.44,506,4.44,507,4.44,508,4.44,509,4.44,510,4.44,511,4.44,512,4.44,513,4.44,514,4.44,515,4.44]],["t/72",[0,0.488,17,3.475,25,4.312,109,7.553,231,4.754,389,4.948,516,6.461,517,6.461,518,5.866,519,6.461,520,5.475,521,6.461,522,5.866,523,5.866]],["t/74",[0,0.496,113,7.413,524,6.218,525,6.218,526,4.987,527,4.275,528,6.218,529,6.218,530,6.218,531,4.987,532,6.218,533,6.218,534,6.218,535,6.218]],["t/76",[0,0.51,17,2.267,23,3.571,25,2.812,112,4.992,231,3.101,389,3.227,391,3.826,403,3.571,520,3.571,536,4.214,537,3.571,538,4.214,539,4.214,540,4.214,541,4.214,542,4.214,543,4.214,544,4.214,545,3.826,546,4.214,547,4.214,548,4.214,549,4.214,550,4.214,551,3.826,552,4.214]],["t/78",[17,4.388,112,5.445,520,6.913,553,8.159,554,7.408,555,7.408,556,8.159,557,8.159]],["t/80",[0,0.506,4,2.659,14,1.083,17,1.172,20,1.957,114,3.135,148,1.604,150,1.979,158,1.748,161,1.548,170,4.375,221,1.99,558,2.18,559,6.359,560,3.699,561,2.18,562,6.359,563,9.61,564,2.18,565,2.18,566,1.604,567,2.18,568,2.18,569,3.05,570,2.18,571,2.18,572,4.819,573,2.18,574,2.18,575,2.18,576,2.18,577,6.911,578,2.18,579,2.18,580,2.18,581,2.18,582,2.18,583,2.18,584,2.18,585,2.18,586,2.18,587,2.18,588,2.18,589,2.18,590,2.18,591,2.18,592,2.18,593,2.18,594,2.18,595,3.359]],["t/83",[0,0.497,4,1.747,9,1.902,11,0.646,12,0.804,13,0.804,14,3.14,15,0.804,18,1.043,20,2.567,31,4.715,32,2.367,33,2.642,45,3.708,47,1.761,51,1.181,77,2.58,107,0.786,112,0.868,132,0.845,139,2.901,174,1.73,182,1.569,187,0.996,206,1.616,207,3.341,209,1.102,210,3.163,212,1.102,213,1.102,215,3.864,216,1.102,217,1.102,218,3.02,219,2.726,220,1.102,221,0.7,222,1.102,223,1.102,224,1.102,228,1.102,229,3.341,230,3.864,231,1.73,232,1.181,233,3.02,249,1.701,268,1.061,409,1.102,537,1.992,569,1.488,596,1.181,597,1.301,598,1.181,599,1.181,600,2.135,601,1.181,602,1.102,603,3.217,604,2.351,605,1.992,606,3.943,607,2.351,608,2.351,609,2.351,610,1.301,611,1.301,612,1.301,613,2.351,614,2.351,615,2.351,616,2.351,617,2.351,618,1.301,619,2.351,620,1.301,621,3.58,622,2.351,623,1.301,624,1.301,625,1.181,626,1.301,627,2.351,628,1.301,629,2.351,630,3.238,631,2.351,632,1.616,633,2.351,634,1.301,635,1.301,636,1.301,637,1.301,638,1.301,639,1.301,640,3.217,641,1.301,642,1.301,643,2.351,644,1.301,645,1.301,646,1.301,647,1.301,648,1.301,649,2.351]],["t/85",[0,0.484,4,1.097,9,2.998,11,0.914,12,1.137,13,1.137,14,4.011,15,1.137,20,0.748,33,4.35,45,2.135,47,2.322,105,1.671,107,1.112,113,1.476,132,1.195,139,2.354,182,2.135,206,2.199,207,4.296,208,1.671,209,1.56,210,1.476,211,1.671,212,1.56,213,1.56,214,1.671,215,4.865,216,1.56,217,1.56,218,4.823,219,3.595,220,1.56,221,2.282,222,1.56,223,1.56,224,1.56,225,1.671,226,1.671,227,1.671,228,1.56,229,1.56,230,2.711,231,2.354,233,2.45,409,1.56,526,1.476,527,1.265,531,1.476,596,1.671,598,1.671,599,1.671,600,2.905,601,1.671,605,1.56,650,1.841,651,1.841,652,3.199,653,3.199,654,1.841,655,1.841,656,1.354,657,2.905,658,1.841,659,1.841,660,1.841,661,1.841,662,1.841,663,1.841,664,1.841,665,1.841,666,1.841,667,1.841,668,1.841,669,1.841,670,1.841,671,1.841,672,1.841,673,1.841,674,1.841,675,1.841,676,1.841,677,1.841,678,1.841,679,1.841,680,1.841,681,1.841,682,1.841,683,1.841,684,1.476,685,1.841,686,1.841,687,1.56,688,1.841,689,1.841,690,1.841,691,1.841,692,1.841,693,1.841,694,1.841,695,1.841,696,1.841,697,1.841,698,1.841,699,1.841,700,1.841,701,1.841,702,1.841,703,1.841,704,1.841,705,1.841,706,1.841,707,3.199,708,1.841]],["t/87",[0,0.486,4,1.375,14,3.787,15,0.672,20,1.834,33,3.104,34,1.023,47,1.879,48,2.537,49,1.813,50,0.921,77,1.601,84,0.726,85,2.525,132,4.109,168,3.617,182,2.291,187,2.629,206,3.103,218,0.833,221,1.074,231,0.8,233,0.833,236,1.264,244,0.772,268,0.491,482,0.726,527,2.36,605,2.346,632,0.747,656,1.469,709,1.087,710,1.087,711,1.087,712,1.601,713,2.769,714,3.116,715,1.087,716,1.087,717,2.769,718,1.087,719,3.432,720,1.997,721,1.087,722,1.087,723,1.087,724,1.087,725,0.921,726,1.087,727,1.087,728,1.997,729,4.961,730,1.997,731,0.872,732,2.277,733,1.997,734,1.087,735,1.087,736,1.997,737,1.087,738,1.087,739,1.087,740,1.997,741,1.087,742,1.087,743,6.591,744,2.769,745,2.769,746,4.514,747,1.087,748,1.087,749,1.087,750,1.087,751,1.087,752,1.087,753,1.087,754,1.087,755,1.087,756,1.087,757,1.087,758,1.087,759,1.087,760,1.087,761,1.997,762,2.769,763,2.769,764,1.997,765,1.087,766,2.769,767,1.529,768,1.087,769,1.997,770,1.087,771,1.087,772,1.087,773,1.087,774,1.087,775,1.087,776,2.769,777,1.087,778,1.997,779,1.469,780,1.087,781,1.087,782,1.087,783,1.997,784,1.087,785,1.087,786,1.087,787,1.087,788,1.087,789,1.087,790,1.087,791,1.087,792,1.087,793,0.987,794,1.087,795,1.087,796,1.087,797,1.087,798,1.087,799,1.087,800,1.087,801,1.087,802,1.997,803,1.087,804,1.087,805,1.087,806,1.087,807,1.087,808,1.087,809,1.087,810,1.087,811,1.087,812,1.087,813,1.087,814,1.087,815,1.087,816,1.087,817,1.087,818,1.087,819,1.087,820,1.997,821,1.087,822,1.087,823,1.997,824,1.997,825,1.087,826,1.087,827,1.087,828,1.087,829,1.087,830,1.087,831,1.087,832,1.087,833,1.087,834,1.087,835,1.087]],["t/90",[0,0.498,4,1.604,11,0.815,12,1.014,13,1.014,14,4.398,15,1.014,20,1.899,33,4.301,45,1.095,126,1.315,132,1.065,139,3.441,145,1.315,147,1.315,148,2.128,161,1.164,182,1.095,184,1.128,206,1.128,221,0.882,237,1.315,526,1.315,527,1.128,531,1.315,602,1.39,656,3.441,684,3.111,687,1.39,779,1.207,836,1.39,837,1.39,838,1.489,839,1.489,840,1.489,841,1.39,842,1.489,843,2.626,844,2.626,845,2.626,846,2.626,847,2.892,848,2.892,849,1.64,850,5.73,851,2.626,852,1.489,853,2.626,854,2.626,855,2.45,856,2.45,857,2.626,858,1.489,859,1.489,860,1.489,861,1.489,862,1.489,863,1.489,864,1.489,865,1.489,866,1.489,867,4.246,868,1.489,869,1.489,870,1.489,871,1.489,872,1.489,873,1.489,874,1.489,875,1.489,876,1.489,877,1.489,878,1.489,879,1.489,880,1.489,881,3.521,882,3.521,883,1.489,884,1.489,885,1.489,886,1.489,887,1.489,888,1.39,889,1.39,890,1.39,891,1.489,892,1.489,893,1.489,894,1.489,895,1.489,896,1.489,897,2.45,898,1.489,899,1.489,900,1.489,901,3.286,902,1.39,903,1.489]],["t/92",[0,0.455,4,1.899,11,1.042,12,1.296,13,1.296,14,4.725,15,1.296,20,2.249,33,4.772,45,1.4,126,1.682,132,1.362,139,4.073,145,1.682,147,1.682,148,2.634,161,1.489,182,1.4,184,1.442,206,1.442,221,1.128,237,1.682,526,1.682,527,1.442,531,1.682,602,1.777,656,4.073,684,3.756,687,1.777,779,1.543,836,1.777,837,1.777,838,1.904,839,1.904,840,1.904,841,1.777,842,1.904,843,3.25,844,3.25,845,3.25,846,3.25,850,6.126,851,3.25,852,1.904,853,3.25,854,3.25,855,3.033,856,3.033,857,3.25,858,1.904,859,1.904,860,1.904,861,1.904,862,1.904,863,1.904,864,1.904,865,1.904,866,1.904,867,5.026,868,1.904,869,1.904,870,1.904,871,1.904,872,1.904,873,1.904,874,1.904,875,1.904,876,1.904,877,1.904,878,1.904,879,1.904,880,1.904,881,4.252,882,4.252,883,1.904,884,1.904,885,1.904,886,1.904,887,1.904,888,1.777,889,1.777,890,1.777,891,1.904,892,1.904,893,1.904,894,1.904,895,1.904,896,1.904,897,3.033,898,1.904,899,1.904,900,1.904,902,1.777,903,1.904]],["t/94",[0,0.411,4,2.192,11,1.625,12,2.021,13,2.021,14,4.764,15,2.021,20,1.328,33,4.202,126,2.623,132,4.711,139,3.796,145,2.623,147,2.623,148,3.796,159,2.97,160,2.97,161,2.322,172,2.97,182,2.183,206,2.248,221,1.759,237,2.623,566,3.796,656,2.407,684,4.138,836,2.771,837,2.771,841,2.771,850,4.372,855,2.771,856,2.771,888,2.771,889,2.771,890,2.771,897,2.771,902,2.771,904,3.271,905,3.271,906,3.271,907,3.271,908,3.271,909,3.271,910,3.271,911,3.271,912,3.271,913,3.271,914,3.271,915,3.271,916,3.271,917,2.771,918,3.271,919,3.271,920,3.271,921,3.271,922,3.271,923,3.271,924,3.271,925,3.271,926,3.271,927,3.271,928,3.271,929,3.271,930,3.271,931,3.271,932,3.271,933,3.271,934,3.271,935,3.271]],["t/96",[0,0.28,2,5.404,106,5.791,107,3.853,110,3.491,112,4.257,114,5.404,481,5.791,554,5.791,625,8.497,936,5.404,937,6.378,938,6.378,939,6.378,940,6.378,941,6.721,942,6.378,943,6.378,944,5.791,945,5.791,946,5.791,947,6.378]],["t/98",[0,0.501,31,5.403,45,5.079,47,3.025,107,4.597,426,4.683,428,4.233,429,4.233,431,4.433,432,4.433,433,4.433,948,5.526,949,5.526,950,5.526,951,5.018,952,5.526,953,5.526,954,5.526]],["t/100",[0,0.49,152,7.06,955,7.776,956,7.776,957,7.776,958,7.776]],["t/102",[0,0.499,16,5.962,31,4.774,32,4.947,428,5.149,429,5.149,431,5.392,959,6.723,960,5.392,961,6.723]],["t/104",[0,0.495,428,5.605,429,5.605,432,5.869,433,5.869,962,7.317,963,7.317,964,7.317]],["t/106",[0,0.489,4,2.371,69,4.086,268,3.12,527,4.751,965,6.91,966,6.91,967,6.91,968,6.91,969,6.91,970,6.91,971,6.91]],["t/108",[17,4.462,25,5.536,389,6.353,518,7.532,522,7.532,523,7.532,972,8.295]],["t/110",[426,6.913,428,6.249,429,6.249,431,6.544,432,6.544,433,6.544,951,7.408,973,8.159]],["t/112",[0,0.493,17,3.185,25,3.952,57,4.357,69,4.716,112,3.952,268,2.674,389,4.536,403,5.018,537,5.018,545,5.377,551,5.377,555,5.377,974,5.922,975,5.922,976,5.922,977,5.922,978,5.922,979,5.922]],["t/114",[0,0.436,9,4.264,110,3.947,249,3.814,944,6.548,945,6.548,946,6.548,980,5.12,981,7.211,982,7.211,983,7.211,984,7.211,985,7.211,986,7.211]],["t/116",[0,0.504,4,2.758,17,3.224,20,3.266,294,5.078,987,4.59,988,5.993,989,4.41,990,5.993,991,5.993,992,5.993,993,5.993,994,5.993]],["t/120",[0,0.502]],["t/122",[0,0.488]],["t/124",[0,0.405]],["t/127",[17,4.182,995,8.627,996,7.776,997,6.589,998,7.776,999,6.589,1000,7.06,1001,7.06,1002,7.776,1003,7.776]],["t/129",[17,4.318,997,6.802,999,6.802,1004,8.027,1005,7.288,1006,7.769,1007,8.027,1008,8.027]],["t/131",[0,0.414,4,2.216,20,2.624,995,5.866,997,5.475,999,5.475,1000,5.866,1001,7.673,1005,5.866,1006,5.182,1009,6.461,1010,5.182,1011,6.461,1012,8.451,1013,6.461,1014,3.993,1015,6.461,1016,6.461,1017,6.461,1018,6.461]],["t/133",[0,0.405]],["t/137",[0,0.489,4,2.246,1019,9.115,1020,6.546,1021,6.546,1022,6.546,1023,6.546,1024,6.546,1025,6.546,1026,6.546,1027,6.546,1028,6.546]],["t/141",[0,0.452,1029,8.889]],["t/144",[0,0.46,1030,9.512,1031,8.159,1032,8.159]],["t/146",[0,0.397,1033,9.051]],["t/149",[0,0.457]],["t/151",[1034,8.809]],["t/153",[0,0.507]],["t/156",[0,0.488]],["t/158",[0,0.473,1035,7.929]],["t/161",[0,0.488]],["t/163",[0,0.479,569,3.936,1019,8.934,1036,6.218,1037,6.218,1038,5.646,1039,6.218,1040,6.218,1041,5.646,1042,6.218,1043,6.218,1044,5.646,1045,6.218,1046,6.218,1047,6.218,1048,6.218,1049,6.218]],["t/166",[0,0.499]],["t/168",[0,0.486,1038,8.465,1041,8.465,1044,6.846,1050,7.54,1051,7.54]],["t/170",[0,0.49,17,4.462,410,6.353]],["t/172",[0,0.488,17,5.261,410,6.249]],["t/174",[0,0.488]],["t/176",[20,3.676,1052,9.051]],["t/178",[0,0.491,9,4.591,11,0.831,14,1.462,15,1.034,24,1.519,34,2.767,76,2.672,84,1.117,182,1.964,221,2.551,236,1.059,294,1.418,310,1.418,496,1.418,656,2.899,657,1.519,1010,1.342,1053,2.09,1054,1.673,1055,1.673,1056,2.672,1057,2.943,1058,2.943,1059,2.943,1060,2.943,1061,6.832,1062,2.943,1063,2.943,1064,2.943,1065,2.943,1066,2.943,1067,4.743,1068,2.943,1069,2.943,1070,2.943,1071,2.943,1072,2.943,1073,2.943,1074,2.943,1075,2.943,1076,2.943,1077,5.958,1078,2.943,1079,1.911,1080,2.943,1081,2.943,1082,3.94,1083,1.673,1084,1.673,1085,1.673,1086,1.673,1087,1.673,1088,1.673,1089,1.673,1090,1.673,1091,1.673,1092,1.673,1093,1.673,1094,1.673,1095,1.673,1096,1.673,1097,1.673,1098,1.673,1099,1.673,1100,1.673,1101,1.673,1102,1.282,1103,1.673,1104,1.673,1105,1.673,1106,1.673,1107,1.673,1108,1.673,1109,1.673,1110,1.673,1111,1.673,1112,1.673,1113,1.673,1114,1.673,1115,3.338,1116,1.282,1117,1.673,1118,1.673,1119,1.673,1120,1.673,1121,1.342,1122,1.673,1123,1.673,1124,1.673,1125,1.673,1126,1.673,1127,1.673,1128,1.673,1129,1.673,1130,1.673,1131,1.673,1132,1.673,1133,1.673,1134,1.673,1135,2.943,1136,1.673,1137,1.673,1138,1.673,1139,1.673,1140,1.673,1141,1.519,1142,1.673,1143,1.673,1144,1.519,1145,1.673]],["t/180",[0,0.47,11,1.871,34,1.929,488,3.192,632,2.589,987,2.885,1053,2.674,1102,2.885,1115,3.192,1146,3.767,1147,4.088,1148,3.192,1149,3.767,1150,3.767,1151,3.42,1152,3.021,1153,3.021,1154,3.42,1155,3.42,1156,3.42,1157,3.42,1158,3.42,1159,3.42,1160,5.227,1161,3.42,1162,3.42,1163,6.63,1164,3.42,1165,3.42,1166,5.227,1167,3.42,1168,5.227,1169,3.42,1170,3.42,1171,5.227,1172,3.42,1173,3.42,1174,3.42,1175,3.42,1176,3.42,1177,6.345,1178,3.42,1179,3.42,1180,3.42,1181,3.42,1182,6.345,1183,3.42,1184,3.021,1185,3.42,1186,2.514,1187,3.192,1188,3.42]],["t/184",[0,0.472,1053,7.201,1147,4.774,1189,6.723,1190,6.104,1191,6.723,1192,6.723,1193,6.723,1194,6.723,1195,6.723,1196,6.104,1197,6.723,1198,6.104]],["t/186",[1053,6.2,1199,8.732,1200,8.732,1201,8.732]],["t/188",[0,0.448,1053,5.436,1147,5.436,1196,6.951,1198,6.951,1202,7.656,1203,6.951,1204,7.656,1205,7.656,1206,7.656]],["t/190",[0,0.457]],["t/192",[0,0.462,17,3.995,1053,6.558,1102,5.688,1163,7.826,1207,9.236,1208,7.427,1209,6.743]],["t/194",[0,0.482,11,2.208,20,0.795,21,1.777,34,2.707,109,1.569,244,1.389,316,0.895,418,1.569,488,1.658,714,1.777,987,1.499,1053,4.628,1056,3.062,1102,2.583,1115,1.658,1147,1.389,1151,1.777,1152,1.569,1153,1.569,1154,1.777,1155,1.777,1156,3.062,1157,1.777,1158,1.777,1159,1.777,1160,3.062,1161,1.777,1162,1.777,1163,4.479,1164,1.777,1165,1.777,1166,3.062,1167,1.777,1168,3.062,1169,1.777,1170,1.777,1171,3.062,1172,1.777,1173,1.777,1174,1.777,1175,1.777,1176,1.777,1177,4.036,1178,1.777,1179,1.777,1180,1.777,1181,1.777,1182,4.036,1183,1.777,1184,1.569,1185,1.777,1186,1.306,1187,1.658,1188,1.777,1190,1.777,1203,1.777,1210,1.957,1211,1.957,1212,1.957,1213,3.373,1214,1.957,1215,1.777,1216,1.957,1217,1.957,1218,1.957,1219,3.373,1220,5.286,1221,1.957,1222,1.957,1223,3.373,1224,4.799,1225,5.286,1226,3.373,1227,1.957,1228,1.957,1229,1.389,1230,1.957,1231,1.957,1232,3.373,1233,3.373,1234,1.957,1235,1.957,1236,3.373,1237,1.957,1238,1.658,1239,1.957,1240,1.957,1241,1.658,1242,1.957,1243,1.957,1244,1.957,1245,1.957,1246,1.957,1247,1.569,1248,1.777,1249,1.957,1250,1.957,1251,1.957,1252,1.957,1253,1.957,1254,1.957,1255,1.957,1256,1.44,1257,1.957,1258,3.373,1259,3.373,1260,3.373,1261,1.957,1262,1.957,1263,1.957,1264,1.957]],["t/196",[0,0.457]],["t/198",[0,0.452,74,6.808]],["t/200",[0,0.39,1265,8.889,1266,3.822]],["t/202",[0,0.35,330,5.377,1121,4.75,1266,2.546,1267,7.976,1268,5.922,1269,5.922,1270,4.75,1271,4.75,1272,5.377,1273,5.377,1274,3.66,1275,5.922,1276,5.922,1277,5.922,1278,5.018,1279,5.018,1280,3.033,1281,5.018,1282,5.922,1283,5.922,1284,5.922,1285,5.922,1286,5.922,1287,5.922,1288,2.986,1289,4.75,1290,5.922,1291,5.922]],["t/204",[0,0.317,1270,5.784,1271,5.784,1292,7.211,1293,7.211,1294,7.211,1295,7.211,1296,7.211,1297,7.211,1298,7.211,1299,7.211,1300,7.211,1301,7.211,1302,7.211,1303,7.211,1304,7.211]],["t/206",[0,0.321,1305,4.326,1306,7.317,1307,7.317,1308,7.317,1309,7.317,1310,7.317,1311,7.317,1312,6.2,1313,7.317,1314,7.317,1315,7.317,1316,7.317,1317,7.317,1318,7.317]],["t/208",[0,0.472,337,3.812,1319,6.336,1320,7.172,1321,7.172,1322,5.812,1323,7.172]],["t/210",[1324,8.37]],["t/213",[337,4.214,1305,5.163,1325,7.929,1326,7.929]],["t/215",[1327,6.363,1328,6.363,1329,6.363,1330,6.363,1331,6.363,1332,6.363,1333,6.363,1334,6.363,1335,6.363,1336,6.363,1337,6.363,1338,6.363,1339,6.363,1340,6.363,1341,4.551,1342,4.677,1343,6.363,1344,6.363]],["t/217",[1345,6.589,1346,7.06,1347,7.06,1348,5.521,1349,4.805,1350,7.06,1351,7.06,1352,7.06,1353,7.06,1354,7.06,1355,7.06]],["t/219",[1356,7.659,1357,7.659,1358,7.659,1359,7.659,1360,7.659,1361,7.659]],["t/221",[0,0.388,56,4.091,57,3.553,73,4.091,1348,6.272,1349,5.779,1362,4.384,1363,4.384,1364,4.384,1365,3.223,1366,4.384,1367,4.384,1368,2.984,1369,4.384,1370,4.384,1371,4.091,1372,4.384,1373,2.984,1374,5.561,1375,4.427,1376,4.384,1377,4.384,1378,6.283,1379,4.384,1380,4.384,1381,4.384,1382,4.384,1383,4.384,1384,4.384,1385,4.384,1386,4.384,1387,3.223,1388,4.384,1389,4.384,1390,4.384]],["t/225",[0,0.503,337,4.441,1280,5.269,1391,6.513,1392,4.804,1393,3.893,1394,3.893]],["t/227",[1395,7.532,1396,7.532,1397,6.653,1398,7.532,1399,7.532,1400,7.532,1401,7.532]],["t/229",[0,0.442,4,2.031,20,3.24,173,5.018,989,4.357,1373,3.66,1375,3.241,1397,4.75,1402,5.377,1403,5.377,1404,5.377,1405,5.377,1406,5.377,1407,5.377,1408,5.377,1409,5.377,1410,5.377,1411,5.377,1412,5.377,1413,4.071,1414,5.377,1415,3.952,1416,5.377,1417,5.377,1418,5.377,1419,5.377]],["t/231",[0,0.384,1420,8.732,1421,6.688,1422,8.732]],["t/234",[1014,5.593,1423,9.051]],["t/236",[0,0.405]],["t/238",[0,0.512,1424,6.38]],["t/240",[0,0.353,316,3.671,1014,4.961,1421,6.148,1424,5.699,1425,7.288,1426,8.027,1427,5.357,1428,6.802]],["t/242",[0,0.444,316,4.968,1429,4.896,1430,9.323,1431,7.54,1432,5.353]],["t/244",[0,0.47,1428,7.272,1429,5.573]],["t/246",[0,0.47,1433,6.633,1434,6.633,1435,6.633,1436,6.633,1437,6.633,1438,6.633,1439,8.597,1440,6.633,1441,6.633,1442,6.633,1443,6.633,1444,6.633,1445,6.633,1446,6.633,1447,6.633]],["t/248",[0,0.295,1448,6.723,1449,6.104,1450,6.723,1451,8.672,1452,6.723,1453,6.723,1454,6.723,1455,6.104,1456,6.723,1457,5.697,1458,6.723,1459,6.723,1460,6.723,1461,6.723,1462,6.723,1463,6.723,1464,6.723,1465,6.723,1466,6.723]],["t/251",[0,0.479,1467,9.411,1468,7.656,1469,7.656,1470,7.656,1471,7.656,1472,7.656]],["t/253",[0,0.481,69,4.954,71,5.761,1473,6.378,1474,6.378,1475,6.378,1476,6.378,1477,6.378,1478,6.378,1479,6.378,1480,6.378,1481,6.378,1482,6.378,1483,6.378,1484,6.378,1485,6.378]],["t/255",[1486,7.659,1487,8.436,1488,8.436,1489,8.436,1490,8.436,1491,8.436]],["t/259",[0,0.495,1432,3.331,1492,4.691,1493,4.691,1494,4.691,1495,7.959,1496,4.691,1497,4.691,1498,4.691,1499,4.691,1500,4.691,1501,6.778,1502,4.691,1503,4.691,1504,4.691,1505,4.691,1506,4.691,1507,4.691,1508,4.691,1509,4.691,1510,4.691,1511,4.691,1512,4.691,1513,4.691,1514,4.691,1515,4.691,1516,4.691,1517,4.691,1518,4.691,1519,4.691,1520,4.691,1521,4.691]],["t/262",[0,0.502]],["t/264",[0,0.452,1522,8.889]],["t/266",[0,0.452,1523,8.889]],["t/269",[0,0.513]],["t/271",[0,0.503,410,4.885,1524,7.1,1525,6.378,1526,8.379,1527,6.378,1528,6.378,1529,5.404,1530,6.378,1531,6.378]],["t/273",[0,0.507,4,3.784,268,4.542]],["t/275",[0,0.457]],["t/277",[0,0.448,1532,7.668,1533,4.736,1534,5.589,1535,5.589,1536,5.589,1537,5.589,1538,5.589,1539,5.074,1540,5.589,1541,5.589,1542,5.589,1543,5.589,1544,5.589,1545,5.589,1546,5.589,1547,5.589,1548,5.589,1549,5.589,1550,5.589,1551,5.589,1552,5.589,1553,5.589,1554,5.589,1555,5.074,1556,5.074,1557,5.589,1558,4.736,1559,5.589,1560,5.589]],["t/279",[0,0.441,1539,5.944,1555,5.944,1556,5.944,1558,5.547,1561,6.546,1562,6.546,1563,6.546,1564,6.546,1565,6.546,1566,6.546,1567,6.546,1568,6.546,1569,6.546,1570,6.546,1571,6.546,1572,6.546,1573,6.546,1574,6.546,1575,6.546]],["t/281",[0,0.479,1558,7.614,1576,7.108,1577,7.108,1578,7.108,1579,7.108,1580,7.108,1581,7.108,1582,7.108,1583,7.108,1584,7.108]],["t/284",[47,5.046]],["t/288",[0,0.512]],["t/290",[0,0.473,1585,8.732]],["t/293",[0,0.438,1586,8.436,1587,8.436,1588,8.436,1589,8.436]],["t/295",[0,0.499]],["t/297",[0,0.508,1590,6.633,1591,6.633,1592,6.633,1593,6.023,1594,6.633,1595,5.621,1596,6.023]],["t/299",[0,0.517,47,3.203,1593,7.184]],["t/301",[0,0.451,316,3.556,1266,3.343,1597,6.014,1598,5.955,1599,5.721,1600,5.346,1601,6.589]],["t/304",[221,4.388,1597,6.192,1602,7.846,1603,7.408,1604,7.408,1605,7.408]],["t/306",[0,0.408,34,4.255,1602,5.051,1606,7.544,1607,5.718,1608,7.574,1609,7.88,1610,5.718,1611,5.718,1612,5.718,1613,7.041,1614,5.718,1615,5.718,1616,5.718,1617,5.718,1618,5.718]],["t/308",[0,0.474,1619,6.148,1620,6.148,1621,7.288,1622,7.288,1623,7.288]],["t/312",[0,0.5,1624,6.501,1625,3.263,1626,5.508,1627,6.328,1628,7.36,1629,7.36,1630,5.508,1631,5.508,1632,5.508]],["t/314",[0,0.482,4,2.761,14,1.691,168,3.371,1625,2.864,1627,4.259,1633,2.212,1634,4.835,1635,4.835,1636,3.092,1637,8.379,1638,4.835,1639,2.505,1640,4.835,1641,4.835,1642,6.734,1643,5.954,1644,4.835,1645,4.835,1646,4.835,1647,4.835,1648,4.835,1649,3.092,1650,2.505,1651,3.092,1652,3.918,1653,3.092,1654,3.092,1655,3.092,1656,3.092,1657,2.885,1658,3.092,1659,3.092,1660,3.918,1661,4.835,1662,3.092,1663,3.092]],["t/316",[0,0.489,1625,4.584,1627,5.535,1633,3.54,1639,6.973,1650,4.817,1664,3.955,1665,5.944,1666,5.944,1667,5.547]],["t/318",[0,0.5,4,0.912,20,1.08,110,2.39,1014,2.698,1341,1.726,1342,1.774,1368,1.643,1427,1.774,1429,2.835,1625,4.34,1660,5.619,1664,2.637,1668,2.413,1669,2.413,1670,2.413,1671,2.413,1672,2.413,1673,2.252,1674,3.212,1675,2.413,1676,2.413,1677,7.537,1678,5.337,1679,4.614,1680,1.887,1681,2.413,1682,3.964,1683,3.964,1684,2.413,1685,2.413,1686,2.413,1687,3.964,1688,2.413,1689,2.413,1690,2.413,1691,2.413,1692,1.827,1693,2.132,1694,2.413,1695,2.413]],["t/320",[0,0.497,20,1.355,107,2.016,111,2.227,268,1.506,1266,1.434,1305,1.973,1341,3.403,1342,3.498,1368,2.062,1600,3.603,1625,1.795,1652,2.455,1678,4.805,1679,3.403,1680,2.369,1692,2.294,1696,3.029,1697,3.029,1698,2.827,1699,5.877,1700,3.029,1701,3.029,1702,3.029,1703,5.877,1704,3.029,1705,1.973,1706,3.029,1707,3.029,1708,3.029,1709,3.029,1710,4.759,1711,2.112,1712,3.029,1713,3.029,1714,3.029,1715,1.895,1716,2.676,1717,3.029,1718,1.526,1719,3.029,1720,4.759,1721,4.204,1722,3.029,1723,3.029,1724,2.676,1725,3.029]],["t/322",[0,0.493,26,2.125,48,1.759,67,2.866,110,0.858,1266,0.674,1365,1.046,1415,3.021,1424,1.113,1429,1.018,1597,4.181,1619,1.201,1620,1.201,1664,1.679,1674,3.331,1679,2.43,1711,0.992,1718,0.717,1726,5.201,1727,5.973,1728,1.423,1729,1.113,1730,3.398,1731,1.423,1732,2.523,1733,1.423,1734,4.11,1735,1.423,1736,1.423,1737,1.423,1738,1.423,1739,1.257,1740,1.423,1741,1.423,1742,2.523,1743,2.753,1744,2.523,1745,4.11,1746,2.523,1747,1.423,1748,1.423,1749,1.423,1750,1.423,1751,3.001,1752,1.423,1753,1.423,1754,1.423,1755,3.72,1756,2.354,1757,2.523,1758,1.423,1759,1.423,1760,1.423,1761,1.328,1762,1.423,1763,1.328,1764,2.523,1765,1.423,1766,1.328,1767,1.201,1768,1.423,1769,1.423,1770,1.423,1771,1.423,1772,7.466,1773,2.523,1774,1.423,1775,1.423,1776,1.423,1777,2.523,1778,3.631,1779,1.423,1780,1.423,1781,1.423,1782,2.523,1783,2.523,1784,1.423,1785,1.423,1786,1.423,1787,2.523,1788,2.229,1789,2.523,1790,2.523,1791,2.523,1792,1.423,1793,1.423,1794,1.423,1795,5.201,1796,2.523,1797,2.523,1798,2.523,1799,1.423,1800,1.201,1801,1.423]],["t/325",[0,0.503,1079,4.785,1280,3.773,1427,4.918,1678,4.185,1679,2.669,1802,5.583,1803,7.427,1804,3.731,1805,3.147,1806,3.731,1807,5.583,1808,3.731,1809,3.731,1810,3.731,1811,5.583,1812,5.583,1813,4.71,1814,3.296,1815,3.731,1816,3.731,1817,3.731,1818,3.731]],["t/327",[0,0.506,1280,2.928,1608,4.379,1679,5.058,1814,4.586,1819,5.191,1820,5.191,1821,5.191,1822,8.635,1823,5.191,1824,5.191,1825,5.191]],["t/330",[0,0.488,337,3.806,960,3.068,1280,1.959,1305,2.261,1368,2.364,1625,2.057,1660,2.814,1664,3.519,1678,2.172,1721,3.068,1826,2.629,1827,3.473,1828,3.473,1829,3.473,1830,3.473,1831,3.241,1832,5.289,1833,5.658,1834,3.473,1835,3.241,1836,3.473,1837,3.473,1838,3.473,1839,3.473,1840,3.473,1841,3.473,1842,3.473,1843,3.473,1844,3.473,1845,3.473,1846,3.473,1847,3.473,1848,3.473,1849,3.473,1850,3.473,1851,3.473,1852,5.289,1853,5.289,1854,5.289,1855,3.473,1856,3.473,1857,3.473,1858,3.473,1859,3.473,1860,3.473]],["t/332",[0,0.503,4,1.588,268,2.09,1274,2.861,1288,1.441,1341,3.007,1342,3.09,1597,2.931,1624,6.673,1625,5.391,1627,3.007,1639,2.102,1664,4.772,1692,3.183,1715,2.63,1718,3.07,1724,2.291,1861,2.594,1862,6.096,1863,2.594,1864,4.296,1865,4.683,1866,2.594,1867,2.594,1868,2.594,1869,2.594,1870,2.102,1871,2.594,1872,2.188]],["t/334",[0,0.486,16,2.219,111,4.228,316,1.476,901,2.735,980,3.626,1186,2.155,1241,2.735,1256,2.375,1274,4.45,1341,2.096,1394,2.375,1597,3.232,1625,5.644,1627,3.316,1650,2.375,1664,5.04,1693,2.589,1711,2.043,1715,2.9,1716,2.589,1718,2.335,1788,2.589,1826,2.219,1864,3.757,1870,3.757,1873,2.931,1874,2.931,1875,2.931,1876,2.375,1877,2.931,1878,2.931,1879,2.931,1880,1.995,1881,2.931,1882,2.931,1883,2.931,1884,2.931,1885,2.472,1886,2.931,1887,2.096,1888,2.931]],["t/337",[1889,9.219]],["t/339",[337,3.938,1266,3.508,1281,6.913,1890,8.159,1891,8.159,1892,8.159,1893,8.159,1894,5.298]],["t/341",[1895,9.219]],["t/343",[0,0.353,1272,7.288,1273,7.288,1274,4.961,1305,4.746,1896,8.027,1897,8.027,1898,8.027,1899,8.027]],["t/345",[1288,4.482,1872,6.808,1900,8.889]],["t/347",[0,0.332,85,5.559,316,1.96,621,3.892,1266,2.728,1280,3.25,1288,3.2,1391,2.713,1427,2.861,1625,2.306,1718,1.96,1805,3.283,1872,4.86,1880,5.161,1901,4.287,1902,4.287,1903,4.287,1904,4.287,1905,5.09,1906,4.287,1907,4.287,1908,4.287,1909,4.287,1910,4.287,1911,4.287,1912,4.287,1913,4.287,1914,4.287,1915,4.287,1916,4.211,1917,8.094,1918,5.09,1919,2.649,1920,6.402,1921,3.632,1922,3.283,1923,3.632,1924,4.287,1925,4.287,1926,4.287,1927,3.154,1928,3.892]],["t/349",[917,5.14,1413,5.573,1415,5.41,1652,6.717,1705,3.587,1718,2.774,1727,4.646,1800,4.646,1927,4.464,1929,6.066,1930,6.066,1931,6.066,1932,6.066,1933,6.066,1934,6.066,1935,6.066,1936,6.066,1937,6.066,1938,6.066,1939,6.066,1940,6.066,1941,6.066,1942,6.066,1943,6.066,1944,6.066]],["t/351",[0,0.365,316,4.358,1266,2.182,1271,4.07,1391,3.212,1427,6.03,1905,6.668,1945,5.075,1946,5.075,1947,5.075,1948,5.075,1949,5.075,1950,5.075,1951,5.075,1952,5.075,1953,5.075,1954,5.075,1955,5.075,1956,5.075,1957,5.075,1958,5.075,1959,4.608,1960,5.075,1961,5.075,1962,5.075,1963,5.075,1964,5.075,1965,5.075,1966,5.075,1967,5.075,1968,5.075,1969,5.075,1970,5.075,1971,5.075]],["t/353",[1288,4.564,1972,9.051]],["t/355",[0,0.353,1278,6.802,1279,6.802,1280,4.111,1281,6.802,1305,4.746,1973,8.027,1974,8.027,1975,8.027]],["t/357",[1280,4.635,1976,9.051]],["t/359",[1977,9.219]],["t/361",[1121,5.957,1271,5.957,1288,4.657,1978,7.427,1979,7.427,1980,7.427,1981,7.427,1982,7.427,1983,7.427,1984,7.427,1985,7.427,1986,7.427,1987,7.427]],["t/363",[316,4.065,1805,6.808,1880,5.493]],["t/365",[0,0.397,1805,6.932]],["t/367",[0,0.488]],["t/369",[0,0.477]],["t/371",[0,0.405]],["t/373",[0,0.493,1988,8.748,1989,6.815,1990,6.815,1991,6.815,1992,5.775,1993,5.22,1994,6.815,1995,6.815,1996,6.815,1997,6.815]],["t/375",[0,0.487,4,1.551,84,6.721,168,2.862,941,7.308,1247,6.25,1880,4.078,1998,4.105,1999,4.105,2000,3.462,2001,4.105,2002,4.105,2003,6.598,2004,4.521,2005,4.521,2006,2.936,2007,4.521,2008,4.521,2009,4.521,2010,4.521,2011,4.521,2012,4.105,2013,4.105,2014,4.521,2015,4.521,2016,4.105]],["t/377",[0,0.486,4,1.51,84,5.121,168,4.095,941,3.529,1880,2.719,1998,3.995,1999,5.874,2000,4.955,2001,3.995,2002,3.995,2006,2.858,2012,5.874,2013,3.995,2016,3.995,2017,4.4,2018,4.4,2019,4.4,2020,4.4,2021,4.4,2022,4.4,2023,4.4,2024,7.679,2025,4.4,2026,4.4,2027,6.47,2028,4.4,2029,4.4,2030,4.4,2031,4.4,2032,4.4,2033,4.4,2034,4.4,2035,4.4]],["t/379",[0,0.463,84,5.536,168,5.251,941,7.924]],["t/381",[0,0.457]],["t/383",[0,0.457]],["t/385",[2036,7.394]],["t/387",[0,0.465,1280,3.539,1393,5.085,1394,5.085,1876,5.085,1905,5.543,2036,8.218,2037,6.91,2038,6.91,2039,6.91,2040,6.91,2041,5.543]],["t/389",[0,0.308,732,3.98,1371,5.938,1373,4.331,1413,4.818,1927,5.156,1959,6.363,2042,5.938,2043,7.008,2044,7.008,2045,7.008,2046,7.008,2047,7.008,2048,7.008,2049,7.008,2050,7.008,2051,7.008,2052,4.143]],["t/391",[0,0.41,712,3.438,917,3.632,936,3.632,1876,3.154,1927,4.669,1928,3.892,2036,5.09,2041,3.438,2053,4.287,2054,5.787,2055,6.346,2056,4.287,2057,4.287,2058,4.287,2059,4.287,2060,6.346,2061,4.287,2062,5.377,2063,4.287,2064,3.283,2065,4.287,2066,6.346,2067,4.287,2068,4.287,2069,4.287,2070,3.632,2071,4.287,2072,4.287,2073,4.287,2074,4.287,2075,3.892,2076,4.287,2077,4.287,2078,4.287,2079,4.287,2080,6.346,2081,4.287,2082,4.287,2083,4.287,2084,4.287,2085,4.287,2086,4.287,2087,4.287,2088,4.287,2089,4.287,2090,4.287,2091,4.287,2092,4.287]],["t/393",[0,0.494,337,3.335,1345,5.855,1657,5.855,2036,8.218,2093,6.91,2094,6.91,2095,6.91]],["t/395",[1715,4.874,2096,8.582,2097,8.582,2098,8.582,2099,7.272]],["t/397",[0,0.336,110,4.19,630,6.682,2100,7.656,2101,7.656,2102,7.656,2103,7.656,2104,7.656,2105,4.049,2106,7.656,2107,7.656]],["t/399",[0,0.409,249,4.931,569,4.773,2105,5.353,2108,7.54,2109,7.54,2110,7.54,2111,7.54,2112,7.54]],["t/401",[0,0.341,249,5.025,2105,5.426,2113,7.776,2114,7.776,2115,7.776,2116,7.776,2117,7.776]],["t/403",[0,0.436,4,2.474,110,3.947,158,5.784,249,3.814,569,4.565,2105,5.504,2118,6.548,2119,7.211,2120,7.211,2121,7.211]],["t/407",[0,0.434,4,2.63,20,2.27,26,3.174,48,3.538,69,4.534,244,5.444,566,4.112,1014,3.454,1919,4.739,2122,5.589,2123,5.589,2124,5.589,2125,5.589,2126,5.589,2127,5.589,2128,5.074,2129,6.497,2130,5.589,2131,5.589,2132,4.28,2133,4.482,2134,4.112,2135,4.112,2136,5.074,2137,5.589,2138,5.589]],["t/409",[0,0.463,4,1.723,20,4.005,26,2.853,69,5.83,244,5.054,566,3.696,1880,3.104,1919,4.399,2024,6.463,2128,4.561,2133,4.029,2134,3.696,2135,3.696,2136,4.561,2139,5.023,2140,7.118,2141,7.118,2142,5.023,2143,5.023,2144,5.023,2145,5.023,2146,5.023]],["t/412",[0,0.439,71,5.031,2147,7.317,2148,7.317,2149,7.317,2150,9.151,2151,7.317,2152,7.317,2153,7.317,2154,7.317,2155,7.317,2156,7.317]],["t/414",[0,0.482,4,1.732,70,3.13,174,2.872,249,3.128,268,1.762,527,4.066,1014,5.293,1186,2.605,1387,1.55,1533,1.968,1739,4.048,1919,1.435,2052,2.984,2133,1.863,2157,2.323,2158,2.323,2159,2.323,2160,1.968,2161,3.903,2162,2.323,2163,2.323,2164,2.323,2165,2.323,2166,2.323,2167,2.323,2168,2.323,2169,2.323,2170,5.915,2171,2.323,2172,2.323,2173,2.323,2174,2.323,2175,2.323,2176,2.323,2177,2.323,2178,2.323,2179,2.323,2180,2.323,2181,3.903,2182,2.323,2183,2.323,2184,2.323,2185,2.323,2186,2.323,2187,2.323,2188,2.323,2189,3.903,2190,2.323,2191,2.323,2192,2.323,2193,2.323,2194,2.323,2195,2.323,2196,2.323,2197,2.323,2198,2.323,2199,2.323,2200,2.323,2201,3.903,2202,2.323,2203,2.323,2204,2.323,2205,2.323,2206,2.323,2207,2.323,2208,2.323,2209,2.323,2210,2.323,2211,2.323,2212,2.323,2213,2.109,2214,3.903,2215,2.323,2216,3.903,2217,2.323,2218,2.109,2219,5.915,2220,3.307,2221,2.323,2222,3.903,2223,2.323,2224,2.323,2225,2.323,2226,2.323]],["t/416",[0,0.434,1349,6.105,1375,5.407,2227,8.295]],["t/419",[0,0.508,4,2.901,249,4.844,632,6.297,2228,5.235,2229,5.235,2230,5.235,2231,5.235,2232,5.235,2233,5.235,2234,5.235]],["t/421",[0,0.46,2235,8.289,2236,8.159,2237,8.159,2238,8.159]],["t/424",[33,3.274,297,4.329,1186,5.158,1349,5.849,1375,5.601,1413,5.313,1415,3.773,1449,5.132,1885,4.329,1918,4.533,2042,6.548,2239,7.728,2240,5.652,2241,5.652,2242,5.652,2243,5.132,2244,4.329,2245,7.728,2246,4.789,2247,5.652,2248,5.652,2249,5.652]],["t/426",[2250,8.37]],["t/428",[0,0.465,4,3.287,11,0.879,20,3.83,112,0.637,132,1.607,221,0.952,249,3.9,268,1.858,297,0.73,496,4.745,502,5.481,566,0.702,569,1.12,731,2.914,779,0.702,989,2.274,1034,1.499,1079,0.619,1116,0.73,1144,0.866,1147,0.677,1186,2.425,1187,0.808,1305,1.046,1349,2.245,1365,1.181,1375,1.989,1415,4.109,1429,0.619,1705,0.564,1833,1.419,1916,0.986,1919,1.91,2042,5.423,2135,0.702,2218,1.606,2250,0.866,2251,0.866,2252,1.606,2253,0.866,2254,0.954,2255,1.769,2256,1.769,2257,4.479,2258,0.954,2259,0.954,2260,0.954,2261,0.954,2262,0.954,2263,1.769,2264,0.866,2265,1.769,2266,0.866,2267,0.954,2268,0.866,2269,0.954,2270,0.954,2271,0.954,2272,0.808,2273,0.954,2274,0.954,2275,5.89,2276,3.091,2277,3.091,2278,3.091,2279,1.499,2280,3.091,2281,4.933,2282,1.769,2283,1.769,2284,1.769,2285,0.954,2286,0.954,2287,0.954,2288,1.419,2289,1.769,2290,3.091,2291,1.769,2292,1.606,2293,4.115,2294,1.769,2295,1.769,2296,1.985,2297,1.769,2298,0.954,2299,1.769,2300,1.769,2301,1.769,2302,1.769,2303,4.127,2304,3.487,2305,3.091,2306,1.769,2307,1.769,2308,0.954,2309,0.954,2310,1.769,2311,0.954,2312,0.954,2313,0.954,2314,1.769,2315,0.954,2316,0.808,2317,0.954,2318,0.954,2319,0.954,2320,1.769,2321,0.954,2322,0.954,2323,0.954,2324,0.954,2325,1.499,2326,0.954,2327,0.954,2328,0.954,2329,0.954,2330,0.954,2331,0.765,2332,0.954,2333,0.808,2334,0.73,2335,0.954,2336,0.954]],["t/430",[0,0.436,1348,5.12,1349,4.457,1375,3.947,1413,4.958,2304,6.11,2337,7.211,2338,7.211,2339,7.211,2340,7.211,2341,7.211,2342,7.211,2343,7.211,2344,7.211]],["t/432",[1349,5.493,1375,4.865,2345,8.889]],["t/434",[0,0.481,337,3.078,779,4.693,1348,4.529,1349,5.178,1374,4.385,1375,4.586,1529,5.404,1833,6.721,2243,5.791,2251,5.791,2252,7.608,2253,5.791,2346,5.791]],["t/436",[0,0.46,1529,6.913,2105,4.315,2346,7.408,2347,8.159,2348,8.159]],["t/438",[0,0.497,84,4.891,527,5.038,779,5.392,2105,4.472,2292,6.654,2303,4.753,2304,4.436,2349,5.235,2350,5.235,2351,6.654,2352,5.235,2353,5.235,2354,5.235,2355,5.235,2356,5.235,2357,5.235,2358,5.235,2359,5.235]],["t/440",[1348,6.2,1374,6.003,1375,4.78,2351,7.929]],["t/442",[0,0.457,337,3.48,2105,5.246,2360,7.211,2361,7.211,2362,9.068,2363,9.068,2364,7.211,2365,7.211]],["t/444",[0,0.474,1375,4.394,1391,5.081,2366,8.027,2367,8.027,2368,5.699]],["t/446",[0,0.457]],["t/448",[1870,6.425,2369,8.732,2370,8.732,2371,8.732]],["t/450",[47,3.631,373,6.023,1014,5.894,1678,3.768,2372,8.597,2373,8.597,2374,6.633,2375,6.023,2376,6.633,2377,6.023,2378,6.023,2379,6.633,2380,7.284,2381,6.633,2382,6.633,2383,6.633,2384,6.023]],["t/452",[0,0.448,47,3.953,1678,5.434,2375,4.655,2377,6.557,2378,6.557,2385,5.127,2386,5.127,2387,7.222,2388,5.127,2389,8.361,2390,5.127,2391,5.127,2392,4.344,2393,7.222,2394,5.127,2395,5.127,2396,5.127,2397,7.222,2398,5.127,2399,5.127,2400,5.127,2401,5.127,2402,5.127,2403,5.127,2404,5.127]],["t/455",[0,0.377,2405,8.582,2406,8.582,2407,8.582,2408,8.582]],["t/457",[2409,7.129,2410,8.071,2411,8.889]],["t/459",[0,0.463,482,5.536,2410,7.532,2412,8.295,2413,7.532]],["t/462",[11,3.869,84,5.198,191,5.965,342,5.191,1266,3.348,1387,5.198,1705,3.38,1885,4.379,1887,3.713,2105,4.119,2414,8.635,2415,6.247,2416,5.717,2417,5.717,2418,4.845,2419,4.586,2420,5.717,2421,5.191,2422,5.717,2423,5.717,2424,5.191,2425,5.198,2426,5.717]],["t/464",[11,4.224,84,3.531,108,6.256,112,5.676,191,5.655,1121,4.244,1184,4.244,1215,4.804,1248,4.804,1387,3.531,1705,3.128,1885,6.513,1918,4.244,2105,2.798,2272,4.483,2414,8.355,2415,4.244,2419,4.244,2425,4.928,2427,5.291,2428,5.291,2429,5.291,2430,4.483,2431,5.291,2432,4.052,2433,5.291,2434,5.291,2435,5.291,2436,5.291]],["t/466",[11,3.582,112,6.62,191,6.945,1266,3.1,1705,5.361,2272,6.11,2415,5.784,2437,5.784,2438,7.211,2439,7.211,2440,7.211,2441,7.211]],["t/469",[2105,5.277,2442,8.436,2443,8.436,2444,8.436,2445,7.659]],["t/471",[0,0.425,236,5.825,1678,3.005,2105,5.868,2445,4.804,2446,5.291,2447,5.291,2448,5.291,2449,7.383,2450,5.291,2451,5.291,2452,5.291,2453,5.291,2454,5.291,2455,5.291,2456,5.291,2457,4.804,2458,4.804,2459,5.291,2460,5.291,2461,5.291]],["t/474",[0,0.488]],["t/476",[0,0.457,268,3.256,1917,6.548,2462,7.211,2463,7.211,2464,7.211,2465,7.211,2466,7.211,2467,7.211,2468,7.211,2469,7.211,2470,7.211,2471,7.211]],["t/478",[0,0.451,2457,7.06,2458,7.06,2472,7.776,2473,7.776,2474,7.776,2475,7.776,2476,7.776,2477,7.776]],["t/481",[2478,8.889,2479,8.889,2480,8.889]],["t/483",[0,0.39,1486,8.071,2132,6.808]],["t/485",[2481,9.219]],["t/487",[0,0.44,4,1.41,20,1.669,249,3.897,268,3.954,630,6.218,632,4.227,731,3.296,2220,3.482,2264,3.731,2279,3.482,2482,4.109,2483,4.109,2484,4.109,2485,4.109,2486,4.109,2487,3.731,2488,5.583,2489,3.731,2490,4.109,2491,4.109,2492,4.109,2493,4.109,2494,4.109,2495,3.731,2496,4.109,2497,5.583,2498,4.109,2499,4.109,2500,4.109,2501,4.109,2502,4.109,2503,4.109,2504,4.109,2505,3.731,2506,4.109,2507,4.109,2508,4.109,2509,4.109,2510,3.731,2511,4.109,2512,3.731,2513,4.109,2514,3.482,2515,4.109,2516,4.109,2517,4.109]],["t/490",[0,0.457]],["t/492",[0,0.494]],["t/494",[0,0.457]],["t/497",[0,0.405]],["t/499",[0,0.483,20,3.435,47,4.628,57,3.852,1116,4.01,1678,4.802,2384,4.753,2430,4.436,2518,5.235,2519,5.235,2520,5.235,2521,5.235,2522,5.235,2523,5.235,2524,5.235,2525,5.235,2526,5.235,2527,8.455,2528,5.235,2529,5.235,2530,5.235,2531,4.199,2532,5.235]],["t/501",[4,3.049,2533,8.071,2534,8.889]],["t/504",[0,0.479,4,1.664,20,1.514,34,3.273,47,4.26,50,1.863,70,3.89,109,1.764,111,1.468,249,5.094,268,3.34,569,3.615,630,4.538,632,4.394,980,1.561,1186,2.488,1667,3.158,1865,1.764,2220,1.863,2279,1.863,2296,1.764,2495,1.997,2497,3.384,2505,1.997,2510,1.997,2512,1.997,2535,2.199,2536,2.199,2537,3.727,2538,2.199,2539,2.199,2540,2.199,2541,2.199,2542,2.199,2543,2.199,2544,2.199,2545,2.199,2546,3.727,2547,2.199,2548,2.199,2549,2.199,2550,2.199,2551,2.199,2552,2.199,2553,2.199,2554,2.199,2555,2.199,2556,2.199,2557,2.199,2558,2.199,2559,2.199,2560,2.199,2561,2.199,2562,2.199,2563,3.384,2564,2.199,2565,3.727,2566,2.199,2567,3.727,2568,2.199,2569,2.199,2570,2.199,2571,2.199,2572,2.199,2573,2.199,2574,4.85,2575,3.384,2576,3.727,2577,2.199,2578,2.199,2579,2.199,2580,2.199,2581,2.199,2582,2.199,2583,2.199]],["t/506",[107,5.011,316,3.793,1718,3.793,2584,7.532,2585,4.003,2586,6.104,2587,4.54]],["t/508",[9,1.973,11,3.215,107,3.166,132,2.167,316,3.354,322,2.827,502,5.882,1014,3.239,1152,2.676,1229,3.721,1247,4.204,1266,3.804,1274,2.062,1288,2.643,1322,2.455,1365,3.498,1373,2.062,1387,2.227,1633,3.046,1715,2.977,1718,2.397,2099,2.827,2134,2.455,2244,2.555,2418,2.827,2432,2.555,2514,4.441,2585,4.083,2587,2.869,2588,3.029,2589,3.029,2590,3.029,2591,3.029,2592,3.029,2593,2.676,2594,4.759,2595,2.676,2596,2.827,2597,4.759,2598,3.029,2599,3.029,2600,4.759,2601,3.029,2602,2.676,2603,3.029,2604,3.029,2605,2.676,2606,3.029,2607,2.676,2608,3.029,2609,2.676,2610,2.676,2611,2.676,2612,2.676,2613,3.029,2614,3.029,2615,2.455,2616,3.029,2617,3.029,2618,3.029,2619,2.827]],["t/510",[0,0.491,1633,4.175,2585,3.584,2587,4.065,2620,6.743,2621,6.743]],["t/512",[0,0.486,1432,5.699,1633,4.023,2622,7.288]],["t/514",[0,0.493,67,2.929,244,2.716,767,4.461,1270,5.658,1288,2.937,1633,1.588,1715,3.308,1729,2.716,1993,4.461,2006,4.581,2380,3.241,2623,3.473,2624,3.473,2625,3.473,2626,3.473,2627,4.672,2628,3.068,2629,3.068,2630,3.473,2631,3.473,2632,3.473,2633,3.473,2634,3.473,2635,3.473,2636,3.473,2637,3.068,2638,3.473,2639,3.473,2640,3.473,2641,3.068,2642,3.473,2643,3.473,2644,6.405,2645,3.473,2646,5.289,2647,3.473,2648,3.473,2649,2.814,2650,3.473,2651,3.068]],["t/516",[0,0.473,767,4.233,1312,4.683,1993,4.233,2006,5.651,2628,4.433,2629,4.433,2637,4.433,2641,4.433,2652,5.018,2653,5.018,2654,5.018,2655,5.018,2656,5.018,2657,5.018,2658,5.018,2659,5.018,2660,5.018,2661,5.018,2662,6.909,2663,5.018,2664,5.018,2665,5.018,2666,5.018,2667,5.018,2668,5.018]],["t/519",[0,0.499,34,3.589,47,3.836,1391,4.436,1633,3.698,2669,6.363,2670,5.367,2671,5.621]],["t/526",[0,0.483,1633,3.281,1894,5.13,2610,6.336,2671,6.336,2672,7.172]],["t/529",[630,6.2,2673,8.732,2674,8.732,2675,7.929]],["t/531",[0,0.461,4,1.879,20,0.592,26,1.479,33,2.486,69,3.967,71,4.613,111,0.973,191,1.994,410,1.116,566,1.072,595,1.323,630,2.506,632,1.002,960,5.095,989,2.597,1035,3.205,1673,2.991,1674,1.072,1705,1.539,1715,1.479,1756,1.235,1826,1.79,1831,2.206,1835,2.206,1919,3.674,2132,1.116,2133,1.169,2134,1.072,2135,2.597,2213,2.364,2333,1.235,2334,1.116,2487,3.897,2489,1.323,2563,1.323,2675,1.323,2676,2.604,2677,1.457,2678,1.457,2679,1.457,2680,1.457,2681,1.457,2682,1.457,2683,1.457,2684,1.457,2685,1.457,2686,2.604,2687,1.457,2688,2.604,2689,1.457,2690,1.457,2691,1.457,2692,1.457,2693,1.457,2694,1.457,2695,2.604,2696,1.457,2697,3.529,2698,2.604,2699,2.604,2700,1.457,2701,1.169,2702,1.457,2703,1.457,2704,1.457,2705,1.457,2706,1.457,2707,1.457,2708,1.457,2709,2.604,2710,2.604,2711,1.457,2712,1.457,2713,1.457,2714,1.457,2715,1.457,2716,2.604,2717,1.457,2718,1.457,2719,3.529,2720,2.604,2721,1.457,2722,2.604,2723,2.604,2724,2.604,2725,2.604,2726,1.457,2727,1.457,2728,3.529,2729,4.292,2730,4.932,2731,1.457,2732,2.604,2733,1.457,2734,1.457,2735,1.457,2736,1.457,2737,1.457,2738,1.235,2739,1.457,2740,1.457,2741,1.457,2742,1.457,2743,1.457,2744,1.457,2745,1.457,2746,1.457,2747,1.457,2748,4.292,2749,1.457,2750,1.457,2751,1.457,2752,1.457,2753,1.323,2754,1.457,2755,4.292,2756,1.457,2757,1.457,2758,1.457,2759,1.457,2760,1.457,2761,1.457,2762,1.457,2763,1.457,2764,1.457,2765,1.457,2766,1.457,2767,2.604,2768,2.604,2769,2.604,2770,2.604,2771,2.604,2772,1.457,2773,1.457,2774,1.457,2775,1.457,2776,1.457,2777,1.457,2778,1.457,2779,1.457,2780,1.457,2781,1.323,2782,1.457,2783,1.457,2784,1.457,2785,1.457]],["t/533",[20,3.676,2786,9.051]],["t/535",[0,0.472,337,3.812,1319,6.336,1320,7.172,1321,7.172,1322,5.812,1323,7.172]],["t/537",[1324,8.37]],["t/540",[337,4.214,1305,5.163,1325,7.929,1326,7.929]],["t/542",[1327,6.363,1328,6.363,1329,6.363,1330,6.363,1331,6.363,1332,6.363,1333,6.363,1334,6.363,1335,6.363,1336,6.363,1337,6.363,1338,6.363,1339,6.363,1340,6.363,1341,4.551,1342,4.677,1343,6.363,1344,6.363]],["t/544",[1345,6.589,1346,7.06,1347,7.06,1348,5.521,1349,4.805,1350,7.06,1351,7.06,1352,7.06,1353,7.06,1354,7.06,1355,7.06]],["t/546",[1356,7.659,1357,7.659,1358,7.659,1359,7.659,1360,7.659,1361,7.659]],["t/548",[0,0.388,56,4.091,57,3.553,73,4.091,1348,6.272,1349,5.779,1362,4.384,1363,4.384,1364,4.384,1365,3.223,1366,4.384,1367,4.384,1368,2.984,1369,4.384,1370,4.384,1371,4.091,1372,4.384,1373,2.984,1374,5.561,1375,4.427,1376,4.384,1377,4.384,1378,6.283,1379,4.384,1380,4.384,1381,4.384,1382,4.384,1383,4.384,1384,4.384,1385,4.384,1386,4.384,1387,3.223,1388,4.384,1389,4.384,1390,4.384]],["t/552",[0,0.503,337,4.441,1280,5.269,1391,6.513,1392,4.804,1393,3.893,1394,3.893]],["t/554",[1395,7.532,1396,7.532,1397,6.653,1398,7.532,1399,7.532,1400,7.532,1401,7.532]],["t/556",[0,0.442,4,2.031,20,3.24,173,5.018,989,4.357,1373,3.66,1375,3.241,1397,4.75,1402,5.377,1403,5.377,1404,5.377,1405,5.377,1406,5.377,1407,5.377,1408,5.377,1409,5.377,1410,5.377,1411,5.377,1412,5.377,1413,4.071,1414,5.377,1415,3.952,1416,5.377,1417,5.377,1418,5.377,1419,5.377]],["t/558",[2787,8.37]],["t/560",[4,0.853,199,1.903,242,1.765,249,1.314,268,1.122,316,3.75,482,1.659,569,1.573,732,1.412,1014,1.536,1079,1.614,1238,2.106,1256,1.829,1266,3.773,1274,1.536,1288,1.253,1432,2.932,1633,2.201,1692,1.709,1705,2.442,1718,3.892,1743,3.039,1755,1.614,1767,1.903,1813,1.903,1826,1.709,1880,2.552,1916,1.385,1922,4.727,1927,1.829,2052,1.469,2054,3.163,2062,2.106,2064,1.903,2325,2.106,2419,3.312,2437,3.312,2585,1.199,2586,1.829,2595,1.993,2602,1.993,2605,1.993,2607,1.993,2612,4.25,2615,1.829,2701,1.993,2738,2.106,2788,2.256,2789,1.993,2790,2.256,2791,2.106,2792,1.993,2793,4.382,2794,2.256,2795,2.256,2796,2.256,2797,2.256,2798,1.829,2799,2.256,2800,2.256,2801,2.256,2802,2.256,2803,2.256,2804,2.256,2805,2.256,2806,2.256,2807,1.765,2808,1.993,2809,2.256,2810,1.993,2811,2.256,2812,2.256,2813,1.993,2814,2.256,2815,2.256,2816,1.659,2817,2.256,2818,1.993,2819,2.256,2820,2.256,2821,2.256,2822,2.256,2823,1.993,2824,1.993,2825,2.256,2826,2.256,2827,1.993,2828,2.256,2829,1.993,2830,1.993,2831,2.256,2832,2.256,2833,2.256,2834,2.256,2835,1.993,2836,1.44,2837,1.993,2838,1.993,2839,2.256,2840,2.256,2841,2.256,2842,1.993,2843,2.106,2844,2.256,2845,2.256,2846,2.106]],["t/562",[0,0.503,26,2.123,48,2.366,316,1.709,1266,2.991,1288,1.885,1373,2.31,1633,1.553,1718,3.564,1894,5.062,2052,2.21,2585,2.762,2670,2.863,2798,2.751,2807,2.654,2816,2.495,2818,2.998,2829,2.998,2830,2.998,2836,4.515,2837,2.998,2838,2.998,2847,4.212,2848,3.394,2849,3.168,2850,2.165,2851,3.394,2852,3.394,2853,3.394,2854,2.863,2855,3.394,2856,5.197,2857,3.394]],["t/565",[0,0.497,1280,2.962,1305,3.42,1391,3.661,1633,3.26,1718,3.59,2425,3.86,2587,3.166,2816,7.033,2858,3.976,2859,5.252,2860,5.252]],["t/567",[0,0.5,20,0.935,1006,1.846,1010,3.106,1266,0.989,1305,1.36,1368,2.393,1413,1.582,1457,1.95,1633,0.956,1729,4.175,1755,1.494,1992,3.281,2129,1.95,2132,1.762,2409,1.846,2531,1.846,2585,1.11,2651,4.021,2789,3.106,2798,1.693,2836,2.243,2854,1.762,2861,5.956,2862,4.552,2863,1.95,2864,1.95,2865,2.089,2866,2.089,2867,2.089,2868,4.552,2869,2.089,2870,1.762,2871,2.089,2872,3.516,2873,2.089,2874,2.089,2875,2.089,2876,2.089,2877,2.089,2878,2.089,2879,2.089,2880,2.089,2881,3.516,2882,2.089,2883,2.089,2884,2.089,2885,2.089,2886,4.248,2887,2.089,2888,2.089,2889,2.089,2890,2.089,2891,2.089,2892,3.516,2893,2.089,2894,2.089,2895,2.089,2896,2.089,2897,2.089,2898,3.516,2899,3.516,2900,2.089,2901,2.089,2902,2.089,2903,2.089,2904,2.089,2905,2.089,2906,2.089,2907,2.089,2908,2.089,2909,2.089,2910,2.089,2911,2.089,2912,2.089,2913,2.089,2914,2.089,2915,2.089,2916,2.089]],["t/569",[0,0.421,1266,3.396,1288,4.837,1319,6.336,2917,6.336,2918,7.899,2919,7.899,2920,7.899]],["t/572",[0,0.478,47,3.203,2921,5.852,2922,5.852,2923,5.852,2924,5.852,2925,5.852,2926,5.852,2927,5.852,2928,5.852,2929,5.852,2930,7.912,2931,5.852,2932,5.852,2933,5.852,2934,5.852,2935,5.852,2936,5.852,2937,5.852,2938,5.852,2939,5.852,2940,5.852,2941,5.852]],["t/574",[0,0.449,1739,4.155,2006,6.237,2886,6.164,2942,5.181,2943,6.605,2944,4.704,2945,4.704,2946,6.605,2947,5.181,2948,5.181,2949,4.704,2950,4.704,2951,5.181,2952,5.181,2953,5.181,2954,5.181,2955,5.181,2956,7.275,2957,7.275,2958,5.181,2959,5.181,2960,5.181,2961,5.181,2962,5.181,2963,5.181,2964,5.181,2965,5.181]],["t/576",[2943,6.548,2944,6.548,2945,6.548,2946,8.233,2949,6.548,2950,8.233,2966,7.211,2967,7.211,2968,7.211,2969,7.211,2970,7.211,2971,7.211,2972,7.211,2973,7.211]],["t/578",[0,0.492,1677,6.336,2974,7.899,2975,7.899,2976,7.899]],["t/580",[0,0.425,1266,3.451,1288,4.048,1319,6.438,1427,5.357,1872,6.148,2917,6.438,2977,8.027]],["t/583",[0,0.451,316,3.556,1266,3.343,1597,6.014,1598,5.955,1599,5.721,1600,5.346,1601,6.589]],["t/586",[221,4.388,1597,6.192,1602,7.846,1603,7.408,1604,7.408,1605,7.408]],["t/588",[0,0.408,34,4.255,1602,5.051,1606,7.544,1607,5.718,1608,7.574,1609,7.88,1610,5.718,1611,5.718,1612,5.718,1613,7.041,1614,5.718,1615,5.718,1616,5.718,1617,5.718,1618,5.718]],["t/590",[0,0.474,1619,6.148,1620,6.148,1621,7.288,1622,7.288,1623,7.288]],["t/594",[0,0.5,1624,6.501,1625,3.263,1626,5.508,1627,6.328,1628,7.36,1629,7.36,1630,5.508,1631,5.508,1632,5.508]],["t/596",[0,0.482,4,2.761,14,1.691,168,3.371,1625,2.864,1627,4.259,1633,2.212,1634,4.835,1635,4.835,1636,3.092,1637,8.379,1638,4.835,1639,2.505,1640,4.835,1641,4.835,1642,6.734,1643,5.954,1644,4.835,1645,4.835,1646,4.835,1647,4.835,1648,4.835,1649,3.092,1650,2.505,1651,3.092,1652,3.918,1653,3.092,1654,3.092,1655,3.092,1656,3.092,1657,2.885,1658,3.092,1659,3.092,1660,3.918,1661,4.835,1662,3.092,1663,3.092]],["t/598",[0,0.489,1625,4.584,1627,5.535,1633,3.54,1639,6.973,1650,4.817,1664,3.955,1665,5.944,1666,5.944,1667,5.547]],["t/600",[0,0.5,4,0.912,20,1.08,110,2.39,1014,2.698,1341,1.726,1342,1.774,1368,1.643,1427,1.774,1429,2.835,1625,4.34,1660,5.619,1664,2.637,1668,2.413,1669,2.413,1670,2.413,1671,2.413,1672,2.413,1673,2.252,1674,3.212,1675,2.413,1676,2.413,1677,7.537,1678,5.337,1679,4.614,1680,1.887,1681,2.413,1682,3.964,1683,3.964,1684,2.413,1685,2.413,1686,2.413,1687,3.964,1688,2.413,1689,2.413,1690,2.413,1691,2.413,1692,1.827,1693,2.132,1694,2.413,1695,2.413]],["t/602",[0,0.497,20,1.355,107,2.016,111,2.227,268,1.506,1266,1.434,1305,1.973,1341,3.403,1342,3.498,1368,2.062,1600,3.603,1625,1.795,1652,2.455,1678,4.805,1679,3.403,1680,2.369,1692,2.294,1696,3.029,1697,3.029,1698,2.827,1699,5.877,1700,3.029,1701,3.029,1702,3.029,1703,5.877,1704,3.029,1705,1.973,1706,3.029,1707,3.029,1708,3.029,1709,3.029,1710,4.759,1711,2.112,1712,3.029,1713,3.029,1714,3.029,1715,1.895,1716,2.676,1717,3.029,1718,1.526,1719,3.029,1720,4.759,1721,4.204,1722,3.029,1723,3.029,1724,2.676,1725,3.029]],["t/604",[0,0.493,26,2.125,48,1.759,67,2.866,110,0.858,1266,0.674,1365,1.046,1415,3.021,1424,1.113,1429,1.018,1597,4.181,1619,1.201,1620,1.201,1664,1.679,1674,3.331,1679,2.43,1711,0.992,1718,0.717,1726,5.201,1727,5.973,1728,1.423,1729,1.113,1730,3.398,1731,1.423,1732,2.523,1733,1.423,1734,4.11,1735,1.423,1736,1.423,1737,1.423,1738,1.423,1739,1.257,1740,1.423,1741,1.423,1742,2.523,1743,2.753,1744,2.523,1745,4.11,1746,2.523,1747,1.423,1748,1.423,1749,1.423,1750,1.423,1751,3.001,1752,1.423,1753,1.423,1754,1.423,1755,3.72,1756,2.354,1757,2.523,1758,1.423,1759,1.423,1760,1.423,1761,1.328,1762,1.423,1763,1.328,1764,2.523,1765,1.423,1766,1.328,1767,1.201,1768,1.423,1769,1.423,1770,1.423,1771,1.423,1772,7.466,1773,2.523,1774,1.423,1775,1.423,1776,1.423,1777,2.523,1778,3.631,1779,1.423,1780,1.423,1781,1.423,1782,2.523,1783,2.523,1784,1.423,1785,1.423,1786,1.423,1787,2.523,1788,2.229,1789,2.523,1790,2.523,1791,2.523,1792,1.423,1793,1.423,1794,1.423,1795,5.201,1796,2.523,1797,2.523,1798,2.523,1799,1.423,1800,1.201,1801,1.423]],["t/607",[0,0.503,1079,4.785,1280,3.773,1427,4.918,1678,4.185,1679,2.669,1802,5.583,1803,7.427,1804,3.731,1805,3.147,1806,3.731,1807,5.583,1808,3.731,1809,3.731,1810,3.731,1811,5.583,1812,5.583,1813,4.71,1814,3.296,1815,3.731,1816,3.731,1817,3.731,1818,3.731]],["t/609",[0,0.506,1280,2.928,1608,4.379,1679,5.058,1814,4.586,1819,5.191,1820,5.191,1821,5.191,1822,8.635,1823,5.191,1824,5.191,1825,5.191]],["t/612",[0,0.488,337,3.806,960,3.068,1280,1.959,1305,2.261,1368,2.364,1625,2.057,1660,2.814,1664,3.519,1678,2.172,1721,3.068,1826,2.629,1827,3.473,1828,3.473,1829,3.473,1830,3.473,1831,3.241,1832,5.289,1833,5.658,1834,3.473,1835,3.241,1836,3.473,1837,3.473,1838,3.473,1839,3.473,1840,3.473,1841,3.473,1842,3.473,1843,3.473,1844,3.473,1845,3.473,1846,3.473,1847,3.473,1848,3.473,1849,3.473,1850,3.473,1851,3.473,1852,5.289,1853,5.289,1854,5.289,1855,3.473,1856,3.473,1857,3.473,1858,3.473,1859,3.473,1860,3.473]],["t/614",[0,0.503,4,1.588,268,2.09,1274,2.861,1288,1.441,1341,3.007,1342,3.09,1597,2.931,1624,6.673,1625,5.391,1627,3.007,1639,2.102,1664,4.772,1692,3.183,1715,2.63,1718,3.07,1724,2.291,1861,2.594,1862,6.096,1863,2.594,1864,4.296,1865,4.683,1866,2.594,1867,2.594,1868,2.594,1869,2.594,1870,2.102,1871,2.594,1872,2.188]],["t/616",[0,0.486,16,2.219,111,4.228,316,1.476,901,2.735,980,3.626,1186,2.155,1241,2.735,1256,2.375,1274,4.45,1341,2.096,1394,2.375,1597,3.232,1625,5.644,1627,3.316,1650,2.375,1664,5.04,1693,2.589,1711,2.043,1715,2.9,1716,2.589,1718,2.335,1788,2.589,1826,2.219,1864,3.757,1870,3.757,1873,2.931,1874,2.931,1875,2.931,1876,2.375,1877,2.931,1878,2.931,1879,2.931,1880,1.995,1881,2.931,1882,2.931,1883,2.931,1884,2.931,1885,2.472,1886,2.931,1887,2.096,1888,2.931]],["t/618",[0,0.303,316,3.16,1266,2.971,1599,5.085,1600,4.751,1766,5.855,1813,5.293,2075,6.274,2533,6.274,2843,5.855,2978,7.479,2979,6.274,2980,6.91,2981,6.91,2982,6.91,2983,6.274,2984,6.91,2985,6.91]],["t/620",[316,2.993,936,5.547,1184,5.25,1224,5.944,1274,5.267,1387,4.369,1600,4.5,1625,3.521,1718,3.897,1864,4.817,1918,5.25,2986,6.546,2987,6.546,2988,6.546,2989,5.944,2990,6.546,2991,6.546,2992,6.546,2993,6.546,2994,6.546,2995,6.546]],["t/623",[0,0.147,316,2.96,482,2.227,1266,1.434,1274,2.062,1387,2.227,1393,3.856,1394,4.762,1421,2.555,1424,3.721,1428,2.827,1429,2.167,1455,3.029,1598,2.555,1599,4.762,1698,2.827,1705,1.973,1718,1.526,1761,2.827,1767,2.555,1870,2.455,2331,2.676,2413,3.029,2978,5.484,2983,3.029,2996,3.336,2997,3.336,2998,5.241,2999,3.336,3000,3.336,3001,6.472,3002,3.336,3003,3.336,3004,3.336,3005,3.336,3006,5.241,3007,3.336,3008,3.336,3009,3.336,3010,3.336,3011,3.336,3012,3.336,3013,3.336,3014,2.827,3015,3.336,3016,3.336,3017,3.336,3018,3.336,3019,3.336,3020,3.336,3021,2.827,3022,3.336,3023,3.336,3024,3.336,3025,3.336,3026,3.336,3027,3.336,3028,3.336,3029,3.336,3030,3.336,3031,5.241,3032,5.241,3033,5.241,3034,5.241,3035,3.336,3036,3.336,3037,3.336,3038,5.241,3039,3.336,3040,3.336,3041,3.336,3042,3.336,3043,3.336,3044,3.336,3045,3.336,3046,3.336,3047,3.336]],["t/625",[0,0.353,1887,6.29,3048,8.027,3049,8.027,3050,8.027,3051,8.027,3052,8.027,3053,8.027]],["t/628",[1427,6.535,1597,3.888,1652,6.013,1664,4.937,1715,3.488,1887,3.988,2989,5.576,3054,6.141,3055,6.141,3056,6.141,3057,6.141,3058,6.141,3059,6.141,3060,6.141,3061,6.141,3062,6.141,3063,6.141,3064,6.141,3065,6.141,3066,6.141,3067,6.141,3068,6.141,3069,6.141]],["t/631",[0,0.358,337,3.938,1030,7.408,2917,6.544,3070,8.159,3071,8.159,3072,8.159,3073,8.159]],["t/633",[11,3.924,337,4.63,1711,5,1887,5.13,2437,6.336,2531,6.336,3074,7.172,3075,7.899,3076,7.899]],["t/635",[0,0.371,482,5.645,793,5.874,1034,3.729,1102,3.37,1608,3.37,1619,3.37,1620,3.37,1705,2.602,2266,3.995,2268,5.874,2288,3.529,2415,3.529,2424,6.966,2596,3.729,2791,3.729,3074,3.995,3077,6.47,3078,4.4,3079,6.47,3080,4.4,3081,6.47,3082,6.47,3083,4.4,3084,4.4,3085,4.4,3086,7.672,3087,4.4,3088,4.4,3089,4.4,3090,4.4,3091,4.4,3092,4.4,3093,4.4,3094,4.4,3095,4.4,3096,6.47,3097,6.47,3098,4.4,3099,4.4,3100,4.4,3101,4.4]],["t/637",[467,7.929,3102,8.732,3103,8.732,3104,8.732]],["t/639",[1266,3.891,2585,4.368]],["t/641",[0,0.482,77,4.384,1729,3.881,2000,5.784,2006,5.619,2649,4.022,3105,5.466,3106,5.466,3107,6.399,3108,5.466,3109,5.466,3110,5.466,3111,5.466,3112,4.631,3113,5.466,3114,5.466,3115,5.466,3116,5.466,3117,5.466,3118,5.466,3119,5.466,3120,5.466,3121,5.466,3122,5.466]],["t/644",[0,0.377,3123,8.541,3124,10.079]],["t/646",[0,0.384,2235,7.399,3123,7.399,3125,7.929]],["t/648",[0,0.49,1278,6.256,2587,4.041,2611,4.244,3123,6.256,3125,6.703,3126,5.291,3127,3.757,3128,5.291,3129,6.46,3130,6.534,3131,7.383,3132,5.291,3133,7.383,3134,5.291]],["t/650",[0,0.493,268,4.362,3127,4.839,3129,6.448,3130,6.86,3135,6.815]],["t/652",[0,0.487,316,2.645,1421,6.012,1424,6.327,1425,5.252,1429,5.098,2587,3.166,2858,5.396,3129,6.378,3130,6.785,3136,5.784,3137,5.784]],["t/654",[0,0.495,337,4.87,2587,3.631,3129,4.427,3130,4.71,3138,8.597,3139,6.633,3140,6.633,3141,6.633]],["t/656",[0,0.5,48,5.688,337,4.337,3142,8.159,3143,7.108]],["t/658",[0,0.498,48,4.565,337,3.48,2849,8.818,3142,6.548]],["t/660",[0,0.39,3144,8.889,3145,8.889]],["t/662",[1609,7.532,1613,7.532,3146,7.129]],["t/665",[0,0.37,418,6.766,980,5.99,3146,8.003,3147,8.436]],["t/667",[0,0.482,20,2.464,1715,3.446,1919,3.749,2753,5.508,3146,7.322,3148,5.508,3149,6.066,3150,6.066,3151,8.289,3152,6.066,3153,6.066,3154,5.508,3155,7.36,3156,6.066,3157,6.066]],["t/669",[0,0.424,20,3.553,1919,4.212,3146,7.749,3148,6.188,3151,7.943,3154,6.188,3155,6.188,3158,6.815,3159,6.815,3160,6.815,3161,6.815,3162,6.815,3163,6.815]],["t/672",[9,2.373,184,1.651,199,1.839,242,1.705,316,3.322,337,2.495,471,2.035,482,1.603,725,2.035,732,2.936,1079,1.559,1116,1.839,1147,1.705,1153,1.926,1266,2.889,1288,2.024,1289,1.926,1365,1.603,1393,1.767,1415,1.603,1598,3.074,1599,2.953,1633,0.997,1680,1.705,1718,2.762,1727,3.074,1743,1.767,1751,1.926,1755,1.559,1778,3.219,1800,1.839,1876,1.767,1887,3.357,1894,3.357,1916,3.367,1919,1.484,1921,3.4,1922,1.839,1923,2.035,2041,1.926,2052,3.057,2054,1.839,2064,3.074,2070,2.035,2105,1.27,2244,1.839,2246,2.035,2296,1.926,2316,2.035,2331,1.926,2432,1.839,2585,2.495,2593,1.926,2609,1.926,2615,2.953,2792,1.926,2793,3.671,2807,1.705,2808,1.926,2810,1.926,2823,1.926,2824,1.926,2827,1.926,2835,1.926,2836,2.325,2842,1.926,2850,4.466,2870,1.839,3014,2.035,3164,2.18,3165,2.18,3166,1.926,3167,2.035,3168,2.18,3169,2.18,3170,2.18,3171,2.18,3172,2.18,3173,2.18,3174,1.926,3175,2.18,3176,2.18,3177,2.18,3178,2.18,3179,2.18,3180,2.18,3181,2.18,3182,2.18,3183,2.18,3184,2.18,3185,2.18,3186,2.18,3187,3.554,3188,2.18,3189,2.18,3190,2.18,3191,2.18,3192,2.18,3193,2.18,3194,2.18,3195,2.18,3196,2.18,3197,2.18,3198,2.18,3199,2.18,3200,2.18,3201,2.18]],["t/674",[0,0.501,732,3.363,1633,2.459,1755,3.846,1894,5.857,1916,5.027,2585,2.858,2793,4.205,2836,3.43,2847,4.357,3187,6.2]],["t/676",[0,0.487,11,2.035,34,1.26,110,2.242,297,1.885,732,3.484,1079,1.598,1229,2.908,1266,1.058,1280,1.26,1322,1.811,1349,3.251,1368,2.531,1373,2.531,1375,4.025,1391,1.558,1633,3.728,1705,1.455,1711,3.33,1718,3.877,1916,1.371,2052,3.111,2160,2.085,2288,1.974,2368,3.736,2585,2.96,2586,1.811,2627,1.974,2649,1.811,2813,1.974,2816,2.734,2847,1.811,2850,3.553,2858,3.617,3107,2.085,3112,2.085,3127,1.747,3130,3.736,3202,2.234,3203,2.234,3204,2.234,3205,2.234,3206,2.234,3207,2.234,3208,2.234,3209,2.234,3210,2.234,3211,2.234,3212,2.234,3213,2.234,3214,2.234,3215,2.234,3216,2.234,3217,2.234,3218,2.234,3219,2.234,3220,2.085,3221,2.234,3222,2.234,3223,2.234,3224,2.234]],["t/679",[0,0.487,110,3.638,337,1.355,732,3.775,1374,1.931,1524,6.197,1633,3.255,1678,1.595,1916,4.368,2000,5.091,2006,1.824,2052,3.93,2105,4.368,2425,4.437,2585,1.355,2587,2.499,2836,1.627,2850,1.627,3129,3.048,3166,2.252,3187,1.931,3225,2.55,3226,2.55,3227,2.55,3228,2.55,3229,2.55,3230,2.55,3231,6.035,3232,2.55,3233,4.146,3234,4.146,3235,2.55,3236,2.55,3237,2.55,3238,2.55,3239,2.55,3240,2.55,3241,2.55,3242,4.146,3243,2.55,3244,2.55,3245,2.55,3246,2.55,3247,2.55,3248,2.55,3249,2.55,3250,2.55,3251,2.55,3252,2.55]],["t/681",[0,0.491,110,4.571,268,1.935,337,3.062,1148,3.632,1280,2.195,1374,2.947,1375,2.346,1600,2.947,1633,3.702,1711,5.286,1916,2.389,2368,3.044,2425,2.861,2585,2.069,2587,3.473,2850,4.376,2858,2.947,3127,3.044,3129,5.95,3174,3.438,3253,3.892,3254,3.892,3255,3.892,3256,3.892,3257,3.892]],["t/683",[0,0.504,110,2.778,732,2.882,1375,2.778,1633,2.978,1718,3.279,1916,3.996,2368,3.603,2585,4.012,2587,2.778,2836,2.94,2850,4.153,3187,3.489,3258,4.608,3259,4.608,3260,4.608,3261,4.608,3262,4.608]],["t/685",[0,0.303,316,4.036,712,5.543,1266,3.795,1288,4.451,1887,4.488,2392,5.855,2978,7.479,2979,6.274,3220,5.855,3263,8.826,3264,6.91,3265,6.91,3266,6.91]],["t/687",[2787,8.37]],["t/689",[4,0.853,199,1.903,242,1.765,249,1.314,268,1.122,316,3.75,482,1.659,569,1.573,732,1.412,1014,1.536,1079,1.614,1238,2.106,1256,1.829,1266,3.773,1274,1.536,1288,1.253,1432,2.932,1633,2.201,1692,1.709,1705,2.442,1718,3.892,1743,3.039,1755,1.614,1767,1.903,1813,1.903,1826,1.709,1880,2.552,1916,1.385,1922,4.727,1927,1.829,2052,1.469,2054,3.163,2062,2.106,2064,1.903,2325,2.106,2419,3.312,2437,3.312,2585,1.199,2586,1.829,2595,1.993,2602,1.993,2605,1.993,2607,1.993,2612,4.25,2615,1.829,2701,1.993,2738,2.106,2788,2.256,2789,1.993,2790,2.256,2791,2.106,2792,1.993,2793,4.382,2794,2.256,2795,2.256,2796,2.256,2797,2.256,2798,1.829,2799,2.256,2800,2.256,2801,2.256,2802,2.256,2803,2.256,2804,2.256,2805,2.256,2806,2.256,2807,1.765,2808,1.993,2809,2.256,2810,1.993,2811,2.256,2812,2.256,2813,1.993,2814,2.256,2815,2.256,2816,1.659,2817,2.256,2818,1.993,2819,2.256,2820,2.256,2821,2.256,2822,2.256,2823,1.993,2824,1.993,2825,2.256,2826,2.256,2827,1.993,2828,2.256,2829,1.993,2830,1.993,2831,2.256,2832,2.256,2833,2.256,2834,2.256,2835,1.993,2836,1.44,2837,1.993,2838,1.993,2839,2.256,2840,2.256,2841,2.256,2842,1.993,2843,2.106,2844,2.256,2845,2.256,2846,2.106]],["t/691",[0,0.502,26,2.139,48,2.384,316,1.722,1266,3.005,1288,1.899,1373,2.328,1633,1.564,1718,3.578,1894,5.082,2052,2.227,2585,2.779,2670,2.885,2798,2.771,2807,2.674,2816,2.514,2818,3.021,2829,3.021,2830,3.021,2836,4.533,2837,3.021,2838,3.021,2847,4.236,2848,3.42,2849,3.192,2850,2.182,2851,3.42,2852,3.42,2853,3.42,2854,2.885,2855,3.42,2856,5.227,2857,3.42]],["t/694",[0,0.497,1280,2.962,1305,3.42,1391,3.661,1633,3.26,1718,3.59,2425,3.86,2587,3.166,2816,7.033,2858,3.976,2859,5.252,2860,5.252]],["t/696",[0,0.501,20,0.93,1006,1.837,1010,3.094,1266,0.985,1305,1.354,1368,2.384,1413,1.575,1457,1.941,1633,0.951,1729,4.163,1755,1.487,1992,3.268,2129,1.941,2132,1.754,2409,1.837,2531,1.837,2585,1.105,2651,4.008,2789,3.094,2798,1.685,2836,2.234,2854,1.754,2861,5.941,2862,4.537,2863,1.941,2864,1.941,2865,2.08,2866,2.08,2867,2.08,2868,4.537,2869,2.08,2870,1.754,2871,2.08,2872,3.502,2873,2.08,2874,2.08,2875,2.08,2876,2.08,2877,2.08,2878,2.08,2879,2.08,2880,2.08,2881,3.502,2882,2.08,2883,2.08,2884,2.08,2885,2.08,2886,4.234,2887,2.08,2888,2.08,2889,2.08,2890,2.08,2891,2.08,2892,3.502,2893,2.08,2894,2.08,2895,2.08,2896,2.08,2897,2.08,2898,3.502,2899,3.502,2900,2.08,2901,2.08,2902,2.08,2903,2.08,2904,2.08,2905,2.08,2906,2.08,2907,2.08,2908,2.08,2909,2.08,2910,2.08,2911,2.08,2912,2.08,2913,2.08,2914,2.08,2915,2.08,2916,2.08]],["t/698",[107,5.011,316,3.793,1718,3.793,2584,7.532,2585,4.003,2586,6.104,2587,4.54]],["t/700",[9,1.973,11,3.215,107,3.166,132,2.167,316,3.354,322,2.827,502,5.882,1014,3.239,1152,2.676,1229,3.721,1247,4.204,1266,3.804,1274,2.062,1288,2.643,1322,2.455,1365,3.498,1373,2.062,1387,2.227,1633,3.046,1715,2.977,1718,2.397,2099,2.827,2134,2.455,2244,2.555,2418,2.827,2432,2.555,2514,4.441,2585,4.083,2587,2.869,2588,3.029,2589,3.029,2590,3.029,2591,3.029,2592,3.029,2593,2.676,2594,4.759,2595,2.676,2596,2.827,2597,4.759,2598,3.029,2599,3.029,2600,4.759,2601,3.029,2602,2.676,2603,3.029,2604,3.029,2605,2.676,2606,3.029,2607,2.676,2608,3.029,2609,2.676,2610,2.676,2611,2.676,2612,2.676,2613,3.029,2614,3.029,2615,2.455,2616,3.029,2617,3.029,2618,3.029,2619,2.827]],["t/702",[0,0.491,1633,4.175,2585,3.584,2587,4.065,2620,6.743,2621,6.743]],["t/704",[0,0.486,1432,5.699,1633,4.023,2622,7.288]],["t/706",[0,0.493,67,2.929,244,2.716,767,4.461,1270,5.658,1288,2.937,1633,1.588,1715,3.308,1729,2.716,1993,4.461,2006,4.581,2380,3.241,2623,3.473,2624,3.473,2625,3.473,2626,3.473,2627,4.672,2628,3.068,2629,3.068,2630,3.473,2631,3.473,2632,3.473,2633,3.473,2634,3.473,2635,3.473,2636,3.473,2637,3.068,2638,3.473,2639,3.473,2640,3.473,2641,3.068,2642,3.473,2643,3.473,2644,6.405,2645,3.473,2646,5.289,2647,3.473,2648,3.473,2649,2.814,2650,3.473,2651,3.068]],["t/708",[0,0.473,767,4.233,1312,4.683,1993,4.233,2006,5.651,2628,4.433,2629,4.433,2637,4.433,2641,4.433,2652,5.018,2653,5.018,2654,5.018,2655,5.018,2656,5.018,2657,5.018,2658,5.018,2659,5.018,2660,5.018,2661,5.018,2662,6.909,2663,5.018,2664,5.018,2665,5.018,2666,5.018,2667,5.018,2668,5.018]],["t/711",[0,0.499,34,3.589,47,3.836,1391,4.436,1633,3.698,2669,6.363,2670,5.367,2671,5.621]],["t/718",[0,0.483,1633,3.281,1894,5.13,2610,6.336,2671,6.336,2672,7.172]],["t/721",[0,0.43,316,3.731,1266,3.508,1718,3.731,2846,6.913,3267,8.159,3268,8.159]],["t/723",[0,0.498,4,0.713,107,1.256,249,1.1,268,0.939,316,2.128,337,1.715,569,1.316,732,1.181,987,2.722,1266,0.894,1280,1.065,1288,1.049,1289,1.668,1373,4.449,1421,1.593,1424,3.909,1429,1.35,1633,3.762,1680,1.476,1718,2.128,1887,1.35,1894,2.308,1905,1.668,2052,2.101,2235,3.011,2425,3.106,2585,1.004,2587,1.138,2611,1.668,2649,1.53,2670,5.161,2781,1.888,2793,3.909,2816,2.372,2850,2.058,2854,1.593,2858,2.443,3129,5.648,3130,6.544,3167,1.762,3269,2.079,3270,2.079,3271,2.079,3272,2.079,3273,2.079,3274,2.079,3275,3.554,3276,2.079,3277,2.079,3278,2.079,3279,2.079,3280,2.079,3281,2.079,3282,2.079]],["t/725",[0,0.463,85,5.015,337,4.222,1266,2.93,1288,3.437,1880,4.212,1920,5.775,2807,4.839,2863,5.775,3283,6.815,3284,6.815,3285,6.815,3286,8.748,3287,6.815]],["t/727",[0,0.443,316,3.924,3288,8.582,3289,7.792]],["t/729",[0,0.496,1229,5.521,2917,6.237,3290,7.776,3291,7.06]],["t/731",[0,0.452,74,6.808]],["t/733",[0,0.457]],["t/735",[0,0.452,74,6.808]],["t/737",[0,0.49,1229,5.521,1763,6.589,2421,7.06,3291,7.06,3292,7.776]],["t/740",[1919,5.593,2135,6.66]],["t/742",[0,0.457]],["t/744",[0,0.486,4,2.717,20,2.547,26,1.448,69,3.707,70,3.383,158,2.044,174,4.613,249,4.803,268,3.136,569,3.415,630,2.995,632,3.709,980,1.81,987,5.32,989,3.103,1186,1.701,1919,2.606,2135,1.876,2257,2.314,2333,2.16,2334,1.952,2701,2.044,3293,2.549,3294,2.549,3295,2.549,3296,2.549,3297,2.549,3298,4.217,3299,2.549,3300,4.217,3301,4.217,3302,2.549,3303,2.549,3304,2.549,3305,4.217,3306,5.395,3307,4.217,3308,2.549,3309,2.549,3310,4.217,3311,2.549,3312,2.549,3313,2.549,3314,2.549,3315,2.549,3316,2.549,3317,2.549,3318,2.549,3319,2.549,3320,2.549,3321,2.549,3322,2.549,3323,2.549,3324,4.217,3325,2.549]],["t/746",[980,7.381]],["t/748",[0,0.489,4,2.592,34,3.869,47,4.135,69,4.467,71,5.194,249,3.996,268,3.411,1677,6.06,2575,7.583,3326,4.287,3327,6.346,3328,6.346,3329,6.346,3330,4.287,3331,6.346,3332,6.346,3333,4.287,3334,6.346,3335,4.287]],["t/750",[0,0.317,34,3.693,236,4.565,1674,5.306,1678,4.096,3336,7.211,3337,7.211,3338,7.211,3339,7.211,3340,7.211,3341,7.211,3342,7.211,3343,7.211,3344,7.211,3345,7.211,3346,7.211]],["t/752",[3347,9.219]],["t/754",[9,2.373,184,1.651,199,1.839,242,1.705,316,3.322,337,2.495,471,2.035,482,1.603,725,2.035,732,2.936,1079,1.559,1116,1.839,1147,1.705,1153,1.926,1266,2.889,1288,2.024,1289,1.926,1365,1.603,1393,1.767,1415,1.603,1598,3.074,1599,2.953,1633,0.997,1680,1.705,1718,2.762,1727,3.074,1743,1.767,1751,1.926,1755,1.559,1778,3.219,1800,1.839,1876,1.767,1887,3.357,1894,3.357,1916,3.367,1919,1.484,1921,3.4,1922,1.839,1923,2.035,2041,1.926,2052,3.057,2054,1.839,2064,3.074,2070,2.035,2105,1.27,2244,1.839,2246,2.035,2296,1.926,2316,2.035,2331,1.926,2432,1.839,2585,2.495,2593,1.926,2609,1.926,2615,2.953,2792,1.926,2793,3.671,2807,1.705,2808,1.926,2810,1.926,2823,1.926,2824,1.926,2827,1.926,2835,1.926,2836,2.325,2842,1.926,2850,4.466,2870,1.839,3014,2.035,3164,2.18,3165,2.18,3166,1.926,3167,2.035,3168,2.18,3169,2.18,3170,2.18,3171,2.18,3172,2.18,3173,2.18,3174,1.926,3175,2.18,3176,2.18,3177,2.18,3178,2.18,3179,2.18,3180,2.18,3181,2.18,3182,2.18,3183,2.18,3184,2.18,3185,2.18,3186,2.18,3187,3.554,3188,2.18,3189,2.18,3190,2.18,3191,2.18,3192,2.18,3193,2.18,3194,2.18,3195,2.18,3196,2.18,3197,2.18,3198,2.18,3199,2.18,3200,2.18,3201,2.18]],["t/756",[0,0.501,732,3.363,1633,2.459,1755,3.846,1894,5.857,1916,5.027,2585,2.858,2793,4.205,2836,3.43,2847,4.357,3187,6.2]],["t/758",[0,0.487,11,2.035,34,1.26,110,2.242,297,1.885,732,3.484,1079,1.598,1229,2.908,1266,1.058,1280,1.26,1322,1.811,1349,3.251,1368,2.531,1373,2.531,1375,4.025,1391,1.558,1633,3.728,1705,1.455,1711,3.33,1718,3.877,1916,1.371,2052,3.111,2160,2.085,2288,1.974,2368,3.736,2585,2.96,2586,1.811,2627,1.974,2649,1.811,2813,1.974,2816,2.734,2847,1.811,2850,3.553,2858,3.617,3107,2.085,3112,2.085,3127,1.747,3130,3.736,3202,2.234,3203,2.234,3204,2.234,3205,2.234,3206,2.234,3207,2.234,3208,2.234,3209,2.234,3210,2.234,3211,2.234,3212,2.234,3213,2.234,3214,2.234,3215,2.234,3216,2.234,3217,2.234,3218,2.234,3219,2.234,3220,2.085,3221,2.234,3222,2.234,3223,2.234,3224,2.234]],["t/761",[0,0.487,110,3.638,337,1.355,732,3.775,1374,1.931,1524,6.197,1633,3.255,1678,1.595,1916,4.368,2000,5.091,2006,1.824,2052,3.93,2105,4.368,2425,4.437,2585,1.355,2587,2.499,2836,1.627,2850,1.627,3129,3.048,3166,2.252,3187,1.931,3225,2.55,3226,2.55,3227,2.55,3228,2.55,3229,2.55,3230,2.55,3231,6.035,3232,2.55,3233,4.146,3234,4.146,3235,2.55,3236,2.55,3237,2.55,3238,2.55,3239,2.55,3240,2.55,3241,2.55,3242,4.146,3243,2.55,3244,2.55,3245,2.55,3246,2.55,3247,2.55,3248,2.55,3249,2.55,3250,2.55,3251,2.55,3252,2.55]],["t/763",[0,0.491,110,4.571,268,1.935,337,3.062,1148,3.632,1280,2.195,1374,2.947,1375,2.346,1600,2.947,1633,3.702,1711,5.286,1916,2.389,2368,3.044,2425,2.861,2585,2.069,2587,3.473,2850,4.376,2858,2.947,3127,3.044,3129,5.95,3174,3.438,3253,3.892,3254,3.892,3255,3.892,3256,3.892,3257,3.892]],["t/765",[0,0.485,316,2.585,712,4.533,732,3.21,1266,2.43,1280,2.894,1288,2.85,1432,4.013,1625,3.04,1633,2.347,1826,3.886,1880,3.493,1916,3.15,2052,3.342,2836,4.476,2850,4.476,3127,4.013,3289,7.016,3348,5.652,3349,5.652,3350,5.652,3351,5.652]],["t/767",[0,0.504,110,2.778,732,2.882,1375,2.778,1633,2.978,1718,3.279,1916,3.996,2368,3.603,2585,4.012,2587,2.778,2836,2.94,2850,4.153,3187,3.489,3258,4.608,3259,4.608,3260,4.608,3261,4.608,3262,4.608]],["t/770",[1864,5.812,2392,6.693,3352,7.899,3353,7.899,3354,7.899,3355,7.899,3356,7.899,3357,7.899,3358,7.899,3359,7.172]],["t/772",[0,0.376,85,3.935,307,4.856,1601,4.532,1880,3.305,2619,6.303,2864,4.532,3359,4.856,3360,5.348,3361,5.348,3362,8.552,3363,5.348,3364,5.348,3365,5.348,3366,5.348,3367,5.348,3368,5.348,3369,5.348,3370,5.348,3371,5.348,3372,7.438,3373,5.348,3374,7.438,3375,7.438,3376,8.552,3377,5.348,3378,5.348,3379,5.348,3380,5.348,3381,5.348]],["t/774",[0,0.405]],["t/776",[0,0.476,48,5.131,1141,7.36,2134,5.964,3382,6.066,3383,5.508,3384,9.129,3385,6.066,3386,6.066,3387,6.066,3388,5.508,3389,9.129,3390,6.066,3391,6.066,3392,6.066]],["t/778",[0,0.37,1256,6.207,3393,8.436,3394,8.436,3395,8.436,3396,8.436]],["t/780",[0,0.447,3383,7.929,3388,7.929]],["t/782",[0,0.39,148,7.57]],["t/784",[0,0.405]],["t/786",[0,0.509,14,3.684,16,3.661,17,1.832,20,3.622,25,2.273,26,1.934,33,1.972,3397,3.092,3398,6.734,3399,5.954,3400,5.954,3401,6.734,3402,7.748,3403,3.092,3404,3.092,3405,4.835,3406,3.092,3407,3.092]],["t/788",[0,0.508,4,0.793,9,1.367,10,1.854,11,1.148,12,1.429,13,1.429,14,3.763,15,1.429,16,3.458,17,3.538,18,1.854,20,3.57,25,3.358,26,1.313,31,3.572,32,1.701,33,2.252,45,1.543,221,1.243,268,1.755,1279,1.959,3397,2.099,3398,5.355,3399,4.567,3400,4.567,3401,5.972,3402,6.47,3403,2.099,3404,2.099,3405,3.53,3406,2.099,3407,2.099,3408,2.312,3409,3.887,3410,2.312,3411,2.312,3412,2.312,3413,2.312,3414,2.312,3415,2.312]],["t/790",[0,0.44,210,3.873,233,3.698,249,2.553,731,3.873,2430,4.091,2488,4.384,2850,5.117,2870,3.698,3416,4.828,3417,6.92,3418,3.873,3419,4.828,3420,4.828,3421,4.828,3422,4.828,3423,4.828,3424,4.828,3425,4.828,3426,8.834,3427,8.834,3428,8.834,3429,6.92,3430,4.828,3431,6.92,3432,4.828,3433,4.828,3434,4.828,3435,4.828]],["t/793",[0,0.509,47,4.628,168,4.639,2334,4.01,3436,4.753,3437,4.753,3438,4.753,3439,4.753,3440,4.753,3441,4.753,3442,4.753,3443,4.753,3444,4.753,3445,4.753,3446,4.753]],["t/796",[3447,9.219]],["t/798",[0,0.441,17,3.995,236,4.701,1209,6.743,3448,7.427,3449,10.052,3450,7.427,3451,7.427,3452,7.427,3453,7.427]],["t/801",[0,0.507,4,3.409,221,4.507,268,2.879,3454,6.378,3455,6.378]],["t/803",[0,0.502,3456,7.899,3457,7.899]],["t/806",[0,0.514,221,4.764,3021,4.845,3458,5.191,3459,5.191,3460,5.191,3461,5.191]],["t/808",[0,0.509,47,4.628,168,4.639,2334,4.01,3436,4.753,3437,4.753,3438,4.753,3439,4.753,3440,4.753,3441,4.753,3442,4.753,3443,4.753,3444,4.753,3445,4.753,3446,4.753]],["t/810",[0,0.457]],["t/812",[0,0.452,74,6.808]],["t/816",[3462,8.889,3463,8.889,3464,8.889]],["t/818",[0,0.463,85,6.437,268,3.077,1280,3.49,1920,5.775,3465,8.748,3466,6.815,3467,6.815,3468,6.815,3469,6.815,3470,6.815,3471,6.815,3472,6.815,3473,6.815]],["t/820",[0,0.469,4,2.438,174,5.23,1595,6.023,1715,4.037,3474,7.108,3475,7.108,3476,8.986,3477,7.108,3478,7.108,3479,7.108,3480,7.108]],["t/822",[0,0.43,1342,5.445,2105,4.315,2118,7.408,3481,8.159,3482,8.159,3483,8.159]],["t/825",[3484,9.219]],["t/827",[0,0.43,4,1.689,71,3.385,174,5.164,236,3.117,268,2.223,1596,4.471,1678,2.797,2105,2.604,3485,4.924,3486,4.924,3487,8.177,3488,7.018,3489,4.924,3490,4.924,3491,4.924,3492,4.924,3493,4.924,3494,8.177,3495,4.924,3496,4.924,3497,4.924,3498,4.924,3499,4.924,3500,4.924,3501,4.924,3502,4.924,3503,4.924,3504,4.924,3505,4.924,3506,7.018,3507,4.924,3508,4.924,3509,4.924,3510,4.924,3511,4.924]],["t/829",[0,0.326,4,2.548,249,3.928,268,3.353,1533,6.293,2105,3.928,3512,7.427,3513,7.427,3514,7.427,3515,7.427,3516,7.427,3517,7.427,3518,7.427,3519,7.427]],["t/831",[0,0.486,4,2.586,249,3.987,268,3.404,1595,6.389,1865,6.047,3520,7.54,3521,7.54]],["t/833",[0,0.39,3522,8.889,3523,8.889]],["t/835",[4,3.168,34,5.148,236,6.363,3524,7.826,3525,7.427,3526,7.427,3527,7.427,3528,7.427]],["t/837",[4,2.846,34,5.059,236,5.251,3524,7.029,3529,8.295,3530,8.295]],["t/839",[4,2.754,34,4.111,236,6.132,2105,4.245,3524,6.802,3531,8.027,3532,8.027,3533,8.027]],["t/841",[0,0.358,2105,5.541,3534,8.159,3535,8.159,3536,8.159,3537,8.159]],["t/843",[1715,5.784,3538,8.732,3539,8.732]],["t/845",[0,0.336,4,2.626,34,4.819,236,4.846,2409,6.14,3540,7.656,3541,7.656,3542,7.656,3543,7.656,3544,7.656,3545,7.656]],["t/847",[0,0.473,3546,8.732]],["t/850",[3418,7.259,3547,7.669]],["t/852",[0,0.43,4,2.799,268,3.683,3418,7.846,3547,8.289]],["t/854",[0,0.43,4,2.799,268,3.683,3418,7.846,3547,8.289]],["t/856",[0,0.499]],["t/858",[0,0.447,3458,7.929,3459,7.929]],["t/860",[0,0.514,221,4.88,3021,5.078,3460,5.442,3461,5.442]],["t/863",[0,0.477]],["t/865",[0,0.469,111,5.19,3548,9.501,3549,7.776,3550,7.776,3551,7.776,3552,7.776]],["t/867",[0,0.413,4,2.626,3553,7.656,3554,7.656,3555,7.656,3556,7.656,3557,7.656,3558,7.656,3559,7.656,3560,7.656,3561,7.656]]],"invertedIndex":[["",{"_index":0,"t":{"3":{"position":[[0,9],[21,6],[41,4]]},"5":{"position":[[0,39],[40,24]]},"7":{"position":[[0,2]]},"9":{"position":[[57,1],[73,2],[88,1],[98,1],[132,1],[142,1],[158,1],[165,1],[182,1],[188,1],[194,1],[199,1],[213,1],[223,1],[228,2],[234,1],[241,1],[251,1],[269,1],[271,1],[328,2],[334,1],[341,2],[349,2],[368,1],[375,1],[382,2],[388,2],[397,1],[399,1]]},"11":{"position":[[19,19],[71,8],[83,1],[98,1]]},"13":{"position":[[0,2],[3,93],[97,5],[263,5]]},"15":{"position":[[57,1],[131,1],[139,2],[144,2],[149,2],[155,1],[164,1],[179,2],[182,6],[198,1],[204,1],[206,2],[209,6],[216,1],[218,2],[221,5],[238,1],[245,1],[267,1],[279,2],[297,1],[352,1],[364,2],[369,2],[376,2],[382,1],[391,1],[404,1],[415,2],[428,1],[457,1],[459,1],[471,1]]},"17":{"position":[[0,47]]},"19":{"position":[[0,2]]},"21":{"position":[[57,1],[70,1],[80,2],[94,1],[102,1],[106,1],[113,1],[127,1],[132,1],[136,1],[140,1],[145,1],[149,1],[157,2],[164,1],[172,2],[178,1],[185,2],[190,2],[199,1],[201,1],[213,1]]},"23":{"position":[[0,20],[94,1],[99,1],[103,1],[107,1],[112,1],[116,1],[122,2],[125,5],[133,2],[140,1],[165,1],[181,1],[188,1],[205,1],[211,1],[217,1],[222,1],[230,1]]},"25":{"position":[[0,2],[3,12]]},"27":{"position":[[0,15],[21,2]]},"29":{"position":[[0,2]]},"31":{"position":[[5,1],[9,4],[23,7],[40,8],[54,1],[62,1],[66,6],[77,4],[87,1],[93,4],[103,1],[109,1],[113,4],[123,1],[129,1],[134,4],[144,1],[149,4],[159,1],[169,1],[173,7],[186,1],[196,1],[200,10],[216,1],[220,3],[229,1],[237,1],[241,3],[248,4],[258,1],[263,5],[273,6],[284,6]]},"34":{"position":[[0,3],[4,2],[7,3],[11,2],[14,3],[18,2],[30,4],[43,6],[58,6],[73,4],[87,4],[101,5],[114,4],[128,5],[143,4],[157,6],[173,6],[203,5],[218,8],[234,4]]},"36":{"position":[[21,3],[25,2],[28,3],[32,2],[35,3],[39,2],[52,4],[63,4],[75,2],[87,3],[97,1],[103,6],[115,2],[125,3],[133,2],[142,2],[165,4]]},"40":{"position":[[0,10],[39,1],[45,1],[75,1],[82,1],[88,1],[95,4],[194,11],[255,7],[344,7],[430,6],[527,1],[557,1],[600,1],[638,1],[675,1],[681,1],[691,1],[697,1],[723,1],[725,1],[768,1],[770,1]]},"43":{"position":[[18,1],[71,2]]},"45":{"position":[[0,10],[34,1],[36,1],[70,12],[118,1],[137,1],[160,1],[186,1],[237,1],[239,1],[301,2],[304,9],[314,8],[345,1],[398,15],[423,1],[457,2],[476,1],[511,2],[514,1],[561,1],[587,8],[610,8],[631,10],[667,1],[695,1],[716,1],[726,1],[750,1],[771,1],[773,8],[813,1],[815,3],[819,3],[823,3],[840,1],[842,1]]},"47":{"position":[[77,1]]},"50":{"position":[[7,1],[18,35],[61,1],[128,1]]},"52":{"position":[[0,6],[24,1],[39,19],[71,1],[86,1],[114,1]]},"54":{"position":[[23,1],[51,1],[58,1],[67,3],[71,1],[78,1],[94,1]]},"56":{"position":[[0,3]]},"58":{"position":[[17,4],[31,9],[41,9],[58,18],[205,1],[222,1],[224,3],[496,17],[525,17],[549,17],[579,17],[739,7],[773,39],[837,1]]},"60":{"position":[[13,30],[44,11],[56,2],[59,2],[121,22],[156,20],[183,15],[208,15],[230,10],[246,15],[344,15],[377,16],[403,15],[428,18],[460,22],[555,10],[566,2],[569,2],[577,17],[609,20],[643,23],[679,2],[684,9],[699,14],[721,8],[732,9],[751,34],[797,20],[820,4],[868,17],[905,20],[941,15],[964,18],[993,18],[1024,25],[1065,25],[1099,22],[1135,29],[1181,29],[1222,22],[1253,12],[1279,13],[1300,12],[1325,13],[1352,24],[1382,8],[1403,9],[1423,24],[1455,35],[1503,16],[1530,5],[1536,2],[1539,2],[1600,10],[1631,11],[1664,11],[1693,16],[1710,5],[1716,2],[1719,2],[1737,11],[1770,10],[1793,28],[1835,4],[1858,9],[1873,2],[1888,4],[1893,8],[1902,2],[1905,2],[1922,19],[1954,20],[1987,26],[2026,23],[2050,5],[2056,2],[2059,2],[2071,17],[2103,4],[2114,2],[2132,9],[2159,9],[2194,10],[2215,9],[2225,4],[2230,2],[2233,2],[2244,13],[2277,18],[2306,11],[2327,12],[2350,9],[2370,11],[2382,8],[2391,2],[2394,2],[2417,19],[2461,10],[2476,13],[2502,13],[2520,13],[2546,13],[2572,16],[2609,16],[2643,23],[2684,23]]},"62":{"position":[[274,2],[323,2],[377,2],[451,2],[454,15],[480,2],[483,5],[498,2],[501,5],[522,2],[543,2],[546,4],[561,2],[564,14],[592,2],[595,6],[612,2],[615,15],[639,2],[642,21],[682,2],[778,2],[843,2],[933,2],[971,2],[1043,2],[1106,2],[1109,10],[1130,2],[1174,2],[1242,2],[1298,2],[1335,2],[1394,2],[1397,13],[1411,2],[1414,1],[1416,23],[1440,2],[1513,1],[1547,2],[1553,1],[1571,1],[1584,1],[1602,2],[1611,1],[1613,1],[1620,2],[1628,2],[1631,1],[1633,2],[1636,1],[1643,2],[1662,1]]},"64":{"position":[[219,2],[222,15],[246,2],[249,21],[287,2],[314,2],[339,2],[342,6],[363,2],[366,6],[382,2],[385,4],[400,2],[403,14],[430,2],[502,2],[565,2],[568,10],[589,2],[592,5],[607,2],[610,5],[626,2],[657,2],[703,2],[799,2],[864,2],[953,2],[987,2]]},"66":{"position":[[329,8],[338,3],[342,2],[354,8],[676,5],[682,4],[687,2],[701,4],[713,10],[724,3],[749,4],[763,4],[776,4],[789,6],[805,6],[822,4],[827,1],[829,5],[861,7],[885,11],[908,11],[928,9],[949,13],[973,17],[991,1],[1000,6],[1033,2],[1104,12],[1126,8],[1149,10],[1176,9]]},"68":{"position":[[149,2],[160,2]]},"70":{"position":[[336,2],[349,2],[359,1],[368,2],[519,2],[664,2],[667,4],[672,2],[681,1],[691,2],[783,1],[798,2],[892,2],[895,4],[900,2],[917,2],[965,2],[1001,2],[1004,4],[1009,2],[1022,2],[1025,6],[1043,2],[1046,6],[1064,2],[1067,6]]},"72":{"position":[[179,2],[182,2],[194,2],[197,2],[209,2],[212,4],[228,2],[253,2],[256,8]]},"74":{"position":[[184,2],[187,3],[200,2],[203,3],[218,2],[221,6],[238,2],[241,6],[259,2],[262,8],[281,2],[284,10]]},"76":{"position":[[124,2],[127,13],[151,2],[154,6],[171,2],[174,10],[195,2],[223,2],[226,25],[268,2],[271,21],[303,2],[306,8],[324,2],[327,16],[362,2],[365,8],[385,2],[388,8],[413,2],[416,23],[453,2],[456,15],[485,2],[488,15],[515,2],[518,19],[547,2],[550,18],[578,2],[581,8],[599,2],[602,8],[627,2],[630,13],[659,2],[662,16]]},"80":{"position":[[11,1],[20,5],[89,11],[108,24],[146,24],[171,2],[187,8],[211,1],[234,2],[240,2],[248,4],[255,1],[298,2],[305,7],[332,1],[336,5],[367,2],[374,6],[402,1],[406,5],[443,2],[446,1],[452,1],[456,5],[498,1],[503,3],[509,1],[515,4],[522,4],[544,5],[559,2],[565,7],[575,6],[592,2],[598,6],[607,7],[626,2],[632,3],[638,8],[657,2],[663,8],[680,2],[683,2],[689,2],[696,6],[716,2],[722,2],[729,9],[750,2],[753,1],[758,10],[783,2],[786,1],[791,2],[798,8],[820,2],[823,1],[828,10],[855,2],[858,1],[888,2],[891,1],[896,11],[921,2],[924,1],[929,2],[936,8],[960,2],[963,2],[980,2],[983,1],[988,12],[1015,1],[1020,2],[1026,2],[1029,1],[1034,7],[1045,1]]},"83":{"position":[[97,1],[103,1],[109,1],[115,1],[117,8],[148,1],[182,15],[207,1],[216,2],[235,1],[245,2],[248,1],[295,1],[321,8],[344,8],[365,10],[401,1],[429,1],[450,1],[452,8],[492,1],[514,1],[558,1],[600,1],[607,1],[689,1],[704,1],[706,8],[742,1],[840,1],[845,1],[854,1],[911,1],[918,1],[956,1],[966,1],[1018,2],[1024,1],[1065,1],[1067,1],[1069,1],[1083,1],[1085,8],[1121,1],[1188,2],[1197,1],[1199,2],[1208,2],[1211,1],[1213,2],[1288,1],[1293,1],[1302,1],[1325,1],[1344,1],[1351,1],[1389,1],[1399,1],[1451,2],[1457,1],[1525,2],[1534,1],[1536,2],[1543,2],[1546,1],[1548,2],[1557,1],[1572,1],[1574,1],[1588,1],[1598,1],[1632,1],[1647,2],[1655,1],[1657,2],[1664,2],[1667,1],[1669,2],[1686,1],[1688,1],[1697,2],[1718,1],[1720,1],[1740,1],[1946,1],[1963,2],[1966,14],[1991,1],[1998,1],[2021,2],[2030,2],[2033,1],[2035,2],[2043,2],[2057,2],[2060,14],[2257,1],[2280,1],[2287,1],[2313,2],[2325,2],[2328,1],[2330,2],[2338,2],[2360,2],[2377,1]]},"85":{"position":[[99,1],[105,1],[111,1],[117,1],[189,8],[220,1],[273,15],[298,1],[332,2],[351,1],[386,2],[389,1],[436,1],[462,8],[485,8],[506,10],[542,1],[570,1],[591,1],[601,1],[625,1],[646,1],[648,8],[688,1],[710,1],[754,1],[847,1],[854,1],[1038,1],[1053,1],[1055,1],[1137,2],[1175,1],[1205,1],[1338,1],[1340,1],[1419,1],[1501,1],[1649,1],[1751,1],[1899,1],[1901,1],[2126,1],[2128,1],[2194,1],[2278,1],[2337,1],[2374,1],[2416,1],[2469,1],[2502,1],[2514,1]]},"87":{"position":[[234,5],[259,5],[310,1],[329,1],[424,8],[448,4],[485,3],[580,4],[660,2],[693,10],[728,2],[764,1],[766,5],[790,1],[806,1],[865,1],[911,1],[955,1],[1004,1],[1025,2],[1031,1],[1043,1],[1045,1],[1058,1],[1092,1],[1094,11],[1106,11],[1118,5],[1124,7],[1132,7],[1267,6],[1283,1],[1289,6],[1347,1],[1352,6],[1410,1],[1415,7],[1495,6],[1531,1],[1553,1],[1565,1],[1577,1],[1603,1],[1635,2],[1659,1],[1771,1],[1773,7],[1788,1],[1832,1],[1834,8],[1851,1],[1856,1],[1863,1],[1865,6],[1893,1],[1898,1],[1900,1],[1913,1],[1915,2],[1988,3],[2004,1],[2070,2],[2100,7],[2151,6],[2184,4],[2204,10],[2262,1],[2328,7],[2368,1],[2370,5],[2427,1],[2451,1],[2477,5],[2494,8],[2503,1],[2510,1],[2563,1],[2621,9],[2631,1],[2633,1],[2635,2],[2638,8],[2647,2],[2650,11],[2663,15],[2702,1],[2715,1],[2795,2],[2868,1],[2897,1],[2926,1],[3030,4],[3038,1],[3109,1],[3132,1],[3160,1],[3198,1],[3200,1],[3212,1]]},"90":{"position":[[197,1],[218,2],[221,10],[278,2],[307,1],[309,2],[357,7],[400,2],[403,13],[456,2],[459,11],[523,2],[526,15],[584,2],[587,15],[614,1],[616,2],[619,10],[676,2],[705,1],[742,2],[745,14],[799,2],[802,11],[866,2],[869,15],[927,2],[930,15],[957,1],[959,2],[962,3],[988,1],[1063,1],[1065,2],[1068,4],[1090,1],[1151,1],[1255,1],[1333,3],[1337,2],[1340,9],[1350,1],[1352,2],[1355,4],[1378,1],[1465,1],[1467,2],[1470,4],[1493,1],[1580,1],[1582,2],[1585,4],[1609,1],[1698,1],[1711,1],[1743,1],[1795,2],[1798,4],[1803,2],[1847,2],[1850,4],[1897,2],[1900,4],[1939,2],[1942,9],[1952,2],[1989,2],[1992,9],[2011,2],[2014,4],[2019,2],[2032,2],[2035,4],[2040,2],[2053,2],[2067,2],[2070,4],[2075,2],[2088,2],[2101,2],[2104,4],[2109,2],[2122,1],[2134,1]]},"92":{"position":[[197,1],[264,1],[445,1],[493,1],[674,1],[698,1],[773,1],[792,1],[853,1],[957,1],[1035,3],[1039,1],[1059,1],[1146,1],[1166,1],[1253,1],[1274,1],[1363,1],[1376,1],[1408,1],[1460,2],[1580,2],[1626,2],[1639,2],[1653,2],[1666,1],[1678,1]]},"94":{"position":[[277,1],[340,2],[350,1],[537,1],[558,1],[570,2],[652,1],[665,1],[827,1]]},"96":{"position":[[0,2]]},"98":{"position":[[21,2],[58,2],[91,2],[125,2],[128,2],[142,2],[145,4],[160,2],[163,5],[184,2],[187,8],[210,2],[213,7],[221,2],[269,1],[279,2],[299,2]]},"100":{"position":[[19,1],[44,2],[47,7],[67,2],[70,7],[78,2]]},"102":{"position":[[9,1],[31,2],[57,2],[60,6],[78,2],[81,2],[86,2],[101,2],[119,2],[128,2],[131,21]]},"104":{"position":[[46,2],[49,6],[67,2],[70,6],[87,2],[90,6],[106,2],[109,6]]},"106":{"position":[[0,2],[3,6],[77,2],[80,10],[94,4],[102,4],[122,2],[125,5]]},"112":{"position":[[12,2],[15,7],[23,2],[60,2],[63,7],[84,5],[133,2],[171,2],[207,2],[214,6],[238,2],[271,2]]},"114":{"position":[[15,2],[62,1],[241,12]]},"116":{"position":[[28,2],[31,10],[42,2],[45,7],[53,2],[56,2],[59,2],[62,2],[65,2],[84,2],[104,2],[122,2],[139,2],[160,2],[180,2],[191,6]]},"120":{"position":[[0,23],[24,25],[50,23],[74,6],[81,4],[86,6],[93,17]]},"122":{"position":[[0,20],[21,36],[58,13],[72,22]]},"124":{"position":[[0,14]]},"131":{"position":[[72,31],[277,5],[283,5]]},"133":{"position":[[0,57]]},"137":{"position":[[74,2],[233,3],[246,2],[368,11],[380,7],[401,5],[407,2],[410,28],[439,39]]},"141":{"position":[[33,44],[78,47]]},"144":{"position":[[0,2],[54,19],[74,13]]},"146":{"position":[[0,2]]},"149":{"position":[[0,2],[3,19]]},"153":{"position":[[0,10],[11,2],[14,31],[46,5],[52,2],[55,20],[76,7],[84,7],[92,15]]},"156":{"position":[[0,37],[38,2],[41,23],[65,30]]},"158":{"position":[[0,7],[8,20],[39,13]]},"161":{"position":[[0,15],[16,43],[60,15],[76,22]]},"163":{"position":[[12,9],[22,24],[90,2],[93,4],[107,1],[270,1],[444,1],[631,1]]},"166":{"position":[[0,61],[62,42],[105,56],[162,39],[202,32],[235,47]]},"168":{"position":[[0,40],[41,61],[135,2],[173,7],[181,4],[207,13]]},"170":{"position":[[0,42],[45,5],[51,32],[86,5],[92,20]]},"172":{"position":[[0,46],[49,5],[71,4],[78,5],[84,54]]},"174":{"position":[[0,27],[28,6],[35,17],[53,22]]},"178":{"position":[[123,1],[159,1],[184,1],[200,1],[220,2],[232,1],[256,9],[266,1],[282,1],[292,1],[315,1],[347,2],[374,1],[415,1],[417,8],[441,1],[472,1],[479,1],[493,1],[495,1],[497,1],[499,1],[501,1],[572,1],[630,4],[635,2],[638,1],[666,1],[736,1],[805,1],[863,1],[881,1],[883,1],[885,1],[936,1],[1002,2],[1335,1],[1371,1],[1396,1],[1412,1],[1432,2],[1444,1],[1468,9],[1478,1],[1494,1],[1504,1],[1527,1],[1559,2],[1586,1],[1656,1],[1687,1],[1694,1],[1708,1],[1710,1],[1712,1],[1714,1],[1716,1],[1718,2],[1721,1],[1750,1],[1803,1],[1830,2],[1871,1],[2145,2],[2254,1],[2312,2],[2340,2],[2352,1]]},"180":{"position":[[67,2],[225,15],[365,1],[393,1],[514,1],[516,14],[587,1],[589,14],[718,1],[747,1],[822,1],[849,1],[907,1],[967,1],[1024,13],[1053,36]]},"184":{"position":[[28,14],[43,16],[60,7],[68,11],[80,8],[195,10]]},"188":{"position":[[19,9],[29,9],[39,7]]},"190":{"position":[[0,9],[10,20]]},"192":{"position":[[49,5],[105,17],[123,19],[143,19]]},"194":{"position":[[0,6],[167,16],[184,8],[258,58],[317,3],[354,5],[441,17],[459,2],[487,2],[514,2],[517,4],[538,2],[557,3],[578,5],[633,1],[702,2],[733,1],[799,1],[862,1],[929,1],[970,2],[982,1],[1060,2],[1097,3],[1143,5],[1198,1],[1234,2],[1259,2],[1287,2],[1290,4],[1308,2],[1421,1],[1449,1],[1570,1],[1572,14],[1643,1],[1645,14],[1774,1],[1803,1],[1878,1],[1905,1],[1963,1],[2023,1],[2080,5],[2086,12],[2099,16],[2116,15]]},"196":{"position":[[0,2],[3,14]]},"198":{"position":[[0,15],[21,2]]},"200":{"position":[[0,2]]},"202":{"position":[[0,30],[232,7]]},"204":{"position":[[0,12]]},"206":{"position":[[187,15]]},"208":{"position":[[0,4],[14,5],[66,3],[113,40]]},"221":{"position":[[0,5],[389,4],[812,13],[1335,2]]},"225":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"229":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"231":{"position":[[0,4]]},"236":{"position":[[0,137]]},"238":{"position":[[10,8],[19,19],[39,15],[55,21],[77,6],[84,21],[106,6],[113,52],[166,3],[170,32],[203,6],[210,6],[217,16],[234,6],[241,26]]},"240":{"position":[[244,51]]},"242":{"position":[[0,3],[87,3],[91,53]]},"244":{"position":[[0,3],[96,3],[100,53]]},"246":{"position":[[0,32],[33,82],[116,43],[504,27],[663,17],[681,118]]},"248":{"position":[[0,2]]},"251":{"position":[[86,3],[151,24],[176,3],[180,84],[265,18]]},"253":{"position":[[77,18],[96,3],[100,3],[104,5],[110,7],[171,5],[266,4],[363,4]]},"259":{"position":[[45,8],[54,8],[63,4],[68,9],[78,2],[81,10],[92,64],[157,56],[214,54],[269,8],[278,9],[397,10],[511,9],[692,10],[871,8],[880,9],[1002,10],[1141,9],[1337,10]]},"262":{"position":[[0,19],[20,5],[26,5],[32,5],[38,4],[43,3],[47,2]]},"264":{"position":[[0,16],[42,33]]},"266":{"position":[[0,7],[25,3]]},"269":{"position":[[0,5],[6,39],[46,7],[54,6],[61,6],[68,6],[75,6],[82,22],[105,22],[128,73],[202,3],[206,64],[271,2],[274,74]]},"271":{"position":[[0,7],[8,3],[12,50],[63,3],[261,12],[274,3],[278,7],[286,3],[290,26],[317,3],[321,40],[362,3],[509,10],[520,3]]},"273":{"position":[[0,23],[24,5],[30,2],[33,6],[40,3],[44,3],[48,12],[61,7],[69,6],[76,6],[83,4],[88,8],[97,4],[102,5],[108,5],[114,5],[120,53],[174,3],[178,12],[191,39],[231,19],[275,19]]},"275":{"position":[[0,76],[77,34]]},"277":{"position":[[0,17],[33,2],[358,42],[884,60],[1113,2],[1168,2]]},"279":{"position":[[0,14],[169,27],[630,2],[685,2]]},"281":{"position":[[0,5],[6,38],[45,13],[359,5],[365,40],[406,13]]},"288":{"position":[[0,5],[6,15],[22,12],[35,23],[59,29],[89,14],[104,5],[110,84],[195,16],[212,22],[235,20],[256,77],[334,90]]},"290":{"position":[[99,10],[110,5],[116,39]]},"293":{"position":[[0,6],[160,6]]},"295":{"position":[[0,9],[10,45],[56,8],[65,30],[96,26],[123,27]]},"297":{"position":[[10,7],[18,34],[53,13],[76,7],[84,17],[102,13],[127,7],[135,37],[173,13],[198,7],[206,17],[272,10],[283,9],[326,16],[343,6]]},"299":{"position":[[0,10],[11,64],[76,56],[133,54],[188,11],[200,19],[220,24],[245,25],[271,18],[290,21],[312,26],[362,18],[433,35],[469,38],[508,27],[536,49],[586,12],[599,46],[646,68],[715,8],[724,3],[728,3],[732,12],[745,25],[771,46],[818,56],[875,17],[896,4],[901,2]]},"301":{"position":[[0,8],[13,13],[74,11]]},"306":{"position":[[0,3],[19,2],[30,9]]},"308":{"position":[[0,13],[27,2],[45,8],[69,5]]},"312":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"314":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"316":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"318":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"320":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"322":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"325":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"327":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"330":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"332":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"334":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"343":{"position":[[232,2]]},"347":{"position":[[201,18],[285,17],[562,26]]},"351":{"position":[[256,10],[917,5],[923,10]]},"355":{"position":[[126,2]]},"365":{"position":[[102,50]]},"367":{"position":[[0,171],[172,34],[207,31],[239,41]]},"369":{"position":[[0,100],[101,123],[225,116]]},"371":{"position":[[0,41]]},"373":{"position":[[0,75],[76,12],[181,1],[357,9],[385,1],[392,1],[399,36],[441,1],[448,37]]},"375":{"position":[[6,35],[44,28],[79,20],[102,27],[130,11],[212,3],[220,7],[228,8],[239,15],[264,2],[276,31],[310,21],[332,8],[596,1],[602,1],[649,3],[674,11]]},"377":{"position":[[6,6],[21,24],[48,18],[69,10],[80,11],[162,3],[170,7],[178,28],[356,3],[417,5],[431,14],[470,2],[482,31],[516,20],[705,1],[711,1],[781,11]]},"379":{"position":[[0,61],[68,1],[76,51]]},"381":{"position":[[0,2],[3,33]]},"383":{"position":[[0,89],[90,157]]},"387":{"position":[[191,2],[199,8],[242,16],[286,31],[354,31]]},"389":{"position":[[361,3]]},"391":{"position":[[12,34],[225,28],[821,29],[856,41],[1154,5],[1388,5]]},"393":{"position":[[302,11],[314,2],[322,49],[372,1],[379,32],[424,65],[498,87],[594,40],[635,11]]},"397":{"position":[[0,2]]},"399":{"position":[[106,12],[162,1]]},"401":{"position":[[95,1]]},"403":{"position":[[107,1],[133,2],[136,6]]},"407":{"position":[[24,1],[37,1],[116,1],[307,1],[352,1]]},"409":{"position":[[22,1],[40,1],[44,1],[52,1],[158,1],[176,1],[180,1],[188,1],[296,1]]},"412":{"position":[[37,19],[89,1],[189,1]]},"414":{"position":[[0,4],[317,2],[353,2],[356,2],[707,2],[719,2],[743,2],[777,2],[803,2],[817,2],[832,2],[880,2],[893,1],[948,2],[1001,1],[1033,1],[1064,1],[1121,4],[1176,2],[1228,2],[1236,1],[1253,2],[1266,2],[1269,2],[1345,2],[1442,1],[1454,1],[1496,1],[1518,1],[1541,1],[1588,1],[1638,1],[1685,1],[1710,1],[1744,1],[1776,1],[1821,1],[1871,1]]},"416":{"position":[[0,2],[3,5]]},"419":{"position":[[85,2],[88,35],[364,1],[368,18],[398,3],[402,8],[413,24],[442,19],[462,3],[466,48],[515,3],[519,51],[582,3],[586,8],[597,31],[631,7],[639,3],[643,14],[660,31],[692,3],[696,47],[746,14],[763,6],[772,19]]},"421":{"position":[[100,5],[282,2],[285,81]]},"428":{"position":[[0,2],[3,9],[13,40],[54,13],[72,1],[76,3],[86,14],[129,4],[142,2],[174,5],[279,1],[334,1],[386,1],[430,8],[897,1],[953,1],[1043,1],[1133,1],[1235,1],[1275,1],[1284,1],[1300,1],[1309,1],[1326,1],[1335,1],[1368,1],[1406,1],[1442,1],[1451,11],[1463,33],[1644,1],[1687,1],[1697,1],[1817,1],[1863,1],[1891,1],[2123,1],[2189,1],[2246,1],[2264,1],[2285,2],[2340,10],[2541,1],[2567,1],[2596,3],[3188,5],[3194,1],[3324,1],[3381,1],[3433,1],[3477,1],[3537,1],[3627,1],[3717,1],[3799,1],[3839,1],[3848,1],[3864,1],[3873,1],[3890,1],[3899,1],[3932,1],[3970,1],[4006,1],[4015,1],[4057,1],[4067,1],[4113,1],[4159,1],[4187,1],[4282,1],[4348,1],[4405,1],[4423,1],[4444,2],[4499,1],[4525,1]]},"430":{"position":[[130,4],[190,4],[257,4]]},"434":{"position":[[207,2],[210,40],[251,13],[269,1],[273,3],[283,14],[326,4],[339,2]]},"436":{"position":[[0,15],[33,20],[71,4]]},"438":{"position":[[127,36],[170,16],[221,12],[240,5],[269,8],[278,6],[287,1],[331,6],[340,13],[371,51],[460,5],[466,13],[488,51],[540,5],[546,15],[564,27],[594,29]]},"442":{"position":[[0,12],[88,5],[239,100],[352,13]]},"444":{"position":[[0,2],[68,37],[186,1],[188,16]]},"446":{"position":[[0,2],[3,8]]},"452":{"position":[[72,1],[161,15],[253,1],[297,1],[335,1],[452,1],[564,1]]},"455":{"position":[[139,16]]},"459":{"position":[[0,24],[25,14],[40,32]]},"471":{"position":[[271,1],[494,3],[498,14],[513,32],[546,15]]},"474":{"position":[[0,24],[25,23],[49,5],[55,3]]},"476":{"position":[[0,26],[179,20],[495,17],[801,16]]},"478":{"position":[[0,31],[261,10],[341,1]]},"483":{"position":[[0,35]]},"487":{"position":[[89,38],[158,1],[306,1],[369,1],[397,1],[425,1],[540,1],[582,1],[624,1]]},"490":{"position":[[0,88],[89,62]]},"492":{"position":[[0,115],[116,80],[197,64],[262,47],[310,50]]},"494":{"position":[[0,78],[79,65]]},"497":{"position":[[0,150]]},"499":{"position":[[335,30],[498,38],[537,15],[566,1],[576,1],[593,1],[598,2],[610,1],[614,1],[619,1],[630,1],[634,1]]},"504":{"position":[[83,1],[102,1],[121,1],[141,1],[160,1],[180,1],[209,1],[267,1],[293,1],[323,1],[388,1],[485,1],[518,1],[524,1],[551,1],[556,1],[589,1],[594,1],[606,3],[610,1],[625,1],[714,1],[762,1],[764,8],[775,1],[862,1],[893,2],[930,1],[1041,1],[1069,1],[1097,1],[1130,3],[1203,3],[1209,1],[1250,1],[1291,1],[1324,3],[1406,3]]},"510":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"512":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"514":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"516":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"519":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"526":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"531":{"position":[[197,1],[249,1],[503,1],[542,1],[771,1],[775,1],[1022,1],[1067,1],[1137,1],[1173,1],[1190,1],[1252,1],[1285,1],[1358,2],[1459,2],[1483,2],[1580,1],[1628,1],[1683,1],[1803,1],[1841,1],[1991,1],[2026,1],[2037,1],[2097,1],[2163,1],[2175,1],[2197,1],[2209,1],[2231,1],[2236,1],[2251,2],[2257,2],[2271,2],[2310,1],[2319,1],[2324,1],[2376,1],[2435,1],[2564,1],[2577,1],[2650,1],[2678,1],[2735,1],[2751,1]]},"535":{"position":[[0,4],[14,5],[66,3],[113,40]]},"548":{"position":[[0,5],[389,4],[812,13],[1335,2]]},"552":{"position":[[0,1],[24,2],[64,39],[116,18],[154,25],[199,19],[219,5],[225,25],[259,14],[274,5],[280,38],[327,1],[338,10],[357,1],[410,5],[424,32],[465,1],[505,46],[560,1],[621,10]]},"556":{"position":[[790,31],[1558,15],[1602,1],[1628,2],[1647,1]]},"562":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,2],[730,8],[766,15]]},"565":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"567":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[985,10],[1074,60],[1330,7],[1342,4],[1361,3],[1369,23],[1398,36],[1435,8],[1449,11],[1553,33],[1709,6],[1731,1],[1751,5],[1761,8],[1779,1],[1789,13],[1803,1],[1811,4],[1831,4],[1855,60],[1925,6],[1974,5],[1980,5],[1986,68],[2055,5],[2061,4],[2092,11],[2125,1],[2134,1],[2173,3],[2408,15],[2441,5],[2493,23]]},"569":{"position":[[0,4],[24,5]]},"572":{"position":[[0,8],[81,6],[90,7],[98,11],[176,3],[249,6],[561,6],[627,20],[753,3]]},"574":{"position":[[0,10],[264,14],[377,2],[402,2],[405,2],[474,2],[477,2]]},"578":{"position":[[122,1],[126,1],[139,3],[143,33],[177,17],[195,14]]},"580":{"position":[[0,4],[24,5]]},"583":{"position":[[0,8],[13,13],[74,11]]},"588":{"position":[[0,3],[19,2],[30,9]]},"590":{"position":[[0,13],[27,2],[45,8],[69,5]]},"594":{"position":[[9,7],[71,1],[88,1],[90,1],[92,1],[94,1],[130,1],[147,1],[149,1],[151,1],[153,1],[174,8],[198,1],[209,15]]},"596":{"position":[[0,19],[55,1],[122,1],[230,1],[330,1],[397,1],[502,1],[586,1],[593,4],[605,19],[637,2],[650,19],[674,5],[685,5],[719,2],[748,8],[782,1],[809,5],[824,17],[870,1],[948,1],[1022,1],[1100,1]]},"598":{"position":[[0,1],[9,2],[20,3],[32,11],[53,8],[124,17],[146,32],[195,17],[220,50]]},"600":{"position":[[9,1],[31,1],[91,1],[120,1],[159,1],[181,3],[187,3],[237,5],[245,8],[278,33],[312,1],[327,8],[340,8],[351,3],[359,30],[413,14],[430,10],[441,1],[456,9],[514,1],[526,2],[595,1],[724,1],[726,1],[739,1],[766,3],[772,6],[779,1],[790,9],[802,5],[810,7],[820,16],[839,13],[855,27],[885,1],[889,7],[917,22],[940,5],[959,6],[1008,5],[1022,10],[1041,10],[1060,5],[1079,30],[1126,6],[1141,28],[1178,13],[1200,14],[1272,6]]},"602":{"position":[[0,15],[155,5],[170,7],[221,1],[269,1],[293,1],[323,1],[392,1],[505,1],[516,14],[531,1],[587,46],[649,10],[660,3],[666,5],[681,24],[744,33],[803,13],[826,11],[912,6],[921,13],[937,13],[953,44],[998,5],[1012,6],[1029,3],[1118,2],[1134,11],[1154,5],[1177,8],[1210,9],[1228,1],[1277,5],[1298,8]]},"604":{"position":[[0,4],[10,2],[59,7],[87,11],[99,9],[113,2],[129,6],[141,4],[237,30],[268,4],[273,46],[345,7],[356,26],[396,10],[407,5],[416,11],[447,1],[618,8],[736,2],[817,7],[843,6],[850,4],[871,5],[883,10],[897,4],[907,10],[921,1],[973,17],[1018,4],[1028,7],[1050,2],[1057,3],[1072,1],[1086,1],[1092,7],[1104,1],[1113,2],[1127,1],[1142,1],[1148,10],[1162,3],[1183,2],[1236,8],[1245,2],[1251,20],[1295,13],[1322,4],[1351,12],[1373,20],[1400,1],[1473,28],[1512,43],[1560,15],[1590,2],[1597,3],[1612,1],[1626,1],[1632,7],[1644,1],[1653,2],[1667,1],[1682,1],[1688,10],[1703,3],[1710,2],[1765,29],[1816,4],[1855,3],[1944,13],[1964,24],[2028,11],[2064,11],[2076,7],[2105,3],[2109,6],[2461,3],[2465,6]]},"607":{"position":[[0,19],[31,2],[46,12],[69,2],[74,4],[133,9],[176,3],[191,6],[210,7],[258,17],[276,5],[282,9],[302,5],[319,15],[344,1],[348,6],[365,7],[373,8],[414,2],[441,20],[474,35],[510,19],[535,3],[548,5],[578,3],[602,15],[620,3],[642,2],[649,1],[667,33]]},"609":{"position":[[0,2],[7,4],[31,7],[46,11],[68,16],[94,3],[98,21],[125,14],[140,45],[217,23],[244,12],[282,15],[307,7],[315,8],[324,3],[328,18],[347,24],[372,18],[391,23]]},"612":{"position":[[7,5],[15,31],[56,4],[68,3],[110,3],[282,3],[373,1],[391,1],[406,1],[408,2],[411,1],[461,1],[502,1],[585,1],[629,1],[723,1],[819,1],[909,1],[911,17],[947,1],[972,1],[1071,1]]},"614":{"position":[[0,1],[6,14],[29,6],[100,2],[138,12],[171,1],[195,7],[207,35],[278,3],[305,14],[328,1],[338,2],[361,4],[388,8],[404,11],[425,7],[446,32],[479,4],[509,3],[536,12],[556,17],[583,7],[604,11],[642,4],[657,27],[698,3],[702,2],[710,8],[722,5],[728,1],[758,9],[795,5],[819,24],[867,11],[891,5],[905,17],[923,3],[931,3],[942,4],[1008,24],[1041,11],[1061,11],[1081,15],[1097,12],[1117,37],[1163,9],[1181,9],[1208,3],[1220,10]]},"616":{"position":[[107,13],[154,8],[194,50],[252,39],[292,15],[316,13],[337,40],[385,7],[401,9],[411,4],[424,1],[446,6],[570,6],[890,1],[909,4],[918,15],[942,24],[975,14],[1013,1],[1037,14],[1070,7],[1086,8],[1103,8],[1145,14],[1160,1],[1184,4],[1193,14]]},"618":{"position":[[0,4]]},"623":{"position":[[213,6]]},"625":{"position":[[157,19]]},"631":{"position":[[0,4]]},"635":{"position":[[518,3],[535,3],[553,3],[571,3]]},"641":{"position":[[123,7],[199,18],[268,1],[270,10],[367,10],[387,1],[389,9],[403,23],[565,25],[657,8],[684,1]]},"644":{"position":[[72,40]]},"646":{"position":[[0,4]]},"648":{"position":[[0,4],[37,7],[91,10],[109,4],[123,1],[134,4],[139,1],[150,1],[253,56],[429,5],[435,27],[463,29],[493,9],[510,1]]},"650":{"position":[[8,1],[17,61],[93,62],[156,5],[162,29],[192,35],[228,4],[233,3],[253,26]]},"652":{"position":[[6,3],[79,21],[172,8],[235,5],[241,20],[262,4],[274,1],[280,19],[300,4],[305,3],[324,25]]},"654":{"position":[[75,36],[187,27],[215,5],[221,22],[244,2],[259,19],[279,4],[284,3],[295,1],[318,28]]},"656":{"position":[[12,1],[21,7],[41,31],[73,45],[119,5],[125,19],[145,9],[167,18],[186,4],[211,38]]},"658":{"position":[[78,24],[114,5],[132,61],[194,5],[200,24],[225,30],[256,4],[261,3],[287,22]]},"660":{"position":[[0,2]]},"665":{"position":[[29,7]]},"667":{"position":[[30,1],[41,1],[43,3],[47,1],[181,1],[183,22],[206,1],[278,1],[353,1]]},"669":{"position":[[30,1],[152,1],[154,22]]},"674":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"676":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"679":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"681":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"683":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"685":{"position":[[0,5]]},"691":{"position":[[0,8],[13,7],[36,12],[88,1],[96,11],[111,16],[131,20],[160,4],[189,2],[196,14],[216,16],[233,7],[244,5],[279,2],[286,1],[293,35],[329,19],[349,3],[375,6],[458,8],[467,32],[505,34],[557,5],[567,1],[585,8],[599,2],[608,11],[620,28],[660,1],[673,11],[696,30],[727,10],[765,15]]},"694":{"position":[[0,4],[11,3],[41,3],[45,4],[59,6],[85,7],[102,25],[137,5],[143,1],[154,6],[196,6],[219,5],[241,2],[260,12]]},"696":{"position":[[0,3],[25,8],[40,11],[57,54],[117,11],[129,2],[154,2],[177,6],[192,17],[220,15],[244,3],[258,2],[271,16],[298,4],[305,7],[448,8],[465,35],[501,2],[523,3],[557,23],[581,5],[591,5],[605,24],[636,12],[862,9],[895,8],[911,59],[971,5],[986,10],[1075,60],[1331,7],[1343,4],[1362,3],[1370,23],[1399,36],[1436,8],[1450,11],[1554,33],[1710,6],[1732,1],[1752,5],[1762,8],[1780,1],[1790,13],[1804,1],[1812,4],[1832,4],[1856,60],[1926,6],[1975,5],[1981,5],[1987,68],[2056,5],[2062,4],[2093,11],[2126,1],[2135,1],[2174,3],[2409,15],[2442,5],[2494,23]]},"702":{"position":[[0,107],[132,2],[135,8],[159,14],[180,5],[267,34],[308,50]]},"704":{"position":[[0,49],[50,16],[103,12],[122,5],[128,20]]},"706":{"position":[[0,18],[110,1],[112,4],[132,2],[139,1],[145,6],[177,1],[360,3],[401,2],[443,7],[573,5],[598,1],[615,4],[620,6],[651,3],[664,8],[747,6],[763,8],[776,1],[794,12],[807,12],[827,4],[862,11],[898,4],[907,3]]},"708":{"position":[[0,10],[35,20],[291,2],[303,6],[340,5],[360,4],[369,7],[423,12],[445,2]]},"711":{"position":[[0,14],[19,1],[29,10],[42,1],[46,21],[74,1],[82,13],[96,12],[117,19],[143,6]]},"718":{"position":[[0,2],[13,12],[32,1],[40,19],[63,2]]},"721":{"position":[[0,4],[5,2]]},"723":{"position":[[5,40],[66,18],[131,5],[148,84],[255,4],[267,13],[314,7],[326,1],[361,15],[384,16],[475,31],[514,6],[614,35],[715,8],[731,46],[815,5],[824,1],[830,5],[846,19],[878,5],[891,1],[899,1],[917,6],[928,5],[955,31],[1019,72],[1153,4],[1158,8],[1218,15],[1254,7],[1282,7],[1297,10],[1315,4],[1340,1],[1356,7],[1394,2],[1417,2],[1437,7],[1451,2],[1463,3],[1473,12],[1490,5],[1496,7],[1507,3],[1519,13],[1538,3],[1557,13],[1594,12],[1621,10],[1645,22],[1726,51],[1780,16],[1797,5],[1811,11],[1825,3],[1831,16],[1850,3],[1951,3],[1957,16],[1978,2],[2089,4],[2110,1],[2112,6]]},"725":{"position":[[14,1],[33,4],[44,2],[108,7],[131,11]]},"727":{"position":[[0,4],[5,2]]},"729":{"position":[[0,2],[3,14],[18,11],[37,4],[42,9],[95,2],[111,10]]},"731":{"position":[[0,15],[21,2]]},"733":{"position":[[0,2],[3,12]]},"735":{"position":[[0,15],[21,2]]},"737":{"position":[[0,32],[46,24],[77,46],[124,19],[150,6],[162,4]]},"742":{"position":[[0,2],[3,32]]},"744":{"position":[[244,14],[293,1],[345,1],[384,1],[391,2],[400,1],[422,3],[495,3],[502,1],[515,1],[537,3],[598,3],[609,1],[614,1],[633,3],[661,1],[676,1],[692,2],[708,1],[723,1],[794,3],[874,2],[877,2],[880,1],[888,2],[891,2],[952,2],[955,2],[958,1],[966,2],[969,2],[1030,2],[1033,2],[1036,1],[1044,2],[1047,2],[1272,69]]},"748":{"position":[[69,11],[81,1],[98,1],[116,1],[140,1],[158,1],[189,1],[216,1],[218,8],[265,3],[354,10],[365,1],[367,10],[378,1],[380,8],[404,1],[425,1],[427,8],[476,3]]},"750":{"position":[[0,4]]},"756":{"position":[[0,9],[25,6],[43,9],[66,9],[80,3],[89,15],[108,8],[117,4],[125,6],[145,7],[153,6],[160,7],[178,3],[195,9],[209,20]]},"758":{"position":[[0,20],[43,32],[76,2],[97,5],[172,7],[222,31],[267,2],[460,5],[475,6],[495,8],[843,7],[855,8],[888,3],[1008,9],[1022,10],[1039,3],[1079,10],[1105,11],[1123,2],[1153,4],[1218,2],[1274,14],[1302,18],[1321,9],[1337,37],[1375,12],[1392,33],[1440,2],[1460,11],[1771,15],[1791,20],[1825,3],[1860,21],[1882,22],[1920,4],[1993,1],[2001,5],[2036,8],[2074,7]]},"761":{"position":[[178,10],[205,1],[246,12],[270,12],[294,3],[320,5],[348,31],[468,3],[476,7],[570,9],[589,10],[617,13],[693,1],[794,9],[858,3],[889,5],[899,11],[970,2],[982,8],[995,10],[1015,2],[1033,13],[1056,8],[1069,16],[1086,5],[1096,23],[1129,7],[1175,10],[1186,18],[1227,1],[1274,30],[1310,3],[1327,3]]},"763":{"position":[[26,17],[70,25],[108,7],[124,3],[140,2],[155,7],[190,19],[283,8],[306,9],[332,5],[344,1],[352,18],[402,4],[420,23],[476,55],[548,18],[577,12],[629,8],[638,26],[678,7]]},"765":{"position":[[0,5],[22,4],[31,6],[38,6],[149,13],[204,6],[233,7],[246,5],[256,8],[270,10],[286,7]]},"767":{"position":[[0,7],[23,33],[68,47],[116,14],[131,2],[151,14],[181,13],[195,1],[210,13],[251,32],[292,1],[307,8],[331,4],[363,6],[397,15],[417,3],[459,4],[492,6],[499,6],[510,7],[523,3],[540,3]]},"772":{"position":[[148,12],[209,2],[330,5]]},"774":{"position":[[0,18]]},"776":{"position":[[24,1],[26,4],[183,7],[191,1],[193,1],[195,4],[281,7],[289,1]]},"778":{"position":[[75,13]]},"780":{"position":[[0,16],[26,16]]},"782":{"position":[[0,2]]},"784":{"position":[[0,31]]},"786":{"position":[[39,1],[41,2],[44,1],[46,23],[70,2],[90,2],[93,1],[103,1],[108,2],[111,17],[143,1],[148,2],[151,2],[163,1],[179,1],[191,1],[193,2],[196,13],[215,1],[227,1],[232,1],[250,2],[276,2],[288,1],[290,2],[347,1],[357,1],[375,1],[382,1],[393,1],[400,1],[402,2],[405,9],[438,1],[440,2],[502,1],[514,1],[522,2],[525,26],[552,1],[561,2],[564,6],[571,1],[595,1],[597,2],[648,1],[667,2],[670,6],[677,1]]},"788":{"position":[[0,14],[15,2],[32,7],[125,1],[127,2],[130,1],[132,23],[156,2],[176,2],[179,1],[189,1],[194,2],[197,17],[229,1],[234,2],[237,2],[249,1],[265,1],[277,1],[279,2],[282,13],[301,1],[313,1],[318,1],[336,2],[362,2],[374,1],[376,2],[433,1],[443,1],[461,1],[468,1],[479,1],[486,1],[488,2],[491,9],[524,1],[526,2],[588,1],[600,1],[608,2],[611,26],[638,1],[647,2],[650,6],[657,1],[681,1],[683,2],[734,1],[753,2],[756,6],[763,1],[776,1],[799,2],[805,1],[832,1],[853,2],[861,1],[877,1],[898,1],[931,1],[953,1],[965,1],[984,1],[991,2],[999,1],[1006,1],[1021,1],[1040,2],[1061,1],[1068,2],[1076,1],[1078,1],[1085,2],[1094,1],[1106,1]]},"790":{"position":[[0,6],[65,1],[148,2],[151,9],[211,1],[412,2],[433,1]]},"793":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[736,2],[763,5]]},"798":{"position":[[43,6],[56,2],[92,2]]},"801":{"position":[[0,5],[6,2],[11,6],[22,2],[39,14],[54,7],[62,9],[74,5],[86,1],[91,1],[95,8],[104,7],[112,18],[131,41],[173,43],[217,45]]},"803":{"position":[[0,5],[6,4],[11,30],[42,6],[49,40],[107,4],[112,1],[114,1]]},"806":{"position":[[0,51],[52,16],[128,12],[141,4],[146,10],[157,12],[170,9],[180,63],[244,2],[247,14],[262,13],[276,15],[360,20],[381,2],[384,72],[457,13],[471,43],[515,68],[584,87],[672,14],[687,9],[697,49],[747,12],[760,28],[789,14],[915,55]]},"808":{"position":[[0,7],[8,74],[83,9],[93,90],[184,9],[260,10],[271,46],[318,5],[324,36],[361,16],[378,16],[395,8],[404,33],[467,1],[482,1],[519,3],[552,9],[564,12],[603,9],[615,11],[660,3],[666,10],[677,41],[736,2],[763,5]]},"810":{"position":[[0,2],[3,14]]},"812":{"position":[[0,15],[21,2]]},"818":{"position":[[16,2],[135,2],[138,15],[154,30],[185,6]]},"820":{"position":[[162,10],[173,6],[180,6],[187,12],[200,4]]},"822":{"position":[[0,31],[81,48]]},"827":{"position":[[0,2],[518,2],[598,20],[719,2],[722,14],[786,10]]},"829":{"position":[[11,7]]},"831":{"position":[[3,5],[62,24],[87,33],[154,2],[197,4],[202,28]]},"833":{"position":[[0,2]]},"841":{"position":[[134,38]]},"845":{"position":[[146,6]]},"847":{"position":[[0,48],[105,15],[121,91]]},"852":{"position":[[3,7],[47,7]]},"854":{"position":[[3,7],[47,7]]},"856":{"position":[[0,2],[3,5],[9,8],[18,12],[31,7],[39,4]]},"858":{"position":[[0,51],[52,16]]},"860":{"position":[[0,12],[13,4],[18,10],[29,12],[42,9],[52,63],[116,2],[119,14],[134,13],[148,15],[232,20],[253,2],[256,72],[329,13],[343,43],[387,68],[456,87],[544,14],[559,9],[569,49],[619,12],[632,28],[661,14],[787,55]]},"863":{"position":[[0,59],[60,30],[91,30]]},"865":{"position":[[0,4],[5,4],[193,2],[196,13]]},"867":{"position":[[0,16],[69,1]]}}}],["0",{"_index":20,"t":{"9":{"position":[[90,2],[100,2],[144,2],[160,2],[208,4],[231,2],[365,2]]},"13":{"position":[[160,24],[185,3],[256,2],[259,3]]},"15":{"position":[[86,3],[142,1],[152,2],[367,1],[379,2],[468,2]]},"17":{"position":[[48,22]]},"21":{"position":[[115,2],[129,2],[210,2]]},"23":{"position":[[96,2],[167,2],[183,2]]},"54":{"position":[[53,2]]},"62":{"position":[[1605,2],[1659,2]]},"80":{"position":[[253,1],[273,1],[839,1]]},"83":{"position":[[842,2],[913,2],[1021,2],[1290,2],[1346,2],[1454,2],[1993,2],[2282,2],[2374,2]]},"85":{"position":[[2511,2]]},"87":{"position":[[92,1],[121,1],[792,2],[808,2],[3089,3],[3209,2]]},"90":{"position":[[382,2],[724,2],[1007,2],[2131,2]]},"92":{"position":[[283,2],[512,2],[717,2],[1675,2]]},"94":{"position":[[824,2]]},"116":{"position":[[114,7],[172,7]]},"131":{"position":[[0,17]]},"176":{"position":[[50,5]]},"194":{"position":[[2156,5]]},"229":{"position":[[1518,39],[1631,2]]},"318":{"position":[[1279,2]]},"320":{"position":[[223,2]]},"407":{"position":[[169,14]]},"409":{"position":[[38,1],[46,3],[61,3],[174,1],[182,3],[197,3]]},"428":{"position":[[341,2],[347,3],[351,3],[358,2],[973,2],[987,3],[991,3],[998,3],[1009,4],[1063,2],[1074,2],[1077,3],[1081,3],[1085,2],[1092,3],[1156,3],[1160,3],[1167,3],[1175,2],[1189,4],[3388,2],[3394,3],[3398,3],[3405,2],[3557,2],[3571,3],[3575,3],[3582,3],[3593,4],[3647,2],[3658,2],[3661,3],[3665,3],[3669,2],[3676,3],[3740,3],[3744,3],[3751,3],[3759,2],[3773,4]]},"487":{"position":[[308,1]]},"499":{"position":[[568,1],[578,1],[601,1]]},"504":{"position":[[958,2],[982,3]]},"531":{"position":[[2260,1]]},"533":{"position":[[44,74]]},"556":{"position":[[1518,39],[1631,2]]},"567":{"position":[[303,1]]},"600":{"position":[[1279,2]]},"602":{"position":[[223,2]]},"667":{"position":[[131,5]]},"669":{"position":[[56,5],[62,5]]},"696":{"position":[[303,1]]},"744":{"position":[[648,3],[1217,2],[1229,2],[1253,2]]},"786":{"position":[[105,2],[145,2],[165,2],[244,5],[359,5],[443,33],[600,25]]},"788":{"position":[[191,2],[231,2],[251,2],[330,5],[445,5],[529,33],[686,25],[856,4],[893,4],[994,4],[1103,2]]}}}],["0&d(u,v)d0​d1​≤d(u,v)≤d0​d(u,v)d_0\\end{cases}\\tag{14}h(u,v)={10​d(u,v)≤d0​d(u,v)>d0​​(14",{"_index":1540,"t":{"277":{"position":[[141,67]]}}}],["0&d(u,v)>d_1\\end{cases}\\tag{18}h(u,v)=⎩⎨⎧​1d0​−d1​d(u,v)−d1​​0​d(u,v)d1​​(18",{"_index":1560,"t":{"277":{"position":[[1171,102]]}}}],["0&d(u,v)\\leq",{"_index":1563,"t":{"279":{"position":[[97,12]]}}}],["0.1",{"_index":2567,"t":{"504":{"position":[[826,5],[850,4]]}}}],["0.1959",{"_index":1750,"t":{"322":{"position":[[1195,8]]},"604":{"position":[[1195,8]]}}}],["0.2",{"_index":2570,"t":{"504":{"position":[[855,6]]}}}],["0.2042",{"_index":1748,"t":{"322":{"position":[[1175,7]]},"604":{"position":[[1175,7]]}}}],["0.25",{"_index":201,"t":{"45":{"position":[[188,5]]}}}],["0.3",{"_index":2564,"t":{"504":{"position":[[802,5]]}}}],["0.7",{"_index":2568,"t":{"504":{"position":[[832,4]]}}}],["0.8",{"_index":2565,"t":{"504":{"position":[[814,4],[837,5]]}}}],["0.88",{"_index":2569,"t":{"504":{"position":[[843,6]]}}}],["0.9",{"_index":2563,"t":{"504":{"position":[[797,4],[808,5]]},"531":{"position":[[2737,4]]}}}],["0.94",{"_index":2814,"t":{"560":{"position":[[630,4]]},"689":{"position":[[630,4]]}}}],["0.99",{"_index":2566,"t":{"504":{"position":[[819,6]]}}}],["0.998",{"_index":3192,"t":{"672":{"position":[[1036,6]]},"754":{"position":[[1036,6]]}}}],["01",{"_index":578,"t":{"80":{"position":[[500,2]]}}}],["012",{"_index":571,"t":{"80":{"position":[[370,3]]}}}],["0x3f3f3f3f",{"_index":160,"t":{"40":{"position":[[489,10]]},"94":{"position":[[131,10]]}}}],["0xf",{"_index":565,"t":{"80":{"position":[[301,3]]}}}],["0xff;//d",{"_index":1068,"t":{"178":{"position":[[294,8],[1506,8]]}}}],["0维度的相加过程中出现了shape为(3",{"_index":3318,"t":{"744":{"position":[[1080,24]]}}}],["0阶矩和1",{"_index":1589,"t":{"293":{"position":[[167,33]]}}}],["1",{"_index":4,"t":{"7":{"position":[[63,1]]},"9":{"position":[[243,2],[331,2],[386,1]]},"15":{"position":[[200,2],[240,2],[293,3]]},"23":{"position":[[63,21]]},"40":{"position":[[742,3],[772,2],[775,2]]},"58":{"position":[[198,4]]},"62":{"position":[[1597,2]]},"80":{"position":[[264,8],[342,1],[573,1],[605,1],[636,1],[739,1],[769,1],[807,1]]},"83":{"position":[[213,2],[1315,3],[1611,3],[1630,1],[1774,3],[2109,3]]},"85":{"position":[[1645,3],[1747,3]]},"87":{"position":[[76,1],[105,1],[143,1],[1055,2],[2864,3]]},"90":{"position":[[862,3],[923,3],[1935,3],[1985,3]]},"92":{"position":[[617,3],[659,3],[1576,3],[1613,3]]},"94":{"position":[[370,2],[568,1],[797,3]]},"106":{"position":[[91,2]]},"116":{"position":[[76,7],[93,10]]},"131":{"position":[[18,12]]},"137":{"position":[[77,57]]},"229":{"position":[[1669,2]]},"273":{"position":[[252,1],[255,1],[258,1],[267,1],[270,1],[273,1],[296,1],[301,1],[304,1],[309,1],[312,1],[317,1]]},"314":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"318":{"position":[[957,1]]},"332":{"position":[[336,1],[955,12]]},"375":{"position":[[308,1]]},"377":{"position":[[514,1]]},"403":{"position":[[87,1]]},"407":{"position":[[132,2],[184,13]]},"409":{"position":[[186,1]]},"414":{"position":[[1564,3],[1628,3],[1799,3]]},"419":{"position":[[362,1],[387,10],[411,1]]},"428":{"position":[[336,4],[344,2],[365,3],[369,2],[372,2],[375,3],[976,3],[980,3],[984,2],[995,2],[1002,3],[1006,2],[1066,3],[1070,3],[1088,3],[1096,2],[1099,4],[1171,3],[1182,3],[1186,2],[1782,9],[1888,2],[3383,4],[3391,2],[3412,3],[3416,2],[3419,2],[3422,3],[3560,3],[3564,3],[3568,2],[3579,2],[3586,3],[3590,2],[3650,3],[3654,3],[3672,3],[3680,2],[3683,4],[3755,3],[3766,3],[3770,2],[4184,2]]},"487":{"position":[[721,4]]},"501":{"position":[[22,20]]},"504":{"position":[[961,3],[1243,4],[1382,4]]},"531":{"position":[[404,2],[407,2],[2233,2],[2288,2],[2321,2],[2437,2]]},"556":{"position":[[1669,2]]},"560":{"position":[[552,3]]},"596":{"position":[[124,3],[399,3],[815,3],[950,3],[1102,3]]},"600":{"position":[[957,1]]},"614":{"position":[[336,1],[955,12]]},"689":{"position":[[552,3]]},"723":{"position":[[1823,1]]},"744":{"position":[[0,30],[409,2],[441,5],[521,2],[555,3],[652,3],[663,3]]},"748":{"position":[[100,3],[269,3],[480,3]]},"788":{"position":[[888,2]]},"801":{"position":[[20,1],[25,13],[93,1],[263,37]]},"820":{"position":[[134,16]]},"827":{"position":[[34,7]]},"829":{"position":[[0,2]]},"831":{"position":[[0,2]]},"835":{"position":[[70,2],[190,2]]},"837":{"position":[[84,2]]},"839":{"position":[[91,2]]},"845":{"position":[[100,2]]},"852":{"position":[[0,2]]},"854":{"position":[[0,2]]},"867":{"position":[[46,1]]}}}],["1)&&(countout(1)==n",{"_index":678,"t":{"85":{"position":[[1625,19]]}}}],["1),indegree(0),outdegree(0",{"_index":211,"t":{"45":{"position":[[429,27]]},"85":{"position":[[304,27]]}}}],["1)[1,−1)的索引区间中的元素值都会加1,而对于某次刷漆终点e的下一个索引为e+1的元素值由于−1",{"_index":61,"t":{"17":{"position":[[193,51]]}}}],["1)[\\frac{d(u,v)}{d_0}]^{2n}}\\tag{16}h(u,v)=1+(2​−1)[d0​d(u,v)​]2n1​(16",{"_index":1545,"t":{"277":{"position":[[460,71]]}}}],["1)[\\frac{d_0}{d(u,v)}]^{2n}}\\tag{20}h(u,v)=1+(2​−1)[d(u,v)d0​​]2n1​(20",{"_index":1567,"t":{"279":{"position":[[273,71]]}}}],["1)\\tag{13}s(k)=ceil(sk​×l−1)(13",{"_index":1528,"t":{"271":{"position":[[210,32]]}}}],["1)的每一列复制三次为(3",{"_index":3321,"t":{"744":{"position":[[1144,14]]}}}],["1)的矩阵与shape为(1",{"_index":3319,"t":{"744":{"position":[[1105,15]]}}}],["1+max(getheight(t[rt].l),getheight(t[rt].r",{"_index":868,"t":{"90":{"position":[[1017,45]]},"92":{"position":[[727,45]]}}}],["1,0",{"_index":178,"t":{"40":{"position":[[778,4]]}}}],["1,0,1,0,0,1,0",{"_index":176,"t":{"40":{"position":[[727,14]]}}}],["1,0,1,1",{"_index":180,"t":{"40":{"position":[[790,8]]}}}],["1,0,n",{"_index":897,"t":{"90":{"position":[[1929,5],[1979,5]]},"92":{"position":[[1570,5],[1607,5]]},"94":{"position":[[791,5]]}}}],["1,1,0",{"_index":179,"t":{"40":{"position":[[783,6]]}}}],["1,1,0,1,1",{"_index":181,"t":{"40":{"position":[[799,11]]}}}],["1,l2+1,l2+p2",{"_index":925,"t":{"94":{"position":[[475,14]]}}}],["1,lb+1,lb+p2",{"_index":859,"t":{"90":{"position":[[508,14]]},"92":{"position":[[377,14]]}}}],["1,lb,lb+p2",{"_index":864,"t":{"90":{"position":[[851,10]]},"92":{"position":[[606,10]]}}}],["1.0",{"_index":155,"t":{"40":{"position":[[454,4]]}}}],["1.51",{"_index":1096,"t":{"178":{"position":[[876,4]]}}}],["1.73",{"_index":3177,"t":{"672":{"position":[[635,5]]},"754":{"position":[[635,5]]}}}],["1.vector",{"_index":263,"t":{"58":{"position":[[22,8]]}}}],["10",{"_index":26,"t":{"9":{"position":[[196,2]]},"21":{"position":[[142,2],[151,3],[160,3]]},"23":{"position":[[109,2],[118,3],[136,3],[219,2]]},"40":{"position":[[683,3]]},"45":{"position":[[121,3],[287,3]]},"50":{"position":[[144,33]]},"322":{"position":[[353,2],[894,2],[918,2]]},"407":{"position":[[335,3]]},"409":{"position":[[324,3]]},"531":{"position":[[850,4],[2742,2]]},"562":{"position":[[685,2]]},"604":{"position":[[353,2],[894,2],[918,2]]},"691":{"position":[[685,2]]},"744":{"position":[[733,6]]},"786":{"position":[[229,2]]},"788":{"position":[[315,2]]}}}],["10,3.141590,\"method",{"_index":192,"t":{"45":{"position":[[38,19]]}}}],["10.multimap",{"_index":279,"t":{"58":{"position":[[567,11]]}}}],["100",{"_index":244,"t":{"50":{"position":[[77,42]]},"87":{"position":[[281,3]]},"194":{"position":[[687,4]]},"407":{"position":[[325,4],[330,4]]},"409":{"position":[[314,4],[319,4]]},"514":{"position":[[874,3]]},"706":{"position":[[874,3]]}}}],["1000",{"_index":67,"t":{"21":{"position":[[72,5]]},"322":{"position":[[136,4],[326,18],[1023,4]]},"514":{"position":[[857,4]]},"604":{"position":[[136,4],[326,18],[1023,4]]},"706":{"position":[[857,4]]}}}],["10000",{"_index":1733,"t":{"322":{"position":[[320,5]]},"604":{"position":[[320,5]]}}}],["1000000007",{"_index":907,"t":{"94":{"position":[[154,10]]}}}],["1010",{"_index":572,"t":{"80":{"position":[[390,7],[412,4],[462,4]]}}}],["106",{"_index":1242,"t":{"194":{"position":[[957,4]]}}}],["108",{"_index":2111,"t":{"399":{"position":[[164,3]]}}}],["10px",{"_index":3432,"t":{"790":{"position":[[367,5]]}}}],["10的vector,初始化为3",{"_index":949,"t":{"98":{"position":[[24,23]]}}}],["11",{"_index":806,"t":{"87":{"position":[[2726,2]]}}}],["11.hash_set",{"_index":280,"t":{"58":{"position":[[597,11]]}}}],["1111",{"_index":567,"t":{"80":{"position":[[321,6]]}}}],["111m",{"_index":2820,"t":{"560":{"position":[[760,4]]},"689":{"position":[[760,4]]}}}],["1125",{"_index":1643,"t":{"314":{"position":[[195,5],[211,5],[467,5]]},"596":{"position":[[195,5],[211,5],[467,5]]}}}],["11×1",{"_index":3483,"t":{"822":{"position":[[150,18]]}}}],["11×1卷积核,每个filter对上一步的featur",{"_index":2119,"t":{"403":{"position":[[14,28]]}}}],["12",{"_index":158,"t":{"40":{"position":[[474,2]]},"80":{"position":[[381,8]]},"403":{"position":[[109,2]]},"744":{"position":[[740,6]]}}}],["12.hash_multiset",{"_index":282,"t":{"58":{"position":[[629,16]]}}}],["120",{"_index":2704,"t":{"531":{"position":[[780,5]]}}}],["120,210都是30的倍数,由于要找最大的,所以答案是210",{"_index":7,"t":{"7":{"position":[[107,33]]}}}],["13",{"_index":3305,"t":{"744":{"position":[[747,4],[758,5]]}}}],["13.hash_map",{"_index":283,"t":{"58":{"position":[[666,11]]}}}],["1313×13个grid",{"_index":3515,"t":{"829":{"position":[[75,12]]}}}],["14",{"_index":3306,"t":{"744":{"position":[[752,5],[764,4],[775,5]]}}}],["14.hash_multimap",{"_index":284,"t":{"58":{"position":[[698,16]]}}}],["148",{"_index":1257,"t":{"194":{"position":[[1237,8]]}}}],["149",{"_index":1218,"t":{"194":{"position":[[462,8]]}}}],["15",{"_index":3307,"t":{"744":{"position":[[769,5],[781,4]]}}}],["16",{"_index":2701,"t":{"531":{"position":[[669,3]]},"560":{"position":[[600,3]]},"689":{"position":[[600,3]]},"744":{"position":[[786,7]]}}}],["18.65",{"_index":3176,"t":{"672":{"position":[[626,5]]},"754":{"position":[[626,5]]}}}],["18446744073709551615ull",{"_index":167,"t":{"40":{"position":[[602,24]]}}}],["1?'\\n",{"_index":879,"t":{"90":{"position":[[1324,8]]},"92":{"position":[[1026,8]]}}}],["1\\eta",{"_index":2403,"t":{"452":{"position":[[545,10]]}}}],["1\\mu_1μ1​和μ2\\mu_2μ2​分别是第一个和第二个高斯分布的均值向量;σ1\\sigma_1σ1​和σ2\\sigma_2σ2​则是它们的协方差矩阵;tr(⋅)\\mathrm{tr}(\\cdot)tr",{"_index":1938,"t":{"349":{"position":[[592,119]]}}}],["1][b,c,1,1]的tensor",{"_index":3526,"t":{"835":{"position":[[73,43]]}}}],["1][b,c,1,1]的tensor,再送入共享的多层感知机网络进行降维再升维,最后将二者相加再经过sigmoid",{"_index":3530,"t":{"837":{"position":[[87,72]]}}}],["1][b,c,1,1]的tensor,该tensor",{"_index":3544,"t":{"845":{"position":[[103,37]]}}}],["1]])12b",{"_index":2504,"t":{"487":{"position":[[574,7]]}}}],["1],即reduce了dim=1",{"_index":2561,"t":{"504":{"position":[[742,19]]}}}],["1_44=fd.img",{"_index":1167,"t":{"180":{"position":[[629,12]]},"194":{"position":[[1685,12]]}}}],["1_44=fd_aug.img",{"_index":1169,"t":{"180":{"position":[[668,16]]},"194":{"position":[[1724,16]]}}}],["1a",{"_index":2493,"t":{"487":{"position":[[366,2]]}}}],["1e",{"_index":157,"t":{"40":{"position":[[471,2]]}}}],["1e5",{"_index":171,"t":{"40":{"position":[[677,3]]}}}],["1e9",{"_index":173,"t":{"40":{"position":[[693,3]]},"229":{"position":[[1635,4]]},"556":{"position":[[1635,4]]}}}],["1k−1",{"_index":2429,"t":{"464":{"position":[[117,4]]}}}],["1t<1",{"_index":1997,"t":{"373":{"position":[[443,4]]}}}],["1t>1",{"_index":1995,"t":{"373":{"position":[[394,4]]}}}],["1})(r1​,r2​,…,rk−1",{"_index":3248,"t":{"679":{"position":[[949,20]]},"761":{"position":[[949,20]]}}}],["1})(x1​,x2​,...,xt−1​),具有单向相关性(unidirect",{"_index":3216,"t":{"676":{"position":[[1163,48]]},"758":{"position":[[1163,48]]}}}],["1})p(r1​,r2​,…,rk​)=k=1∏k​p(rk​∣r1​,r2​,…,rk−1",{"_index":3243,"t":{"679":{"position":[[745,48]]},"761":{"position":[[745,48]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_t}}\\left(x_t",{"_index":2653,"t":{"516":{"position":[[97,37]]},"708":{"position":[[97,37]]}}}],["1}=\\frac{1}{\\sqrt{\\alpha_{t}}}\\left(\\mathbf{x}_{t",{"_index":1311,"t":{"206":{"position":[[254,50]]}}}],["1}\\right)x>n>>m",{"_index":658,"t":{"85":{"position":[[1086,10]]}}}],["cin>>row",{"_index":250,"t":{"52":{"position":[[29,9]]}}}],["cin>>row>>col",{"_index":256,"t":{"54":{"position":[[0,14]]}}}],["cin>>src>>dst",{"_index":662,"t":{"85":{"position":[[1140,14]]}}}],["ci×h×wc_i",{"_index":2446,"t":{"471":{"position":[[0,12]]}}}],["ck={wi∣pi",{"_index":2004,"t":{"375":{"position":[[341,9]]}}}],["ckc_kck",{"_index":2003,"t":{"375":{"position":[[255,8],[267,8]]}}}],["class",{"_index":1826,"t":{"330":{"position":[[72,5]]},"334":{"position":[[614,6]]},"531":{"position":[[276,5],[418,5]]},"560":{"position":[[705,5]]},"612":{"position":[[72,5]]},"616":{"position":[[614,6]]},"689":{"position":[[705,5]]},"765":{"position":[[45,5]]}}}],["classifi",{"_index":2531,"t":{"499":{"position":[[656,10]]},"567":{"position":[[2269,11]]},"633":{"position":[[0,8]]},"696":{"position":[[2270,11]]}}}],["clear",{"_index":471,"t":{"66":{"position":[[781,7]]},"672":{"position":[[930,5]]},"754":{"position":[[930,5]]}}}],["clip",{"_index":1652,"t":{"314":{"position":[[588,4],[680,4]]},"320":{"position":[[1019,4]]},"349":{"position":[[912,4],[924,4],[1000,9]]},"596":{"position":[[588,4],[680,4]]},"602":{"position":[[1019,4]]},"628":{"position":[[639,4],[885,4]]}}}],["clip_directional_loss",{"_index":1716,"t":{"320":{"position":[[1033,34]]},"334":{"position":[[1162,21]]},"602":{"position":[[1033,34]]},"616":{"position":[[1162,21]]}}}],["clip_model.token_embedding(source_tokenized_prompts).type(clip_model.dtyp",{"_index":1659,"t":{"314":{"position":[[872,75]]},"596":{"position":[[872,75]]}}}],["clip_model.token_embedding(target_tokenized_prompts).type(clip_model.dtyp",{"_index":1663,"t":{"314":{"position":[[1024,75]]},"596":{"position":[[1024,75]]}}}],["clock",{"_index":3379,"t":{"772":{"position":[[324,5]]}}}],["closure(t)\\epsilon",{"_index":1027,"t":{"137":{"position":[[321,22]]}}}],["closure(t)ϵ−closure(t",{"_index":1028,"t":{"137":{"position":[[345,22]]}}}],["cloud",{"_index":1622,"t":{"308":{"position":[[39,5]]},"590":{"position":[[39,5]]}}}],["cnn",{"_index":2235,"t":{"421":{"position":[[0,21],[22,77]]},"646":{"position":[[29,42]]},"723":{"position":[[924,3],[951,3]]}}}],["cnn中没有全连接层时,本质上可以接受任意尺寸的输入,但这是狭隘的。若考虑其下游任务以及输出,如fcn(fulli",{"_index":2229,"t":{"419":{"position":[[124,68]]}}}],["cnn本质上可以接受任意通道数的图像输入,但是其模型效果将会受到极大的影响。以一个使用通道数为3的数据集进行训练的cnn",{"_index":2232,"t":{"419":{"position":[[278,83]]}}}],["cnn模型的输入向量的形状是固定的,其输出向量的形状也是固定的或可以根据不同的下游任务而唯一确定,即输入形状与下游任务共同确定了一个cnn",{"_index":2228,"t":{"419":{"position":[[0,84]]}}}],["cnn的权值共享使得模型能够学习到图像中的局部特征,这也是一种对于上下文的假设。相邻位置上的权重共享使得模型能够对局部结构进行建模,这种权重共享使得cnn",{"_index":2236,"t":{"421":{"position":[[106,175]]}}}],["cnn的设计理念认为:在图像任务中,局部结构通常更为重要,局部连接和权值共享使得cnn更适用于图像处理等任务。但也正是这种设计理念,使得cnn在面临长输入序列时不能很好地综合上下文信息、提取位置信息,因此self",{"_index":2237,"t":{"421":{"position":[[367,106]]}}}],["cnt",{"_index":820,"t":{"87":{"position":[[2811,4],[2985,6]]}}}],["cntd0​d(u,v)≤d0​​(19",{"_index":1564,"t":{"279":{"position":[[110,58]]}}}],["d_1",{"_index":1559,"t":{"277":{"position":[[1162,5]]}}}],["d_1}&d_0\\leq",{"_index":1557,"t":{"277":{"position":[[1138,12]]}}}],["d_1}&d_1\\leq",{"_index":1574,"t":{"279":{"position":[[655,12]]}}}],["d_1}{d_0",{"_index":1556,"t":{"277":{"position":[[1129,8]]},"279":{"position":[[646,8]]}}}],["d_kd×dk",{"_index":2353,"t":{"438":{"position":[[200,11]]}}}],["d_kl×dk",{"_index":2356,"t":{"438":{"position":[[259,9]]}}}],["d_model",{"_index":2252,"t":{"428":{"position":[[101,8],[134,7]]},"434":{"position":[[298,8],[331,7]]}}}],["d_{kl}(p\\space",{"_index":2203,"t":{"414":{"position":[[1238,14]]}}}],["d_{kl}(q",{"_index":2185,"t":{"414":{"position":[[761,8]]}}}],["dall",{"_index":3142,"t":{"656":{"position":[[0,9],[191,17]]},"658":{"position":[[265,4]]}}}],["data",{"_index":482,"t":{"66":{"position":[[1097,6]]},"87":{"position":[[522,5]]},"459":{"position":[[145,11]]},"560":{"position":[[493,4]]},"623":{"position":[[773,4]]},"635":{"position":[[238,4],[453,4],[496,5],[502,4]]},"672":{"position":[[865,4]]},"689":{"position":[[493,4]]},"754":{"position":[[865,4]]}}}],["data_dir",{"_index":3085,"t":{"635":{"position":[[212,9]]}}}],["data_it",{"_index":2710,"t":{"531":{"position":[[927,10],[1100,10]]}}}],["dataset",{"_index":2424,"t":{"462":{"position":[[166,7]]},"635":{"position":[[13,7],[174,7],[370,7]]}}}],["daveho@cs.umd.edu",{"_index":1086,"t":{"178":{"position":[[716,19]]}}}],["david",{"_index":1084,"t":{"178":{"position":[[697,5]]}}}],["ddd",{"_index":2346,"t":{"434":{"position":[[201,5]]},"436":{"position":[[29,3]]}}}],["ddpm",{"_index":2920,"t":{"569":{"position":[[109,8]]}}}],["ddpm论文中的原图来分析ddpm",{"_index":1291,"t":{"202":{"position":[[854,31]]}}}],["ddpm(denois",{"_index":1981,"t":{"361":{"position":[[137,15]]}}}],["de(p,q)=(x−s)2+(y−t)2(1)d_e(p,q)=\\sqrt{(x",{"_index":1476,"t":{"253":{"position":[[177,41]]}}}],["death",{"_index":1462,"t":{"248":{"position":[[203,6]]}}}],["deathless",{"_index":1461,"t":{"248":{"position":[[193,9]]}}}],["debug",{"_index":1182,"t":{"180":{"position":[[885,9],[980,9],[1002,7]]},"194":{"position":[[1941,9],[2036,9],[2058,7]]}}}],["decod",{"_index":1391,"t":{"225":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"347":{"position":[[254,30]]},"351":{"position":[[762,8]]},"444":{"position":[[178,7]]},"519":{"position":[[109,7]]},"552":{"position":[[27,7],[180,18],[251,7],[329,8],[416,7],[467,18],[562,7]]},"565":{"position":[[33,7]]},"676":{"position":[[452,7]]},"694":{"position":[[33,7]]},"711":{"position":[[109,7]]},"758":{"position":[[452,7]]}}}],["decoder在推理时是一个一个词汇产生的,在产生第iii个词汇时其后续的词汇是未知的,更不用说进行注意力分数的就算了,而在训练过程中使用teach",{"_index":1400,"t":{"227":{"position":[[215,82]]},"554":{"position":[[215,82]]}}}],["decoder来说,它的输入是中间产物(即gener",{"_index":1961,"t":{"351":{"position":[[806,39]]}}}],["decoder每一步的输出是一个经过softmax的prob",{"_index":1364,"t":{"221":{"position":[[119,37]]},"548":{"position":[[119,37]]}}}],["decoder的任务是生成输出,可以根据是否一次性生成输出分为autoregressive(自回归,abbr",{"_index":1356,"t":{"219":{"position":[[0,55]]},"546":{"position":[[0,55]]}}}],["decoder的整体结构,掩码多头自注意力的输入是添加位置编码之后的decod",{"_index":1380,"t":{"221":{"position":[[988,68]]},"548":{"position":[[988,68]]}}}],["decoder的生成中,每一个时间步的输出是词汇表中每一个单词经过softmax之后的概率分布。为了保证生成任务可以通过模型自己停止而不是一直重复,我们向decoder的输出中加入end符号的生成,即每一次输出除了词汇表的所有词汇外还有end符号的概率,当end",{"_index":1372,"t":{"221":{"position":[[610,155]]},"548":{"position":[[610,155]]}}}],["decoder的结构训练生成模型的decod",{"_index":1968,"t":{"351":{"position":[[1134,25]]}}}],["decoder结构,将每一层对应的featur",{"_index":3475,"t":{"820":{"position":[[28,24]]}}}],["decoder试图在一次操作中生成整个输出序列。这通常通过使用诸如注意力机制等策略来实现,这些策略允许解码器关注输入序列的不同部分,同时生成输出序列的不同部分。nat的优点在于其高效性,因为它不需要保存和更新大量的可能选项。然而,由于它不能利用上下文信息来生成输出,因此其生成的输出质量普遍会低于at",{"_index":1361,"t":{"219":{"position":[[252,158]]},"546":{"position":[[252,158]]}}}],["decoder输出,使用3x3卷积以及双线性插值上采样到原始分辨率得到该层的特征图,且卷积核的个数为1,输出的featur",{"_index":3470,"t":{"818":{"position":[[212,62]]}}}],["decoder阶段,每个block",{"_index":3468,"t":{"818":{"position":[[79,32]]}}}],["decoder需要逐步生成输出,并将之前自身输出的所有词汇经过嵌入层后生成token",{"_index":1360,"t":{"219":{"position":[[101,150]]},"546":{"position":[[101,150]]}}}],["decoder)在每个时间步(或每个解码步骤)的输入都来自于前一个时间步自身的输出以及编码器(encoder)的输出。特别地,首个时间步的输入是begin符号以及编码器(encoder)的输出,在每个后续的时间步,解码器的输入会是前一个时间步自身的输出以及编码器(encod",{"_index":1366,"t":{"221":{"position":[[230,158]]},"548":{"position":[[230,158]]}}}],["decoder)都是通过最小化整体损失来进行联合训练的。这是因为整体模型需要协同工作,encod",{"_index":1392,"t":{"225":{"position":[[359,50]]},"552":{"position":[[359,50]]}}}],["deep",{"_index":1926,"t":{"347":{"position":[[873,4]]}}}],["def",{"_index":960,"t":{"102":{"position":[[89,6]]},"330":{"position":[[286,3]]},"531":{"position":[[307,3],[364,3],[443,3],[855,3],[896,3],[1297,3],[1364,3],[1427,3]]},"612":{"position":[[286,3]]}}}],["defin",{"_index":132,"t":{"40":{"position":[[11,7],[52,7],[100,7],[133,7],[206,7],[263,7],[301,7],[352,7],[373,7],[404,7],[437,7],[459,7],[477,7]]},"83":{"position":[[74,7]]},"85":{"position":[[76,7]]},"87":{"position":[[50,7],[63,7],[78,7],[94,7],[107,7],[123,7],[145,7],[210,7],[240,7],[265,7],[331,7]]},"90":{"position":[[40,7]]},"92":{"position":[[40,7]]},"94":{"position":[[40,7],[78,7],[119,7],[142,7]]},"428":{"position":[[281,6],[899,6],[3326,6]]},"508":{"position":[[513,6]]},"700":{"position":[[513,6]]}}}],["delta",{"_index":2658,"t":{"516":{"position":[[294,8]]},"708":{"position":[[294,8]]}}}],["deltaxt−1​=αt​​1​(xt​−1−αˉt​​1−αt​​ϵθ​(xt​∣t,z))+σt",{"_index":2657,"t":{"516":{"position":[[236,54]]},"708":{"position":[[236,54]]}}}],["delta}^{\\delta}\\sum_{b",{"_index":2473,"t":{"478":{"position":[[131,24]]}}}],["delta}^{\\delta}{v_{a,b}*x_{i_a,j+b",{"_index":2474,"t":{"478":{"position":[[156,37]]}}}],["demonstr",{"_index":2833,"t":{"560":{"position":[[1039,13]]},"689":{"position":[[1039,13]]}}}],["denois",{"_index":3264,"t":{"685":{"position":[[26,9]]}}}],["denoise模块的目标是预测出输入的噪声图片中的噪声,其资料可以通过对数据集中的图片不断加入从gaussian",{"_index":1984,"t":{"361":{"position":[[362,56]]}}}],["depend",{"_index":1148,"t":{"180":{"position":[[75,6]]},"681":{"position":[[597,16]]},"763":{"position":[[597,16]]}}}],["depend以及mak",{"_index":1211,"t":{"194":{"position":[[79,15]]}}}],["depend和mak",{"_index":1198,"t":{"184":{"position":[[346,14]]},"188":{"position":[[152,14]]}}}],["deploy",{"_index":1820,"t":{"327":{"position":[[20,10]]},"609":{"position":[[20,10]]}}}],["depth",{"_index":3481,"t":{"822":{"position":[[32,24]]}}}],["dequ",{"_index":106,"t":{"36":{"position":[[57,5]]},"96":{"position":[[174,10]]}}}],["dequed1(18)h(u,v)=\\begin{cases}1&d(u,v)w2(24)h(u,v)=\\begin{cases}1&d(u,v)d00d(u,v)≤d0(19)h(u,v)=\\begin{cases}1&d(u,v)>d_0",{"_index":1562,"t":{"279":{"position":[[30,66]]}}}],["h(u,v)={1d(u,v)>d0d(u,v)−d1d0−d1d1≤d(u,v)≤d00d(u,v)d_0",{"_index":1573,"t":{"279":{"position":[[537,92]]}}}],["h(u,v)={1d(u,v)≤d00d(u,v)>d0(14)h(u,v)=\\begin{cases}1&d(u,v)\\leq",{"_index":1538,"t":{"277":{"position":[[70,64]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v",{"_index":1568,"t":{"279":{"position":[[345,68]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的0.707时的d(u,v)d(u,v)d(u,v)作为截止频率d0d_0d0",{"_index":1546,"t":{"277":{"position":[[532,69]]}}}],["h(u,v)h(u,v)h(u,v)下降到最大值的1/2时的d(u,v)d(u,v)d(u,v",{"_index":1549,"t":{"277":{"position":[[728,62]]}}}],["h,t",{"_index":757,"t":{"87":{"position":[[1182,4]]}}}],["h_k",{"_index":3249,"t":{"679":{"position":[[1018,3]]},"761":{"position":[[1018,3]]}}}],["han",{"_index":3000,"t":{"623":{"position":[[220,8]]}}}],["happen",{"_index":2240,"t":{"424":{"position":[[74,7]]}}}],["hash",{"_index":281,"t":{"58":{"position":[[609,19],[646,19],[678,19],[715,19]]}}}],["hat{f}\\|_2+\\lambda_\\text{p}\\mathcal{l}_\\text{p}(i\\hat{m})+\\lambda_\\text{g}\\mathcal{l}_\\text{g}(i\\hat{m})l=∥im−im^∥2​+∥f−f^​∥2​+λp​lp​(im^)+λg​lg​(im",{"_index":3213,"t":{"676":{"position":[[691,151]]},"758":{"position":[[691,151]]}}}],["head",{"_index":1348,"t":{"217":{"position":[[57,4]]},"221":{"position":[[790,4],[913,4],[968,4],[1362,4]]},"430":{"position":[[31,4]]},"434":{"position":[[122,4]]},"440":{"position":[[24,4]]},"544":{"position":[[57,4]]},"548":{"position":[[790,4],[913,4],[968,4],[1362,4]]}}}],["heap",{"_index":966,"t":{"106":{"position":[[30,5]]}}}],["heap.clear",{"_index":967,"t":{"106":{"position":[[36,13]]}}}],["heap.empti",{"_index":969,"t":{"106":{"position":[[63,13]]}}}],["heap.push",{"_index":970,"t":{"106":{"position":[[107,10]]}}}],["heap.siz",{"_index":968,"t":{"106":{"position":[[50,12]]}}}],["help",{"_index":2321,"t":{"428":{"position":[[2767,5]]}}}],["hhfq",{"_index":1868,"t":{"332":{"position":[[705,4]]},"614":{"position":[[705,4]]}}}],["high",{"_index":2831,"t":{"560":{"position":[[1007,4]]},"689":{"position":[[1007,4]]}}}],["higher",{"_index":2161,"t":{"414":{"position":[[90,6],[132,6]]}}}],["highest",{"_index":2295,"t":{"428":{"position":[[1904,7],[4200,7]]}}}],["hinton提出的一种卷积神经网络模型,它主要应用于图像分类任务。在当时,alexnet的表现远远超过了其他参赛的网络模型,并且在imagenet",{"_index":2408,"t":{"455":{"position":[[55,83]]}}}],["hit",{"_index":1059,"t":{"178":{"position":[[114,3],[1326,3]]}}}],["hk×wkh_k",{"_index":3233,"t":{"679":{"position":[[543,8],[862,8]]},"761":{"position":[[543,8],[862,8]]}}}],["hold",{"_index":2590,"t":{"508":{"position":[[20,5]]},"700":{"position":[[20,5]]}}}],["hollings@cs.umd.edu",{"_index":1090,"t":{"178":{"position":[[783,21]]}}}],["hollingsworth",{"_index":1089,"t":{"178":{"position":[[769,13]]}}}],["honglak",{"_index":3005,"t":{"623":{"position":[[270,7]]}}}],["hope",{"_index":2617,"t":{"508":{"position":[[940,4]]},"700":{"position":[[940,4]]}}}],["host",{"_index":1233,"t":{"194":{"position":[[735,4],[805,4]]}}}],["host_cc",{"_index":1243,"t":{"194":{"position":[[962,7]]}}}],["hovemey",{"_index":1085,"t":{"178":{"position":[[706,9]]}}}],["html",{"_index":1824,"t":{"327":{"position":[[120,4]]},"609":{"position":[[120,4]]}}}],["http://127.0.0.1:7890",{"_index":2681,"t":{"531":{"position":[[199,23]]}}}],["http_proxi",{"_index":3391,"t":{"776":{"position":[[244,10]]}}}],["http_proxy=http://127.0.0.1:7890",{"_index":3386,"t":{"776":{"position":[[100,32]]}}}],["https://127.0.0.1:7890",{"_index":2683,"t":{"531":{"position":[[251,24]]}}}],["https://arxiv.org/pdf/2404.02905",{"_index":3347,"t":{"752":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.06525",{"_index":2787,"t":{"558":{"position":[[0,37]]},"687":{"position":[[0,37]]}}}],["https://arxiv.org/pdf/2406.11838",{"_index":2584,"t":{"506":{"position":[[0,37]]},"698":{"position":[[0,37]]}}}],["https://blog.csdn.net/f_zyj/article/details/51594851",{"_index":261,"t":{"56":{"position":[[4,52]]}}}],["https://blog.csdn.net/yeziyezi210/article/details/103864518",{"_index":2366,"t":{"444":{"position":[[3,64]]}}}],["https://download.csdn.net/download/f_zyj/9988653",{"_index":262,"t":{"56":{"position":[[57,48]]}}}],["https://www.bilibili.com/video/bv12u411s7us/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1042,"t":{"163":{"position":[[284,107]]}}}],["https://www.bilibili.com/video/bv13r4y1m7sq/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1049,"t":{"163":{"position":[[732,107]]}}}],["https://www.bilibili.com/video/bv1pl4y1e7re/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1039,"t":{"163":{"position":[[121,107]]}}}],["https://www.bilibili.com/video/bv1vm4y1q7xb/?spm_id_from=333.788&vd_source=24d8fcf68bc0e2b0003defe0995cf533",{"_index":1045,"t":{"163":{"position":[[458,107]]}}}],["https://www.jianshu.com/p/41c15d301542",{"_index":3336,"t":{"750":{"position":[[5,38]]}}}],["https_proxi",{"_index":3392,"t":{"776":{"position":[[261,11]]}}}],["https_proxy=https://127.0.0.1:7890",{"_index":3387,"t":{"776":{"position":[[140,34]]}}}],["hung",{"_index":3036,"t":{"623":{"position":[[702,4]]}}}],["hw4",{"_index":3104,"t":{"637":{"position":[[53,4]]}}}],["hw×cihw",{"_index":2443,"t":{"469":{"position":[[51,15]]}}}],["hyperparamet",{"_index":2440,"t":{"466":{"position":[[80,14]]}}}],["hyperstyl",{"_index":1802,"t":{"325":{"position":[[20,10],[180,10]]},"607":{"position":[[20,10],[180,10]]}}}],["h×wh",{"_index":3235,"t":{"679":{"position":[[600,4]]},"761":{"position":[[600,4]]}}}],["h′以及w′h'以及w'h′以及w",{"_index":2455,"t":{"471":{"position":[[177,24]]}}}],["i'll",{"_index":1451,"t":{"248":{"position":[[72,4],[124,4]]}}}],["i)n(0,i",{"_index":2659,"t":{"516":{"position":[[331,8]]},"708":{"position":[[331,8]]}}}],["i)xt​∼n(0,i",{"_index":2664,"t":{"516":{"position":[[410,12]]},"708":{"position":[[410,12]]}}}],["i+1",{"_index":834,"t":{"87":{"position":[[3182,4]]}}}],["i,a,b",{"_index":755,"t":{"87":{"position":[[1144,6]]}}}],["i,j",{"_index":819,"t":{"87":{"position":[[2802,4]]}}}],["i,ji,ji,j代表输出神经元的二维索引坐标,h,wh,wh,w",{"_index":2462,"t":{"476":{"position":[[27,49]]}}}],["i/o",{"_index":101,"t":{"34":{"position":[[188,5]]}}}],["i440fxsupport",{"_index":1179,"t":{"180":{"position":[[824,14]]},"194":{"position":[[1880,14]]}}}],["i<0",{"_index":761,"t":{"87":{"position":[[1316,5],[1379,5]]}}}],["i<=k",{"_index":792,"t":{"87":{"position":[[2386,5]]}}}],["ir2",{"_index":918,"t":{"94":{"position":[[352,9]]}}}],["if(la>ra",{"_index":851,"t":{"90":{"position":[[365,9],[707,9]]},"92":{"position":[[266,9],[495,9]]}}}],["if(n==0||m==0",{"_index":699,"t":{"85":{"position":[[2300,15]]}}}],["if(num==n",{"_index":697,"t":{"85":{"position":[[2196,10]]}}}],["if(read_key(&keycod",{"_index":1063,"t":{"178":{"position":[[161,22],[1373,22]]}}}],["if(rt",{"_index":927,"t":{"94":{"position":[[560,7]]}}}],["if(rt==0",{"_index":867,"t":{"90":{"position":[[990,9],[1380,9],[1495,9],[1611,9]]},"92":{"position":[[700,9],[1061,9],[1168,9],[1276,9]]}}}],["if(t[w].l!=0",{"_index":872,"t":{"90":{"position":[[1195,13]]},"92":{"position":[[897,13]]}}}],["if(t[w].r!=0",{"_index":874,"t":{"90":{"position":[[1225,13]]},"92":{"position":[[927,13]]}}}],["if(topologicalsort",{"_index":705,"t":{"85":{"position":[[2423,22]]}}}],["ifm",{"_index":3426,"t":{"790":{"position":[[266,3],[300,3],[339,3],[379,3]]}}}],["ifndef",{"_index":711,"t":{"87":{"position":[[37,7]]}}}],["ihpf",{"_index":1561,"t":{"279":{"position":[[15,14]]}}}],["iii",{"_index":1992,"t":{"373":{"position":[[353,3]]},"567":{"position":[[1338,3],[1365,3]]},"696":{"position":[[1339,3],[1366,3]]}}}],["illustr",{"_index":2227,"t":{"416":{"position":[[9,12]]}}}],["ilpf",{"_index":1532,"t":{"277":{"position":[[18,14],[36,4]]}}}],["im^=d(f^)\\hat{im}=\\mathcal{d}(\\hat{f})im^=d(f",{"_index":3210,"t":{"676":{"position":[[569,48]]},"758":{"position":[[569,48]]}}}],["imag",{"_index":1718,"t":{"320":{"position":[[1104,5]]},"322":{"position":[[1724,5]]},"332":{"position":[[282,5],[366,5],[513,5],[844,5]]},"334":{"position":[[45,35],[128,8]]},"347":{"position":[[845,5]]},"349":{"position":[[977,5]]},"506":{"position":[[62,5]]},"508":{"position":[[57,5],[840,5]]},"560":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"562":{"position":[[353,5],[382,5],[417,5],[569,5]]},"565":{"position":[[66,5],[244,5]]},"602":{"position":[[1104,5]]},"604":{"position":[[1724,5]]},"614":{"position":[[282,5],[366,5],[513,5],[844,5]]},"616":{"position":[[45,35],[128,8]]},"620":{"position":[[0,10],[202,5]]},"623":{"position":[[610,5]]},"672":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"676":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"683":{"position":[[224,5],[294,5]]},"689":{"position":[[39,5],[325,5],[405,5],[449,5],[559,5],[723,5],[920,5],[1031,7],[1210,5]]},"691":{"position":[[353,5],[382,5],[417,5],[569,5]]},"694":{"position":[[66,5],[244,5]]},"698":{"position":[[62,5]]},"700":{"position":[[57,5],[840,5]]},"721":{"position":[[31,7]]},"723":{"position":[[1199,5],[1571,5],[2055,5]]},"754":{"position":[[121,6],[488,5],[833,5],[1147,5]]},"758":{"position":[[180,5],[934,5],[1221,5],[1289,5],[1541,7],[1715,5],[1758,5],[1812,5],[1844,8]]},"767":{"position":[[224,5],[294,5]]}}}],["imagenet",{"_index":1743,"t":{"322":{"position":[[1009,8],[1327,10],[1364,8]]},"560":{"position":[[669,8],[807,8]]},"604":{"position":[[1009,8],[1327,10],[1364,8]]},"672":{"position":[[509,8]]},"689":{"position":[[669,8],[807,8]]},"754":{"position":[[509,8]]}}}],["imagen将压缩版本的图片作为gener",{"_index":1908,"t":{"347":{"position":[[353,28]]}}}],["imagen的实验结果,相对于decoder即diffus",{"_index":1912,"t":{"347":{"position":[[447,34]]}}}],["image数据,在传入visdom时仍需要先转化为numpi",{"_index":3157,"t":{"667":{"position":[[355,35]]}}}],["image,encod",{"_index":3202,"t":{"676":{"position":[[83,13]]},"758":{"position":[[83,13]]}}}],["impact",{"_index":1924,"t":{"347":{"position":[[791,9]]}}}],["import",{"_index":1919,"t":{"347":{"position":[[623,9]]},"407":{"position":[[269,6],[292,6]]},"409":{"position":[[258,6],[281,6]]},"414":{"position":[[1474,6]]},"428":{"position":[[3227,6],[3240,6],[3272,6],[3291,6]]},"531":{"position":[[0,6],[13,6],[43,6],[73,6],[105,6],[141,6],[162,6]]},"667":{"position":[[12,6]]},"669":{"position":[[12,6]]},"672":{"position":[[1250,9]]},"740":{"position":[[0,6]]},"744":{"position":[[259,6],[278,6]]},"754":{"position":[[1250,9]]}}}],["improv",{"_index":1921,"t":{"347":{"position":[[702,8]]},"672":{"position":[[555,7],[578,9]]},"754":{"position":[[555,7],[578,9]]}}}],["in[maxn",{"_index":910,"t":{"94":{"position":[[255,9]]}}}],["incept",{"_index":1727,"t":{"322":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"349":{"position":[[57,9]]},"604":{"position":[[67,9],[116,9],[602,9],[855,9],[923,9],[1212,9],[1309,9],[1338,9],[1502,9],[1738,9],[1859,9],[2440,9]]},"672":{"position":[[596,9],[641,9]]},"754":{"position":[[596,9],[641,9]]}}}],["includ",{"_index":9,"t":{"9":{"position":[[0,8]]},"15":{"position":[[0,8]]},"21":{"position":[[0,8]]},"60":{"position":[[2062,8]]},"62":{"position":[[1443,8],[1463,8]]},"83":{"position":[[0,8],[20,8],[38,8]]},"85":{"position":[[0,8],[21,8],[41,8],[59,8]]},"114":{"position":[[0,8]]},"178":{"position":[[1005,8],[1034,8],[1061,8],[1088,8],[1112,8],[1138,8],[1162,8],[1186,8],[1214,8],[1239,8],[1265,8]]},"508":{"position":[[708,9]]},"672":{"position":[[823,9],[1137,9]]},"700":{"position":[[708,9]]},"754":{"position":[[823,9],[1137,9]]},"788":{"position":[[40,8]]}}}],["include::iter",{"_index":508,"t":{"70":{"position":[[765,14]]}}}],["int[col",{"_index":260,"t":{"54":{"position":[[84,9]]}}}],["int[nrow",{"_index":252,"t":{"52":{"position":[[77,8]]}}}],["interact",{"_index":2245,"t":{"424":{"position":[[167,8],[303,12]]}}}],["interpol",{"_index":3253,"t":{"681":{"position":[[143,11]]},"763":{"position":[[143,11]]}}}],["introduc",{"_index":2788,"t":{"560":{"position":[[3,9]]},"689":{"position":[[3,9]]}}}],["introduct",{"_index":3290,"t":{"729":{"position":[[52,42]]}}}],["intuit",{"_index":3171,"t":{"672":{"position":[[281,9]]},"754":{"position":[[281,9]]}}}],["invers",{"_index":1810,"t":{"325":{"position":[[355,9]]},"607":{"position":[[355,9]]}}}],["ios::sync_with_stdio(fals",{"_index":65,"t":{"17":{"position":[[346,28]]}}}],["iostream",{"_index":409,"t":{"62":{"position":[[1452,10]]},"83":{"position":[[9,10]]},"85":{"position":[[30,10]]}}}],["ipl",{"_index":1597,"t":{"301":{"position":[[9,3],[27,3]]},"304":{"position":[[16,3],[46,3]]},"322":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"332":{"position":[[2,3],[927,3]]},"334":{"position":[[914,3],[1189,3]]},"583":{"position":[[9,3],[27,3]]},"586":{"position":[[16,3],[46,3]]},"604":{"position":[[1053,3],[1100,3],[1593,3],[1640,3],[2121,3],[2125,4],[2477,3],[2481,4]]},"614":{"position":[[2,3],[927,3]]},"616":{"position":[[914,3],[1189,3]]},"628":{"position":[[0,11]]}}}],["ipl独立于生成模型,可以自由选择diffus",{"_index":2994,"t":{"620":{"position":[[286,64]]}}}],["is=exp⁡(ex[kl(p(y∣x)∣∣p(y))])is=\\exp\\left(\\mathbb{e}_x[kl(p(y|x)||p(y))]\\right)is=exp(ex​[kl(p(y∣x)∣∣p(i",{"_index":1736,"t":{"322":{"position":[[627,108]]},"604":{"position":[[627,108]]}}}],["is_heap",{"_index":363,"t":{"60":{"position":[[2236,7]]}}}],["is_heap_untilc++11",{"_index":364,"t":{"60":{"position":[[2258,18]]}}}],["is_list",{"_index":675,"t":{"85":{"position":[[1508,10]]}}}],["is_partitionedc++11",{"_index":340,"t":{"60":{"position":[[1542,19]]}}}],["is_permutationc++11",{"_index":369,"t":{"60":{"position":[[2397,19]]}}}],["is_sorted_untilc++11",{"_index":347,"t":{"60":{"position":[[1749,20]]}}}],["is_sortedc++11",{"_index":346,"t":{"60":{"position":[[1722,14]]}}}],["is_tre",{"_index":679,"t":{"85":{"position":[[1656,10]]}}}],["isclos",{"_index":3421,"t":{"790":{"position":[[128,12]]}}}],["isdag",{"_index":219,"t":{"45":{"position":[[624,6],[660,6]]},"83":{"position":[[358,6],[394,6],[550,7]]},"85":{"position":[[499,6],[535,6],[746,7]]}}}],["isdag(1",{"_index":226,"t":{"45":{"position":[[741,8]]},"85":{"position":[[616,8]]}}}],["isdag(isdag",{"_index":223,"t":{"45":{"position":[[682,12]]},"83":{"position":[[416,12]]},"85":{"position":[[557,12]]}}}],["isinstance(net",{"_index":2712,"t":{"531":{"position":[[955,15]]}}}],["isinstance(train_lay",{"_index":1706,"t":{"320":{"position":[[347,24]]},"602":{"position":[[347,24]]}}}],["isinstance(x",{"_index":2718,"t":{"531":{"position":[[1114,13]]}}}],["is(incept",{"_index":1771,"t":{"322":{"position":[[2084,12]]},"604":{"position":[[2084,12]]}}}],["it'",{"_index":2158,"t":{"414":{"position":[[62,4]]}}}],["item",{"_index":3331,"t":{"748":{"position":[[231,4],[440,4]]}}}],["iter",{"_index":108,"t":{"36":{"position":[[78,8]]},"60":{"position":[[835,22]]},"464":{"position":[[8,9],[272,9]]}}}],["iter_swap",{"_index":318,"t":{"60":{"position":[[825,9]]}}}],["it指向的元素前插入n个新元素val",{"_index":395,"t":{"62":{"position":[[729,22]]},"64":{"position":[[750,22]]}}}],["it指向的元素前插入新元素val",{"_index":394,"t":{"62":{"position":[[685,20]]},"64":{"position":[[706,20]]}}}],["iulian",{"_index":1092,"t":{"178":{"position":[[827,6]]}}}],["j",{"_index":77,"t":{"31":{"position":[[7,1],[111,1]]},"83":{"position":[[1989,1],[1996,1],[2011,4]]},"87":{"position":[[2924,1],[3086,2]]},"641":{"position":[[617,2]]}}}],["j2\\pi",{"_index":1495,"t":{"259":{"position":[[351,5],[624,5],[1245,5]]}}}],["j\\frac{2\\pi",{"_index":1509,"t":{"259":{"position":[[946,11]]}}}],["jae",{"_index":3025,"t":{"623":{"position":[[559,3]]}}}],["jeffrey",{"_index":1088,"t":{"178":{"position":[[758,7]]}}}],["jingwan",{"_index":3020,"t":{"623":{"position":[[526,7]]}}}],["jinwoo",{"_index":3012,"t":{"623":{"position":[[393,6]]}}}],["j}\\right)p(xi,j​∣xa(first",{"_index":420,"t":{"64":{"position":[[126,17]]}}}],["lista(n",{"_index":416,"t":{"64":{"position":[[51,13],[87,13]]}}}],["lista{1,2,3",{"_index":415,"t":{"64":{"position":[[33,17]]}}}],["list和tensor",{"_index":2550,"t":{"504":{"position":[[409,17]]}}}],["list和vector",{"_index":269,"t":{"58":{"position":[[228,45]]}}}],["list或deque实现,封闭头部即可,不用vector",{"_index":271,"t":{"58":{"position":[[282,51],[342,51]]}}}],["list的*乘法是复制元素,改变list的shap",{"_index":2551,"t":{"504":{"position":[[427,26]]}}}],["ll",{"_index":147,"t":{"40":{"position":[[360,2],[547,2],[633,2],[667,2]]},"90":{"position":[[118,3]]},"92":{"position":[[118,3]]},"94":{"position":[[204,3]]}}}],["llama",{"_index":2798,"t":{"560":{"position":[[246,6]]},"562":{"position":[[602,5]]},"567":{"position":[[34,5]]},"689":{"position":[[246,6]]},"691":{"position":[[602,5]]},"696":{"position":[[34,5]]}}}],["llamagen",{"_index":2789,"t":{"560":{"position":[[13,9]]},"567":{"position":[[971,13],[1916,8]]},"689":{"position":[[13,9]]},"696":{"position":[[977,8],[1917,8]]}}}],["lll",{"_index":1529,"t":{"271":{"position":[[243,17]]},"434":{"position":[[187,13]]},"436":{"position":[[16,12]]}}}],["llm",{"_index":2836,"t":{"560":{"position":[[1150,3]]},"562":{"position":[[211,4],[288,4],[500,4],[739,3]]},"567":{"position":[[112,4],[1444,4]]},"672":{"position":[[988,5],[1274,5]]},"674":{"position":[[84,4]]},"679":{"position":[[1305,4]]},"683":{"position":[[518,4]]},"689":{"position":[[1150,3]]},"691":{"position":[[211,4],[288,4],[500,4],[738,3]]},"696":{"position":[[112,4],[1445,4]]},"754":{"position":[[988,5],[1274,5]]},"756":{"position":[[84,4]]},"761":{"position":[[1305,4]]},"765":{"position":[[265,4],[281,4]]},"767":{"position":[[518,4]]}}}],["ll×l",{"_index":2358,"t":{"438":{"position":[[366,4]]}}}],["locale.h",{"_index":94,"t":{"34":{"position":[[92,8]]}}}],["locatevex_al(*pg",{"_index":769,"t":{"87":{"position":[[1579,17],[1605,17]]}}}],["locatevex_al(algraph",{"_index":751,"t":{"87":{"position":[[917,20]]}}}],["locatevex_al(g",{"_index":823,"t":{"87":{"position":[[2899,15],[2928,15]]}}}],["log",{"_index":1170,"t":{"180":{"position":[[701,4]]},"194":{"position":[[1757,4]]}}}],["log2(1pi)(7)\\begin{align",{"_index":2169,"t":{"414":{"position":[[286,25]]}}}],["log2(pi)=∑inpi",{"_index":2168,"t":{"414":{"position":[[271,14]]}}}],["log2(pi)−log2(qi)](9)d_{kl}(p",{"_index":2190,"t":{"414":{"position":[[842,30]]}}}],["log2(qi)(10)\\begin{align",{"_index":2202,"t":{"414":{"position":[[1187,25]]}}}],["log2​(pi​)=i∑n​pi",{"_index":2175,"t":{"414":{"position":[[437,18]]}}}],["log2​(pi​)−log2​(qi​)](9",{"_index":2194,"t":{"414":{"position":[[959,26]]}}}],["log2​(pi​1​)​(7",{"_index":2176,"t":{"414":{"position":[[456,16]]}}}],["log2​(qi​)​(10",{"_index":2208,"t":{"414":{"position":[[1357,15]]}}}],["log_2(p_i",{"_index":2192,"t":{"414":{"position":[[910,11]]}}}],["log_2(q_i)]}\\tag{9}dkl​(p",{"_index":2193,"t":{"414":{"position":[[922,25]]}}}],["logist",{"_index":2478,"t":{"481":{"position":[[0,8]]}}}],["logit",{"_index":2903,"t":{"567":{"position":[[2074,5]]},"696":{"position":[[2075,5]]}}}],["logit提供的通用信息,同时保留条件logit",{"_index":2915,"t":{"567":{"position":[[2327,80]]},"696":{"position":[[2328,80]]}}}],["logit,即不考虑任何条件信息时生成的logit",{"_index":2912,"t":{"567":{"position":[[2233,31]]},"696":{"position":[[2234,31]]}}}],["logit,即基于输入文本提示的信息生成的logit",{"_index":2910,"t":{"567":{"position":[[2189,31]]},"696":{"position":[[2190,31]]}}}],["long",{"_index":148,"t":{"40":{"position":[[363,4],[368,4],[394,4],[399,4]]},"80":{"position":[[1010,4]]},"90":{"position":[[108,4],[113,4]]},"92":{"position":[[108,4],[113,4]]},"94":{"position":[[194,4],[199,4]]},"782":{"position":[[3,17],[21,32]]}}}],["loss",{"_index":1715,"t":{"320":{"position":[[1024,4]]},"332":{"position":[[790,4],[886,4]]},"334":{"position":[[24,8],[40,4]]},"395":{"position":[[139,10]]},"508":{"position":[[504,5],[532,4]]},"514":{"position":[[127,4],[893,4]]},"531":{"position":[[1623,4],[1751,6]]},"602":{"position":[[1024,4]]},"614":{"position":[[790,4],[886,4]]},"616":{"position":[[24,8],[40,4]]},"628":{"position":[[890,39]]},"667":{"position":[[280,8]]},"700":{"position":[[504,5],[532,4]]},"706":{"position":[[127,4],[893,4]]},"820":{"position":[[129,4]]},"843":{"position":[[6,43],[87,14]]}}}],["loss(y_hat",{"_index":2761,"t":{"531":{"position":[[2039,11]]}}}],["loss.to(devic",{"_index":2742,"t":{"531":{"position":[[1658,15]]}}}],["lossdiscriminator=lossreal+lossfake(3)loss_{discriminator}=loss_{real}+loss_{fake}\\tag{3}lossdiscriminator​=lossreal​+lossfake​(3",{"_index":1443,"t":{"246":{"position":[[532,130]]}}}],["lossfake=−ez∼pz(z)[log(1−d(g(z)))](2)loss_{fak",{"_index":1438,"t":{"246":{"position":[[332,49]]}}}],["lossmse=∑[y−f(x)]2(5)loss_{ms",{"_index":2148,"t":{"412":{"position":[[57,31]]}}}],["lossreal=−ex∼pdata(x)[log⁡d(x)](1)loss_{r",{"_index":1433,"t":{"246":{"position":[[160,46]]}}}],["loss得到6",{"_index":3478,"t":{"820":{"position":[[74,11]]}}}],["loss来训练目标域生成器,使源于生成器向目标域迁移学习。需要输入源域以及目标域图像、源域以及目标域的prompt描述。源域图像的lat",{"_index":3067,"t":{"628":{"position":[[644,71]]}}}],["loss的输入来约束从源域中学习到的prompt",{"_index":3062,"t":{"628":{"position":[[346,33]]}}}],["loss的输入,约束学习到的prompt",{"_index":3066,"t":{"628":{"position":[[555,31]]}}}],["lot",{"_index":1185,"t":{"180":{"position":[[936,3]]},"194":{"position":[[1992,3]]}}}],["low",{"_index":1535,"t":{"277":{"position":[[53,3]]}}}],["lower_bound",{"_index":355,"t":{"60":{"position":[[1975,11]]}}}],["lr",{"_index":1035,"t":{"158":{"position":[[29,9]]},"531":{"position":[[1414,3],[2720,3],[2810,3]]}}}],["lr(0",{"_index":1038,"t":{"163":{"position":[[98,8]]},"168":{"position":[[138,6],[159,13]]}}}],["lr(1",{"_index":1044,"t":{"163":{"position":[[435,8]]},"168":{"position":[[153,5]]}}}],["lr=lr",{"_index":2740,"t":{"531":{"position":[[1616,6]]}}}],["lr_mul=0.01",{"_index":1853,"t":{"330":{"position":[[843,12],[986,12]]},"612":{"position":[[843,12],[986,12]]}}}],["lr_mul=lr_mlp",{"_index":1688,"t":{"318":{"position":[[684,14]]},"600":{"position":[[684,14]]}}}],["lu",{"_index":3021,"t":{"623":{"position":[[534,3]]},"806":{"position":[[804,57]]},"860":{"position":[[676,57]]}}}],["l×dkl",{"_index":2355,"t":{"438":{"position":[[246,5]]}}}],["l×dl",{"_index":2347,"t":{"436":{"position":[[54,4]]}}}],["l×ll",{"_index":2357,"t":{"438":{"position":[[354,4]]}}}],["m",{"_index":418,"t":{"64":{"position":[[101,2]]},"70":{"position":[[323,2]]},"194":{"position":[[1086,1]]},"665":{"position":[[52,1]]}}}],["m.clear",{"_index":515,"t":{"70":{"position":[[1053,10]]}}}],["m.empti",{"_index":514,"t":{"70":{"position":[[1032,10]]}}}],["m.erase(it",{"_index":512,"t":{"70":{"position":[[952,12]]}}}],["m.erase(key",{"_index":511,"t":{"70":{"position":[[903,13]]}}}],["m.find(key",{"_index":509,"t":{"70":{"position":[[785,12]]}}}],["m.insert(make_pair(key",{"_index":505,"t":{"70":{"position":[[486,23]]}}}],["m.size",{"_index":513,"t":{"70":{"position":[[1012,9]]}}}],["m32",{"_index":1232,"t":{"194":{"position":[[729,3],[978,3]]}}}],["m[key",{"_index":501,"t":{"70":{"position":[[352,6],[683,7]]}}}],["machin",{"_index":2417,"t":{"462":{"position":[[47,7]]}}}],["mae",{"_index":2669,"t":{"519":{"position":[[15,3]]},"711":{"position":[[15,3]]}}}],["mage",{"_index":3281,"t":{"723":{"position":[[1981,10]]}}}],["main",{"_index":15,"t":{"9":{"position":[[50,6]]},"15":{"position":[[50,6]]},"21":{"position":[[50,6]]},"62":{"position":[[1506,6]]},"83":{"position":[[1733,6]]},"85":{"position":[[2284,7]]},"87":{"position":[[2708,6]]},"90":{"position":[[1704,6]]},"92":{"position":[[1369,6]]},"94":{"position":[[658,6]]},"178":{"position":[[503,31]]},"788":{"position":[[769,6]]}}}],["main(struct",{"_index":1122,"t":{"178":{"position":[[1838,11]]}}}],["make",{"_index":1147,"t":{"180":{"position":[[70,4],[82,4]]},"184":{"position":[[338,7]]},"188":{"position":[[144,7]]},"194":{"position":[[147,19]]},"428":{"position":[[2776,6]]},"672":{"position":[[428,5]]},"754":{"position":[[428,5]]}}}],["make_heap",{"_index":365,"t":{"60":{"position":[[2296,9]]}}}],["malloc(sizeof(arcnod",{"_index":772,"t":{"87":{"position":[[1670,26]]}}}],["man",{"_index":3041,"t":{"623":{"position":[[758,3]]}}}],["map",{"_index":110,"t":{"36":{"position":[[99,3]]},"70":{"position":[[0,7],[223,68],[292,13],[326,9],[339,9]]},"96":{"position":[[190,4]]},"114":{"position":[[9,5]]},"318":{"position":[[470,12],[566,10]]},"322":{"position":[[1940,3]]},"397":{"position":[[82,3]]},"403":{"position":[[43,21]]},"600":{"position":[[470,12],[566,10]]},"604":{"position":[[1940,3]]},"676":{"position":[[111,4],[1270,3]]},"679":{"position":[[213,3],[265,4],[289,4],[386,14]]},"681":{"position":[[104,3],[136,3],[171,6],[186,3]]},"683":{"position":[[236,14]]},"758":{"position":[[111,4],[1270,3]]},"761":{"position":[[213,3],[265,4],[289,4],[386,14]]},"763":{"position":[[104,3],[136,3],[171,6],[186,3]]},"767":{"position":[[236,14]]}}}],["map、<=、>=、==、!=,其规则是先比较first,first相等时再比较second",{"_index":493,"t":{"68":{"position":[[246,110]]}}}],["pair也能进行sort",{"_index":958,"t":{"100":{"position":[[81,12]]}}}],["pair对象外,如果需要即时生成一个pair对象,也可以调用在其中定义的一个模版函数:make_pair。make_pair",{"_index":494,"t":{"68":{"position":[[357,92]]}}}],["pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成员:first和second",{"_index":492,"t":{"68":{"position":[[173,72]]}}}],["paper",{"_index":1763,"t":{"322":{"position":[[1810,5]]},"604":{"position":[[1810,5]]},"737":{"position":[[71,5]]}}}],["paradigm",{"_index":2792,"t":{"560":{"position":[[107,8]]},"672":{"position":[[66,8]]},"689":{"position":[[107,8]]},"754":{"position":[[66,8]]}}}],["paragraph",{"_index":2313,"t":{"428":{"position":[[2626,10]]}}}],["paramet",{"_index":2437,"t":{"466":{"position":[[37,9]]},"560":{"position":[[773,11],[953,11]]},"633":{"position":[[87,10]]},"689":{"position":[[773,11],[953,11]]}}}],["paraphras",{"_index":2076,"t":{"391":{"position":[[677,10]]}}}],["parti",{"_index":2849,"t":{"562":{"position":[[90,5]]},"658":{"position":[[0,5],[6,71],[103,10],[272,14]]},"691":{"position":[[90,5]]}}}],["partial_sort",{"_index":349,"t":{"60":{"position":[[1822,12]]}}}],["partial_sort_copi",{"_index":350,"t":{"60":{"position":[[1840,17]]}}}],["partit",{"_index":342,"t":{"60":{"position":[[1590,9]]},"462":{"position":[[183,11]]}}}],["partition_copyc++11",{"_index":343,"t":{"60":{"position":[[1611,19]]}}}],["partition_pointc++11",{"_index":344,"t":{"60":{"position":[[1643,20]]}}}],["pass",{"_index":1536,"t":{"277":{"position":[[57,4]]}}}],["patch",{"_index":2671,"t":{"519":{"position":[[68,5]]},"526":{"position":[[26,5]]},"711":{"position":[[68,5]]},"718":{"position":[[26,5]]}}}],["path",{"_index":793,"t":{"87":{"position":[[2397,11]]},"635":{"position":[[226,4],[273,4]]}}}],["path/terminal_proxy.sh",{"_index":3396,"t":{"778":{"position":[[96,23]]}}}],["path[k]=0",{"_index":805,"t":{"87":{"position":[[2691,10]]}}}],["path[k]=u",{"_index":789,"t":{"87":{"position":[[2317,10]]}}}],["path[max_vertex_num",{"_index":782,"t":{"87":{"position":[[2162,21]]}}}],["pathnum",{"_index":797,"t":{"87":{"position":[[2483,10]]}}}],["pathnum=0",{"_index":783,"t":{"87":{"position":[[2193,10],[3006,10]]}}}],["pathnum==0",{"_index":829,"t":{"87":{"position":[[3096,12]]}}}],["paths[i",{"_index":835,"t":{"87":{"position":[[3187,10]]}}}],["paths[maxsize][max_vertex_num",{"_index":781,"t":{"87":{"position":[[2119,31]]}}}],["paths[pathnum][i",{"_index":794,"t":{"87":{"position":[[2409,17]]}}}],["paths[pathnum][i]='\\0",{"_index":796,"t":{"87":{"position":[[2453,23]]}}}],["pay",{"_index":2247,"t":{"424":{"position":[[230,3]]}}}],["pc",{"_index":1191,"t":{"184":{"position":[[102,7]]}}}],["pe(k,2i)\\\\pe(pos+k,2i+1)=pe(pos,2i+1)\\tim",{"_index":1336,"t":{"215":{"position":[[836,43]]},"542":{"position":[[836,43]]}}}],["pe(k,2i)\\end{array",{"_index":1339,"t":{"215":{"position":[[908,19]]},"542":{"position":[[908,19]]}}}],["pe(k,2i+1",{"_index":1337,"t":{"215":{"position":[[880,10]]},"542":{"position":[[880,10]]}}}],["pe(k,2i+1)+pe(pos,2i+1)\\tim",{"_index":1335,"t":{"215":{"position":[[806,29]]},"542":{"position":[[806,29]]}}}],["pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)(3)\\begin{array}{l}pe(pos+k,2i)=pe(pos,2i)\\tim",{"_index":1334,"t":{"215":{"position":[[643,162]]},"542":{"position":[[643,162]]}}}],["pe(pos,2i)=sin(pos100002i/dmodel)(1)pe_{(pos,2i)}=sin(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1329,"t":{"215":{"position":[[212,96]]},"542":{"position":[[212,96]]}}}],["pe(pos,2i)\\tim",{"_index":1338,"t":{"215":{"position":[[891,16]]},"542":{"position":[[891,16]]}}}],["pe(pos,2i+1)=cos(pos100002i/dmodel)(2)pe_{(pos,2i+1)}=cos(\\frac{pos}{10000^{2i/d_{\\mathrm{model",{"_index":1331,"t":{"215":{"position":[[356,100]]},"542":{"position":[[356,100]]}}}],["penalti",{"_index":2369,"t":{"448":{"position":[[151,48]]}}}],["per",{"_index":2600,"t":{"508":{"position":[[319,3],[559,3]]},"700":{"position":[[319,3],[559,3]]}}}],["perform",{"_index":2419,"t":{"462":{"position":[[80,11]]},"464":{"position":[[354,12]]},"560":{"position":[[342,11],[1065,11]]},"689":{"position":[[342,11],[1065,11]]}}}],["permit",{"_index":1098,"t":{"178":{"position":[[918,9]]}}}],["perspect",{"_index":1290,"t":{"202":{"position":[[841,12]]}}}],["pg",{"_index":743,"t":{"87":{"position":[[759,4],[779,2],[795,2],[844,2],[1087,4],[1274,2],[1336,2],[1399,2],[1470,2],[1748,3],[1790,2],[1872,2]]}}}],["photo",{"_index":1627,"t":{"312":{"position":[[44,5],[225,16],[244,5],[255,18]]},"314":{"position":[[139,5],[150,5],[414,5]]},"316":{"position":[[72,5],[94,5]]},"332":{"position":[[59,5],[687,5]]},"334":{"position":[[621,5],[649,6]]},"594":{"position":[[44,5],[225,16],[244,5],[255,18]]},"596":{"position":[[139,5],[150,5],[414,5]]},"598":{"position":[[72,5],[94,5]]},"614":{"position":[[59,5],[687,5]]},"616":{"position":[[621,5],[649,6]]}}}],["photo.’或‘a",{"_index":1666,"t":{"316":{"position":[[83,10]]},"598":{"position":[[83,10]]}}}],["photorealist",{"_index":1925,"t":{"347":{"position":[[822,14]]}}}],["photo→anim",{"_index":1777,"t":{"322":{"position":[[2171,11],[2518,11]]},"604":{"position":[[2171,11],[2518,11]]}}}],["photo→cartoon",{"_index":1796,"t":{"322":{"position":[[2365,13],[2658,13]]},"604":{"position":[[2365,13],[2658,13]]}}}],["photo→cub",{"_index":1798,"t":{"322":{"position":[[2407,12],[2700,12]]},"604":{"position":[[2407,12],[2700,12]]}}}],["photo→disney",{"_index":1773,"t":{"322":{"position":[[2135,12],[2491,12]]},"604":{"position":[[2135,12],[2491,12]]}}}],["photo→pixar",{"_index":1787,"t":{"322":{"position":[[2277,11],[2588,11]]},"604":{"position":[[2277,11],[2588,11]]}}}],["photo→pointil",{"_index":1797,"t":{"322":{"position":[[2384,17],[2677,17]]},"604":{"position":[[2384,17],[2677,17]]}}}],["photo→tolkien",{"_index":1789,"t":{"322":{"position":[[2304,13],[2615,13]]},"604":{"position":[[2304,13],[2615,13]]}}}],["photo→ukiyo",{"_index":1783,"t":{"322":{"position":[[2240,11],[2569,11]]},"604":{"position":[[2240,11],[2569,11]]}}}],["photo→wal",{"_index":1782,"t":{"322":{"position":[[2215,10],[2544,10]]},"604":{"position":[[2215,10],[2544,10]]}}}],["photo→werewolf",{"_index":1791,"t":{"322":{"position":[[2327,14],[2638,14]]},"604":{"position":[[2327,14],[2638,14]]}}}],["pi",{"_index":153,"t":{"40":{"position":[[445,2]]}}}],["pii",{"_index":151,"t":{"40":{"position":[[412,3]]}}}],["pip",{"_index":1613,"t":{"306":{"position":[[124,3],[158,3]]},"588":{"position":[[124,3],[158,3]]},"662":{"position":[[0,3]]}}}],["pip_{i}pi",{"_index":2051,"t":{"389":{"position":[[404,23]]}}}],["piscart",{"_index":2981,"t":{"618":{"position":[[30,10]]}}}],["pixelcnn",{"_index":3125,"t":{"646":{"position":[[14,14]]},"648":{"position":[[114,8],[141,8]]}}}],["pixelnorm",{"_index":1682,"t":{"318":{"position":[[516,9],[597,13]]},"600":{"position":[[516,9],[597,13]]}}}],["pixelnorm以及全连接层,将每个点归一化(除以模长),避免输入nois",{"_index":1849,"t":{"330":{"position":[[725,54]]},"612":{"position":[[725,54]]}}}],["pixelnorm,防止与transformer中的lay",{"_index":1829,"t":{"330":{"position":[[185,38]]},"612":{"position":[[185,38]]}}}],["pixelrnn",{"_index":3123,"t":{"644":{"position":[[0,8],[52,19]]},"646":{"position":[[5,8]]},"648":{"position":[[125,8],[152,8]]}}}],["pi′=pi∑wj∈ckpj",{"_index":2009,"t":{"375":{"position":[[518,14]]}}}],["pi′=pi∑wj∈cppj",{"_index":2031,"t":{"377":{"position":[[627,14]]}}}],["pi′p_i^{\\prime}pi",{"_index":2016,"t":{"375":{"position":[[653,20]]},"377":{"position":[[758,22]]}}}],["plasmpkg2",{"_index":3380,"t":{"772":{"position":[[336,9]]}}}],["platform",{"_index":1236,"t":{"194":{"position":[[810,9],[841,9]]}}}],["pleas",{"_index":2301,"t":{"428":{"position":[[2191,6],[4350,6]]}}}],["plot",{"_index":2336,"t":{"428":{"position":[[3319,4]]}}}],["plt",{"_index":2679,"t":{"531":{"position":[[158,3]]}}}],["plt.show",{"_index":2780,"t":{"531":{"position":[[2628,10]]}}}],["po",{"_index":577,"t":{"80":{"position":[[487,4],[511,3],[692,3],[725,3],[794,3],[932,3]]}}}],["point",{"_index":1081,"t":{"178":{"position":[[660,5],[1743,6]]}}}],["polynomi",{"_index":3445,"t":{"793":{"position":[[752,10]]},"808":{"position":[[752,10]]}}}],["pop",{"_index":625,"t":{"83":{"position":[[1650,4]]},"96":{"position":[[98,5],[139,5],[168,5]]}}}],["pop_heap",{"_index":366,"t":{"60":{"position":[[2318,8]]}}}],["popular",{"_index":2825,"t":{"560":{"position":[[854,7]]},"689":{"position":[[854,7]]}}}],["portrait",{"_index":1883,"t":{"334":{"position":[[738,10]]},"616":{"position":[[738,10]]}}}],["pos+kpos+kpos+k位置的嵌入向量的某一维度(2i2i2i或2i+12i+12i+1)而言,可以表示为pospospos位置与kkk位置的嵌入向量的2i2i2i与2i+12i+12i+1",{"_index":1333,"t":{"215":{"position":[[506,136]]},"542":{"position":[[506,136]]}}}],["posit",{"_index":2883,"t":{"567":{"position":[[1017,8]]},"696":{"position":[[1018,8]]}}}],["pospospos指的是该词汇在整个输入句子中的位置,2i2i2i以及2i+12i+12i+1指的是该词汇的嵌入向量中的维度,dmodeld_{model}dmodel​指的是在嵌入层之后嵌入向量的总维度。即对于每个输入词汇,都要计算dmodeld_{model}dmodel",{"_index":1328,"t":{"215":{"position":[[57,154]]},"542":{"position":[[57,154]]}}}],["postt(int",{"_index":888,"t":{"90":{"position":[[1595,9]]},"92":{"position":[[1260,9]]},"94":{"position":[[544,9]]}}}],["postt(rt",{"_index":902,"t":{"90":{"position":[[2056,10]]},"92":{"position":[[1642,10]]},"94":{"position":[[806,10]]}}}],["postt(t[rt].l",{"_index":889,"t":{"90":{"position":[[1629,15]]},"92":{"position":[[1294,15]]},"94":{"position":[[585,15]]}}}],["postt(t[rt].r",{"_index":890,"t":{"90":{"position":[[1645,15]]},"92":{"position":[[1310,15]]},"94":{"position":[[601,15]]}}}],["pos处的二进制位置为0",{"_index":590,"t":{"80":{"position":[[863,14]]}}}],["power",{"_index":3186,"t":{"672":{"position":[[936,5]]},"754":{"position":[[936,5]]}}}],["pp_arr",{"_index":251,"t":{"52":{"position":[[63,7]]}}}],["ppp",{"_index":2026,"t":{"377":{"position":[[446,14]]}}}],["ppp的坐标为(x,y)(x",{"_index":1474,"t":{"253":{"position":[[118,19]]}}}],["practic",{"_index":3071,"t":{"631":{"position":[[44,8]]}}}],["pre",{"_index":917,"t":{"94":{"position":[[346,3]]},"349":{"position":[[983,3]]},"391":{"position":[[1023,6]]}}}],["pre[maxn",{"_index":909,"t":{"94":{"position":[[244,10]]}}}],["pre_stylegan",{"_index":1623,"t":{"308":{"position":[[54,14]]},"590":{"position":[[54,14]]}}}],["precis",{"_index":2988,"t":{"620":{"position":[[150,7]]}}}],["predic",{"_index":341,"t":{"60":{"position":[[1562,27]]}}}],["predict",{"_index":2052,"t":{"389":{"position":[[442,11]]},"414":{"position":[[1533,7],[1580,7],[1768,7]]},"560":{"position":[[95,11]]},"562":{"position":[[172,10]]},"672":{"position":[[158,11],[190,12],[255,12]]},"676":{"position":[[32,10],[946,10],[996,11]]},"679":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"689":{"position":[[95,11]]},"691":{"position":[[172,10]]},"723":{"position":[[1108,11],[1127,10]]},"754":{"position":[[158,11],[190,12],[255,12]]},"758":{"position":[[32,10],[946,10],[996,11]]},"761":{"position":[[166,11],[309,10],[337,10],[1216,10]]},"765":{"position":[[192,11]]}}}],["prediction,图(b",{"_index":3214,"t":{"676":{"position":[[903,25]]},"758":{"position":[[903,25]]}}}],["predictor",{"_index":1271,"t":{"202":{"position":[[185,46]]},"204":{"position":[[185,10]]},"351":{"position":[[245,10]]},"361":{"position":[[568,14]]}}}],["predictor中。从随机分布中sample出的噪声就是nois",{"_index":1957,"t":{"351":{"position":[[703,34]]}}}],["predictor中,而需要预测出的噪声分布的ground",{"_index":1951,"t":{"351":{"position":[[407,29]]}}}],["predictor对噪声denois",{"_index":1980,"t":{"361":{"position":[[107,29]]}}}],["predictor的ground",{"_index":1958,"t":{"351":{"position":[[738,16]]}}}],["predictor预测出的噪声,αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​以及α1,α2,...αt\\alpha_1,\\alpha_2,...\\alpha_tα1​,α2​,...αt",{"_index":1317,"t":{"206":{"position":[[592,158]]}}}],["predictor,其输入是加入噪声的图像以及sample出的ttt,而ϵθ\\epsilon_\\thetaϵθ​训练的ground",{"_index":1302,"t":{"204":{"position":[[717,65]]}}}],["predictor,根据文字prompt对从随机分布中sampl",{"_index":1277,"t":{"202":{"position":[[490,54]]}}}],["predictor;在生成图片时,输入从该随机分布中sample出的向量,使用训练出的nois",{"_index":1979,"t":{"361":{"position":[[58,48]]}}}],["predit",{"_index":1754,"t":{"322":{"position":[[1402,9]]},"604":{"position":[[1402,9]]}}}],["preprocess",{"_index":3079,"t":{"635":{"position":[[88,10],[161,12]]}}}],["present",{"_index":3164,"t":{"672":{"position":[[3,7]]},"754":{"position":[[3,7]]}}}],["press",{"_index":1142,"t":{"178":{"position":[[2184,7]]}}}],["pret(int",{"_index":880,"t":{"90":{"position":[[1365,8]]},"92":{"position":[[1046,8]]}}}],["pret(rt",{"_index":900,"t":{"90":{"position":[[2022,9]]},"92":{"position":[[1629,9]]}}}],["pret(t[rt].l",{"_index":883,"t":{"90":{"position":[[1435,14]]},"92":{"position":[[1116,14]]}}}],["pret(t[rt].r",{"_index":884,"t":{"90":{"position":[[1450,14]]},"92":{"position":[[1131,14]]}}}],["pretrain",{"_index":2040,"t":{"387":{"position":[[208,28]]}}}],["prev_permut",{"_index":378,"t":{"60":{"position":[[2667,16]]}}}],["prewitt",{"_index":1592,"t":{"297":{"position":[[116,10]]}}}],["prim",{"_index":3457,"t":{"803":{"position":[[100,6]]}}}],["primari",{"_index":3428,"t":{"790":{"position":[[276,7],[310,7],[349,7],[389,7]]}}}],["print",{"_index":1143,"t":{"178":{"position":[[2201,5]]}}}],["print(\"%c\",(asciicode=='\\r",{"_index":1075,"t":{"178":{"position":[[443,28],[1658,28]]}}}],["print(\"\\n",{"_index":1072,"t":{"178":{"position":[[376,9],[1588,9]]}}}],["print(\"argmax",{"_index":2571,"t":{"504":{"position":[[871,13]]}}}],["print(\"attent",{"_index":2290,"t":{"428":{"position":[[1706,16],[1922,16],[4076,16],[4218,16]]}}}],["print(\"keys:\\n",{"_index":2282,"t":{"428":{"position":[[1345,16],[3909,16]]}}}],["print(\"queries:\\n",{"_index":2283,"t":{"428":{"position":[[1377,19],[3941,19]]}}}],["print(\"to",{"_index":1057,"t":{"178":{"position":[[99,9],[1311,9]]}}}],["print(\"values:\\n",{"_index":2284,"t":{"428":{"position":[[1415,18],[3979,18]]}}}],["print(\"weight",{"_index":2307,"t":{"428":{"position":[[2294,15],[4453,15]]}}}],["print(\"welcom",{"_index":1137,"t":{"178":{"position":[[2075,14]]}}}],["print(a",{"_index":2554,"t":{"504":{"position":[[543,7]]}}}],["print(b",{"_index":2556,"t":{"504":{"position":[[581,7]]}}}],["print(c.shap",{"_index":2543,"t":{"504":{"position":[[252,14]]}}}],["print(d.shap",{"_index":2548,"t":{"504":{"position":[[373,14]]}}}],["print(f'loss",{"_index":2772,"t":{"531":{"position":[[2464,12]]}}}],["print(f'{metric[2",{"_index":2776,"t":{"531":{"position":[[2545,18]]}}}],["print(i",{"_index":2576,"t":{"504":{"position":[[1121,8],[1315,8]]}}}],["print(i)16'''17(tensor([1",{"_index":2509,"t":{"487":{"position":[[651,26]]}}}],["print(i)6'''7(tensor(1",{"_index":2500,"t":{"487":{"position":[[450,24]]}}}],["print(item",{"_index":3332,"t":{"748":{"position":[[253,11],[464,11]]}}}],["print(output",{"_index":3303,"t":{"744":{"position":[[619,13]]}}}],["print(x",{"_index":3297,"t":{"744":{"position":[[372,8]]}}}],["print(x1",{"_index":3299,"t":{"744":{"position":[[412,9]]}}}],["print(x2",{"_index":3302,"t":{"744":{"position":[[527,9]]}}}],["printf(\"%c",{"_index":723,"t":{"87":{"position":[[312,12]]}}}],["printf(\"%d%c\",v[i],i==len",{"_index":878,"t":{"90":{"position":[[1298,25]]},"92":{"position":[[1000,25]]}}}],["printf(\"%d\\n",{"_index":58,"t":{"15":{"position":[[430,14]]}}}],["printf(\"%d\\n\",t[rt].d",{"_index":930,"t":{"94":{"position":[[628,23]]}}}],["printf(\"7.28",{"_index":828,"t":{"87":{"position":[[3017,12]]}}}],["printf(\"\\t",{"_index":830,"t":{"87":{"position":[[3111,10]]}}}],["printf(\"\\t%d",{"_index":832,"t":{"87":{"position":[[3162,12]]}}}],["printf(first?first=0,\"%d",{"_index":881,"t":{"90":{"position":[[1398,27],[1528,27],[1661,27]]},"92":{"position":[[1079,27],[1201,27],[1326,27]]}}}],["priority_queue,greater1t",{"_index":1994,"t":{"373":{"position":[[387,4]]}}}],["t>的元素对序列。序列中的元素以const",{"_index":497,"t":{"70":{"position":[[68,21]]}}}],["t[maxn",{"_index":841,"t":{"90":{"position":[[208,9]]},"92":{"position":[[208,9]]},"94":{"position":[[290,9]]}}}],["t[rt].d=pre[rt",{"_index":923,"t":{"94":{"position":[[437,16]]}}}],["t[rt].l=create(l1,p1",{"_index":924,"t":{"94":{"position":[[454,20]]}}}],["t[rt].l=mid_po_build(la,p1",{"_index":863,"t":{"90":{"position":[[824,26]]},"92":{"position":[[579,26]]}}}],["t[rt].l=mid_pr_build(la,p1",{"_index":858,"t":{"90":{"position":[[481,26]]},"92":{"position":[[350,26]]}}}],["t[rt].r=create(p1+1,r1,l2+p2+1,r2",{"_index":926,"t":{"94":{"position":[[490,35]]}}}],["t[rt].r=mid_po_build(p1+1,ra,lb+p2,rb",{"_index":865,"t":{"90":{"position":[[885,37]]},"92":{"position":[[621,37]]}}}],["t[rt].r=mid_pr_build(p1+1,ra,lb+p2+1,rb",{"_index":860,"t":{"90":{"position":[[542,41]]},"92":{"position":[[392,41]]}}}],["t\\bar{\\alpha}_tαˉt",{"_index":2643,"t":{"514":{"position":[[551,21]]},"706":{"position":[[551,21]]}}}],["t\\sigma_tσt",{"_index":2660,"t":{"516":{"position":[[346,13]]},"708":{"position":[[346,13]]}}}],["t\\vert",{"_index":1481,"t":{"253":{"position":[[325,6]]}}}],["t\\vert)\\tag{3}d8​(p,q)=max(∣x−s∣,∣y−t∣)(3",{"_index":1485,"t":{"253":{"position":[[431,42]]}}}],["tag{10",{"_index":2205,"t":{"414":{"position":[[1304,8]]}}}],["tag{1}",{"_index":1002,"t":{"127":{"position":[[144,12]]}}}],["tag{1}3×3×3×4=108(1",{"_index":2112,"t":{"399":{"position":[[168,21]]}}}],["tag{1}acc=len(y)∑i(predi​==yi​)​(1",{"_index":2486,"t":{"487":{"position":[[196,36]]}}}],["tag{1}attention(q,k,v)=softmax(dk​​qkt​)v(1",{"_index":2330,"t":{"428":{"position":[[3142,45]]}}}],["tag{1}l(y,z)=max(0,−y∗z)(1",{"_index":2524,"t":{"499":{"position":[[406,28]]}}}],["tag{1}min",{"_index":2381,"t":{"450":{"position":[[113,10]]}}}],["tag{1}pe(pos,2i)​=sin(100002i/dmodel​pos​)(1",{"_index":1330,"t":{"215":{"position":[[309,46]]},"542":{"position":[[309,46]]}}}],["tag{1}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(1",{"_index":2459,"t":{"471":{"position":[[328,65]]}}}],["tag{1}x1[0,:,:]+x2[0,:,:](1",{"_index":3311,"t":{"744":{"position":[[894,29]]}}}],["tag{1}yi,j​=h,w∑​wi,j,h,w​∗xh,w​(1",{"_index":2464,"t":{"476":{"position":[[142,36]]}}}],["tag{1}σ(x)=1+e−x1​(1",{"_index":2124,"t":{"407":{"position":[[47,22]]}}}],["tag{2}",{"_index":1007,"t":{"129":{"position":[[59,12]]}}}],["tag{2}3×3××3=27(2",{"_index":2116,"t":{"401":{"position":[[100,19]]}}}],["tag{2}d4​(p,q)=∣x−s∣+∣y−t∣(2",{"_index":1482,"t":{"253":{"position":[[332,30]]}}}],["tag{2}dxd",{"_index":2130,"t":{"407":{"position":[[145,14]]}}}],["tag{2}l(w,b)+2λ​∥w∥12​(2",{"_index":2388,"t":{"452":{"position":[[110,26]]}}}],["tag{2}pe(pos,2i+1)​=cos(100002i/dmodel​pos​)(2",{"_index":1332,"t":{"215":{"position":[[457,48]]},"542":{"position":[[457,48]]}}}],["tag{2}x1[1,:,:]+x2[1,:,:](2",{"_index":3314,"t":{"744":{"position":[[972,29]]}}}],["tag{2}yi,j​=h,w∑​wi,j,h,w​∗xh,w​=a,b∑​vi,j,a,b​∗xi+a,j+b​(2",{"_index":2467,"t":{"476":{"position":[[364,61]]}}}],["tag{3}1×1×3×4=12(3",{"_index":2121,"t":{"403":{"position":[[112,20]]}}}],["tag{3}a",{"_index":1015,"t":{"131":{"position":[[210,11]]}}}],["tag{3}f(x)={0x​x<0x≥0​(3",{"_index":2142,"t":{"409":{"position":[[77,26]]}}}],["tag{3}pe(pos+k,2i)=pe(pos,2i)×pe(k,2i+1)+pe(pos,2i+1)×pe(k,2i)pe(pos+k,2i+1)=pe(pos,2i+1)×pe(k,2i+1)−pe(pos,2i)×pe(k,2i)​(3",{"_index":1340,"t":{"215":{"position":[[928,125]]},"542":{"position":[[928,125]]}}}],["tag{3}x1[2,:,:]+x2[2,:,:](3",{"_index":3317,"t":{"744":{"position":[[1050,29]]}}}],["tag{3}yi,j​=a,b∑​vi,j,a,b​∗xi+a,j+b​=a,b∑​va,b​∗xi+a,j+b​(3",{"_index":2470,"t":{"476":{"position":[[636,61]]}}}],["tag{3}∂w∂​(l(w,b)+2λ​∥w∥12​)=∂w∂l(w,b)​+λw(3",{"_index":2395,"t":{"452":{"position":[[347,46]]}}}],["tag{4}dxdf(x)​={01​x<0x≥0​(4",{"_index":2145,"t":{"409":{"position":[[213,30]]}}}],["tag{4}inputembedding(pos,i)=wordembedding(pos,i)+positionencoding(pos,i)(4",{"_index":1344,"t":{"215":{"position":[[1234,76]]},"542":{"position":[[1234,76]]}}}],["tag{4}wt+1​=(1−ηλ)wt​+η∂wt​∂l(wt​,bt​)​(4",{"_index":2402,"t":{"452":{"position":[[501,43]]}}}],["tag{4}yi,j​=a,b∑​va,b​∗xi+a,j+b​=a=−δ∑δ​b=−δ∑δ​va,b​∗xia​,j+b​(4",{"_index":2475,"t":{"478":{"position":[[194,66]]}}}],["tag{5}lossmse​=∑[y−f(x)]2(5",{"_index":2151,"t":{"412":{"position":[[112,29]]}}}],["tag{5}shapeoutput​=strideshapeinput​−sizekernel​+2∗padding​+1(5",{"_index":2477,"t":{"478":{"position":[[398,65]]}}}],["tag{6}[o1​o2​​]=[α1,1′​α1,2′​​α2,1′​α2,2′​​][v1​v2​​](6",{"_index":1410,"t":{"229":{"position":[[732,57]]},"556":{"position":[[732,57]]}}}],["tag{6}∥y−f(x)∥2​=2∑[y−f(x)]2​(6",{"_index":2156,"t":{"412":{"position":[[220,33]]}}}],["tag{7",{"_index":2173,"t":{"414":{"position":[[403,7]]}}}],["tag{7}[o1​o2​​]=[α1,1′​α1,2′​​0α2,2′​​][v1​v2​​](7",{"_index":1412,"t":{"229":{"position":[[1026,52]]},"556":{"position":[[1026,52]]}}}],["take",{"_index":1449,"t":{"248":{"position":[[53,4]]},"424":{"position":[[24,5]]}}}],["target",{"_index":1224,"t":{"194":{"position":[[635,6],[828,6],[938,6],[984,6]]},"620":{"position":[[227,6]]}}}],["target_cc",{"_index":1230,"t":{"194":{"position":[[692,9]]}}}],["target_cc_prefix)gcc",{"_index":1231,"t":{"194":{"position":[[705,22]]}}}],["target_cc_prefix)ld",{"_index":1251,"t":{"194":{"position":[[1063,21]]}}}],["target_class",{"_index":1878,"t":{"334":{"position":[[634,14]]},"616":{"position":[[634,14]]}}}],["target_direct",{"_index":1722,"t":{"320":{"position":[[1160,16]]},"602":{"position":[[1160,16]]}}}],["target_direction:mapp",{"_index":1723,"t":{"320":{"position":[[1186,23]]},"602":{"position":[[1186,23]]}}}],["target_embed",{"_index":1662,"t":{"314":{"position":[[1005,16]]},"596":{"position":[[1005,16]]}}}],["target_ld",{"_index":1250,"t":{"194":{"position":[[1050,9]]}}}],["target_prompt",{"_index":1631,"t":{"312":{"position":[[115,14]]},"594":{"position":[[115,14]]}}}],["target_prompts]).to(devic",{"_index":1649,"t":{"314":{"position":[[369,27]]},"596":{"position":[[369,27]]}}}],["target_tokenized_prompt",{"_index":1648,"t":{"314":{"position":[[305,24],[784,24]]},"596":{"position":[[305,24],[784,24]]}}}],["task",{"_index":1876,"t":{"334":{"position":[[585,4]]},"387":{"position":[[337,11]]},"391":{"position":[[909,6]]},"616":{"position":[[585,4]]},"672":{"position":[[1131,5]]},"754":{"position":[[1131,5]]}}}],["teacher",{"_index":1397,"t":{"227":{"position":[[146,11]]},"229":{"position":[[429,19]]},"554":{"position":[[146,11]]},"556":{"position":[[429,19]]}}}],["techniqu",{"_index":2416,"t":{"462":{"position":[[29,9]]}}}],["tell",{"_index":1456,"t":{"248":{"position":[[129,4]]}}}],["temp",{"_index":3402,"t":{"786":{"position":[[158,4],[210,4],[253,13],[270,5],[377,4],[516,5]]},"788":{"position":[[244,4],[296,4],[339,13],[356,5],[463,4],[602,5]]}}}],["templat",{"_index":1862,"t":{"332":{"position":[[103,25],[632,9],[647,9],[739,18]]},"614":{"position":[[103,25],[632,9],[647,9],[739,18]]}}}],["tensor",{"_index":3304,"t":{"744":{"position":[[637,10]]}}}],["tensor(0.2684",{"_index":2222,"t":{"414":{"position":[[1695,14],[1881,14]]}}}],["tensor(1",{"_index":2577,"t":{"504":{"position":[[1134,11]]}}}],["tensor(2",{"_index":2579,"t":{"504":{"position":[[1157,11]]}}}],["tensor(3",{"_index":2581,"t":{"504":{"position":[[1180,11]]}}}],["tensor(4",{"_index":2578,"t":{"504":{"position":[[1146,10]]}}}],["tensor(4))8(tensor(2",{"_index":2501,"t":{"487":{"position":[[475,22]]}}}],["tensor(5",{"_index":2580,"t":{"504":{"position":[[1169,10]]}}}],["tensor(5))9(tensor(3",{"_index":2502,"t":{"487":{"position":[[498,22]]}}}],["tensor(6",{"_index":2582,"t":{"504":{"position":[[1192,10]]}}}],["tensor(6))10'''11a",{"_index":2503,"t":{"487":{"position":[[521,18]]}}}],["tensor([1",{"_index":2574,"t":{"504":{"position":[[947,10],[965,10],[1328,11]]}}}],["tensor([3",{"_index":2583,"t":{"504":{"position":[[1367,11]]}}}],["tensor([4",{"_index":2510,"t":{"487":{"position":[[686,10]]},"504":{"position":[[1348,10]]}}}],["tensor([6",{"_index":2512,"t":{"487":{"position":[[726,10]]},"504":{"position":[[1387,10]]}}}],["tensor([[9",{"_index":2555,"t":{"504":{"position":[[558,11]]}}}],["tensor([[[0",{"_index":3300,"t":{"744":{"position":[[426,14],[541,13]]}}}],["tensorflow框架,可以使用tensorboard",{"_index":3144,"t":{"660":{"position":[[3,36]]}}}],["tensor的*乘法是对tensor",{"_index":2552,"t":{"504":{"position":[[454,28]]}}}],["term",{"_index":2242,"t":{"424":{"position":[[110,6]]}}}],["terminal_proxy.sh",{"_index":3382,"t":{"776":{"position":[[0,23]]}}}],["test",{"_index":191,"t":{"45":{"position":[[29,4],[101,5],[232,4]]},"462":{"position":[[224,4],[277,7]]},"464":{"position":[[82,4],[240,4]]},"466":{"position":[[95,4],[115,5]]},"531":{"position":[[1771,5],[2519,4]]}}}],["test.first",{"_index":194,"t":{"45":{"position":[[107,10]]}}}],["test.four",{"_index":200,"t":{"45":{"position":[[176,9]]}}}],["test.second",{"_index":195,"t":{"45":{"position":[[125,11]]}}}],["test.third",{"_index":197,"t":{"45":{"position":[[149,10]]}}}],["test_acc",{"_index":2771,"t":{"531":{"position":[[2367,8],[2453,10]]}}}],["test_acc:.3f",{"_index":2775,"t":{"531":{"position":[[2528,16]]}}}],["test_it",{"_index":2729,"t":{"531":{"position":[[1391,10],[2405,10],[2668,9],[2787,10]]}}}],["testdata.json",{"_index":3101,"t":{"635":{"position":[[557,13]]}}}],["text",{"_index":1880,"t":{"334":{"position":[[669,4]]},"347":{"position":[[78,4],[597,4],[748,4],[837,4]]},"363":{"position":[[18,4]]},"375":{"position":[[413,6],[590,5]]},"377":{"position":[[699,5]]},"409":{"position":[[130,7]]},"560":{"position":[[903,4],[1099,4]]},"616":{"position":[[669,4]]},"689":{"position":[[903,4],[1099,4]]},"725":{"position":[[16,4]]},"765":{"position":[[132,4]]},"772":{"position":[[80,4]]}}}],["text_direct",{"_index":1867,"t":{"332":{"position":[[616,15]]},"614":{"position":[[616,15]]}}}],["text_featur",{"_index":1724,"t":{"320":{"position":[[1230,13]]},"332":{"position":[[243,13]]},"602":{"position":[[1230,13]]},"614":{"position":[[243,13]]}}}],["textual",{"_index":2066,"t":{"391":{"position":[[455,7],[522,7]]}}}],["text{subject",{"_index":2376,"t":{"450":{"position":[[58,13]]}}}],["theta",{"_index":2380,"t":{"450":{"position":[[106,6],[192,23]]},"514":{"position":[[655,8]]},"706":{"position":[[655,8]]}}}],["third",{"_index":188,"t":{"43":{"position":[[52,6]]}}}],["third:\"method",{"_index":203,"t":{"45":{"position":[[258,13]]}}}],["those",{"_index":3188,"t":{"672":{"position":[[970,5]]},"754":{"position":[[970,5]]}}}],["thpf",{"_index":1572,"t":{"279":{"position":[[522,14]]}}}],["thread",{"_index":1077,"t":{"178":{"position":[[556,8],[565,6],[2169,6],[2238,8],[2247,6],[2324,6]]}}}],["three",{"_index":204,"t":{"45":{"position":[[272,7]]}}}],["time",{"_index":2105,"t":{"397":{"position":[[93,6]]},"399":{"position":[[135,6],[144,6],[153,6]]},"401":{"position":[[70,6],[79,6],[86,6]]},"403":{"position":[[7,6],[80,6],[89,6],[98,6]]},"436":{"position":[[59,6]]},"438":{"position":[[193,6],[252,6],[359,6]]},"442":{"position":[[101,6],[141,6],[174,6]]},"462":{"position":[[243,6],[290,5]]},"464":{"position":[[187,6]]},"469":{"position":[[67,6],[98,6]]},"471":{"position":[[13,6],[22,6],[55,6],[66,6],[77,6],[115,6],[148,6],[158,6],[424,6],[435,6],[444,6],[453,6],[463,6]]},"672":{"position":[[422,5]]},"679":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"754":{"position":[[422,5]]},"761":{"position":[[441,6],[450,6],[552,6],[605,6],[832,6],[871,6],[1022,6]]},"822":{"position":[[143,6]]},"827":{"position":[[166,6]]},"829":{"position":[[68,6]]},"839":{"position":[[134,6]]},"841":{"position":[[70,6],[89,6],[115,6]]}}}],["time.h",{"_index":104,"t":{"34":{"position":[[227,6]]}}}],["timer",{"_index":2747,"t":{"531":{"position":[[1784,6]]}}}],["timer.start",{"_index":2757,"t":{"531":{"position":[[1950,13]]}}}],["timer.stop",{"_index":2766,"t":{"531":{"position":[[2142,12]]}}}],["timer.sum():.1f",{"_index":2777,"t":{"531":{"position":[[2579,16]]}}}],["tip",{"_index":3043,"t":{"623":{"position":[[809,4]]}}}],["titile(if",{"_index":3364,"t":{"772":{"position":[[66,9]]}}}],["titl",{"_index":3359,"t":{"770":{"position":[[321,7]]},"772":{"position":[[100,5]]}}}],["title/window",{"_index":3363,"t":{"772":{"position":[[53,12]]}}}],["title文字不能垂直居中,可以更换为window",{"_index":3358,"t":{"770":{"position":[[295,25]]}}}],["tlpf",{"_index":1552,"t":{"277":{"position":[[945,14]]}}}],["tmp",{"_index":763,"t":{"87":{"position":[[1435,5],[1545,5],[2882,5]]}}}],["tmp[0",{"_index":766,"t":{"87":{"position":[[1555,7],[2915,8],[3051,7]]}}}],["tmp[2",{"_index":768,"t":{"87":{"position":[[1567,7]]}}}],["tmp[20",{"_index":821,"t":{"87":{"position":[[2832,8]]}}}],["tmp[3",{"_index":824,"t":{"87":{"position":[[2944,8],[3059,8]]}}}],["tmp[max_vertex_num",{"_index":756,"t":{"87":{"position":[[1156,20]]}}}],["toc",{"_index":75,"t":{"29":{"position":[[17,5]]}}}],["todo(\"start",{"_index":1140,"t":{"178":{"position":[[2148,11]]}}}],["token",{"_index":1633,"t":{"314":{"position":[[20,9],[577,8]]},"316":{"position":[[44,8],[179,8]]},"508":{"position":[[120,7],[323,5],[563,5],[636,11]]},"510":{"position":[[174,5],[261,5],[302,5]]},"512":{"position":[[67,5],[116,5]]},"514":{"position":[[56,24]]},"519":{"position":[[76,5],[137,5]]},"526":{"position":[[34,5]]},"560":{"position":[[89,5],[411,11],[565,9]]},"562":{"position":[[575,9]]},"565":{"position":[[72,12],[250,9]]},"567":{"position":[[2066,7]]},"596":{"position":[[20,9],[577,8]]},"598":{"position":[[44,8],[179,8]]},"672":{"position":[[249,5]]},"674":{"position":[[37,5]]},"676":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"679":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"681":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"683":{"position":[[230,5],[300,6]]},"689":{"position":[[89,5],[411,11],[565,9]]},"691":{"position":[[575,9]]},"694":{"position":[[72,12],[250,9]]},"696":{"position":[[2067,7]]},"700":{"position":[[120,7],[323,5],[563,5],[636,11]]},"702":{"position":[[174,5],[261,5],[302,5]]},"704":{"position":[[67,5],[116,5]]},"706":{"position":[[56,24]]},"711":{"position":[[76,5],[137,5]]},"718":{"position":[[34,5]]},"723":{"position":[[1245,8],[1290,6],[1308,6],[1342,5],[1371,15],[1397,12],[1420,12],[1445,5],[1467,5],[1577,5],[1614,6],[1639,5],[1675,37],[1720,5]]},"754":{"position":[[249,5]]},"756":{"position":[[37,5]]},"758":{"position":[[26,5],[186,6],[897,5],[940,5],[1090,5],[1117,5],[1295,6],[1764,6],[1818,6],[1853,6],[1995,5]]},"761":{"position":[[207,5],[259,5],[283,5],[303,5],[380,5],[401,11]]},"763":{"position":[[47,16],[244,21],[296,9],[410,9],[668,9]]},"765":{"position":[[12,9]]},"767":{"position":[[230,5],[300,6]]}}}],["tokenizer、quant",{"_index":2853,"t":{"562":{"position":[[388,19]]},"691":{"position":[[388,19]]}}}],["tokenize后为tensor",{"_index":1640,"t":{"314":{"position":[[161,19],[433,19]]},"596":{"position":[[161,19],[433,19]]}}}],["tokens。vqgan",{"_index":3279,"t":{"723":{"position":[[1269,12]]}}}],["token或random",{"_index":2044,"t":{"389":{"position":[[92,12]]}}}],["token所对应的输出向量,随机初始化两个相同维度的向量,分别与输出向量做dot",{"_index":2090,"t":{"391":{"position":[[1264,57]]}}}],["token进行遮挡后,喂入encoder中。对于每个被mask掉的词汇,bert",{"_index":2045,"t":{"389":{"position":[[105,68]]}}}],["token)出发进行思考,产生了自回归模型是否有必要与向量量化(vector",{"_index":2621,"t":{"510":{"position":[[186,38]]},"702":{"position":[[186,38]]}}}],["top",{"_index":941,"t":{"96":{"position":[[132,6],[161,6]]},"375":{"position":[[0,3],[73,3],[364,3],[433,3],[492,3]]},"377":{"position":[[0,3]]},"379":{"position":[[62,3],[70,3]]}}}],["topologicalsort",{"_index":682,"t":{"85":{"position":[[1758,30]]}}}],["torch",{"_index":2135,"t":{"407":{"position":[[299,5]]},"409":{"position":[[288,5]]},"428":{"position":[[3234,5]]},"531":{"position":[[7,5],[37,5],[112,5]]},"740":{"position":[[7,5]]},"744":{"position":[[285,5]]}}}],["torch.cat([clip.tokenize(p",{"_index":1635,"t":{"314":{"position":[[57,27],[332,27]]},"596":{"position":[[57,27],[332,27]]}}}],["torch.concat((a",{"_index":2545,"t":{"504":{"position":[[295,16]]}}}],["torch.linspac",{"_index":2136,"t":{"407":{"position":[[309,15]]},"409":{"position":[[298,15]]}}}],["torch.log",{"_index":2211,"t":{"414":{"position":[[1444,9]]}}}],["torch.log(torch.softmax(predict",{"_index":2217,"t":{"414":{"position":[[1590,32]]}}}],["torch.nn",{"_index":2133,"t":{"407":{"position":[[260,8]]},"409":{"position":[[249,8]]},"414":{"position":[[1481,8]]},"531":{"position":[[64,8]]}}}],["torch.nn.crossentropyloss",{"_index":2741,"t":{"531":{"position":[[1630,27]]}}}],["torch.nn.crossentropyloss相当于torch.softmax",{"_index":2210,"t":{"414":{"position":[[1400,41]]}}}],["torch.nn.funct",{"_index":2332,"t":{"428":{"position":[[3247,19]]}}}],["torch.nn.modul",{"_index":2713,"t":{"531":{"position":[[971,17]]}}}],["torch.nn.nllloss",{"_index":2212,"t":{"414":{"position":[[1456,17]]}}}],["torch.nn.sequenti",{"_index":2692,"t":{"531":{"position":[[505,20]]}}}],["torch.optim.sgd(net.paramet",{"_index":2739,"t":{"531":{"position":[[1582,33]]}}}],["torch.rand(4",{"_index":2537,"t":{"504":{"position":[[104,13],[143,13]]}}}],["torch.reshape(x",{"_index":3296,"t":{"744":{"position":[[347,16]]}}}],["torch.size([2",{"_index":2544,"t":{"504":{"position":[[269,14]]}}}],["torch.size([4",{"_index":2549,"t":{"504":{"position":[[390,14]]}}}],["torch.stack((a",{"_index":2540,"t":{"504":{"position":[[182,15]]}}}],["torch.sum(y_hat.argmax(dim=1",{"_index":2726,"t":{"531":{"position":[[1328,29]]}}}],["torch.tensor([1",{"_index":2220,"t":{"414":{"position":[[1640,16],[1823,16]]},"487":{"position":[[371,16]]},"504":{"position":[[1043,16]]}}}],["torch.tensor([4",{"_index":2495,"t":{"487":{"position":[[399,16]]},"504":{"position":[[1071,16]]}}}],["torch.tensor([[0",{"_index":2277,"t":{"428":{"position":[[955,17],[1135,17],[3539,17],[3719,17]]}}}],["torch.tensor([[0.1",{"_index":2562,"t":{"504":{"position":[[777,19]]}}}],["torch.tensor([[1",{"_index":2279,"t":{"428":{"position":[[1045,17],[3629,17]]},"487":{"position":[[542,17]]},"504":{"position":[[1211,17]]}}}],["torch.tensor([[2",{"_index":2216,"t":{"414":{"position":[[1543,17],[1778,17]]}}}],["torch.tensor([[3",{"_index":2553,"t":{"504":{"position":[[487,17]]}}}],["torch.tensor([[4",{"_index":2505,"t":{"487":{"position":[[584,17]]},"504":{"position":[[1252,17]]}}}],["torch.tensor(input",{"_index":2256,"t":{"428":{"position":[[388,20],[3435,20]]}}}],["torch.tensor(np.arange(9",{"_index":3295,"t":{"744":{"position":[[295,26]]}}}],["torchaudio",{"_index":1611,"t":{"306":{"position":[[74,10]]},"588":{"position":[[74,10]]}}}],["torchvis",{"_index":1610,"t":{"306":{"position":[[62,11]]},"588":{"position":[[62,11]]}}}],["tqdm",{"_index":1616,"t":{"306":{"position":[[147,4]]},"588":{"position":[[147,4]]}}}],["trace",{"_index":3292,"t":{"737":{"position":[[144,5]]}}}],["trade",{"_index":2916,"t":{"567":{"position":[[2451,29]]},"696":{"position":[[2452,29]]}}}],["train",{"_index":1705,"t":{"320":{"position":[[334,5]]},"349":{"position":[[987,12]]},"428":{"position":[[828,9]]},"462":{"position":[[214,5]]},"464":{"position":[[144,8]]},"466":{"position":[[0,5],[14,5]]},"531":{"position":[[1758,6],[2492,5]]},"560":{"position":[[484,8],[980,8]]},"602":{"position":[[334,5]]},"623":{"position":[[799,9]]},"635":{"position":[[340,9]]},"676":{"position":[[1518,7]]},"689":{"position":[[484,8],[980,8]]},"758":{"position":[[1518,7]]}}}],["train(lenet",{"_index":2784,"t":{"531":{"position":[[2762,12]]}}}],["train(net",{"_index":2727,"t":{"531":{"position":[[1368,10]]}}}],["train_acc",{"_index":2769,"t":{"531":{"position":[[2187,9],[2349,10]]}}}],["train_acc:.3f",{"_index":2774,"t":{"531":{"position":[[2502,16]]}}}],["train_it",{"_index":2728,"t":{"531":{"position":[[1379,11],[2656,11],[2775,11]]}}}],["train_l",{"_index":2767,"t":{"531":{"position":[[2155,7],[2339,9]]}}}],["train_l:.3f",{"_index":2773,"t":{"531":{"position":[[2477,14]]}}}],["train_lay",{"_index":1703,"t":{"320":{"position":[[280,12],[379,12],[394,14]]},"602":{"position":[[280,12],[379,12],[394,14]]}}}],["trained的cnn,该cnn通常使用预训练的incept",{"_index":1932,"t":{"349":{"position":[[89,33]]}}}],["training&fin",{"_index":2086,"t":{"391":{"position":[[1030,13]]}}}],["tran",{"_index":3034,"t":{"623":{"position":[[691,5],[707,5]]}}}],["transform",{"_index":337,"t":{"60":{"position":[[1413,9]]},"208":{"position":[[20,23]]},"213":{"position":[[0,11]]},"225":{"position":[[2,11],[104,11],[486,18],[609,11]]},"330":{"position":[[114,14],[240,13],[463,20],[587,16]]},"339":{"position":[[0,11]]},"393":{"position":[[412,11]]},"434":{"position":[[93,11]]},"442":{"position":[[340,11]]},"535":{"position":[[20,23]]},"540":{"position":[[0,11]]},"552":{"position":[[2,11],[104,11],[486,18],[609,11]]},"612":{"position":[[114,14],[240,13],[463,20],[587,16]]},"631":{"position":[[56,12]]},"633":{"position":[[57,11],[101,12]]},"654":{"position":[[154,20],[175,11],[247,11],[306,11]]},"656":{"position":[[29,11],[155,11]]},"658":{"position":[[120,11]]},"672":{"position":[[330,12],[472,12],[782,11]]},"679":{"position":[[217,28]]},"681":{"position":[[270,12],[320,11]]},"723":{"position":[[866,11],[1205,12]]},"725":{"position":[[47,16],[95,12]]},"754":{"position":[[330,12],[472,12],[782,11]]},"761":{"position":[[217,28]]},"763":{"position":[[270,12],[320,11]]}}}],["transformer_lay",{"_index":1840,"t":{"330":{"position":[[484,17]]},"612":{"position":[[484,17]]}}}],["transformerencoder(transformer_lay",{"_index":1846,"t":{"330":{"position":[[631,37]]},"612":{"position":[[631,37]]}}}],["transformerencoderlayer(d_model=512",{"_index":1841,"t":{"330":{"position":[[504,36]]},"612":{"position":[[504,36]]}}}],["transformermapperv2(nn.modul",{"_index":1827,"t":{"330":{"position":[[78,31]]},"612":{"position":[[78,31]]}}}],["transformers)本身是一种预训练的模型架构,通常是在大规模无标签数据上进行预训练,然后在特定任务上进行微调。bert",{"_index":2039,"t":{"387":{"position":[[98,92]]}}}],["transformer中有lay",{"_index":1838,"t":{"330":{"position":[[413,18]]},"612":{"position":[[413,18]]}}}],["transformer实战练习,代码见github",{"_index":3070,"t":{"631":{"position":[[5,28]]}}}],["transformer是sequ",{"_index":1321,"t":{"208":{"position":[[70,20]]},"535":{"position":[[70,20]]}}}],["transformer由encoder和decoder组成,编码器和解码器都包含6个block",{"_index":1324,"t":{"210":{"position":[[0,58]]},"537":{"position":[[0,58]]}}}],["transformer的推理阶段,自回归类型的decoder根据分词方式的不同,一个词汇一个词汇的输出,将当前时间步之前生成的所有词汇作为输入load进入decoder中。但在训练时如果遵从同样的生成范式会大大降低效率,并且面临则一步错步步错的风险(error",{"_index":1395,"t":{"227":{"position":[[0,131]]},"554":{"position":[[0,131]]}}}],["transformer训练时采取的teach",{"_index":1376,"t":{"221":{"position":[[826,33]]},"548":{"position":[[826,33]]}}}],["transformer(residu",{"_index":3140,"t":{"654":{"position":[[120,20]]}}}],["treat",{"_index":1216,"t":{"194":{"position":[[336,7]]}}}],["treebank",{"_index":2081,"t":{"391":{"position":[[747,33]]}}}],["true",{"_index":231,"t":{"45":{"position":[[834,5]]},"72":{"position":[[231,11]]},"76":{"position":[[198,16]]},"83":{"position":[[698,5],[1559,5]]},"85":{"position":[[1047,5],[1108,6]]},"87":{"position":[[71,4]]}}}],["true;//加入拓扑排序的顶点为n",{"_index":698,"t":{"85":{"position":[[2214,30]]}}}],["truncat",{"_index":1656,"t":{"314":{"position":[[725,19]]},"596":{"position":[[725,19]]}}}],["trung",{"_index":3033,"t":{"623":{"position":[[685,5],[730,5]]}}}],["truth",{"_index":1959,"t":{"351":{"position":[[755,6]]},"389":{"position":[[248,21]]}}}],["truth一次性喂到decod",{"_index":1399,"t":{"227":{"position":[[176,38]]},"554":{"position":[[176,38]]}}}],["truth做bc",{"_index":3477,"t":{"820":{"position":[[64,9]]}}}],["truth做cross",{"_index":2098,"t":{"395":{"position":[[119,11]]}}}],["truth对nois",{"_index":1987,"t":{"361":{"position":[[556,11]]}}}],["truth就是sampl",{"_index":1952,"t":{"351":{"position":[[437,18]]}}}],["truth就是第3步中sample出的噪声ϵ\\epsilon",{"_index":1303,"t":{"204":{"position":[[783,32]]}}}],["truth的bc",{"_index":3480,"t":{"820":{"position":[[119,9]]}}}],["truth的策略,但是还额外需要一个encoder来产生lat",{"_index":1954,"t":{"351":{"position":[[553,34]]}}}],["tsinghua",{"_index":1621,"t":{"308":{"position":[[30,8]]},"590":{"position":[[30,8]]}}}],["ttt",{"_index":1993,"t":{"373":{"position":[[367,17]]},"514":{"position":[[594,3],[772,3]]},"516":{"position":[[365,3]]},"706":{"position":[[594,3],[772,3]]},"708":{"position":[[365,3]]}}}],["ttt从t,…,1t,\\ldots,1t,…,1范围循环ttt",{"_index":1307,"t":{"206":{"position":[[54,33]]}}}],["ttt是从1,…,t1,\\ldots,t1,…,t范围中sample出的一个integ",{"_index":1293,"t":{"204":{"position":[[50,46]]}}}],["ttt计数的循环,若t>1t>1t>1,则从normal",{"_index":1308,"t":{"206":{"position":[[88,34]]}}}],["tune",{"_index":1394,"t":{"225":{"position":[[580,28]]},"334":{"position":[[1119,9]]},"387":{"position":[[267,13]]},"552":{"position":[[580,28]]},"616":{"position":[[1119,9]]},"623":{"position":[[139,10],[158,54],[459,6]]}}}],["tuning范式与scratch范式的训练效果做了对比,其中scratch范式即使用传统的随机初始化的方式从头训练整个分类网络。可以看到预训练&微调的训练范式可以加速模型的收敛(converg",{"_index":2087,"t":{"391":{"position":[[1044,109]]}}}],["tutori",{"_index":3263,"t":{"685":{"position":[[16,9],[95,9]]}}}],["two",{"_index":199,"t":{"45":{"position":[[170,5]]},"560":{"position":[[970,3]]},"672":{"position":[[1246,3]]},"689":{"position":[[970,3]]},"754":{"position":[[1246,3]]}}}],["tx0+1−αˉtϵ,t)∥2(1)\\nabla_{\\theta}\\left\\|\\boldsymbol{\\epsilon",{"_index":1296,"t":{"204":{"position":[[196,71]]}}}],["type(m",{"_index":2732,"t":{"531":{"position":[[1451,7],[1475,7]]}}}],["typedef",{"_index":206,"t":{"45":{"position":[[323,7],[540,7]]},"47":{"position":[[0,7]]},"83":{"position":[[126,7],[274,7]]},"85":{"position":[[198,7],[415,7]]},"87":{"position":[[165,7],[185,7],[357,7],[390,7],[489,7],[585,7]]},"90":{"position":[[100,7]]},"92":{"position":[[100,7]]},"94":{"position":[[186,7]]}}}],["typic",{"_index":2591,"t":{"508":{"position":[[78,9]]},"700":{"position":[[78,9]]}}}],["t}\\left[\\left\\|\\varepsilon",{"_index":2632,"t":{"514":{"position":[[240,26]]},"706":{"position":[[240,26]]}}}],["u",{"_index":85,"t":{"31":{"position":[[198,1],[218,1],[239,1]]},"87":{"position":[[1992,2],[2264,3],[2310,6],[2512,9]]},"347":{"position":[[638,1],[696,1],[810,1]]},"725":{"position":[[38,1]]},"772":{"position":[[347,1]]},"818":{"position":[[0,4],[124,1]]}}}],["u,int",{"_index":785,"t":{"87":{"position":[[2247,5]]}}}],["u==v",{"_index":791,"t":{"87":{"position":[[2361,6]]}}}],["u=q.front();//取队首顶点u",{"_index":688,"t":{"85":{"position":[[1926,20]]}}}],["u\\ell_uℓu",{"_index":2911,"t":{"567":{"position":[[2221,11]]},"696":{"position":[[2222,11]]}}}],["udg",{"_index":727,"t":{"87":{"position":[[374,4]]}}}],["ui",{"_index":1822,"t":{"327":{"position":[[43,2],[241,2],[266,12],[279,2]]},"609":{"position":[[43,2],[241,2],[266,12],[279,2]]}}}],["ull",{"_index":149,"t":{"40":{"position":[[381,3],[588,3]]}}}],["uncertainti",{"_index":2165,"t":{"414":{"position":[[139,12]]}}}],["unchang",{"_index":2490,"t":{"487":{"position":[[322,9]]}}}],["uncom",{"_index":1180,"t":{"180":{"position":[[851,9]]},"194":{"position":[[1907,9]]}}}],["uncondit",{"_index":1430,"t":{"242":{"position":[[145,13],[171,13]]}}}],["undefin",{"_index":1253,"t":{"194":{"position":[[1101,9]]}}}],["understand",{"_index":1928,"t":{"347":{"position":[[887,13]]},"391":{"position":[[125,13]]}}}],["unfreez",{"_index":1699,"t":{"320":{"position":[[161,8],[271,8],[507,8]]},"602":{"position":[[161,8],[271,8],[507,8]]}}}],["unfreeze,然后对更新哪些层做出选择,承担选择任务的功能函数:model.zssgan.zssgan.determine_opt_lay",{"_index":1697,"t":{"320":{"position":[[70,77]]},"602":{"position":[[70,77]]}}}],["unifi",{"_index":1289,"t":{"202":{"position":[[833,7]]},"672":{"position":[[1431,7]]},"723":{"position":[[2021,5]]},"754":{"position":[[1431,7]]}}}],["uniqu",{"_index":338,"t":{"60":{"position":[[1448,6],[1520,9]]}}}],["unique_copi",{"_index":339,"t":{"60":{"position":[[1491,11]]}}}],["unit",{"_index":2871,"t":{"567":{"position":[[544,6]]},"696":{"position":[[544,6]]}}}],["unordered_map",{"_index":945,"t":{"96":{"position":[[253,14]]},"114":{"position":[[136,14]]}}}],["unordered_multimap",{"_index":947,"t":{"96":{"position":[[288,22]]}}}],["unordered_multimap的操作和set或者map等的操作基本一致,唯一的区别就是不支持类似lower_bound",{"_index":986,"t":{"114":{"position":[[171,69]]}}}],["unordered_multiset",{"_index":946,"t":{"96":{"position":[[268,19]]},"114":{"position":[[151,19]]}}}],["unordered_set",{"_index":944,"t":{"96":{"position":[[238,14]]},"114":{"position":[[121,14]]}}}],["unset",{"_index":3389,"t":{"776":{"position":[[222,5],[238,5],[255,5]]}}}],["unsign",{"_index":150,"t":{"40":{"position":[[385,8]]},"80":{"position":[[1001,8]]}}}],["until",{"_index":2530,"t":{"499":{"position":[[646,5]]}}}],["unzipped_list",{"_index":3334,"t":{"748":{"position":[[389,14],[448,15]]}}}],["up",{"_index":3184,"t":{"672":{"position":[[907,2]]},"754":{"position":[[907,2]]}}}],["updat",{"_index":2438,"t":{"466":{"position":[[47,6]]}}}],["update='append",{"_index":3155,"t":{"667":{"position":[[261,16],[336,16]]},"669":{"position":[[227,16]]}}}],["upper_bound",{"_index":356,"t":{"60":{"position":[[2014,11]]}}}],["url:rec",{"_index":3267,"t":{"721":{"position":[[8,10]]}}}],["url:video",{"_index":3288,"t":{"727":{"position":[[8,9]]}}}],["us",{"_index":11,"t":{"9":{"position":[[25,5]]},"15":{"position":[[25,5]]},"21":{"position":[[25,5]]},"36":{"position":[[0,5]]},"38":{"position":[[250,5]]},"62":{"position":[[1481,5]]},"83":{"position":[[53,5]]},"85":{"position":[[119,5]]},"90":{"position":[[79,5]]},"92":{"position":[[79,5]]},"94":{"position":[[165,5]]},"178":{"position":[[931,4]]},"180":{"position":[[969,6]]},"194":{"position":[[760,4],[1206,4],[2025,6]]},"428":{"position":[[698,5],[2651,3]]},"462":{"position":[[39,4],[250,5]]},"464":{"position":[[70,4],[132,4],[215,4]]},"466":{"position":[[126,4]]},"508":{"position":[[354,5],[472,5],[973,3]]},"633":{"position":[[53,3]]},"676":{"position":[[1628,4],[1730,4]]},"700":{"position":[[354,5],[472,5],[973,3]]},"758":{"position":[[1628,4],[1730,4]]},"788":{"position":[[65,5]]}}}],["usag",{"_index":2817,"t":{"560":{"position":[[653,5]]},"689":{"position":[[653,5]]}}}],["user",{"_index":288,"t":{"58":{"position":[[839,5]]}}}],["usual",{"_index":2262,"t":{"428":{"position":[[654,7]]}}}],["util",{"_index":486,"t":{"68":{"position":[[0,11]]}}}],["utils/text_templates.pi",{"_index":1861,"t":{"332":{"position":[[76,23]]},"614":{"position":[[76,23]]}}}],["utkarsh",{"_index":3017,"t":{"623":{"position":[[497,12]]}}}],["uttr",{"_index":3096,"t":{"635":{"position":[[410,4],[575,4]]}}}],["ux+vy)}dudv\\tag{8}f(x,y)=∫−∞∞​∫−∞∞​f(u,v)ej2π(ux+vy)dudv(8",{"_index":1506,"t":{"259":{"position":[[810,60]]}}}],["ux+vy)}dxdy\\tag{7}f(u,v)=∫−∞∞​∫−∞∞​f(x,y)e−j2π(ux+vy)dxdy(7",{"_index":1503,"t":{"259":{"position":[[630,61]]}}}],["ux}du\\tag{6}f(x)=∫−∞∞​f(u)ej2πuxdu(6",{"_index":1499,"t":{"259":{"position":[[473,37]]}}}],["ux}dx\\tag{5}f(u)=∫−∞+∞​f(x)e−j2πuxdx(5",{"_index":1496,"t":{"259":{"position":[[357,39]]}}}],["ux}{n}}\\tag{10}f(x)=n1​u=0∑n−1​f(u)ejn2πux​(10",{"_index":1513,"t":{"259":{"position":[[1093,47]]}}}],["ux}{n}}\\tag{9}f(u)=x=0∑n−1​f(x)e−jn2πux​(9",{"_index":1510,"t":{"259":{"position":[[958,43]]}}}],["v",{"_index":779,"t":{"87":{"position":[[1995,8],[2612,2]]},"90":{"position":[[1118,2]]},"92":{"position":[[820,2]]},"428":{"position":[[74,1]]},"434":{"position":[[271,1]]},"438":{"position":[[562,1],[592,1]]}}}],["v,int",{"_index":786,"t":{"87":{"position":[[2253,5]]}}}],["v.push_back(w",{"_index":871,"t":{"90":{"position":[[1179,15]]},"92":{"position":[[881,15]]}}}],["v1",{"_index":3486,"t":{"827":{"position":[[21,12]]}}}],["v3",{"_index":1730,"t":{"322":{"position":[[126,2],[1319,2],[1348,2]]},"604":{"position":[[126,2],[1319,2],[1348,2]]}}}],["v3模型。在计算fid时,生成图像和真实图像分别输入到预训练的cnn中,提取出各自的特征表示向量(representation)。这两个represent",{"_index":1933,"t":{"349":{"position":[[123,105]]}}}],["v=g.vertexs[u].connectors[i];//u的后继节点v",{"_index":690,"t":{"85":{"position":[[2011,38]]}}}],["v]^{h_k",{"_index":3245,"t":{"679":{"position":[[823,8]]},"761":{"position":[[823,8]]}}}],["v_n",{"_index":1001,"t":{"127":{"position":[[137,6]]},"131":{"position":[[171,4],[203,6]]}}}],["v_t",{"_index":999,"t":{"127":{"position":[[127,4]]},"129":{"position":[[53,5]]},"131":{"position":[[193,4]]}}}],["vae",{"_index":3130,"t":{"648":{"position":[[87,3],[105,3],[249,3],[506,3]]},"650":{"position":[[13,3],[87,3],[247,3]]},"652":{"position":[[13,3],[168,3],[270,3],[312,3]]},"654":{"position":[[291,3]]},"676":{"position":[[1388,3],[1686,4],[1721,3]]},"723":{"position":[[263,3],[310,3],[322,3],[331,3],[335,25],[380,3],[401,8],[410,64],[510,3],[521,3],[549,3],[610,3],[727,3],[887,3],[2094,15]]},"758":{"position":[[1388,3],[1686,4],[1721,3]]}}}],["vaes(vari",{"_index":3134,"t":{"648":{"position":[[512,16]]}}}],["vae、gan以及diffus",{"_index":1896,"t":{"343":{"position":[[0,18]]}}}],["vae、vqvae(2017",{"_index":3272,"t":{"723":{"position":[[233,21]]}}}],["vae在训练过程中,期待ecoder输入多张图片后,输出的向量在一起符合某个随机分布(e.g",{"_index":1974,"t":{"355":{"position":[[129,47]]}}}],["vae的数学原理,从vae到diffus",{"_index":1286,"t":{"202":{"position":[[735,38]]}}}],["vae(vector",{"_index":3131,"t":{"648":{"position":[[177,10],[318,10]]}}}],["vae)与diffus",{"_index":1282,"t":{"202":{"position":[[591,14]]}}}],["vae)的训练策略是使用encoder将输入图像对应(嵌入)到一个符合某随机分布的向量,再将该向量作为decoder的输入,加上文字prompt",{"_index":1973,"t":{"355":{"position":[[39,86]]}}}],["vae,vq",{"_index":3135,"t":{"650":{"position":[[240,6]]}}}],["val",{"_index":393,"t":{"62":{"position":[[677,4],[722,6],[1038,4]]},"64":{"position":[[497,4],[698,4],[743,6],[982,4]]}}}],["valid",{"_index":2415,"t":{"462":{"position":[[13,10],[139,10]]},"464":{"position":[[34,11]]},"466":{"position":[[54,10]]},"635":{"position":[[474,5]]}}}],["valu",{"_index":502,"t":{"70":{"position":[[361,6],[510,8]]},"428":{"position":[[940,6],[1263,6],[1319,6],[1434,7],[1986,18],[2146,6],[2182,6],[2248,9],[3524,6],[3827,6],[3883,6],[3998,7],[4305,6],[4341,6],[4407,9]]},"508":{"position":[[161,6],[446,6],[629,6],[1026,6]]},"700":{"position":[[161,6],[446,6],[629,6],[1026,6]]}}}],["value^{n",{"_index":2342,"t":{"430":{"position":[[262,8]]}}}],["vanilla",{"_index":2796,"t":{"560":{"position":[[209,7]]},"689":{"position":[[209,7]]}}}],["var",{"_index":2850,"t":{"562":{"position":[[192,3]]},"672":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"676":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"679":{"position":[[1092,3]]},"681":{"position":[[266,3],[292,3],[316,3]]},"683":{"position":[[413,3],[506,3]]},"691":{"position":[[192,3]]},"723":{"position":[[987,9],[997,21]]},"754":{"position":[[42,6],[403,4],[537,3],[752,3],[910,3],[1062,3],[1215,3]]},"758":{"position":[[851,3],[864,3],[1018,3],[1787,3]]},"761":{"position":[[1092,3]]},"763":{"position":[[266,3],[292,3],[316,3]]},"765":{"position":[[27,3],[252,3]]},"767":{"position":[[413,3],[506,3]]},"790":{"position":[[260,4],[294,4],[333,4],[373,4]]}}}],["varepsilon_\\theta",{"_index":2645,"t":{"514":{"position":[[627,23]]},"706":{"position":[[627,23]]}}}],["varepsilon_\\theta\\left(x_t",{"_index":2633,"t":{"514":{"position":[[267,27]]},"706":{"position":[[267,27]]}}}],["varepsilonxt​=αˉt​x​+1−αˉt",{"_index":2642,"t":{"514":{"position":[[517,33]]},"706":{"position":[[517,33]]}}}],["variant",{"_index":2611,"t":{"508":{"position":[[793,9]]},"648":{"position":[[5,7]]},"700":{"position":[[793,9]]},"723":{"position":[[281,7]]}}}],["variat",{"_index":1278,"t":{"202":{"position":[[545,25]]},"355":{"position":[[0,18]]},"648":{"position":[[198,11],[339,11]]}}}],["vc++6.0中指针初始化为0xcccccccc",{"_index":750,"t":{"87":{"position":[[873,26]]}}}],["vc++6.0中指针初始化为0xcccccccc,如果不将指针初始化为null",{"_index":759,"t":{"87":{"position":[[1221,45]]}}}],["vec",{"_index":3408,"t":{"788":{"position":[[819,4]]}}}],["vec.empti",{"_index":3413,"t":{"788":{"position":[[970,13]]}}}],["vec.push_back(remaind",{"_index":3411,"t":{"788":{"position":[[903,25]]}}}],["vec.rbegin",{"_index":3414,"t":{"788":{"position":[[1023,13]]}}}],["vec.rend",{"_index":3415,"t":{"788":{"position":[[1043,11]]}}}],["vector",{"_index":107,"t":{"36":{"position":[[68,6]]},"62":{"position":[[0,10],[149,81],[231,27],[433,12],[1301,33],[1338,55],[1472,8]]},"83":{"position":[[29,8]]},"85":{"position":[[50,8]]},"96":{"position":[[17,17]]},"98":{"position":[[94,19],[224,12]]},"320":{"position":[[845,10]]},"506":{"position":[[87,6]]},"508":{"position":[[103,6],[815,6]]},"602":{"position":[[845,10]]},"698":{"position":[[87,6]]},"700":{"position":[[103,6],[815,6]]},"723":{"position":[[693,7]]}}}],["vector::iter",{"_index":664,"t":{"85":{"position":[[1177,24]]}}}],["vector为底层容器,堆heap",{"_index":275,"t":{"58":{"position":[[448,41]]}}}],["vector对象,存储的是int",{"_index":380,"t":{"62":{"position":[[277,27]]}}}],["vector对象,并从由迭代器first和last定义的序列[first",{"_index":385,"t":{"62":{"position":[[380,41]]}}}],["vector的s",{"_index":950,"t":{"98":{"position":[[61,18]]}}}],["vector)zzz",{"_index":2622,"t":{"512":{"position":[[92,10]]},"704":{"position":[[92,10]]}}}],["ver",{"_index":739,"t":{"87":{"position":[[644,5]]}}}],["veri",{"_index":1187,"t":{"180":{"position":[[962,4]]},"194":{"position":[[2018,4]]},"428":{"position":[[2930,4]]}}}],["verifi",{"_index":2835,"t":{"560":{"position":[[1122,6]]},"672":{"position":[[738,8]]},"689":{"position":[[1122,6]]},"754":{"position":[[738,8]]}}}],["vernum",{"_index":745,"t":{"87":{"position":[[798,7],[1339,7],[1456,8]]}}}],["vernum,arcnum",{"_index":737,"t":{"87":{"position":[[621,14]]}}}],["vers[a].firstarc",{"_index":776,"t":{"87":{"position":[[1752,18],[1793,18],[1875,17]]}}}],["vers[i].data=tmp[i",{"_index":765,"t":{"87":{"position":[[1473,21]]}}}],["vers[i].firstarc",{"_index":748,"t":{"87":{"position":[[847,17]]}}}],["version/src/project0/build目录下执行mak",{"_index":1210,"t":{"194":{"position":[[43,35]]}}}],["version/src/projecti/build",{"_index":1196,"t":{"184":{"position":[[287,33]]},"188":{"position":[[114,29]]}}}],["version/src/projecti/build文件夹下进行,即要在终端中通过cd",{"_index":1146,"t":{"180":{"position":[[17,49]]}}}],["version/src/projecti/build目录下创建.bochsrc",{"_index":1263,"t":{"194":{"position":[[1379,41]]}}}],["version/src/projecti/build目录下的makefi",{"_index":1223,"t":{"194":{"position":[[593,39],[1158,39]]}}}],["version/src/projecti/build目录下的makefie文件(由于每个project下都存在一个对应的makefil",{"_index":1217,"t":{"194":{"position":[[369,71]]}}}],["version/src/projecti/src/geeko",{"_index":1195,"t":{"184":{"position":[[232,37]]}}}],["version/src/projecti/src/geekos/main.c",{"_index":1054,"t":{"178":{"position":[[9,40]]}}}],["version/src/目录下会存在project0",{"_index":1192,"t":{"184":{"position":[[131,26]]}}}],["vert",{"_index":2377,"t":{"450":{"position":[[83,5]]},"452":{"position":[[92,5],[273,5]]}}}],["vert^2_1",{"_index":2378,"t":{"450":{"position":[[91,9]]},"452":{"position":[[100,9],[281,9]]}}}],["vert_2",{"_index":2154,"t":{"412":{"position":[[181,7]]}}}],["vertex",{"_index":207,"t":{"45":{"position":[[338,6],[414,8],[516,7],[578,8]]},"83":{"position":[[141,6],[198,8],[250,7],[312,8]]},"85":{"position":[[213,6],[289,8],[391,7],[453,8]]}}}],["vertex(int",{"_index":212,"t":{"45":{"position":[[460,10]]},"83":{"position":[[219,10]]},"85":{"position":[[335,10]]}}}],["vertexs.resize(1",{"_index":227,"t":{"45":{"position":[[752,18]]},"85":{"position":[[627,18]]}}}],["vertexs.resize(n",{"_index":224,"t":{"45":{"position":[[697,18]]},"83":{"position":[[431,18]]},"85":{"position":[[572,18]]}}}],["vertexs.s",{"_index":599,"t":{"83":{"position":[[516,16]]},"85":{"position":[[712,16]]}}}],["vertexs[id1].connectors.push_back(id2",{"_index":600,"t":{"83":{"position":[[560,39],[609,39]]},"85":{"position":[[756,39],[856,39]]}}}],["vertexs[id1].indegre",{"_index":654,"t":{"85":{"position":[[962,24]]}}}],["vertexs[id1].outdegre",{"_index":652,"t":{"85":{"position":[[796,25],[936,25]]}}}],["vertexs[id2].connectors.push_back(id1",{"_index":601,"t":{"83":{"position":[[649,39]]},"85":{"position":[[896,39]]}}}],["vertexs[id2].indegre",{"_index":653,"t":{"85":{"position":[[822,24],[1013,24]]}}}],["vertexs[id2].outdegre",{"_index":655,"t":{"85":{"position":[[987,25]]}}}],["vertexs[id].connectors.s",{"_index":613,"t":{"83":{"position":[[920,30],[1353,30]]}}}],["vertexs[id].connectors[i",{"_index":614,"t":{"83":{"position":[[968,26],[1401,26]]}}}],["vertextyp",{"_index":719,"t":{"87":{"position":[[218,10],[511,10],[941,10],[2108,10]]}}}],["vertic",{"_index":3366,"t":{"772":{"position":[[124,11]]}}}],["vga_update_interv",{"_index":1174,"t":{"180":{"position":[[749,20]]},"194":{"position":[[1805,20]]}}}],["vgaromimag",{"_index":1157,"t":{"180":{"position":[[453,12]]},"194":{"position":[[1509,12]]}}}],["vi",{"_index":3148,"t":{"667":{"position":[[26,3]]},"669":{"position":[[26,3]]}}}],["via",{"_index":2983,"t":{"618":{"position":[[110,3]]},"623":{"position":[[627,3]]}}}],["video",{"_index":3220,"t":{"676":{"position":[[1680,5]]},"685":{"position":[[121,5]]},"758":{"position":[[1680,5]]}}}],["viet",{"_index":3035,"t":{"623":{"position":[[697,4]]}}}],["vis.line([0",{"_index":3150,"t":{"667":{"position":[[116,14]]}}}],["vis.line([[0",{"_index":3158,"t":{"669":{"position":[[41,14]]}}}],["vis.line([loss.item",{"_index":3156,"t":{"667":{"position":[[289,23]]}}}],["visdom",{"_index":3146,"t":{"662":{"position":[[12,6]]},"665":{"position":[[0,28],[37,6]]},"667":{"position":[[5,6],[19,6],[32,8]]},"669":{"position":[[5,6],[19,6],[32,8]]}}}],["visdom.serv",{"_index":3147,"t":{"665":{"position":[[54,13]]}}}],["visit",{"_index":604,"t":{"83":{"position":[[753,8],[1132,8]]}}}],["visit(vertextyp",{"_index":722,"t":{"87":{"position":[[290,16]]}}}],["visit[cnt]=0",{"_index":827,"t":{"87":{"position":[[2992,13]]}}}],["visit[max_vertex_num",{"_index":780,"t":{"87":{"position":[[2077,22]]}}}],["visit[p",{"_index":800,"t":{"87":{"position":[[2568,8]]}}}],["visit[u]=0",{"_index":804,"t":{"87":{"position":[[2679,11]]}}}],["visit[u]=1",{"_index":788,"t":{"87":{"position":[[2298,11]]}}}],["visited.count(id1",{"_index":615,"t":{"83":{"position":[[998,19],[1431,19]]}}}],["visited.insert(id1",{"_index":617,"t":{"83":{"position":[[1044,20],[1497,20]]}}}],["visited.insert(start",{"_index":608,"t":{"83":{"position":[[802,22],[1216,22]]}}}],["visual",{"_index":2793,"t":{"560":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"672":{"position":[[11,6],[352,6],[1409,6]]},"674":{"position":[[168,6]]},"689":{"position":[[144,6],[281,6],[1080,6],[1338,6]]},"723":{"position":[[1262,6],[1632,6],[1668,6],[1713,6]]},"754":{"position":[[11,6],[352,6],[1409,6]]},"756":{"position":[[168,6]]}}}],["vit",{"_index":3275,"t":{"723":{"position":[[668,8],[934,16]]}}}],["viz.line([[y1",{"_index":3162,"t":{"669":{"position":[[177,14]]}}}],["viz.line([real_y_data",{"_index":3153,"t":{"667":{"position":[[208,23]]}}}],["vllm",{"_index":2857,"t":{"562":{"position":[[761,4]]},"691":{"position":[[760,4]]}}}],["vnode",{"_index":733,"t":{"87":{"position":[[504,6],[547,7]]}}}],["vnv_nvn",{"_index":1037,"t":{"163":{"position":[[68,21]]}}}],["voc1voc_1voc1​词汇向量输入时,在decoder中,voc1voc_1voc1",{"_index":1406,"t":{"229":{"position":[[177,87]]},"556":{"position":[[177,87]]}}}],["vocabulari",{"_index":1362,"t":{"221":{"position":[[6,16]]},"548":{"position":[[6,16]]}}}],["vocabulary)是一个包含了在特定语言或任务中所有可能出现的所有单词或标记的集合。在自然语言处理(nlp",{"_index":1363,"t":{"221":{"position":[[23,95]]},"548":{"position":[[23,95]]}}}],["voc中,类别种类为20类,因此在预测阶段输出的[7",{"_index":3503,"t":{"827":{"position":[[422,27]]}}}],["void",{"_index":656,"t":{"85":{"position":[[1073,4]]},"87":{"position":[[285,4],[2215,4]]},"90":{"position":[[1073,4],[1360,4],[1475,4],[1590,4]]},"92":{"position":[[775,4],[1041,4],[1148,4],[1255,4]]},"94":{"position":[[539,4]]},"178":{"position":[[82,4],[1294,4],[1833,4]]}}}],["voxceleb1",{"_index":3077,"t":{"635":{"position":[[24,10],[72,10]]}}}],["vq",{"_index":3129,"t":{"648":{"position":[[78,8],[102,2],[161,15],[310,7],[503,2]]},"650":{"position":[[10,2],[79,7],[237,2]]},"652":{"position":[[10,2],[165,2],[267,2],[309,2]]},"654":{"position":[[288,2]]},"679":{"position":[[1241,2],[1261,2]]},"681":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]},"723":{"position":[[260,2],[307,2],[328,2],[377,2],[507,2],[525,23],[553,56],[690,2],[724,2],[821,2],[884,2]]},"761":{"position":[[1241,2],[1261,2]]},"763":{"position":[[12,2],[44,2],[220,9],[407,2],[665,2]]}}}],["vqgan",{"_index":2858,"t":{"565":{"position":[[5,5]]},"652":{"position":[[0,5],[63,15]]},"676":{"position":[[1033,5],[1212,5],[1331,5]]},"681":{"position":[[346,5]]},"694":{"position":[[5,5]]},"723":{"position":[[893,5],[1234,10]]},"758":{"position":[[1033,5],[1212,5],[1331,5]]},"763":{"position":[[346,5]]}}}],["vqgan、vqvae、var、maskgit",{"_index":2620,"t":{"510":{"position":[[108,23]]},"702":{"position":[[108,23]]}}}],["vqgan(2021",{"_index":3274,"t":{"723":{"position":[[650,17]]}}}],["vqgan(2022",{"_index":3276,"t":{"723":{"position":[[677,12]]}}}],["vqgan(vector",{"_index":3136,"t":{"652":{"position":[[101,17]]}}}],["vqgan,rq",{"_index":3141,"t":{"654":{"position":[[297,8]]}}}],["vqvae",{"_index":3127,"t":{"648":{"position":[[31,5]]},"650":{"position":[[0,5]]},"676":{"position":[[1505,5]]},"681":{"position":[[64,5]]},"758":{"position":[[1505,5]]},"763":{"position":[[64,5]]},"765":{"position":[[6,5]]}}}],["vqvae、vqgan",{"_index":3117,"t":{"641":{"position":[[517,47]]}}}],["vqvae、vqga、dal",{"_index":2848,"t":{"562":{"position":[[64,21]]},"691":{"position":[[64,21]]}}}],["vrtype",{"_index":720,"t":{"87":{"position":[[248,6],[433,6]]}}}],["vtv_tvt",{"_index":1036,"t":{"163":{"position":[[47,20]]}}}],["vt​∪vn​)∗(1",{"_index":1003,"t":{"127":{"position":[[157,15]]}}}],["vt​∪vn​)∗(3",{"_index":1016,"t":{"131":{"position":[[229,15]]}}}],["vt∗(2)",{"_index":1004,"t":{"129":{"position":[[6,9]]}}}],["vt∗​(2",{"_index":1008,"t":{"129":{"position":[[72,9]]}}}],["vt∪vn)∗(1)",{"_index":996,"t":{"127":{"position":[[73,14]]}}}],["vt∪vn)∗(3)\\alpha",{"_index":1013,"t":{"131":{"position":[[115,19]]}}}],["vvv",{"_index":2002,"t":{"375":{"position":[[216,3]]},"377":{"position":[[166,3]]}}}],["v当前是第k",{"_index":787,"t":{"87":{"position":[[2268,10]]}}}],["v的入度减1",{"_index":692,"t":{"85":{"position":[[2067,9]]}}}],["w",{"_index":1678,"t":{"318":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"320":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"325":{"position":[[72,1],[346,1],[618,1]]},"330":{"position":[[13,1]]},"450":{"position":[[89,1]]},"452":{"position":[[98,1],[237,2],[279,1],[332,2],[345,1]]},"471":{"position":[[451,1]]},"499":{"position":[[564,1],[608,1],[612,1]]},"600":{"position":[[185,1],[200,36],[390,1],[407,3],[411,1],[452,3],[770,1],[808,1],[818,1],[853,1],[887,1],[897,1]]},"602":{"position":[[533,1],[585,1],[664,1],[737,6],[896,15],[951,1]]},"607":{"position":[[72,1],[346,1],[618,1]]},"612":{"position":[[13,1]]},"679":{"position":[[448,1]]},"750":{"position":[[170,3]]},"761":{"position":[[448,1]]},"827":{"position":[[307,2]]}}}],["w')o(co​×ci​×h×w×h′×w",{"_index":2461,"t":{"471":{"position":[[470,23]]}}}],["w'co​×h′×w",{"_index":2454,"t":{"471":{"position":[[165,11]]}}}],["w(l(w,b)+λ2∥w∥12)=∂l(w,b)∂w+λw(3)\\frac{\\partial}{\\parti",{"_index":2390,"t":{"452":{"position":[[177,59]]}}}],["w1,p1),(w2,p2),…,(wv,pv)}\\left\\{\\left(w_1",{"_index":2018,"t":{"377":{"position":[[207,44]]}}}],["w1,w2w_{1",{"_index":2875,"t":{"567":{"position":[[789,17]]},"696":{"position":[[789,17]]}}}],["w=q.front",{"_index":870,"t":{"90":{"position":[[1157,12]]},"92":{"position":[[859,12]]}}}],["w][b,1,h,w]的tensor",{"_index":3528,"t":{"835":{"position":[[196,46]]}}}],["w][b,1,h,w]的tensor,再将二者concat后通过7×77",{"_index":3532,"t":{"839":{"position":[[97,36]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化来压缩空间维度、学习通道之间的特征,得到[b,c,1,1][b",{"_index":3529,"t":{"837":{"position":[[24,56]]}}}],["w][b,c,h,w]分别经过最大池化和平均池化(通过torch.max和torch.mean函数实现)得到[b,1,h,w][b",{"_index":3531,"t":{"839":{"position":[[24,66]]}}}],["w][b,c,h,w]的特征图通过池化挤压宽高维度,得到[b,c,1,1][b",{"_index":3543,"t":{"845":{"position":[[56,40]]}}}],["w][b,c,h,w]经过空间注意力机制算法得到[b,1,h,w][b",{"_index":3527,"t":{"835":{"position":[[153,36]]}}}],["w][b,c,h,w]经过通道注意力机制算法得到[b,c,1,1][b",{"_index":3525,"t":{"835":{"position":[[30,36]]}}}],["w_2\\\\1&d(u,v",{"_index":1583,"t":{"281":{"position":[[525,14]]}}}],["w_2\\end{cases}\\tag{24}h(u,v)=⎩⎨⎧​101​d(u,v)w2​​(24",{"_index":1584,"t":{"281":{"position":[[540,76]]}}}],["w_code",{"_index":1806,"t":{"325":{"position":[[143,20]]},"607":{"position":[[143,20]]}}}],["w_encod",{"_index":1809,"t":{"325":{"position":[[292,9]]},"607":{"position":[[292,9]]}}}],["w_i",{"_index":2013,"t":{"375":{"position":[[604,3]]},"377":{"position":[[713,3]]}}}],["w_k",{"_index":3250,"t":{"679":{"position":[[1029,3]]},"761":{"position":[[1029,3]]}}}],["w_key",{"_index":2276,"t":{"428":{"position":[[947,5],[1286,5],[3531,5],[3850,5]]}}}],["w_khk​×wk",{"_index":3234,"t":{"679":{"position":[[559,10],[878,10]]},"761":{"position":[[559,10],[878,10]]}}}],["w_k}rk​∈[v]hk​×wk",{"_index":3246,"t":{"679":{"position":[[839,18]]},"761":{"position":[[839,18]]}}}],["w_queri",{"_index":2278,"t":{"428":{"position":[[1035,7],[1311,7],[3619,7],[3875,7]]}}}],["w_t",{"_index":2401,"t":{"452":{"position":[[496,4]]}}}],["w_valu",{"_index":2280,"t":{"428":{"position":[[1125,7],[1337,7],[3709,7],[3901,7]]}}}],["w_{2}w1​,w2",{"_index":2876,"t":{"567":{"position":[[807,12]]},"696":{"position":[[807,12]]}}}],["wall",{"_index":1259,"t":{"194":{"position":[[1266,4],[1315,4]]}}}],["warn",{"_index":1214,"t":{"194":{"position":[[321,8]]}}}],["waveform",{"_index":3080,"t":{"635":{"position":[[107,9]]}}}],["wci​×h×w",{"_index":2447,"t":{"471":{"position":[[29,8]]}}}],["web",{"_index":1821,"t":{"327":{"position":[[39,3]]},"609":{"position":[[39,3]]}}}],["web_ui",{"_index":1825,"t":{"327":{"position":[[298,8]]},"609":{"position":[[298,8]]}}}],["weight",{"_index":731,"t":{"87":{"position":[[440,7]]},"428":{"position":[[642,7],[910,7],[2137,8],[3494,7],[4296,8]]},"487":{"position":[[336,7]]},"790":{"position":[[420,7]]}}}],["weighted_valu",{"_index":2305,"t":{"428":{"position":[[2230,15],[2323,16],[4389,15],[4482,16]]}}}],["weighted_values.sum(dim=0",{"_index":2310,"t":{"428":{"position":[[2569,26],[4527,26]]}}}],["welcom",{"_index":3419,"t":{"790":{"position":[[101,8]]}}}],["well",{"_index":2316,"t":{"428":{"position":[[2705,4]]},"672":{"position":[[397,5]]},"754":{"position":[[397,5]]}}}],["werror",{"_index":1221,"t":{"194":{"position":[[507,6]]}}}],["whether",{"_index":2795,"t":{"560":{"position":[[201,7]]},"689":{"position":[[201,7]]}}}],["while(!q.empti",{"_index":687,"t":{"85":{"position":[[1903,18]]},"90":{"position":[[1133,17]]},"92":{"position":[[835,17]]}}}],["while(1",{"_index":1062,"t":{"178":{"position":[[150,8],[1362,8]]}}}],["while(cin",{"_index":411,"t":{"62":{"position":[[1537,9]]}}}],["while(g.s",{"_index":609,"t":{"83":{"position":[[825,14],[1273,14]]}}}],["while(in[p1]!=pre[rt",{"_index":921,"t":{"94":{"position":[[398,22]]}}}],["while(it!=g.vertexs.end",{"_index":666,"t":{"85":{"position":[[1226,27]]}}}],["while(m",{"_index":661,"t":{"85":{"position":[[1128,7]]}}}],["while(mid[p1]!=rt",{"_index":854,"t":{"90":{"position":[[431,18],[774,18]]},"92":{"position":[[315,18],[544,18]]}}}],["while(~scanf(\"%d\",&n",{"_index":891,"t":{"90":{"position":[[1720,22]]},"92":{"position":[[1385,22]]}}}],["wh×w",{"_index":3236,"t":{"679":{"position":[[612,4]]},"761":{"position":[[612,4]]}}}],["wide",{"_index":2606,"t":{"508":{"position":[[687,4]]},"700":{"position":[[687,4]]}}}],["win='win_id",{"_index":3151,"t":{"667":{"position":[[137,13],[247,13],[322,13]]},"669":{"position":[[68,13],[213,13]]}}}],["window",{"_index":3447,"t":{"796":{"position":[[0,20]]}}}],["winograd",{"_index":2084,"t":{"391":{"position":[[812,8]]}}}],["wisdom",{"_index":2589,"t":{"508":{"position":[[13,6]]},"700":{"position":[[13,6]]}}}],["wise",{"_index":1342,"t":{"215":{"position":[[1087,10]]},"318":{"position":[[1074,4]]},"320":{"position":[[1129,4],[1253,15]]},"332":{"position":[[441,4],[599,4]]},"542":{"position":[[1087,10]]},"600":{"position":[[1074,4]]},"602":{"position":[[1129,4],[1253,15]]},"614":{"position":[[441,4],[599,4]]},"822":{"position":[[73,7]]}}}],["wise)以及逐点(point",{"_index":3482,"t":{"822":{"position":[[57,15]]}}}],["without",{"_index":2586,"t":{"506":{"position":[[79,7]]},"560":{"position":[[253,7]]},"676":{"position":[[1581,7]]},"689":{"position":[[253,7]]},"698":{"position":[[79,7]]},"758":{"position":[[1581,7]]}}}],["wi​∈ck",{"_index":2015,"t":{"375":{"position":[[641,7]]}}}],["wi​∈cp",{"_index":2035,"t":{"377":{"position":[[750,7]]}}}],["wi∈ckp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2010,"t":{"375":{"position":[[537,38]]}}}],["wi∈cpp_i^{\\prime}=\\frac{p_i}{\\sum_{w_j",{"_index":2032,"t":{"377":{"position":[[646,38]]}}}],["wl",{"_index":3552,"t":{"865":{"position":[[321,65]]}}}],["wl/wait",{"_index":3551,"t":{"865":{"position":[[305,10]]}}}],["wnli(winograd",{"_index":2082,"t":{"391":{"position":[[781,13]]}}}],["word",{"_index":1345,"t":{"217":{"position":[[0,9]]},"393":{"position":[[186,4]]},"544":{"position":[[0,9]]}}}],["work",{"_index":1229,"t":{"194":{"position":[[681,5]]},"508":{"position":[[289,5],[950,4]]},"676":{"position":[[1614,4],[1725,4]]},"700":{"position":[[289,5],[950,4]]},"729":{"position":[[106,4]]},"737":{"position":[[41,4]]},"758":{"position":[[1614,4],[1725,4]]}}}],["work.109",{"_index":1249,"t":{"194":{"position":[[1040,9]]}}}],["workshop",{"_index":3015,"t":{"623":{"position":[[480,10]]}}}],["worship",{"_index":1452,"t":{"248":{"position":[[77,7]]}}}],["write",{"_index":1181,"t":{"180":{"position":[[869,5]]},"194":{"position":[[1925,5]]}}}],["wt+1=(1−ηλ)wt+η∂l(wt,bt)∂wt(4)w_{t+1}=(1",{"_index":2396,"t":{"452":{"position":[[394,40]]}}}],["www和偏置项bbb",{"_index":2526,"t":{"499":{"position":[[458,39]]}}}],["w∥12​≤θ(1",{"_index":2382,"t":{"450":{"position":[[142,11]]}}}],["w∥12≤θ(1)min",{"_index":2374,"t":{"450":{"position":[[22,13]]}}}],["w为bbox的宽高,c为该bbox是否存在object",{"_index":3501,"t":{"827":{"position":[[337,30]]}}}],["w归约为文法开始符号",{"_index":1050,"t":{"168":{"position":[[103,31]]}}}],["x",{"_index":69,"t":{"21":{"position":[[100,1],[124,2],[147,1],[155,1]]},"23":{"position":[[91,2],[114,1],[131,1]]},"40":{"position":[[41,3],[69,5],[84,3]]},"50":{"position":[[4,2]]},"62":{"position":[[525,8],[1534,2],[1550,2]]},"64":{"position":[[290,8],[317,8]]},"106":{"position":[[118,3]]},"112":{"position":[[241,12],[274,10]]},"253":{"position":[[308,1],[414,1]]},"407":{"position":[[43,3],[305,1]]},"409":{"position":[[42,1],[50,1],[54,1],[178,1],[190,1],[294,1]]},"531":{"position":[[382,3],[873,3],[1092,2],[1135,1],[1157,1],[1162,2],[1171,1],[1917,3],[1986,2]]},"744":{"position":[[291,1],[343,1],[386,4],[504,4]]},"748":{"position":[[142,5],[278,4],[506,5]]}}}],["x)%mod",{"_index":137,"t":{"40":{"position":[[115,9]]}}}],["x)=11+e−x(1)\\sigma(x",{"_index":2122,"t":{"407":{"position":[[0,23]]}}}],["x)=\\mathbb{e}_{\\varepsilon",{"_index":2631,"t":{"514":{"position":[[212,27]]},"706":{"position":[[212,27]]}}}],["x)>(i",{"_index":134,"t":{"40":{"position":[[28,10]]}}}],["x)\\mu(x)μ(x",{"_index":2898,"t":{"567":{"position":[[1716,14],[1816,14]]},"696":{"position":[[1717,14],[1817,14]]}}}],["x)\\sigma(x)σ(x",{"_index":2899,"t":{"567":{"position":[[1733,17],[1836,18]]},"696":{"position":[[1734,17],[1837,18]]}}}],["x,y)(x",{"_index":1467,"t":{"251":{"position":[[0,41],[90,15]]}}}],["x.reshap",{"_index":2687,"t":{"531":{"position":[[393,10]]}}}],["x.shape[0",{"_index":2765,"t":{"531":{"position":[[2099,11]]}}}],["x.to(devic",{"_index":2719,"t":{"531":{"position":[[1139,13],[1175,12],[1993,13]]}}}],["x0\\mathbf{x}_0x0​和ϵ\\epsilonϵ根据权重αˉ1,αˉ2,...αˉt\\bar{\\alpha}_1,\\bar{\\alpha}_2,...\\bar{\\alpha}_tαˉ1​,αˉ2​,...αˉt​做weight",{"_index":1299,"t":{"204":{"position":[[445,122]]}}}],["x0x_0x0",{"_index":2665,"t":{"516":{"position":[[436,8]]},"708":{"position":[[436,8]]}}}],["x0∼p(x∣z)x_0",{"_index":2666,"t":{"516":{"position":[[448,12]]},"708":{"position":[[448,12]]}}}],["x1",{"_index":3298,"t":{"744":{"position":[[381,2],[611,2]]}}}],["x1,...,xt−1][x_1,...,x_{t",{"_index":3270,"t":{"723":{"position":[[85,26]]}}}],["x1,x2,...,xt−1)(x_1",{"_index":3215,"t":{"676":{"position":[[1126,21]]},"758":{"position":[[1126,21]]}}}],["x1[0",{"_index":3324,"t":{"744":{"position":[[1195,21],[1232,20]]}}}],["x1[0,:,:]+x2[0,:,:](1)x1[0",{"_index":3309,"t":{"744":{"position":[[846,27]]}}}],["x1[1,:,:]+x2[1,:,:](2)x1[1",{"_index":3312,"t":{"744":{"position":[[924,27]]}}}],["x1[2,:,:]+x2[2,:,:](3)x1[2",{"_index":3315,"t":{"744":{"position":[[1002,27]]}}}],["x1与x2在第0维度上维度相同,所以python",{"_index":3308,"t":{"744":{"position":[[798,47]]}}}],["x2",{"_index":3301,"t":{"744":{"position":[[499,2],[616,2]]}}}],["x2[0",{"_index":3310,"t":{"744":{"position":[[882,5],[1220,8]]}}}],["x2[0,0",{"_index":3325,"t":{"744":{"position":[[1256,15]]}}}],["x2[1",{"_index":3313,"t":{"744":{"position":[[960,5]]}}}],["x2[2",{"_index":3316,"t":{"744":{"position":[[1038,5]]}}}],["x86",{"_index":1190,"t":{"184":{"position":[[89,12]]},"194":{"position":[[835,5]]}}}],["x86/elf",{"_index":1237,"t":{"194":{"position":[[854,7]]}}}],["x86_64与i386",{"_index":1222,"t":{"194":{"position":[[561,16]]}}}],["x 搜索文档 - + @@ -12,7 +12,7 @@

    搜索文档

    - + \ No newline at end of file