{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 7.1\n", "### Classification of magnetic phases using fully-connected networks\n", "\n", "Imagine a 2-dimensional lattice arrangement of $n \\times n$ magnetic dipole moments (spins) that can be in one of two states ($+1$ or $−1$, Ising model).\n", "With interactions between spins being short ranged, each spin interacts only with its four neighbors.\n", "The probability to find a spin in one of the orientations is a function of temperature $T$ according to $p \\sim e^{−a/T},\\;a = \\mathrm{const.}$).\n", "\n", "At extremely low temperatures $T \\rightarrow 0$, neighboring spins have a very low probability of different orientations, so that a uniform overall state (ferromagnetic state) is adopted, characterized by $+1$ or $−1$.\n", "At very high temperatures $T \\rightarrow \\infty$, a paramagnetic phase with random spin alignment results, yielding $50\\%$ of $+1$ and $0%$ of $−1$ orientations.\n", "Below a critical temperature $0 < T < T_c$, stable ferromagnetic domains emerge, with both orientations being equally probable in the absence of an external magnetic field.\n", "The spin-spin correlation function diverges at $T_c$, whereas the correlation decays for $T > T_c$.\n", "\n", "The data for this task contain the $n \\times n$ dipole orientations on the lattice for different temperatures $T$.\n", "Classify the two magnetic phases (paramagnetic/ferromagnetic)!" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "keras version 2.4.0\n" ] } ], "source": [ "from tensorflow import keras\n", "import numpy as np\n", "callbacks = keras.callbacks\n", "layers = keras.layers\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load and prepare dataset\n", "See https://doi.org/10.1038/nphys4035 for more information" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import gdown\n", "url = \"https://drive.google.com/u/0/uc?export=download&confirm=HgGH&id=1Ihxt1hb3Kyv0IrjHlsYb9x9QY7l7n2Sl\"\n", "output = 'ising_data.npz'\n", "gdown.download(url, output, quiet=True)\n", "\n", "f = np.load(output, allow_pickle=True)\n", "n_train = 20000\n", "\n", "x_train, x_test = f[\"C\"][:n_train], f[\"C\"][n_train:]\n", "T_train, T_test = f[\"T\"][:n_train], f[\"T\"][n_train:]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "for i,j in enumerate(np.random.choice(n_train, 6)):\n", " plt.subplot(2,3,i+1)\n", " image = x_train[j]\n", " plot = plt.imshow(image)\n", " plt.title(\"T: %.2f\" % T_train[j])\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'frequency')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.hist(T_test)\n", "plt.xlabel(\"T\")\n", "plt.ylabel(\"frequency\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Set up training data - define magnetic phases" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "Tc = 2.27\n", "y_train, y_test = T_train > Tc, T_test > Tc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ### Task\n", "\n", " - evaluate the test accuracy for a fully-connected network,\n", " - plot the test accuracy vs. temperature.\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 4 }