Skip to content

Commit b20f62d

Browse files
committed
update
1 parent 6789810 commit b20f62d

17 files changed

Lines changed: 2010 additions & 171 deletions
0 Bytes
Binary file not shown.

doc/pub/week15/ipynb/week15.ipynb

Lines changed: 93 additions & 169 deletions
Large diffs are not rendered by default.

doc/pub/week15/pdf/week15.pdf

-1.88 KB
Binary file not shown.

doc/src/week14/Backup/week14.do.txt

Lines changed: 555 additions & 0 deletions
Large diffs are not rendered by default.
438 KB
Binary file not shown.

doc/src/week14/LatexFiles/week15_upgraded.tex

Lines changed: 1114 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{n+nd}{@torch}\PYG{o}{.}\PYG{n}{no\PYGZus{}grad}\PYG{p}{(}\PYG{p}{)}
3+
\PYG{k}{def}\PYG{+w}{ }\PYG{n+nf}{p\PYGZus{}sample\PYGZus{}loop}\PYG{p}{(}\PYG{n}{model}\PYG{p}{,} \PYG{n}{shape}\PYG{p}{)}\PYG{p}{:}
4+
\PYG{n}{x} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{randn}\PYG{p}{(}\PYG{n}{shape}\PYG{p}{,} \PYG{n}{device}\PYG{o}{=}\PYG{n}{device}\PYG{p}{)}
5+
\PYG{k}{for} \PYG{n}{i} \PYG{o+ow}{in} \PYG{n+nb}{reversed}\PYG{p}{(}\PYG{n+nb}{range}\PYG{p}{(}\PYG{n}{T}\PYG{p}{)}\PYG{p}{)}\PYG{p}{:}
6+
\PYG{n}{t} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{full}\PYG{p}{(}\PYG{p}{(}\PYG{n}{shape}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{,}\PYG{p}{)}\PYG{p}{,} \PYG{n}{i}\PYG{p}{,} \PYG{n}{device}\PYG{o}{=}\PYG{n}{device}\PYG{p}{)}\PYG{o}{.}\PYG{n}{float}\PYG{p}{(}\PYG{p}{)}\PYG{o}{/}\PYG{n}{T}
7+
\PYG{n}{eps\PYGZus{}pred} \PYG{o}{=} \PYG{n}{model}\PYG{p}{(}\PYG{n}{x}\PYG{p}{,} \PYG{n}{t}\PYG{p}{)}
8+
\PYG{n}{beta\PYGZus{}t} \PYG{o}{=} \PYG{n}{betas}\PYG{p}{[}\PYG{n}{i}\PYG{p}{]}
9+
\PYG{n}{alpha\PYGZus{}t} \PYG{o}{=} \PYG{n}{alphas}\PYG{p}{[}\PYG{n}{i}\PYG{p}{]}
10+
\PYG{n}{acp\PYGZus{}t} \PYG{o}{=} \PYG{n}{alphas\PYGZus{}cumprod}\PYG{p}{[}\PYG{n}{i}\PYG{p}{]}
11+
\PYG{n}{coef1} \PYG{o}{=} \PYG{l+m+mi}{1} \PYG{o}{/} \PYG{n}{alpha\PYGZus{}t}\PYG{o}{.}\PYG{n}{sqrt}\PYG{p}{(}\PYG{p}{)}
12+
\PYG{n}{coef2} \PYG{o}{=} \PYG{n}{beta\PYGZus{}t} \PYG{o}{/} \PYG{p}{(} \PYG{p}{(}\PYG{l+m+mi}{1} \PYG{o}{\PYGZhy{}} \PYG{n}{acp\PYGZus{}t}\PYG{p}{)}\PYG{o}{.}\PYG{n}{sqrt}\PYG{p}{(}\PYG{p}{)} \PYG{p}{)}
13+
\PYG{n}{x} \PYG{o}{=} \PYG{n}{coef1}\PYG{o}{*}\PYG{p}{(}\PYG{n}{x} \PYG{o}{\PYGZhy{}} \PYG{n}{coef2}\PYG{o}{*}\PYG{n}{eps\PYGZus{}pred}\PYG{p}{)}
14+
\PYG{k}{if} \PYG{n}{i} \PYG{o}{\PYGZgt{}} \PYG{l+m+mi}{0}\PYG{p}{:}
15+
\PYG{n}{z} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{randn\PYGZus{}like}\PYG{p}{(}\PYG{n}{x}\PYG{p}{)}
16+
\PYG{n}{sigma} \PYG{o}{=} \PYG{n}{beta\PYGZus{}t}\PYG{o}{.}\PYG{n}{sqrt}\PYG{p}{(}\PYG{p}{)}
17+
\PYG{n}{x} \PYG{o}{=} \PYG{n}{x} \PYG{o}{+} \PYG{n}{sigma}\PYG{o}{*}\PYG{n}{z}
18+
\PYG{k}{return} \PYG{n}{x}
19+
20+
\PYG{c+c1}{\PYGZsh{} Generate samples}
21+
\PYG{n}{samples} \PYG{o}{=} \PYG{n}{p\PYGZus{}sample\PYGZus{}loop}\PYG{p}{(}\PYG{n}{model}\PYG{p}{,} \PYG{p}{(}\PYG{l+m+mi}{16}\PYG{p}{,} \PYG{n}{channels}\PYG{p}{,} \PYG{n}{img\PYGZus{}size}\PYG{p}{,} \PYG{n}{img\PYGZus{}size}\PYG{p}{)}\PYG{p}{)}
22+
\PYG{n}{samples} \PYG{o}{=} \PYG{n}{samples}\PYG{o}{.}\PYG{n}{clamp}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{)}\PYG{o}{.}\PYG{n}{cpu}\PYG{p}{(}\PYG{p}{)}
23+
\PYG{n}{grid} \PYG{o}{=} \PYG{n}{torchvision}\PYG{o}{.}\PYG{n}{utils}\PYG{o}{.}\PYG{n}{make\PYGZus{}grid}\PYG{p}{(}\PYG{n}{samples}\PYG{p}{,} \PYG{n}{nrow}\PYG{o}{=}\PYG{l+m+mi}{4}\PYG{p}{,} \PYG{n}{normalize}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{)}
24+
\PYG{n}{plt}\PYG{o}{.}\PYG{n}{figure}\PYG{p}{(}\PYG{n}{figsize}\PYG{o}{=}\PYG{p}{(}\PYG{l+m+mi}{5}\PYG{p}{,}\PYG{l+m+mi}{5}\PYG{p}{)}\PYG{p}{)}
25+
\PYG{n}{plt}\PYG{o}{.}\PYG{n}{imshow}\PYG{p}{(}\PYG{n}{grid}\PYG{o}{.}\PYG{n}{permute}\PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{2}\PYG{p}{,}\PYG{l+m+mi}{0}\PYG{p}{)}\PYG{p}{)}
26+
\PYG{n}{plt}\PYG{o}{.}\PYG{n}{axis}\PYG{p}{(}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{off}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)}
27+
28+
\end{MintedVerbatim}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{k}{def}\PYG{+w}{ }\PYG{n+nf}{diffusion\PYGZus{}loss}\PYG{p}{(}\PYG{n}{model}\PYG{p}{,} \PYG{n}{x0}\PYG{p}{)}\PYG{p}{:}
3+
\PYG{+w}{ }\PYG{l+s+sd}{\PYGZdq{}\PYGZdq{}\PYGZdq{}Compute MSE between predicted noise and true noise.\PYGZdq{}\PYGZdq{}\PYGZdq{}}
4+
\PYG{n}{B} \PYG{o}{=} \PYG{n}{x0}\PYG{o}{.}\PYG{n}{size}\PYG{p}{(}\PYG{l+m+mi}{0}\PYG{p}{)}
5+
\PYG{n}{t} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{randint}\PYG{p}{(}\PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{T}\PYG{p}{,} \PYG{p}{(}\PYG{n}{B}\PYG{p}{,}\PYG{p}{)}\PYG{p}{,} \PYG{n}{device}\PYG{o}{=}\PYG{n}{device}\PYG{p}{)}\PYG{o}{.}\PYG{n}{long}\PYG{p}{(}\PYG{p}{)}
6+
\PYG{n}{noise} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{randn\PYGZus{}like}\PYG{p}{(}\PYG{n}{x0}\PYG{p}{)}
7+
\PYG{n}{x\PYGZus{}noisy} \PYG{o}{=} \PYG{n}{q\PYGZus{}sample}\PYG{p}{(}\PYG{n}{x0}\PYG{p}{,} \PYG{n}{t}\PYG{p}{,} \PYG{n}{noise}\PYG{p}{)}
8+
\PYG{n}{pred\PYGZus{}noise} \PYG{o}{=} \PYG{n}{model}\PYG{p}{(}\PYG{n}{x\PYGZus{}noisy}\PYG{p}{,} \PYG{n}{t}\PYG{o}{.}\PYG{n}{float}\PYG{p}{(}\PYG{p}{)}\PYG{o}{/}\PYG{n}{T}\PYG{p}{)}
9+
\PYG{k}{return} \PYG{n}{F}\PYG{o}{.}\PYG{n}{mse\PYGZus{}loss}\PYG{p}{(}\PYG{n}{pred\PYGZus{}noise}\PYG{p}{,} \PYG{n}{noise}\PYG{p}{)}
10+
11+
\end{MintedVerbatim}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{k}{def}\PYG{+w}{ }\PYG{n+nf}{q\PYGZus{}sample}\PYG{p}{(}\PYG{n}{x0}\PYG{p}{,} \PYG{n}{t}\PYG{p}{,} \PYG{n}{noise}\PYG{o}{=}\PYG{k+kc}{None}\PYG{p}{)}\PYG{p}{:}
3+
\PYG{+w}{ }\PYG{l+s+sd}{\PYGZdq{}\PYGZdq{}\PYGZdq{}Add noise to x0 at timestep t.\PYGZdq{}\PYGZdq{}\PYGZdq{}}
4+
\PYG{k}{if} \PYG{n}{noise} \PYG{o+ow}{is} \PYG{k+kc}{None}\PYG{p}{:}
5+
\PYG{n}{noise} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{randn\PYGZus{}like}\PYG{p}{(}\PYG{n}{x0}\PYG{p}{)}
6+
\PYG{n}{sqrt\PYGZus{}acp} \PYG{o}{=} \PYG{n}{alphas\PYGZus{}cumprod}\PYG{p}{[}\PYG{n}{t}\PYG{p}{]}\PYG{o}{*}\PYG{o}{*}\PYG{l+m+mf}{0.5}
7+
\PYG{n}{sqrt\PYGZus{}1macp} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{1} \PYG{o}{\PYGZhy{}} \PYG{n}{alphas\PYGZus{}cumprod}\PYG{p}{[}\PYG{n}{t}\PYG{p}{]}\PYG{p}{)}\PYG{o}{*}\PYG{o}{*}\PYG{l+m+mf}{0.5}
8+
\PYG{k}{return} \PYG{n}{sqrt\PYGZus{}acp}\PYG{o}{.}\PYG{n}{view}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{)}\PYG{o}{*}\PYG{n}{x0} \PYG{o}{+} \PYG{n}{sqrt\PYGZus{}1macp}\PYG{o}{.}\PYG{n}{view}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{)}\PYG{o}{*}\PYG{n}{noise}
9+
10+
\end{MintedVerbatim}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torch}
3+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torch}\PYG{n+nn}{.}\PYG{n+nn}{nn}\PYG{+w}{ }\PYG{k}{as}\PYG{+w}{ }\PYG{n+nn}{nn}
4+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torch}\PYG{n+nn}{.}\PYG{n+nn}{nn}\PYG{n+nn}{.}\PYG{n+nn}{functional}\PYG{+w}{ }\PYG{k}{as}\PYG{+w}{ }\PYG{n+nn}{F}
5+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torchvision}
6+
\PYG{k+kn}{from}\PYG{+w}{ }\PYG{n+nn}{torchvision}\PYG{+w}{ }\PYG{k+kn}{import} \PYG{n}{datasets}\PYG{p}{,} \PYG{n}{transforms}
7+
\PYG{k+kn}{from}\PYG{+w}{ }\PYG{n+nn}{torch}\PYG{n+nn}{.}\PYG{n+nn}{utils}\PYG{n+nn}{.}\PYG{n+nn}{data}\PYG{+w}{ }\PYG{k+kn}{import} \PYG{n}{DataLoader}
8+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{matplotlib}\PYG{n+nn}{.}\PYG{n+nn}{pyplot}\PYG{+w}{ }\PYG{k}{as}\PYG{+w}{ }\PYG{n+nn}{plt}
9+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{math}
10+
11+
\end{MintedVerbatim}

0 commit comments

Comments
 (0)