updates for latex build

This commit is contained in:
NT 2021-04-04 13:48:21 +08:00
parent 2f6335f740
commit 9bf28e3edd
2 changed files with 46 additions and 15 deletions

View File

@ -18,10 +18,10 @@
"\n",
"In order to learn the error function, we'll consider two different discretizations of the same PDE $\\mathcal P^*$: \n",
"a _reference_ version, which we assume to be accurate, with a discretized version \n",
"$\\mathcal P_r$, and solutions $\\mathbf r \\in \\mathscr R$, where $\\mathscr R$ denotes the manifold of solution of $\\mathcal P_r$.\n",
"$\\mathcal P_r$, and solutions $\\mathbf r \\in \\mathscr R$, where $\\mathscr R$ denotes the manifold of solutions of $\\mathcal P_r$.\n",
"In parallel to this, we have a less accurate approximation of the same PDE, which we'll refer to as the _source_ version, as this will be the solver that our NN should later on interact with. Analogously,\n",
"we have $\\mathcal P_s$ with solutions $\\mathbf s \\in \\mathscr S$.\n",
"And after training, we'll have a _hybrid_ solver that uses $\\mathcal P_s$ in conjunction with a trained network to obtain improved solutions, i.e., solutions that are closer to the ones produced by $\\mathcal P_r$.\n",
"After training, we'll obtain a _hybrid_ solver that uses $\\mathcal P_s$ in conjunction with a trained network to obtain improved solutions, i.e., solutions that are closer to the ones produced by $\\mathcal P_r$.\n",
"\n",
"```{figure} resources/diffphys-sol-manifolds.jpeg\n",
"---\n",
@ -39,7 +39,6 @@
},
"source": [
"\n",
"explain coarse/ref setup...\n",
"Let's assume $\\mathcal{P}$ advances a solution by a time step $\\Delta t$, and let's denote $n$ consecutive steps by a superscript:\n",
"$\n",
"\\newcommand{\\pde}{\\mathcal{P}}\n",
@ -48,7 +47,7 @@
"\\newcommand{\\vr}[1]{\\mathbf{r}_{#1}} \n",
"\\newcommand{\\vcN}{\\vs} \n",
"\\newcommand{\\project}{\\mathcal{T}} \n",
"\\vc{t+n} = \\pdec(\\pdec(\\cdots \\pdec( \\project \\vr{t} )\\cdots)) = \\pdec^n ( \\project \\vr{t} ) .\n",
"\\vc{t+n} = \\pdec(\\pdec(\\cdots \\pdec( \\mathcal{T} \\vr{t} )\\cdots)) = \\pdec^n ( \\mathcal{T} \\vr{t} ) .\n",
"$\n",
"Here we assume a mapping operator $\\mathcal{T}$ exists that transfers a reference solution to the source manifold. This could, e.g., be a simple downsampling operation.\n",
"Especially for longer sequences, i.e. larger $n$, the source state \n",
@ -62,17 +61,14 @@
"\\newcommand{\\corr}{\\mathcal{C}} \n",
"\\newcommand{\\vc}[1]{\\mathbf{s}_{#1}} \n",
"\\newcommand{\\vr}[1]{\\mathbf{r}_{#1}} \n",
"\\loss (\\vc{t},\\project \\vr{t})=\\Vert\\vc{t}-\\project \\vr{t}\\Vert_2$. \n",
"\\loss (\\vc{t},\\mathcal{T} \\vr{t})=\\Vert\\vc{t}-\\mathcal{T} \\vr{t}\\Vert_2$. \n",
"Our learning goal is to train at a correction operator \n",
"$\\newcommand{\\corr}{\\mathcal{C}} \n",
"\\corr ( \\vc{} )$ such that \n",
"$\\mathcal{C} ( \\mathbf{s} )$ such that \n",
"a solution to which the correction is applied has a lower error than the original unmodified (source) \n",
"solution: $\\newcommand{\\loss}{e} \n",
"\\newcommand{\\pdec}{\\pde_{s}}\n",
"\\newcommand{\\corr}{\\mathcal{C}} \n",
"\\newcommand{\\project}{\\mathcal{T}} \n",
"\\newcommand{\\vr}[1]{\\mathbf{r}_{#1}} \n",
"\\loss ( \\pdec( \\corr (\\project \\vr{t_0}) ) , \\project \\vr{t_1}) < \\loss ( \\pdec( \\project \\vr{t_0} ), \\project \\vr{t_1})$. \n",
"\\loss ( \\mathcal{P}_{s}( \\corr (\\mathcal{T} \\vr{t_0}) ) , \\mathcal{T} \\vr{t_1}) < \\loss ( \\mathcal{P}_{s}( \\mathcal{T} \\vr{t_0} ), \\mathcal{T} \\vr{t_1})$. \n",
"\n",
"The correction function \n",
"$\\newcommand{\\vcN}{\\mathbf{s}} \\newcommand{\\corr}{\\mathcal{C}} \\corr (\\vcN | \\theta)$ \n",
@ -82,11 +78,9 @@
"The overall learning goal now becomes\n",
"\n",
"$\n",
"\\newcommand{\\pdec}{\\pde_{s}}\n",
"\\newcommand{\\corr}{\\mathcal{C}} \n",
"\\newcommand{\\project}{\\mathcal{T}} \n",
"\\newcommand{\\corr}{\\mathcal{C}} \n",
"\\newcommand{\\vr}[1]{\\mathbf{r}_{#1}} \n",
"\\text{argmin}_\\theta | ( \\pdec \\corr )^n ( \\project \\vr{t} ) - \\project \\vr{t}|^2\n",
"\\text{argmin}_\\theta | ( \\mathcal{P}_{s} \\corr )^n ( \\mathcal{T} \\vr{t} ) - \\mathcal{T} \\vr{t}|^2\n",
"$\n",
"\n",
"A crucial bit here that's easy to overlook is that the correction depends on the modified states, i.e.\n",
@ -96,7 +90,7 @@
"These states actually evolve over time when training. They don't exist beforehand.\n",
"\n",
"**TL;DR**:\n",
"We'll train a network $\\mathcal{C}$ to reduce the numerical errors of a simulator with a more accurate reference. Here it's crucial to have the _source_ solver realized as a differential physics operator, such that it can give gradients for an improved training of $\\mathcal{C}$.\n",
"We'll train a network $\\mathcal{C}$ to reduce the numerical errors of a simulator with a more accurate reference. It's crucial to have the _source_ solver realized as a differential physics operator, such that it can give gradients for an improved training of $\\mathcal{C}$.\n",
"\n",
"<br>\n",
"\n",

37
make-pdf.sh Normal file
View File

@ -0,0 +1,37 @@
# source this file with "." in a shell
echo
echo Note: manually quit first latex pass with shift-x
echo
cd /Users/thuerey/Dropbox/mbaDevelSelected/pbdl-book/
/Users/thuerey/Library/Python/3.7/bin/jupyter-book build . --builder pdflatex
cd /Users/thuerey/Dropbox/mbaDevelSelected/pbdl-book/_build/latex
export JPYFILENAME=book.tex
rm ${JPYFILENAME}-in.bak
mv ${JPYFILENAME} ${JPYFILENAME}-in.bak
iconv -c -f utf-8 -t ascii ${JPYFILENAME}-in.bak > ${JPYFILENAME}
echo running SED
sed -i '' -e 's/sphinxincludegraphics{{/sphinxincludegraphics{/g' ${JPYFILENAME}
sed -i '' -e 's/}.png}/.png}/g' ${JPYFILENAME}
sed -i '' -e 's/}.jpg}/.jpg}/g' ${JPYFILENAME}
sed -i '' -e 's/}.jpeg}/.jpeg}/g' ${JPYFILENAME}
sed -i '' -e 's/sphinxpxdimen]{{/sphinxpxdimen]{/g' ${JPYFILENAME}
# ugly, -i doesnt work here:
sed '28i\
\\usepackage{mathrsfs} ' ${JPYFILENAME} > tmp-latex
echo renaming: tmp-latex ${JPYFILENAME}; ls -l tmp-latex ${JPYFILENAME}
rm ${JPYFILENAME}
mv tmp-latex ${JPYFILENAME}
echo running LATEX
pdflatex book
echo running LATEX , 2nd pass
pdflatex book
cd ../..