Skip to content

Commit a88539f

Browse files
committed
preparing week 8
1 parent a2e4ca1 commit a88539f

File tree

47 files changed

+4860
-4364
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+4860
-4364
lines changed
-2.23 MB
Binary file not shown.

doc/pub/week8/ipynb/week8.ipynb

Lines changed: 1314 additions & 1223 deletions
Large diffs are not rendered by default.

doc/pub/week8/pdf/week8.pdf

-1.53 MB
Binary file not shown.

doc/src/week8/Backup/week8.do.txt

Lines changed: 1352 additions & 0 deletions
Large diffs are not rendered by default.

doc/src/week8/Latexfiles/autoencoderspca.tex

Lines changed: 477 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{n}{tf}\PYG{o}{.}\PYG{n}{random}\PYG{o}{.}\PYG{n}{set\PYGZus{}seed}\PYG{p}{(}\PYG{l+m+mi}{42}\PYG{p}{)}
3+
\PYG{n}{np}\PYG{o}{.}\PYG{n}{random}\PYG{o}{.}\PYG{n}{seed}\PYG{p}{(}\PYG{l+m+mi}{42}\PYG{p}{)}
4+
5+
\PYG{n}{denoising\PYGZus{}encoder} \PYG{o}{=} \PYG{n}{keras}\PYG{o}{.}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Sequential}\PYG{p}{(}\PYG{p}{[}
6+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Flatten}\PYG{p}{(}\PYG{n}{input\PYGZus{}shape}\PYG{o}{=}\PYG{p}{[}\PYG{l+m+mi}{28}\PYG{p}{,} \PYG{l+m+mi}{28}\PYG{p}{]}\PYG{p}{)}\PYG{p}{,}
7+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{GaussianNoise}\PYG{p}{(}\PYG{l+m+mf}{0.2}\PYG{p}{)}\PYG{p}{,}
8+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Dense}\PYG{p}{(}\PYG{l+m+mi}{100}\PYG{p}{,} \PYG{n}{activation}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{selu}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{)}\PYG{p}{,}
9+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Dense}\PYG{p}{(}\PYG{l+m+mi}{30}\PYG{p}{,} \PYG{n}{activation}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{selu}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{)}
10+
\PYG{p}{]}\PYG{p}{)}
11+
\PYG{n}{denoising\PYGZus{}decoder} \PYG{o}{=} \PYG{n}{keras}\PYG{o}{.}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Sequential}\PYG{p}{(}\PYG{p}{[}
12+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Dense}\PYG{p}{(}\PYG{l+m+mi}{100}\PYG{p}{,} \PYG{n}{activation}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{selu}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,} \PYG{n}{input\PYGZus{}shape}\PYG{o}{=}\PYG{p}{[}\PYG{l+m+mi}{30}\PYG{p}{]}\PYG{p}{)}\PYG{p}{,}
13+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Dense}\PYG{p}{(}\PYG{l+m+mi}{28} \PYG{o}{*} \PYG{l+m+mi}{28}\PYG{p}{,} \PYG{n}{activation}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{sigmoid}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{)}\PYG{p}{,}
14+
\PYG{n}{keras}\PYG{o}{.}\PYG{n}{layers}\PYG{o}{.}\PYG{n}{Reshape}\PYG{p}{(}\PYG{p}{[}\PYG{l+m+mi}{28}\PYG{p}{,} \PYG{l+m+mi}{28}\PYG{p}{]}\PYG{p}{)}
15+
\PYG{p}{]}\PYG{p}{)}
16+
\PYG{n}{denoising\PYGZus{}ae} \PYG{o}{=} \PYG{n}{keras}\PYG{o}{.}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Sequential}\PYG{p}{(}\PYG{p}{[}\PYG{n}{denoising\PYGZus{}encoder}\PYG{p}{,} \PYG{n}{denoising\PYGZus{}decoder}\PYG{p}{]}\PYG{p}{)}
17+
\PYG{n}{denoising\PYGZus{}ae}\PYG{o}{.}\PYG{n}{compile}\PYG{p}{(}\PYG{n}{loss}\PYG{o}{=}\PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{binary\PYGZus{}crossentropy}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,} \PYG{n}{optimizer}\PYG{o}{=}\PYG{n}{keras}\PYG{o}{.}\PYG{n}{optimizers}\PYG{o}{.}\PYG{n}{SGD}\PYG{p}{(}\PYG{n}{learning\PYGZus{}rate}\PYG{o}{=}\PYG{l+m+mf}{1.0}\PYG{p}{)}\PYG{p}{,}
18+
\PYG{n}{metrics}\PYG{o}{=}\PYG{p}{[}\PYG{n}{rounded\PYGZus{}accuracy}\PYG{p}{]}\PYG{p}{)}
19+
\PYG{n}{history} \PYG{o}{=} \PYG{n}{denoising\PYGZus{}ae}\PYG{o}{.}\PYG{n}{fit}\PYG{p}{(}\PYG{n}{X\PYGZus{}train}\PYG{p}{,} \PYG{n}{X\PYGZus{}train}\PYG{p}{,} \PYG{n}{epochs}\PYG{o}{=}\PYG{l+m+mi}{10}\PYG{p}{,}
20+
\PYG{n}{validation\PYGZus{}data}\PYG{o}{=}\PYG{p}{(}\PYG{n}{X\PYGZus{}valid}\PYG{p}{,} \PYG{n}{X\PYGZus{}valid}\PYG{p}{)}\PYG{p}{)}
21+
22+
\end{MintedVerbatim}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{c+c1}{\PYGZsh{} compute the representations of training and test samples}
3+
\PYG{c+c1}{\PYGZsh{}h\PYGZus{}train=model.encoder(torch.reshape(x\PYGZus{}train.cuda(),(\PYGZhy{}1,784)))}
4+
\PYG{c+c1}{\PYGZsh{}h\PYGZus{}test=model.encoder(torch.reshape(x\PYGZus{}test.cuda(),(\PYGZhy{}1,784)))}
5+
\PYG{n}{h\PYGZus{}train}\PYG{o}{=}\PYG{n}{model}\PYG{o}{.}\PYG{n}{encoder}\PYG{p}{(}\PYG{n}{torch}\PYG{o}{.}\PYG{n}{reshape}\PYG{p}{(}\PYG{n}{x\PYGZus{}train}\PYG{p}{,}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{784}\PYG{p}{)}\PYG{p}{)}\PYG{p}{)}
6+
\PYG{n}{h\PYGZus{}test}\PYG{o}{=}\PYG{n}{model}\PYG{o}{.}\PYG{n}{encoder}\PYG{p}{(}\PYG{n}{torch}\PYG{o}{.}\PYG{n}{reshape}\PYG{p}{(}\PYG{n}{x\PYGZus{}test}\PYG{p}{,}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{784}\PYG{p}{)}\PYG{p}{)}\PYG{p}{)}
7+
8+
\PYG{c+c1}{\PYGZsh{} find the nearest training samples to each test instance, in terms of MSE}
9+
\PYG{n}{MSEs} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{mean}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{power}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{expand\PYGZus{}dims}\PYG{p}{(}\PYG{n}{h\PYGZus{}test}\PYG{o}{.}\PYG{n}{detach}\PYG{p}{(}\PYG{p}{)}\PYG{o}{.}\PYG{n}{cpu}\PYG{p}{(}\PYG{p}{)}\PYG{p}{,} \PYG{n}{axis}\PYG{o}{=}\PYG{l+m+mi}{1}\PYG{p}{)} \PYG{o}{\PYGZhy{}} \PYG{n}{np}\PYG{o}{.}\PYG{n}{expand\PYGZus{}dims}\PYG{p}{(}\PYG{n}{h\PYGZus{}train}\PYG{o}{.}\PYG{n}{detach}\PYG{p}{(}\PYG{p}{)}\PYG{o}{.}\PYG{n}{cpu}\PYG{p}{(}\PYG{p}{)}\PYG{p}{,} \PYG{n}{axis}\PYG{o}{=}\PYG{l+m+mi}{0}\PYG{p}{)}\PYG{p}{,} \PYG{l+m+mi}{2}\PYG{p}{)}\PYG{p}{,} \PYG{n}{axis}\PYG{o}{=}\PYG{l+m+mi}{2}\PYG{p}{)}
10+
\PYG{n}{neighbours} \PYG{o}{=} \PYG{n}{MSEs}\PYG{o}{.}\PYG{n}{argmin}\PYG{p}{(}\PYG{n}{axis}\PYG{o}{=}\PYG{l+m+mi}{1}\PYG{p}{)}
11+
\PYG{n}{predicts} \PYG{o}{=} \PYG{n}{y\PYGZus{}train}\PYG{p}{[}\PYG{n}{neighbours}\PYG{p}{]}
12+
13+
\PYG{c+c1}{\PYGZsh{} print(np.stack([y\PYGZus{}test, predicts], axis=1))}
14+
\PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{Recognition accuracy according to the learned representation is }\PYG{l+s+si}{\PYGZpc{}.1f}\PYG{l+s+si}{\PYGZpc{}\PYGZpc{}}\PYG{l+s+s1}{\PYGZsq{}} \PYG{o}{\PYGZpc{}} \PYG{p}{(}\PYG{l+m+mi}{100} \PYG{o}{*} \PYG{p}{(}\PYG{n}{y\PYGZus{}test} \PYG{o}{==} \PYG{n}{predicts}\PYG{p}{)}\PYG{o}{.}\PYG{n}{numpy}\PYG{p}{(}\PYG{p}{)}\PYG{o}{.}\PYG{n}{astype}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{float32}\PYG{p}{)}\PYG{o}{.}\PYG{n}{mean}\PYG{p}{(}\PYG{p}{)}\PYG{p}{)}\PYG{p}{)}
15+
16+
17+
\end{MintedVerbatim}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{c+c1}{\PYGZsh{} import the Torch packages}
3+
\PYG{c+c1}{\PYGZsh{} transforms are used to preprocess the images, e.g. crop, rotate, normalize, etc}
4+
\PYG{k+kn}{import}\PYG{+w}{ }\PYG{n+nn}{torch}
5+
\PYG{k+kn}{from}\PYG{+w}{ }\PYG{n+nn}{torchvision}\PYG{+w}{ }\PYG{k+kn}{import} \PYG{n}{datasets}\PYG{p}{,}\PYG{n}{transforms}
6+
7+
\PYG{c+c1}{\PYGZsh{} specify the data path in which you would like to store the downloaded files}
8+
\PYG{c+c1}{\PYGZsh{} ToTensor() here is used to convert data type to tensor}
9+
10+
\PYG{n}{train\PYGZus{}dataset} \PYG{o}{=} \PYG{n}{datasets}\PYG{o}{.}\PYG{n}{MNIST}\PYG{p}{(}\PYG{n}{root}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{./mnist\PYGZus{}data/}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{,} \PYG{n}{train}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{,} \PYG{n}{transform}\PYG{o}{=}\PYG{n}{transforms}\PYG{o}{.}\PYG{n}{ToTensor}\PYG{p}{(}\PYG{p}{)}\PYG{p}{,} \PYG{n}{download}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{)}
11+
\PYG{n}{test\PYGZus{}dataset} \PYG{o}{=} \PYG{n}{datasets}\PYG{o}{.}\PYG{n}{MNIST}\PYG{p}{(}\PYG{n}{root}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+s1}{./mnist\PYGZus{}data/}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{,} \PYG{n}{train}\PYG{o}{=}\PYG{k+kc}{False}\PYG{p}{,} \PYG{n}{transform}\PYG{o}{=}\PYG{n}{transforms}\PYG{o}{.}\PYG{n}{ToTensor}\PYG{p}{(}\PYG{p}{)}\PYG{p}{,} \PYG{n}{download}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{)}
12+
\PYG{n+nb}{print}\PYG{p}{(}\PYG{n}{train\PYGZus{}dataset}\PYG{p}{)}
13+
\PYG{n}{batchSize}\PYG{o}{=}\PYG{l+m+mi}{128}
14+
15+
\PYG{c+c1}{\PYGZsh{}only after packed in DataLoader, can we feed the data into the neural network iteratively}
16+
\PYG{n}{train\PYGZus{}loader} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{utils}\PYG{o}{.}\PYG{n}{data}\PYG{o}{.}\PYG{n}{DataLoader}\PYG{p}{(}\PYG{n}{dataset}\PYG{o}{=}\PYG{n}{train\PYGZus{}dataset}\PYG{p}{,} \PYG{n}{batch\PYGZus{}size}\PYG{o}{=}\PYG{n}{batchSize}\PYG{p}{,} \PYG{n}{shuffle}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{)}
17+
\PYG{n}{test\PYGZus{}loader} \PYG{o}{=} \PYG{n}{torch}\PYG{o}{.}\PYG{n}{utils}\PYG{o}{.}\PYG{n}{data}\PYG{o}{.}\PYG{n}{DataLoader}\PYG{p}{(}\PYG{n}{dataset}\PYG{o}{=}\PYG{n}{test\PYGZus{}dataset}\PYG{p}{,} \PYG{n}{batch\PYGZus{}size}\PYG{o}{=}\PYG{n}{batchSize}\PYG{p}{,} \PYG{n}{shuffle}\PYG{o}{=}\PYG{k+kc}{False}\PYG{p}{)}
18+
19+
\end{MintedVerbatim}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
\begin{MintedVerbatim}[commandchars=\\\{\},codes={\catcode`\$=3\catcode`\^=7\catcode`\_=8\relax}]
2+
\PYG{c+c1}{\PYGZsh{} load 16 images from testset}
3+
\PYG{n}{inputs}\PYG{p}{,} \PYG{n}{\PYGZus{}} \PYG{o}{=} \PYG{n+nb}{next}\PYG{p}{(}\PYG{n+nb}{iter}\PYG{p}{(}\PYG{n}{test\PYGZus{}loader}\PYG{p}{)}\PYG{p}{)}
4+
\PYG{n}{inputs\PYGZus{}example} \PYG{o}{=} \PYG{n}{make\PYGZus{}grid}\PYG{p}{(}\PYG{n}{inputs}\PYG{p}{[}\PYG{p}{:}\PYG{l+m+mi}{16}\PYG{p}{,}\PYG{p}{:}\PYG{p}{,}\PYG{p}{:}\PYG{p}{,}\PYG{p}{:}\PYG{p}{]}\PYG{p}{,}\PYG{l+m+mi}{4}\PYG{p}{)}
5+
\PYG{n}{imshow}\PYG{p}{(}\PYG{n}{inputs\PYGZus{}example}\PYG{p}{)}
6+
7+
\PYG{c+c1}{\PYGZsh{}convert from image to tensor}
8+
\PYG{c+c1}{\PYGZsh{}inputs=inputs.cuda()}
9+
\PYG{n}{inputs}\PYG{o}{=}\PYG{n}{torch}\PYG{o}{.}\PYG{n}{reshape}\PYG{p}{(}\PYG{n}{inputs}\PYG{p}{,}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{784}\PYG{p}{)}\PYG{p}{)}
10+
11+
\PYG{c+c1}{\PYGZsh{} get the outputs from the trained model}
12+
\PYG{n}{outputs}\PYG{o}{=}\PYG{n}{model}\PYG{p}{(}\PYG{n}{inputs}\PYG{p}{)}
13+
14+
\PYG{c+c1}{\PYGZsh{}convert from tensor to image}
15+
\PYG{n}{outputs}\PYG{o}{=}\PYG{n}{torch}\PYG{o}{.}\PYG{n}{reshape}\PYG{p}{(}\PYG{n}{outputs}\PYG{p}{,}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{1}\PYG{p}{,}\PYG{l+m+mi}{28}\PYG{p}{,}\PYG{l+m+mi}{28}\PYG{p}{)}\PYG{p}{)}
16+
\PYG{n}{outputs}\PYG{o}{=}\PYG{n}{outputs}\PYG{o}{.}\PYG{n}{detach}\PYG{p}{(}\PYG{p}{)}\PYG{o}{.}\PYG{n}{cpu}\PYG{p}{(}\PYG{p}{)}
17+
18+
\PYG{c+c1}{\PYGZsh{}show the output images}
19+
\PYG{n}{outputs\PYGZus{}example} \PYG{o}{=} \PYG{n}{make\PYGZus{}grid}\PYG{p}{(}\PYG{n}{outputs}\PYG{p}{[}\PYG{p}{:}\PYG{l+m+mi}{16}\PYG{p}{,}\PYG{p}{:}\PYG{p}{,}\PYG{p}{:}\PYG{p}{,}\PYG{p}{:}\PYG{p}{]}\PYG{p}{,}\PYG{l+m+mi}{4}\PYG{p}{)}
20+
\PYG{n}{imshow}\PYG{p}{(}\PYG{n}{outputs\PYGZus{}example}\PYG{p}{)}
21+
22+
\end{MintedVerbatim}

0 commit comments

Comments
 (0)