WUT_Computer_Science/Programming/EARIN/lab5/report/sections/02-implementation.tex
Krzysztof kuhy Rudnicki ffa5dad02a Split 19 over-cap LaTeX reports, proving each PDF is unchanged
The 250-line cap applies to prose too, and the reports were the worst
offenders -- ENUME's projectA.tex alone was 1,876 lines. Each is now a
preamble plus one \input{} per section, which is how a long LaTeX document is
normally organised; not one byte of prose was rewritten.

"The PDF is unchanged" is checked by a script rather than by eye, because
hashing the PDF cannot work: pdflatex stamps a /CreationDate and an /ID into
every build, so two runs of the SAME source already differ. tex_fingerprint.sh
compares what a reader sees instead -- page count plus a hash of the extracted
text -- and it is stable across rebuilds of untouched sources, which is the
property that makes it usable as a gate.

It earned its keep immediately. Both ECOTE reports quote an example LaTeX
document inside an lstlisting block, so \end{document} appears in the middle
of the file; splitting on the FIRST one stranded everything after it. Same
page count, different text, caught automatically. EOPSY lab3 exposed a second
bug: a \section{} title that runs onto the next line.

Result: 19 .tex over the cap -> 1. The survivor,
ELAC/.../03-building-nfa-...tex, is 418 lines of consecutive tikz figures
with no subsection to split on and needs a hand-placed boundary.

Verified: 29 splits across two passes (section, then subsection for the
pieces still over), every one reporting `unchanged` from
scripts/tex_fingerprint.sh --check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 19:47:12 +02:00

48 lines
2.0 KiB
TeX

\section{Implementation}
Program can be ran by installing python, moving to project directory and issuing command:
\begin{lstlisting}[language=bash]
python main.py
\end{lstlisting}
Results will be displayed on three 2d scatter plots. \\
Plots Title is filled with parameters used abbreviated for space sake \\
Abbreviatons meaning:
\begin{itemize}
\item lr - Learning Rate
\item bs - Batch Size
\item hl - Number of Hidden Layers
\item w - Width
\item Adam or SGD or SGD\_Momentum - Optimizer type
\end{itemize}
Plot types:
\begin{itemize}
\item Loss value for learning step
\item Train Accuracy for epoch
\item Validation Accuracy for epoch
\end{itemize}
\begin{figure}[H]
\caption{Exemplary plot of loss for learning Step \\ lr0.001-bs64-hl1-w128-Adam }
\includegraphics[width=\textwidth]{testsResults/loss/def.png}
\centering
\end{figure}
\begin{figure}[H]
\caption{Exemplary plot of Validation Accuracy for epoch \\ lr0.001-bs64-hl1-w128-Adam }
\includegraphics[width=\textwidth]{testsResults/validationAccuracy/validationAccuracy-lr0.001-bs64-hl2-w64-Adam.png}
\centering
\end{figure}
\begin{figure}[H]
\caption{Exemplary plot of Train Accuracy for epoch \\ lr0.001-bs64-hl1-w128-Adam }
\includegraphics[width=\textwidth]{testsResults/trainAccuracy/trainAccuracy-lr0.001-bs64-hl2-w64-Adam.png}
\centering
\end{figure}
Results will be displayed and saved in the same folder as code directory for further inspection, with file name containing information about input parameters \\
Additionaly speed it took for neural network to run will be saved to results.txt along with what parameters were used \\
We decided to run 19 tests in total:
\begin{enumerate}
\item learning rate [0.1, 0.01, 0.001] (3 tests)
\item mini-batch size [1, 64, 128, 256] (4 tests)
\item number of hidden layers [0, 1, 2, 3] (4 tests)
\item width [64, 128, 256, 512, 1024] (5 tests)
\item optimizer type [SGD, SGD\_Momentum, Adam] (3 tests)
\end{enumerate}