{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 7.1 - Solution\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": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "keras 2.4.0\n" ] } ], "source": [ "from tensorflow import keras\n", "import numpy as np\n", "callbacks = keras.callbacks\n", "layers = keras.layers\n", "\n", "print(\"keras\", keras.__version__)" ] }, { "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": "markdown", "metadata": {}, "source": [ "### Plot data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "