{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Library Examples - ChainoPy Vs. PyDTMC" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from chainopy import MarkovChain, MarkovChainNeuralNetwork, MarkovSwitchingModel\n", "import pydtmc\n", "from timeit import timeit\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Initialization " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Chainopy Implementation\n", "tpm = [[0.3, 0.3, 0.4],\n", " [0.5, 0.5, 0 ],\n", " [ 0, 1, 0]]\n", " \n", "x = MarkovChain(tpm, [\"Rainy\", \"Sunny\", \"Cloudy\"])\n", "\n", "# PyDTMC\n", "\n", "y = pydtmc.MarkovChain(tpm, [\"Rainy\", \"Sunny\", \"Cloudy\"])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABksUlEQVR4nO3dd2CM9x8H8Pet5DIlMRsRI2ITUrGpWVWjtqLosKu1qtSoLWKUmq1Sq1Ztao+iQlTEFkkEGYJElqxLbjy/P1R+VStkfG+8X/9oL89z9742kvd9nvGVSZIkgYiIiIjoLclFByAiIiIi08ZCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERES5wkJJRERERLnCQklEREREucJCSURERAQgPDwccXFxomOYJBZKIiIiIgAtW7aEu7s7xowZg9jYWNFxTIpMkiRJdAgiIiIi0YoVK4a4uDgoFAqoVCoMGzYMY8aMQbFixURHM3qcUBIRERH9i16vh0ajwYIFC1C6dGlOLHOAhZKIiIjoBf5bLL/99lueY/kSLJREREREr/C0WP7www9wd3dnsXwBnkNJREREhP+fQ5kTcrkco0aNwq1bt5CRkQEbGxtUrFgRderUgY+PD9zc3CCTyfI5sfHghJKIiIjoDalUKpQoUQKurq6wt7dHRkYGNmzYgC5dusDd3R2urq746quvcOfOHdFRCwQnlERERETI2YSyaNGimDRpEgYMGAC1Wv3c12NiYnD+/HmcPn0aq1evRmJiIrp27YqxY8fC29s7v6ILZ9GFUpIkZOoN0EsSDBIglwEKmQzWCrlFjamJiIjo5YVSJpOhSJEiryySL5Keno7Vq1fjhx9+wN27dzF9+nSMGzcOcrn5HSC2qEKZqTMgLj0TSZlaJGRokaTRQveCt6+UyeCkVsHFRgUnaxWK2lrDWml+//OJiIjoCY1GAycnJ2RmZmY/9rZF8r90Oh2mT5+O6dOno02bNli3bh0KFy6cV9GNgtkX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RUREL8FD3kQW7HxMIqJTNEZZKp+SAXBzUMPH1Vl0FCIieglelENkwco52xl1mQSeTFA9nO1ExyAioldgoSSyYC5qFRytjPvMF0crJZx5/iQRkVFjoSSyYDKZDFWKOrx+Q4GqFHXg7YKIiIwcCyWRhXO1V8PNQQ1jq2wyAKUc1HC1V4uOQkREr8FCSUTwKl4IKrlxVUqVXIYaxQuJjkFERDnAQklEsFbI4V3CSXSMZ3iXcOJSi0REJoI/rYkIAODqoEaVIsZxPmXVIg5wdeChbiIiU8FCSUTZKrrYoYKL2Fv0VDCCDERE9GZ4Y3MieoYkSQhNSMP1RykF/tpVizigYmH7An9dIiLKHRZKInqhmBQNgh4kQWuQ8vXm5zI8uQDHu4QTD3MTEZkoFkoieqlMvQGXHyYjOkWTb69RykENr+KFYMULcIiITBYLJRG9VkyKBjcepeBxlg4yIFcTy6f7O1opUaWoA+8zSURkBlgoiShHJElCokaL8MQ0RKdoIAE5LpdPt5MBcHNUw8PJDs5qFVfAISIyEyyURPTGMnUGxGVkIkmjRUKGFkkaLXQv+FGilMngpFbBxUYFJ7UKRW2sYa3koW0iInPDQklEuSZJEjL1BhgkCXoJUMgAuUwGa4WcU0giIgvAQklEREREucJjT0RERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQrLJRERERElCsslERERESUKyyURERERJQr/wNZqb0kVUhdygAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x.visualize_chain()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n", "True\n", "True\n", "True\n", "False\n", "None\n", "1\n", "False\n" ] } ], "source": [ "# Chainopy Implementation\n", "\n", "print(x.is_absorbing())\n", "print(x.is_aperiodic())\n", "print(x.is_communicating(\"Rainy\", \"Cloudy\"))\n", "print(x.is_ergodic())\n", "print(x.is_irreducible())\n", "print(x.is_symmetric())\n", "print(x.fundamental_matrix())\n", "print(x.period())\n", "print(x.is_recurrent(\"Rainy\"))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n", "True\n", "True\n", "True\n", "False\n", "None\n", "1\n", "True\n" ] } ], "source": [ "# PyDTMC Implementation\n", "\n", "print(y.is_absorbing)\n", "print(y.is_aperiodic)\n", "print(y.are_communicating(state1=\"Rainy\", state2=\"Cloudy\"))\n", "print(y.is_ergodic)\n", "print(y.is_irreducible)\n", "print(y.is_symmetric)\n", "print(y.fundamental_matrix)\n", "print(y.period)\n", "print(y.is_recurrent_state(\"Rainy\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Runtime Comparision" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.21 µs ± 76.8 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%%timeit\n", "\n", "# ChainoPy Implementation\n", "\n", "x.is_absorbing()\n", "x.is_aperiodic()\n", "x.is_communicating(\"Rainy\", \"Cloudy\")\n", "x.is_ergodic()\n", "x.is_irreducible()\n", "x.is_symmetric()\n", "x.fundamental_matrix()\n", "x.period()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6.05 µs ± 273 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%%timeit\n", "\n", "# PyDTMC Implementation\n", "\n", "y.is_absorbing\n", "y.is_aperiodic\n", "y.are_communicating(state1=\"Rainy\", state2=\"Cloudy\")\n", "y.is_ergodic\n", "y.is_irreducible\n", "y.is_symmetric\n", "y.fundamental_matrix\n", "y.period" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### ChainoPy is approx 5x Faster than PyDTMC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulation" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11.8 ms ± 1.1 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%%timeit\n", "\n", "sim = x.simulate(initial_state=\"Rainy\", n_steps=500)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "19.4 ms ± 1.49 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%%timeit\n", "\n", "sim_pydtmc = y.simulate(initial_state=\"Rainy\", steps=500)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sim = x.simulate(initial_state=\"Rainy\", n_steps=500)\n", "plt.hist(sim)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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Nmn37t16+OGHVVpaWiv3k5ycrNmzZ8uyLP3ud7+rlWMCpsvMzNSFCxd066236p///Ke+/vpr7d69WwsWLFBMTMxF40eNGiV/f38lJSVp586dWrdunSZPnqzRo0fb32Tev39/rVq1SqtWrdJXX32lSZMmucXHjTfeqPj4eD388MPasmWLiouLlZycrMaNG190f8nJyXrttde0e/duJSUl1dnfA+Bpx48fV//+/fX6669rx44d2r9/v5YvX665c+dq2LBhaty4sXr37q3Zs2dr9+7dKiws1PTp0+tsPg888IAOHz6sV155pcY/tDf4QPHx8VFqaqrmzp2rqVOn6pZbblFcXJz69u0rp9OphISEWrmfkSNHysfHRyNHjpS/v3+tHBMwXVRUlD799FP169dPU6dOVefOnXX33XeroKBAixYtumh8QECAVq9erRMnTqhXr1667777NGDAAP3tb3+zx4wbN05JSUkaM2aM7rrrLkVFRalfv35ux8nKylJ4eLjuuusuDR8+XBMnTlRoaOhF9xcbG6tWrVopLi5O4eHhtf8XABiiadOmio6O1vz583XnnXeqc+fOevLJJzVhwgT78bVkyRKdP39ePXr00JQpU/Tss8/W2XyCgoKUmJiopk2b1vh51mHV5Eo3XOTAgQO67rrrtG3bNt1yyy2eng4ASadPn9a1116rrKwsDR8+3NPTAX5TBgwYoJtuukkLFiyo0e0b3G+S/bVVVlbq+PHjmj59unr37k2cAAaoqqrSN998o3nz5ik4OFj33nuvp6cE/GZ8++23Wr9+vdavX6+FCxfW+DgEylXauHGj+vXrp/bt22vFihWeng4ASQcPHlRkZKRat26t7Oxs+fjwvzrg19K9e3d9++23mjNnjn3xe03wFg8AADBOg79IFgAA1D8ECgAAMA6BAgAAjEOgAAAA4xAoAADAOAQKAAAwDoECAACMQ6AAAADjECgAAMA4/w98Ll0ehO3ETwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sim_pydtmc = y.simulate(initial_state=\"Rainy\", steps=500)\n", "plt.hist(sim_pydtmc)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### N-Step Distribution" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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lc1m09atWzVo0CB17txZ3bp1U1ZWlj755JMa23zxxRfq16+f/Pz81KZNG40ePVqlpaXm8T59+mj8+PEObdLS0jRixAhzu6ioSAMGDJCfn5+io6P12muvOdQfOXKk/uu//sthX0VFhYKDg7VkyRLXLhoAADQKDTYS9P3332vt2rV6+umn1bx582rHLyyC+qmysjKlpqaqd+/e+vTTT1VUVKTMzEyNGzeu2lDZpYwYMUJHjhzR+vXr1axZMz388MMO7y/JzMzUzTffrKNHj5qrzN99912dPn1agwcPrrHPs2fPOjwts6SkpNbxAABwudhdnA6zN/7lxLXWYFfyzTffyDAMxcbG1rrN66+/rjNnzmjFihW65ppr1K9fP7344otauXJltecPXMzXX3+t9957T4sXL9Z1112nxMRELVmyRD/++KNZ5/rrr1eXLl20cuVKc9+yZct0zz33KCAgoMZ+Z82a5fDkzIvdwgcAQENqqLfIN0YNdiWGYdS5ze7du9W9e3eHkaMbbrhBdrtde/bsqXUfXl5eSkxMNPfFxsZWG3nKzMzUsmXLJJ1/oNN7772nkSNHXrTfyZMn6+TJk2Y5dOhQHa4MAABcbg02HdapUyfZbDa3L3728PColmBVVFTUuZ/hw4frscce0+bNm7Vp0yZFR0frpptuumh9Hx8ftz0yHACA+lIpmyrr+MDD/2zfVDTYSFDr1q2VmpqqBQsWqKysrNrxEydOVNv3i1/8Qjt37nSov3HjRnl4eKhLly6SpHbt2jk8a6CyslK7du0yt2NjY3Xu3Dlt27bN3Ldnz55q52vTpo3S0tK0bNky5ebmmg90AgDgSsZ0WJUGvZIFCxaosrJSvXr10p/+9Cft3btXu3fv1vz582t8lPa9994rX19fpaena9euXVq/fr0eeughDRs2zHzgUr9+/bRmzRqtWbNGX331lcaMGeOQ4HTp0kX9+/fXAw88oC1btmjbtm3KzMyUn59ftfNlZmZq+fLl2r17t9LT0+vtcwAAAJdfgyZBMTEx2r59u/r27asJEybommuu0W233aa8vDwtXLiwWn1/f3+tW7dO33//va699lrdfffduvXWW/Xiiy+adUaOHKn09HQNHz5ct9xyi2JiYtS3b1+HfpYtW6bw8HDdcsstuuuuuzR69GgFBwdXO19KSorCwsKUmpqq8PBw938AAABc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NGvWzPz5QuJit9trPH6hzk+P9+jRQ927d9eKFSt0++2368svv9SaNWsuGrOPjw/vSAMA4ApSpySoQ4cOkhyTicuha9euWr16tZl0HT16VD169JAkh0XS7paZmamcnBx99913SklJYWQHAHDlYyTI5PQt8nv37tX69etVVFRULSmaNm2aU30WFxfrnnvu0ciRIxUfH68WLVroH//4h+bOnauBAwfKz89P1113nWbPnq3o6GgVFRVpypQpzl7Cz/rNb36jRx55RIsXL9aKFSvq7TwAAFwuPDG6ilNJ0OLFizVmzBi1bdtWoaGhDutkbDab00lQQECAkpOT9fvf/1779u1TRUWFIiMjNWrUKD3++OOSpKVLl+r+++9XYmKiunTporlz5+r222936nw/JygoSIMGDdKaNWuUlpZWL+cAAAANw2Y48UTDDh06aOzYsZo0aVJ9xNSo3HrrrerWrZvmz59fp3YlJSUKCgpS1JIp8vD3rafocCXZ2ye3oUNAI5IantDQIaAROWdUKF9/0cmTJxUYGFgv5zC/l556Wh6+zn8v2c+c0YEpT9RrrJeLUyNBP/zwg+655x53x9Ko/PDDD8rPz1d+fr5eeumlhg4HAAD3YE2QyamHJd5zzz16//333R1Lo9KjRw+NGDFCc+bMUZcuXRo6HAAA4GZOjQR17NhRU6dO1SeffKK4uLhqt5s//PDDbgmuIR04cKChQwAAwO1YGF3FqSTo5ZdfVkBAgDZs2KANGzY4HLPZbE0iCQIAoEly9anPVn1i9AX79+93dxwAAOByYE2Qyak1QReUl5drz549OnfunLviAQAAuCycSoJOnz6t+++/X/7+/urWrZsOHjwoSXrooYfMN7EDAIDG58KaIFdKU+FUEjR58mTt3LlT+fn58v3JswZSUlK0atUqtwUHAADczHBDaSKcWhO0evVqrVq1Stddd53D06K7deumffv2uS04AACA+uJUEnTs2DEFBwdX219WVuaQFAEAgEbG1SmtJjQS5NR0WFJSktasWWNuX0h8XnnlFfXu3ds9kQEAAPdjOszkVBL0zDPP6PHHH9eYMWN07tw5vfDCC7r99tu1bNkyPf300+6OEQAAXOEWLFigqKgo+fr6Kjk5WVu3br1o3XfeeUdJSUlq2bKlmjdvroSEBK1cudKhjmEYmjZtmsLCwuTn56eUlBTt3bu3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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dist_after_500_steps = x.nstep_distribution(500)\n", "x.tpm = dist_after_500_steps\n", "x.visualize_transition_matrix()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model Saving" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "x.save_model(\"first-save.json\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sparisty & Model Saving" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "t = np.zeros((3, 3))\n", "t[0][0] = 1\n", "t[1][2] = 1\n", "t[2][1] = 1" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 0., 0.],\n", " [0., 0., 1.],\n", " [0., 1., 0.]])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "x.tpm = t" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "x.save_model(\"second-save.json\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Saved Models" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "new_object1 = MarkovChain()\n", "new_object1.load_model(\"first-save.json\")" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_object1" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.35714286 0.5 0.14285714]\n", " [0.35714286 0.5 0.14285714]\n", " [0.35714286 0.5 0.14285714]]\n", "['Rainy', 'Sunny', 'Cloudy']\n", "True\n", "[ 1. +0.j 0.33588989+0.j -0.53588989+0.j]\n", "[[-0.57735027+0.j -0.67954784+0.j 0.27349606+0.j]\n", " [-0.57735027+0.j 0.26228594+0.j -0.4184597 +0.j]\n", " [-0.57735027+0.j 0.78086881+0.j 0.78086881+0.j]]\n" ] } ], "source": [ "print(new_object1.tpm)\n", "print(new_object1.states)\n", "print(new_object1.eigendecom)\n", "print(new_object1.eigenvalues)\n", "print(new_object1.eigenvectors)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Sparse Models" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "new_object2 = MarkovChain()\n", "new_object2.load_model(\"second-save.json\")" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_object2" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 0. 0.]\n", " [0. 0. 1.]\n", " [0. 1. 0.]]\n", "['Rainy', 'Sunny', 'Cloudy']\n", "True\n", "[ 1. +0.j 0.33588989+0.j -0.53588989+0.j]\n", "[[-0.57735027+0.j -0.67954784+0.j 0.27349606+0.j]\n", " [-0.57735027+0.j 0.26228594+0.j -0.4184597 +0.j]\n", " [-0.57735027+0.j 0.78086881+0.j 0.78086881+0.j]]\n" ] } ], "source": [ "print(new_object2.tpm)\n", "print(new_object2.states)\n", "print(new_object2.eigendecom)\n", "print(new_object2.eigenvalues)\n", "print(new_object2.eigenvectors)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Transform a Markov Chain to a Neural Network " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0/2000, Loss: 0.6988\n", "Epoch: 1/2000, Loss: 0.6986\n", "Epoch: 2/2000, Loss: 0.6983\n", "Epoch: 3/2000, Loss: 0.6978\n", "Epoch: 4/2000, Loss: 0.6972\n", "Epoch: 5/2000, Loss: 0.6966\n", "Epoch: 6/2000, Loss: 0.6959\n", "Epoch: 7/2000, Loss: 0.6953\n", "Epoch: 8/2000, Loss: 0.6948\n", "Epoch: 9/2000, Loss: 0.6943\n", "Epoch: 10/2000, Loss: 0.6939\n", "Epoch: 11/2000, Loss: 0.6936\n", "Epoch: 12/2000, Loss: 0.6934\n", "Epoch: 13/2000, Loss: 0.6932\n", "Epoch: 14/2000, Loss: 0.6931\n", "Epoch: 15/2000, Loss: 0.6931\n", "Epoch: 16/2000, Loss: 0.6931\n", "Epoch: 17/2000, Loss: 0.6931\n", "Epoch: 18/2000, Loss: 0.6932\n", "Epoch: 19/2000, Loss: 0.6932\n", "Epoch: 20/2000, Loss: 0.6933\n", "Epoch: 21/2000, Loss: 0.6933\n", "Epoch: 22/2000, Loss: 0.6934\n", "Epoch: 23/2000, Loss: 0.6934\n", "Epoch: 24/2000, Loss: 0.6934\n", "Epoch: 25/2000, Loss: 0.6934\n", "Epoch: 26/2000, Loss: 0.6934\n", "Epoch: 27/2000, Loss: 0.6934\n", "Epoch: 28/2000, Loss: 0.6934\n", "Epoch: 29/2000, Loss: 0.6934\n", "Epoch: 30/2000, Loss: 0.6933\n", "Epoch: 31/2000, Loss: 0.6933\n", "Epoch: 32/2000, Loss: 0.6932\n", "Epoch: 33/2000, Loss: 0.6932\n", "Epoch: 34/2000, Loss: 0.6932\n", "Epoch: 35/2000, Loss: 0.6931\n", "Epoch: 36/2000, Loss: 0.6931\n", "Epoch: 37/2000, Loss: 0.6931\n", "Epoch: 38/2000, Loss: 0.6931\n", "Epoch: 39/2000, Loss: 0.6930\n", "Epoch: 40/2000, Loss: 0.6930\n", "Epoch: 41/2000, Loss: 0.6930\n", "Epoch: 42/2000, Loss: 0.6930\n", "Epoch: 43/2000, Loss: 0.6930\n", "Epoch: 44/2000, Loss: 0.6930\n", "Epoch: 45/2000, Loss: 0.6930\n", "Epoch: 46/2000, Loss: 0.6930\n", "Epoch: 47/2000, Loss: 0.6930\n", "Epoch: 48/2000, Loss: 0.6930\n", "Epoch: 49/2000, Loss: 0.6930\n", "Epoch: 50/2000, Loss: 0.6930\n", "Epoch: 51/2000, Loss: 0.6930\n", "Epoch: 52/2000, Loss: 0.6930\n", "Epoch: 53/2000, Loss: 0.6930\n", "Epoch: 54/2000, Loss: 0.6930\n", "Epoch: 55/2000, Loss: 0.6930\n", "Epoch: 56/2000, Loss: 0.6930\n", "Epoch: 57/2000, Loss: 0.6930\n", "Epoch: 58/2000, Loss: 0.6930\n", "Epoch: 59/2000, Loss: 0.6930\n", "Epoch: 60/2000, Loss: 0.6930\n", "Epoch: 61/2000, Loss: 0.6930\n", "Epoch: 62/2000, Loss: 0.6930\n", "Epoch: 63/2000, Loss: 0.6930\n", "Epoch: 64/2000, Loss: 0.6930\n", "Epoch: 65/2000, Loss: 0.6929\n", "Epoch: 66/2000, Loss: 0.6929\n", "Epoch: 67/2000, Loss: 0.6929\n", "Epoch: 68/2000, Loss: 0.6929\n", "Epoch: 69/2000, Loss: 0.6929\n", "Epoch: 70/2000, Loss: 0.6929\n", "Epoch: 71/2000, Loss: 0.6929\n", "Epoch: 72/2000, Loss: 0.6929\n", "Epoch: 73/2000, Loss: 0.6929\n", "Epoch: 74/2000, Loss: 0.6929\n", "Epoch: 75/2000, Loss: 0.6929\n", "Epoch: 76/2000, Loss: 0.6929\n", "Epoch: 77/2000, Loss: 0.6929\n", "Epoch: 78/2000, Loss: 0.6929\n", "Epoch: 79/2000, Loss: 0.6929\n", "Epoch: 80/2000, Loss: 0.6929\n", "Epoch: 81/2000, Loss: 0.6928\n", "Epoch: 82/2000, Loss: 0.6928\n", "Epoch: 83/2000, Loss: 0.6928\n", "Epoch: 84/2000, Loss: 0.6928\n", "Epoch: 85/2000, Loss: 0.6928\n", "Epoch: 86/2000, Loss: 0.6928\n", "Epoch: 87/2000, Loss: 0.6928\n", "Epoch: 88/2000, Loss: 0.6928\n", "Epoch: 89/2000, Loss: 0.6928\n", "Epoch: 90/2000, Loss: 0.6927\n", "Epoch: 91/2000, Loss: 0.6927\n", "Epoch: 92/2000, Loss: 0.6927\n", "Epoch: 93/2000, Loss: 0.6927\n", "Epoch: 94/2000, Loss: 0.6927\n", "Epoch: 95/2000, Loss: 0.6927\n", "Epoch: 96/2000, Loss: 0.6927\n", "Epoch: 97/2000, Loss: 0.6926\n", "Epoch: 98/2000, Loss: 0.6926\n", "Epoch: 99/2000, Loss: 0.6926\n", "Epoch: 100/2000, Loss: 0.6926\n", "Epoch: 101/2000, Loss: 0.6926\n", "Epoch: 102/2000, Loss: 0.6925\n", "Epoch: 103/2000, Loss: 0.6925\n", "Epoch: 104/2000, Loss: 0.6925\n", "Epoch: 105/2000, Loss: 0.6925\n", "Epoch: 106/2000, Loss: 0.6925\n", "Epoch: 107/2000, Loss: 0.6924\n", "Epoch: 108/2000, Loss: 0.6924\n", "Epoch: 109/2000, Loss: 0.6924\n", "Epoch: 110/2000, Loss: 0.6923\n", "Epoch: 111/2000, Loss: 0.6923\n", "Epoch: 112/2000, Loss: 0.6923\n", "Epoch: 113/2000, Loss: 0.6922\n", "Epoch: 114/2000, Loss: 0.6922\n", "Epoch: 115/2000, Loss: 0.6921\n", "Epoch: 116/2000, Loss: 0.6921\n", "Epoch: 117/2000, Loss: 0.6920\n", "Epoch: 118/2000, Loss: 0.6920\n", "Epoch: 119/2000, Loss: 0.6919\n", "Epoch: 120/2000, Loss: 0.6918\n", "Epoch: 121/2000, Loss: 0.6918\n", "Epoch: 122/2000, Loss: 0.6917\n", "Epoch: 123/2000, Loss: 0.6916\n", "Epoch: 124/2000, Loss: 0.6915\n", "Epoch: 125/2000, Loss: 0.6914\n", "Epoch: 126/2000, Loss: 0.6913\n", "Epoch: 127/2000, Loss: 0.6912\n", "Epoch: 128/2000, Loss: 0.6911\n", "Epoch: 129/2000, Loss: 0.6910\n", "Epoch: 130/2000, Loss: 0.6908\n", "Epoch: 131/2000, Loss: 0.6907\n", "Epoch: 132/2000, Loss: 0.6905\n", "Epoch: 133/2000, Loss: 0.6903\n", "Epoch: 134/2000, Loss: 0.6901\n", "Epoch: 135/2000, Loss: 0.6899\n", "Epoch: 136/2000, Loss: 0.6896\n", "Epoch: 137/2000, Loss: 0.6894\n", "Epoch: 138/2000, Loss: 0.6890\n", "Epoch: 139/2000, Loss: 0.6887\n", "Epoch: 140/2000, Loss: 0.6883\n", "Epoch: 141/2000, Loss: 0.6879\n", "Epoch: 142/2000, Loss: 0.6873\n", "Epoch: 143/2000, Loss: 0.6868\n", "Epoch: 144/2000, Loss: 0.6861\n", "Epoch: 145/2000, Loss: 0.6854\n", "Epoch: 146/2000, Loss: 0.6845\n", "Epoch: 147/2000, Loss: 0.6835\n", "Epoch: 148/2000, Loss: 0.6823\n", "Epoch: 149/2000, Loss: 0.6809\n", "Epoch: 150/2000, Loss: 0.6793\n", "Epoch: 151/2000, Loss: 0.6773\n", "Epoch: 152/2000, Loss: 0.6758\n", "Epoch: 153/2000, Loss: 0.6742\n", "Epoch: 154/2000, Loss: 0.6708\n", "Epoch: 155/2000, Loss: 0.6677\n", "Epoch: 156/2000, Loss: 0.6646\n", "Epoch: 157/2000, Loss: 0.6605\n", "Epoch: 158/2000, Loss: 0.6551\n", "Epoch: 159/2000, Loss: 0.6493\n", "Epoch: 160/2000, Loss: 0.6431\n", "Epoch: 161/2000, Loss: 0.6344\n", "Epoch: 162/2000, Loss: 0.6248\n", "Epoch: 163/2000, Loss: 0.6140\n", "Epoch: 164/2000, Loss: 0.6007\n", "Epoch: 165/2000, Loss: 0.5867\n", "Epoch: 166/2000, Loss: 0.5703\n", "Epoch: 167/2000, Loss: 0.5526\n", "Epoch: 168/2000, Loss: 0.5345\n", "Epoch: 169/2000, Loss: 0.5161\n", "Epoch: 170/2000, Loss: 0.4988\n", "Epoch: 171/2000, Loss: 0.4820\n", "Epoch: 172/2000, Loss: 0.4681\n", "Epoch: 173/2000, Loss: 0.4550\n", "Epoch: 174/2000, Loss: 0.4427\n", "Epoch: 175/2000, Loss: 0.4308\n", "Epoch: 176/2000, Loss: 0.4196\n", "Epoch: 177/2000, Loss: 0.4091\n", "Epoch: 178/2000, Loss: 0.3993\n", "Epoch: 179/2000, Loss: 0.3904\n", "Epoch: 180/2000, Loss: 0.3824\n", "Epoch: 181/2000, Loss: 0.3752\n", "Epoch: 182/2000, Loss: 0.3687\n", "Epoch: 183/2000, Loss: 0.3631\n", "Epoch: 184/2000, Loss: 0.3581\n", "Epoch: 185/2000, Loss: 0.3537\n", "Epoch: 186/2000, Loss: 0.3499\n", "Epoch: 187/2000, Loss: 0.3465\n", "Epoch: 188/2000, Loss: 0.3436\n", "Epoch: 189/2000, Loss: 0.3410\n", "Epoch: 190/2000, Loss: 0.3387\n", "Epoch: 191/2000, Loss: 0.3367\n", "Epoch: 192/2000, Loss: 0.3350\n", "Epoch: 193/2000, Loss: 0.3334\n", "Epoch: 194/2000, Loss: 0.3321\n", "Epoch: 195/2000, Loss: 0.3309\n", "Epoch: 196/2000, Loss: 0.3298\n", "Epoch: 197/2000, Loss: 0.3288\n", "Epoch: 198/2000, Loss: 0.3280\n", "Epoch: 199/2000, Loss: 0.3272\n", "Epoch: 200/2000, Loss: 0.3265\n", "Epoch: 201/2000, Loss: 0.3259\n", "Epoch: 202/2000, Loss: 0.3254\n", "Epoch: 203/2000, Loss: 0.3248\n", "Epoch: 204/2000, Loss: 0.3244\n", "Epoch: 205/2000, Loss: 0.3240\n", "Epoch: 206/2000, Loss: 0.3236\n", "Epoch: 207/2000, Loss: 0.3232\n", "Epoch: 208/2000, Loss: 0.3229\n", "Epoch: 209/2000, Loss: 0.3226\n", "Epoch: 210/2000, Loss: 0.3223\n", "Epoch: 211/2000, Loss: 0.3221\n", "Epoch: 212/2000, Loss: 0.3218\n", "Epoch: 213/2000, Loss: 0.3216\n", "Epoch: 214/2000, Loss: 0.3214\n", "Epoch: 215/2000, Loss: 0.3212\n", "Epoch: 216/2000, Loss: 0.3210\n", "Epoch: 217/2000, Loss: 0.3209\n", "Epoch: 218/2000, Loss: 0.3207\n", "Epoch: 219/2000, Loss: 0.3206\n", "Epoch: 220/2000, Loss: 0.3204\n", "Epoch: 221/2000, Loss: 0.3203\n", "Epoch: 222/2000, Loss: 0.3201\n", "Epoch: 223/2000, Loss: 0.3200\n", "Epoch: 224/2000, Loss: 0.3199\n", "Epoch: 225/2000, Loss: 0.3198\n", "Epoch: 226/2000, Loss: 0.3197\n", "Epoch: 227/2000, Loss: 0.3196\n", "Epoch: 228/2000, Loss: 0.3195\n", "Epoch: 229/2000, Loss: 0.3194\n", "Epoch: 230/2000, Loss: 0.3193\n", "Epoch: 231/2000, Loss: 0.3192\n", "Epoch: 232/2000, Loss: 0.3192\n", "Epoch: 233/2000, Loss: 0.3191\n", "Epoch: 234/2000, Loss: 0.3190\n", "Epoch: 235/2000, Loss: 0.3189\n", "Epoch: 236/2000, Loss: 0.3189\n", "Epoch: 237/2000, Loss: 0.3188\n", "Epoch: 238/2000, Loss: 0.3187\n", "Epoch: 239/2000, Loss: 0.3187\n", "Epoch: 240/2000, Loss: 0.3186\n", "Epoch: 241/2000, Loss: 0.3185\n", "Epoch: 242/2000, Loss: 0.3185\n", "Epoch: 243/2000, Loss: 0.3184\n", "Epoch: 244/2000, Loss: 0.3184\n", "Epoch: 245/2000, Loss: 0.3183\n", "Epoch: 246/2000, Loss: 0.3183\n", "Epoch: 247/2000, Loss: 0.3182\n", "Epoch: 248/2000, Loss: 0.3182\n", "Epoch: 249/2000, Loss: 0.3181\n", "Epoch: 250/2000, Loss: 0.3181\n", "Epoch: 251/2000, Loss: 0.3180\n", "Epoch: 252/2000, Loss: 0.3180\n", "Epoch: 253/2000, Loss: 0.3179\n", "Epoch: 254/2000, Loss: 0.3179\n", "Epoch: 255/2000, Loss: 0.3178\n", "Epoch: 256/2000, Loss: 0.3178\n", "Epoch: 257/2000, Loss: 0.3178\n", "Epoch: 258/2000, Loss: 0.3177\n", "Epoch: 259/2000, Loss: 0.3177\n", "Epoch: 260/2000, Loss: 0.3176\n", "Epoch: 261/2000, Loss: 0.3176\n", "Epoch: 262/2000, Loss: 0.3176\n", "Epoch: 263/2000, Loss: 0.3175\n", "Epoch: 264/2000, Loss: 0.3175\n", "Epoch: 265/2000, Loss: 0.3175\n", "Epoch: 266/2000, Loss: 0.3174\n", "Epoch: 267/2000, Loss: 0.3174\n", "Epoch: 268/2000, Loss: 0.3174\n", "Epoch: 269/2000, Loss: 0.3173\n", "Epoch: 270/2000, Loss: 0.3173\n", "Epoch: 271/2000, Loss: 0.3173\n", "Epoch: 272/2000, Loss: 0.3172\n", "Epoch: 273/2000, Loss: 0.3172\n", "Epoch: 274/2000, Loss: 0.3172\n", "Epoch: 275/2000, Loss: 0.3171\n", "Epoch: 276/2000, Loss: 0.3171\n", "Epoch: 277/2000, Loss: 0.3171\n", "Epoch: 278/2000, Loss: 0.3171\n", "Epoch: 279/2000, Loss: 0.3170\n", "Epoch: 280/2000, Loss: 0.3170\n", "Epoch: 281/2000, Loss: 0.3170\n", "Epoch: 282/2000, Loss: 0.3169\n", "Epoch: 283/2000, Loss: 0.3169\n", "Epoch: 284/2000, Loss: 0.3169\n", "Epoch: 285/2000, Loss: 0.3169\n", "Epoch: 286/2000, Loss: 0.3168\n", "Epoch: 287/2000, Loss: 0.3168\n", "Epoch: 288/2000, Loss: 0.3168\n", "Epoch: 289/2000, Loss: 0.3168\n", "Epoch: 290/2000, Loss: 0.3167\n", "Epoch: 291/2000, Loss: 0.3167\n", "Epoch: 292/2000, Loss: 0.3167\n", "Epoch: 293/2000, Loss: 0.3167\n", "Epoch: 294/2000, Loss: 0.3167\n", "Epoch: 295/2000, Loss: 0.3166\n", "Epoch: 296/2000, Loss: 0.3166\n", "Epoch: 297/2000, Loss: 0.3166\n", "Epoch: 298/2000, Loss: 0.3166\n", "Epoch: 299/2000, Loss: 0.3165\n", "Epoch: 300/2000, Loss: 0.3165\n", "Epoch: 301/2000, Loss: 0.3165\n", "Epoch: 302/2000, Loss: 0.3165\n", "Epoch: 303/2000, Loss: 0.3165\n", "Epoch: 304/2000, Loss: 0.3164\n", "Epoch: 305/2000, Loss: 0.3164\n", "Epoch: 306/2000, Loss: 0.3164\n", "Epoch: 307/2000, Loss: 0.3164\n", "Epoch: 308/2000, Loss: 0.3164\n", "Epoch: 309/2000, Loss: 0.3164\n", "Epoch: 310/2000, Loss: 0.3163\n", "Epoch: 311/2000, Loss: 0.3163\n", "Epoch: 312/2000, Loss: 0.3163\n", "Epoch: 313/2000, Loss: 0.3163\n", "Epoch: 314/2000, Loss: 0.3163\n", "Epoch: 315/2000, Loss: 0.3162\n", "Epoch: 316/2000, Loss: 0.3162\n", "Epoch: 317/2000, Loss: 0.3162\n", "Epoch: 318/2000, Loss: 0.3162\n", "Epoch: 319/2000, Loss: 0.3162\n", "Epoch: 320/2000, Loss: 0.3162\n", "Epoch: 321/2000, Loss: 0.3161\n", "Epoch: 322/2000, Loss: 0.3161\n", "Epoch: 323/2000, Loss: 0.3161\n", "Epoch: 324/2000, Loss: 0.3161\n", "Epoch: 325/2000, Loss: 0.3161\n", "Epoch: 326/2000, Loss: 0.3161\n", "Epoch: 327/2000, Loss: 0.3161\n", "Epoch: 328/2000, Loss: 0.3160\n", "Epoch: 329/2000, Loss: 0.3160\n", "Epoch: 330/2000, Loss: 0.3160\n", "Epoch: 331/2000, Loss: 0.3160\n", "Epoch: 332/2000, Loss: 0.3160\n", "Epoch: 333/2000, Loss: 0.3160\n", "Epoch: 334/2000, Loss: 0.3160\n", "Epoch: 335/2000, Loss: 0.3159\n", "Epoch: 336/2000, Loss: 0.3159\n", "Epoch: 337/2000, Loss: 0.3159\n", "Epoch: 338/2000, Loss: 0.3159\n", "Epoch: 339/2000, Loss: 0.3159\n", "Epoch: 340/2000, Loss: 0.3159\n", "Epoch: 341/2000, Loss: 0.3159\n", "Epoch: 342/2000, Loss: 0.3158\n", "Epoch: 343/2000, Loss: 0.3158\n", "Epoch: 344/2000, Loss: 0.3158\n", "Epoch: 345/2000, Loss: 0.3158\n", "Epoch: 346/2000, Loss: 0.3158\n", "Epoch: 347/2000, Loss: 0.3158\n", "Epoch: 348/2000, Loss: 0.3158\n", "Epoch: 349/2000, Loss: 0.3158\n", "Epoch: 350/2000, Loss: 0.3157\n", "Epoch: 351/2000, Loss: 0.3157\n", "Epoch: 352/2000, Loss: 0.3157\n", "Epoch: 353/2000, Loss: 0.3157\n", "Epoch: 354/2000, Loss: 0.3157\n", "Epoch: 355/2000, Loss: 0.3157\n", "Epoch: 356/2000, Loss: 0.3157\n", "Epoch: 357/2000, Loss: 0.3157\n", "Epoch: 358/2000, Loss: 0.3157\n", "Epoch: 359/2000, Loss: 0.3156\n", "Epoch: 360/2000, Loss: 0.3156\n", "Epoch: 361/2000, Loss: 0.3156\n", "Epoch: 362/2000, Loss: 0.3156\n", "Epoch: 363/2000, Loss: 0.3156\n", "Epoch: 364/2000, Loss: 0.3156\n", "Epoch: 365/2000, Loss: 0.3156\n", "Epoch: 366/2000, Loss: 0.3156\n", "Epoch: 367/2000, Loss: 0.3156\n", "Epoch: 368/2000, Loss: 0.3156\n", "Epoch: 369/2000, Loss: 0.3155\n", "Epoch: 370/2000, Loss: 0.3155\n", "Epoch: 371/2000, Loss: 0.3155\n", "Epoch: 372/2000, Loss: 0.3155\n", "Epoch: 373/2000, Loss: 0.3155\n", "Epoch: 374/2000, Loss: 0.3155\n", "Epoch: 375/2000, Loss: 0.3155\n", "Epoch: 376/2000, Loss: 0.3155\n", "Epoch: 377/2000, Loss: 0.3155\n", "Epoch: 378/2000, Loss: 0.3155\n", "Epoch: 379/2000, Loss: 0.3154\n", "Epoch: 380/2000, Loss: 0.3154\n", "Epoch: 381/2000, Loss: 0.3154\n", "Epoch: 382/2000, Loss: 0.3154\n", "Epoch: 383/2000, Loss: 0.3154\n", "Epoch: 384/2000, Loss: 0.3154\n", "Epoch: 385/2000, Loss: 0.3154\n", "Epoch: 386/2000, Loss: 0.3154\n", "Epoch: 387/2000, Loss: 0.3154\n", "Epoch: 388/2000, Loss: 0.3154\n", "Epoch: 389/2000, Loss: 0.3154\n", "Epoch: 390/2000, Loss: 0.3154\n", "Epoch: 391/2000, Loss: 0.3153\n", "Epoch: 392/2000, Loss: 0.3153\n", "Epoch: 393/2000, Loss: 0.3153\n", "Epoch: 394/2000, Loss: 0.3153\n", "Epoch: 395/2000, Loss: 0.3153\n", "Epoch: 396/2000, Loss: 0.3153\n", "Epoch: 397/2000, Loss: 0.3153\n", "Epoch: 398/2000, Loss: 0.3153\n", "Epoch: 399/2000, Loss: 0.3153\n", "Epoch: 400/2000, Loss: 0.3153\n", "Epoch: 401/2000, Loss: 0.3153\n", "Epoch: 402/2000, Loss: 0.3153\n", "Epoch: 403/2000, Loss: 0.3152\n", "Epoch: 404/2000, Loss: 0.3152\n", "Epoch: 405/2000, Loss: 0.3152\n", "Epoch: 406/2000, Loss: 0.3152\n", "Epoch: 407/2000, Loss: 0.3152\n", "Epoch: 408/2000, Loss: 0.3152\n", "Epoch: 409/2000, Loss: 0.3152\n", "Epoch: 410/2000, Loss: 0.3152\n", "Epoch: 411/2000, Loss: 0.3152\n", "Epoch: 412/2000, Loss: 0.3152\n", "Epoch: 413/2000, Loss: 0.3152\n", "Epoch: 414/2000, Loss: 0.3152\n", "Epoch: 415/2000, Loss: 0.3152\n", "Epoch: 416/2000, Loss: 0.3152\n", "Epoch: 417/2000, Loss: 0.3151\n", "Epoch: 418/2000, Loss: 0.3151\n", "Epoch: 419/2000, Loss: 0.3151\n", "Epoch: 420/2000, Loss: 0.3151\n", "Epoch: 421/2000, Loss: 0.3151\n", "Epoch: 422/2000, Loss: 0.3151\n", "Epoch: 423/2000, Loss: 0.3151\n", "Epoch: 424/2000, Loss: 0.3151\n", "Epoch: 425/2000, Loss: 0.3151\n", "Epoch: 426/2000, Loss: 0.3151\n", "Epoch: 427/2000, Loss: 0.3151\n", "Epoch: 428/2000, Loss: 0.3151\n", "Epoch: 429/2000, Loss: 0.3151\n", "Epoch: 430/2000, Loss: 0.3151\n", "Epoch: 431/2000, Loss: 0.3151\n", "Epoch: 432/2000, Loss: 0.3151\n", "Epoch: 433/2000, Loss: 0.3150\n", "Epoch: 434/2000, Loss: 0.3150\n", "Epoch: 435/2000, Loss: 0.3150\n", "Epoch: 436/2000, Loss: 0.3150\n", "Epoch: 437/2000, Loss: 0.3150\n", "Epoch: 438/2000, Loss: 0.3150\n", "Epoch: 439/2000, Loss: 0.3150\n", "Epoch: 440/2000, Loss: 0.3150\n", "Epoch: 441/2000, Loss: 0.3150\n", "Epoch: 442/2000, Loss: 0.3150\n", "Epoch: 443/2000, Loss: 0.3150\n", "Epoch: 444/2000, Loss: 0.3150\n", "Epoch: 445/2000, Loss: 0.3150\n", "Epoch: 446/2000, Loss: 0.3150\n", "Epoch: 447/2000, Loss: 0.3150\n", "Epoch: 448/2000, Loss: 0.3150\n", "Epoch: 449/2000, Loss: 0.3150\n", "Epoch: 450/2000, Loss: 0.3149\n", "Epoch: 451/2000, Loss: 0.3149\n", "Epoch: 452/2000, Loss: 0.3149\n", "Epoch: 453/2000, Loss: 0.3149\n", "Epoch: 454/2000, Loss: 0.3149\n", "Epoch: 455/2000, Loss: 0.3149\n", "Epoch: 456/2000, Loss: 0.3149\n", "Epoch: 457/2000, Loss: 0.3149\n", "Epoch: 458/2000, Loss: 0.3149\n", "Epoch: 459/2000, Loss: 0.3149\n", "Epoch: 460/2000, Loss: 0.3149\n", "Epoch: 461/2000, Loss: 0.3149\n", "Epoch: 462/2000, Loss: 0.3149\n", "Epoch: 463/2000, Loss: 0.3149\n", "Epoch: 464/2000, Loss: 0.3149\n", "Epoch: 465/2000, Loss: 0.3149\n", "Epoch: 466/2000, Loss: 0.3149\n", "Epoch: 467/2000, Loss: 0.3149\n", "Epoch: 468/2000, Loss: 0.3149\n", "Epoch: 469/2000, Loss: 0.3149\n", "Epoch: 470/2000, Loss: 0.3148\n", "Epoch: 471/2000, Loss: 0.3148\n", "Epoch: 472/2000, Loss: 0.3148\n", "Epoch: 473/2000, Loss: 0.3148\n", "Epoch: 474/2000, Loss: 0.3148\n", "Epoch: 475/2000, Loss: 0.3148\n", "Epoch: 476/2000, Loss: 0.3148\n", "Epoch: 477/2000, Loss: 0.3148\n", "Epoch: 478/2000, Loss: 0.3148\n", "Epoch: 479/2000, Loss: 0.3148\n", "Epoch: 480/2000, Loss: 0.3148\n", "Epoch: 481/2000, Loss: 0.3148\n", "Epoch: 482/2000, Loss: 0.3148\n", "Epoch: 483/2000, Loss: 0.3148\n", "Epoch: 484/2000, Loss: 0.3148\n", "Epoch: 485/2000, Loss: 0.3148\n", "Epoch: 486/2000, Loss: 0.3148\n", "Epoch: 487/2000, Loss: 0.3148\n", "Epoch: 488/2000, Loss: 0.3148\n", "Epoch: 489/2000, Loss: 0.3148\n", "Epoch: 490/2000, Loss: 0.3148\n", "Epoch: 491/2000, Loss: 0.3148\n", "Epoch: 492/2000, Loss: 0.3147\n", "Epoch: 493/2000, Loss: 0.3147\n", "Epoch: 494/2000, Loss: 0.3147\n", "Epoch: 495/2000, Loss: 0.3147\n", "Epoch: 496/2000, Loss: 0.3147\n", "Epoch: 497/2000, Loss: 0.3147\n", "Epoch: 498/2000, Loss: 0.3147\n", "Epoch: 499/2000, Loss: 0.3147\n", "Epoch: 500/2000, Loss: 0.3147\n", "Epoch: 501/2000, Loss: 0.3147\n", "Epoch: 502/2000, Loss: 0.3147\n", "Epoch: 503/2000, Loss: 0.3147\n", "Epoch: 504/2000, Loss: 0.3147\n", "Epoch: 505/2000, Loss: 0.3147\n", "Epoch: 506/2000, Loss: 0.3147\n", "Epoch: 507/2000, Loss: 0.3147\n", "Epoch: 508/2000, Loss: 0.3147\n", "Epoch: 509/2000, Loss: 0.3147\n", "Epoch: 510/2000, Loss: 0.3147\n", "Epoch: 511/2000, Loss: 0.3147\n", "Epoch: 512/2000, Loss: 0.3147\n", "Epoch: 513/2000, Loss: 0.3147\n", "Epoch: 514/2000, Loss: 0.3147\n", "Epoch: 515/2000, Loss: 0.3147\n", "Epoch: 516/2000, Loss: 0.3147\n", "Epoch: 517/2000, Loss: 0.3147\n", "Epoch: 518/2000, Loss: 0.3147\n", "Epoch: 519/2000, Loss: 0.3147\n", "Epoch: 520/2000, Loss: 0.3147\n", "Epoch: 521/2000, Loss: 0.3147\n", "Epoch: 522/2000, Loss: 0.3147\n", "Epoch: 523/2000, Loss: 0.3147\n", "Epoch: 524/2000, Loss: 0.3147\n", "Epoch: 525/2000, Loss: 0.3147\n", "Epoch: 526/2000, Loss: 0.3147\n", "Epoch: 527/2000, Loss: 0.3147\n", "Epoch: 528/2000, Loss: 0.3147\n", "Epoch: 529/2000, Loss: 0.3147\n", "Epoch: 530/2000, Loss: 0.3147\n", "Epoch: 531/2000, Loss: 0.3147\n", "Epoch: 532/2000, Loss: 0.3147\n", "Epoch: 533/2000, Loss: 0.3147\n", "Epoch: 534/2000, Loss: 0.3147\n", "Epoch: 535/2000, Loss: 0.3146\n", "Epoch: 536/2000, Loss: 0.3146\n", "Epoch: 537/2000, Loss: 0.3146\n", "Epoch: 538/2000, Loss: 0.3146\n", "Epoch: 539/2000, Loss: 0.3146\n", "Epoch: 540/2000, Loss: 0.3146\n", "Epoch: 541/2000, Loss: 0.3146\n", "Epoch: 542/2000, Loss: 0.3146\n", "Epoch: 543/2000, Loss: 0.3146\n", "Epoch: 544/2000, Loss: 0.3146\n", "Epoch: 545/2000, Loss: 0.3146\n", "Epoch: 546/2000, Loss: 0.3146\n", "Epoch: 547/2000, Loss: 0.3146\n", "Epoch: 548/2000, Loss: 0.3146\n", "Epoch: 549/2000, Loss: 0.3146\n", "Epoch: 550/2000, Loss: 0.3146\n", "Epoch: 551/2000, Loss: 0.3146\n", "Epoch: 552/2000, Loss: 0.3146\n", "Epoch: 553/2000, Loss: 0.3146\n", "Epoch: 554/2000, Loss: 0.3146\n", "Epoch: 555/2000, Loss: 0.3146\n", "Epoch: 556/2000, Loss: 0.3146\n", "Epoch: 557/2000, Loss: 0.3146\n", "Epoch: 558/2000, Loss: 0.3146\n", "Epoch: 559/2000, Loss: 0.3146\n", "Epoch: 560/2000, Loss: 0.3146\n", "Epoch: 561/2000, Loss: 0.3146\n", "Epoch: 562/2000, Loss: 0.3146\n", "Epoch: 563/2000, Loss: 0.3146\n", "Epoch: 564/2000, Loss: 0.3146\n", "Epoch: 565/2000, Loss: 0.3146\n", "Epoch: 566/2000, Loss: 0.3146\n", "Epoch: 567/2000, Loss: 0.3146\n", "Epoch: 568/2000, Loss: 0.3146\n", "Epoch: 569/2000, Loss: 0.3146\n", "Epoch: 570/2000, Loss: 0.3146\n", "Epoch: 571/2000, Loss: 0.3146\n", "Epoch: 572/2000, Loss: 0.3146\n", "Epoch: 573/2000, Loss: 0.3146\n", "Epoch: 574/2000, Loss: 0.3146\n", "Epoch: 575/2000, Loss: 0.3146\n", "Epoch: 576/2000, Loss: 0.3146\n", "Epoch: 577/2000, Loss: 0.3146\n", "Epoch: 578/2000, Loss: 0.3146\n", "Epoch: 579/2000, Loss: 0.3146\n", "Epoch: 580/2000, Loss: 0.3146\n", "Epoch: 581/2000, Loss: 0.3146\n", "Epoch: 582/2000, Loss: 0.3146\n", "Epoch: 583/2000, Loss: 0.3146\n", "Epoch: 584/2000, Loss: 0.3146\n", "Epoch: 585/2000, Loss: 0.3146\n", "Epoch: 586/2000, Loss: 0.3146\n", "Epoch: 587/2000, Loss: 0.3146\n", "Epoch: 588/2000, Loss: 0.3146\n", "Epoch: 589/2000, Loss: 0.3146\n", "Epoch: 590/2000, Loss: 0.3146\n", "Epoch: 591/2000, Loss: 0.3146\n", "Epoch: 592/2000, Loss: 0.3146\n", "Epoch: 593/2000, Loss: 0.3146\n", "Epoch: 594/2000, Loss: 0.3146\n", "Epoch: 595/2000, Loss: 0.3145\n", "Epoch: 596/2000, Loss: 0.3145\n", "Epoch: 597/2000, Loss: 0.3145\n", "Epoch: 598/2000, Loss: 0.3145\n", "Epoch: 599/2000, Loss: 0.3145\n", "Epoch: 600/2000, Loss: 0.3145\n", "Epoch: 601/2000, Loss: 0.3145\n", "Epoch: 602/2000, Loss: 0.3145\n", "Epoch: 603/2000, Loss: 0.3145\n", "Epoch: 604/2000, Loss: 0.3145\n", "Epoch: 605/2000, Loss: 0.3145\n", "Epoch: 606/2000, Loss: 0.3145\n", "Epoch: 607/2000, Loss: 0.3145\n", "Epoch: 608/2000, Loss: 0.3145\n", "Epoch: 609/2000, Loss: 0.3145\n", "Epoch: 610/2000, Loss: 0.3145\n", "Epoch: 611/2000, Loss: 0.3145\n", "Epoch: 612/2000, Loss: 0.3145\n", "Epoch: 613/2000, Loss: 0.3145\n", "Epoch: 614/2000, Loss: 0.3145\n", "Epoch: 615/2000, Loss: 0.3145\n", "Epoch: 616/2000, Loss: 0.3145\n", "Epoch: 617/2000, Loss: 0.3145\n", "Epoch: 618/2000, Loss: 0.3145\n", "Epoch: 619/2000, Loss: 0.3145\n", "Epoch: 620/2000, Loss: 0.3145\n", "Epoch: 621/2000, Loss: 0.3145\n", "Epoch: 622/2000, Loss: 0.3145\n", "Epoch: 623/2000, Loss: 0.3145\n", "Epoch: 624/2000, Loss: 0.3145\n", "Epoch: 625/2000, Loss: 0.3145\n", "Epoch: 626/2000, Loss: 0.3145\n", "Epoch: 627/2000, Loss: 0.3145\n", "Epoch: 628/2000, Loss: 0.3145\n", "Epoch: 629/2000, Loss: 0.3145\n", "Epoch: 630/2000, Loss: 0.3145\n", "Epoch: 631/2000, Loss: 0.3145\n", "Epoch: 632/2000, Loss: 0.3145\n", "Epoch: 633/2000, Loss: 0.3145\n", "Epoch: 634/2000, Loss: 0.3145\n", "Epoch: 635/2000, Loss: 0.3145\n", "Epoch: 636/2000, Loss: 0.3145\n", "Epoch: 637/2000, Loss: 0.3145\n", "Epoch: 638/2000, Loss: 0.3145\n", "Epoch: 639/2000, Loss: 0.3145\n", "Epoch: 640/2000, Loss: 0.3145\n", "Epoch: 641/2000, Loss: 0.3145\n", "Epoch: 642/2000, Loss: 0.3145\n", "Epoch: 643/2000, Loss: 0.3145\n", "Epoch: 644/2000, Loss: 0.3145\n", "Epoch: 645/2000, Loss: 0.3145\n", "Epoch: 646/2000, Loss: 0.3145\n", "Epoch: 647/2000, Loss: 0.3145\n", "Epoch: 648/2000, Loss: 0.3145\n", "Epoch: 649/2000, Loss: 0.3145\n", "Epoch: 650/2000, Loss: 0.3145\n", "Epoch: 651/2000, Loss: 0.3145\n", "Epoch: 652/2000, Loss: 0.3145\n", "Epoch: 653/2000, Loss: 0.3145\n", "Epoch: 654/2000, Loss: 0.3145\n", "Epoch: 655/2000, Loss: 0.3145\n", "Epoch: 656/2000, Loss: 0.3145\n", "Epoch: 657/2000, Loss: 0.3145\n", "Epoch: 658/2000, Loss: 0.3145\n", "Epoch: 659/2000, Loss: 0.3145\n", "Epoch: 660/2000, Loss: 0.3145\n", "Epoch: 661/2000, Loss: 0.3145\n", "Epoch: 662/2000, Loss: 0.3145\n", "Epoch: 663/2000, Loss: 0.3145\n", "Epoch: 664/2000, Loss: 0.3145\n", "Epoch: 665/2000, Loss: 0.3144\n", "Epoch: 666/2000, Loss: 0.3144\n", "Epoch: 667/2000, Loss: 0.3144\n", "Epoch: 668/2000, Loss: 0.3144\n", "Epoch: 669/2000, Loss: 0.3144\n", "Epoch: 670/2000, Loss: 0.3144\n", "Epoch: 671/2000, Loss: 0.3144\n", "Epoch: 672/2000, Loss: 0.3144\n", "Epoch: 673/2000, Loss: 0.3144\n", "Epoch: 674/2000, Loss: 0.3144\n", "Epoch: 675/2000, Loss: 0.3144\n", "Epoch: 676/2000, Loss: 0.3144\n", "Epoch: 677/2000, Loss: 0.3144\n", "Epoch: 678/2000, Loss: 0.3144\n", "Epoch: 679/2000, Loss: 0.3144\n", "Epoch: 680/2000, Loss: 0.3144\n", "Epoch: 681/2000, Loss: 0.3144\n", "Epoch: 682/2000, Loss: 0.3144\n", "Epoch: 683/2000, Loss: 0.3144\n", "Epoch: 684/2000, Loss: 0.3144\n", "Epoch: 685/2000, Loss: 0.3144\n", "Epoch: 686/2000, Loss: 0.3144\n", "Epoch: 687/2000, Loss: 0.3144\n", "Epoch: 688/2000, Loss: 0.3144\n", "Epoch: 689/2000, Loss: 0.3144\n", "Epoch: 690/2000, Loss: 0.3144\n", "Epoch: 691/2000, Loss: 0.3144\n", "Epoch: 692/2000, Loss: 0.3144\n", "Epoch: 693/2000, Loss: 0.3144\n", "Epoch: 694/2000, Loss: 0.3144\n", "Epoch: 695/2000, Loss: 0.3144\n", "Epoch: 696/2000, Loss: 0.3144\n", "Epoch: 697/2000, Loss: 0.3144\n", "Epoch: 698/2000, Loss: 0.3144\n", "Epoch: 699/2000, Loss: 0.3144\n", "Epoch: 700/2000, Loss: 0.3144\n", "Epoch: 701/2000, Loss: 0.3144\n", "Epoch: 702/2000, Loss: 0.3144\n", "Epoch: 703/2000, Loss: 0.3144\n", "Epoch: 704/2000, Loss: 0.3144\n", "Epoch: 705/2000, Loss: 0.3144\n", "Epoch: 706/2000, Loss: 0.3144\n", "Epoch: 707/2000, Loss: 0.3144\n", "Epoch: 708/2000, Loss: 0.3144\n", "Epoch: 709/2000, Loss: 0.3144\n", "Epoch: 710/2000, Loss: 0.3144\n", "Epoch: 711/2000, Loss: 0.3144\n", "Epoch: 712/2000, Loss: 0.3144\n", "Epoch: 713/2000, Loss: 0.3144\n", "Epoch: 714/2000, Loss: 0.3144\n", "Epoch: 715/2000, Loss: 0.3144\n", "Epoch: 716/2000, Loss: 0.3144\n", "Epoch: 717/2000, Loss: 0.3144\n", "Epoch: 718/2000, Loss: 0.3144\n", "Epoch: 719/2000, Loss: 0.3144\n", "Epoch: 720/2000, Loss: 0.3144\n", "Epoch: 721/2000, Loss: 0.3144\n", "Epoch: 722/2000, Loss: 0.3144\n", "Epoch: 723/2000, Loss: 0.3144\n", "Epoch: 724/2000, Loss: 0.3144\n", "Epoch: 725/2000, Loss: 0.3144\n", "Epoch: 726/2000, Loss: 0.3144\n", "Epoch: 727/2000, Loss: 0.3144\n", "Epoch: 728/2000, Loss: 0.3144\n", "Epoch: 729/2000, Loss: 0.3144\n", "Epoch: 730/2000, Loss: 0.3144\n", "Epoch: 731/2000, Loss: 0.3144\n", "Epoch: 732/2000, Loss: 0.3144\n", "Epoch: 733/2000, Loss: 0.3144\n", "Epoch: 734/2000, Loss: 0.3144\n", "Epoch: 735/2000, Loss: 0.3144\n", "Epoch: 736/2000, Loss: 0.3144\n", "Epoch: 737/2000, Loss: 0.3144\n", "Epoch: 738/2000, Loss: 0.3144\n", "Epoch: 739/2000, Loss: 0.3144\n", "Epoch: 740/2000, Loss: 0.3144\n", "Epoch: 741/2000, Loss: 0.3144\n", "Epoch: 742/2000, Loss: 0.3144\n", "Epoch: 743/2000, Loss: 0.3144\n", "Epoch: 744/2000, Loss: 0.3144\n", "Epoch: 745/2000, Loss: 0.3144\n", "Epoch: 746/2000, Loss: 0.3144\n", "Epoch: 747/2000, Loss: 0.3143\n", "Epoch: 748/2000, Loss: 0.3143\n", "Epoch: 749/2000, Loss: 0.3143\n", "Epoch: 750/2000, Loss: 0.3143\n", "Epoch: 751/2000, Loss: 0.3143\n", "Epoch: 752/2000, Loss: 0.3143\n", "Epoch: 753/2000, Loss: 0.3143\n", "Epoch: 754/2000, Loss: 0.3143\n", "Epoch: 755/2000, Loss: 0.3143\n", "Epoch: 756/2000, Loss: 0.3143\n", "Epoch: 757/2000, Loss: 0.3143\n", "Epoch: 758/2000, Loss: 0.3143\n", "Epoch: 759/2000, Loss: 0.3143\n", "Epoch: 760/2000, Loss: 0.3143\n", "Epoch: 761/2000, Loss: 0.3143\n", "Epoch: 762/2000, Loss: 0.3143\n", "Epoch: 763/2000, Loss: 0.3143\n", "Epoch: 764/2000, Loss: 0.3143\n", "Epoch: 765/2000, Loss: 0.3143\n", "Epoch: 766/2000, Loss: 0.3143\n", "Epoch: 767/2000, Loss: 0.3143\n", "Epoch: 768/2000, Loss: 0.3143\n", "Epoch: 769/2000, Loss: 0.3143\n", "Epoch: 770/2000, Loss: 0.3143\n", "Epoch: 771/2000, Loss: 0.3143\n", "Epoch: 772/2000, Loss: 0.3143\n", "Epoch: 773/2000, Loss: 0.3143\n", "Epoch: 774/2000, Loss: 0.3143\n", "Epoch: 775/2000, Loss: 0.3143\n", "Epoch: 776/2000, Loss: 0.3143\n", "Epoch: 777/2000, Loss: 0.3143\n", "Epoch: 778/2000, Loss: 0.3143\n", "Epoch: 779/2000, Loss: 0.3143\n", "Epoch: 780/2000, Loss: 0.3143\n", "Epoch: 781/2000, Loss: 0.3143\n", "Epoch: 782/2000, Loss: 0.3143\n", "Epoch: 783/2000, Loss: 0.3143\n", "Epoch: 784/2000, Loss: 0.3143\n", "Epoch: 785/2000, Loss: 0.3143\n", "Epoch: 786/2000, Loss: 0.3143\n", "Epoch: 787/2000, Loss: 0.3143\n", "Epoch: 788/2000, Loss: 0.3143\n", "Epoch: 789/2000, Loss: 0.3143\n", "Epoch: 790/2000, Loss: 0.3143\n", "Epoch: 791/2000, Loss: 0.3143\n", "Epoch: 792/2000, Loss: 0.3143\n", "Epoch: 793/2000, Loss: 0.3143\n", "Epoch: 794/2000, Loss: 0.3143\n", "Epoch: 795/2000, Loss: 0.3143\n", "Epoch: 796/2000, Loss: 0.3143\n", "Epoch: 797/2000, Loss: 0.3143\n", "Epoch: 798/2000, Loss: 0.3143\n", "Epoch: 799/2000, Loss: 0.3143\n", "Epoch: 800/2000, Loss: 0.3143\n", "Epoch: 801/2000, Loss: 0.3143\n", "Epoch: 802/2000, Loss: 0.3143\n", "Epoch: 803/2000, Loss: 0.3143\n", "Epoch: 804/2000, Loss: 0.3143\n", "Epoch: 805/2000, Loss: 0.3143\n", "Epoch: 806/2000, Loss: 0.3143\n", "Epoch: 807/2000, Loss: 0.3143\n", "Epoch: 808/2000, Loss: 0.3143\n", "Epoch: 809/2000, Loss: 0.3143\n", "Epoch: 810/2000, Loss: 0.3143\n", "Epoch: 811/2000, Loss: 0.3143\n", "Epoch: 812/2000, Loss: 0.3143\n", "Epoch: 813/2000, Loss: 0.3143\n", "Epoch: 814/2000, Loss: 0.3143\n", "Epoch: 815/2000, Loss: 0.3143\n", "Epoch: 816/2000, Loss: 0.3143\n", "Epoch: 817/2000, Loss: 0.3143\n", "Epoch: 818/2000, Loss: 0.3143\n", "Epoch: 819/2000, Loss: 0.3143\n", "Epoch: 820/2000, Loss: 0.3143\n", "Epoch: 821/2000, Loss: 0.3143\n", "Epoch: 822/2000, Loss: 0.3143\n", "Epoch: 823/2000, Loss: 0.3143\n", "Epoch: 824/2000, Loss: 0.3143\n", "Epoch: 825/2000, Loss: 0.3143\n", "Epoch: 826/2000, Loss: 0.3143\n", "Epoch: 827/2000, Loss: 0.3143\n", "Epoch: 828/2000, Loss: 0.3143\n", "Epoch: 829/2000, Loss: 0.3143\n", "Epoch: 830/2000, Loss: 0.3143\n", "Epoch: 831/2000, Loss: 0.3143\n", "Epoch: 832/2000, Loss: 0.3143\n", "Epoch: 833/2000, Loss: 0.3143\n", "Epoch: 834/2000, Loss: 0.3143\n", "Epoch: 835/2000, Loss: 0.3143\n", "Epoch: 836/2000, Loss: 0.3143\n", "Epoch: 837/2000, Loss: 0.3143\n", "Epoch: 838/2000, Loss: 0.3143\n", "Epoch: 839/2000, Loss: 0.3143\n", "Epoch: 840/2000, Loss: 0.3143\n", "Epoch: 841/2000, Loss: 0.3143\n", "Epoch: 842/2000, Loss: 0.3143\n", "Epoch: 843/2000, Loss: 0.3143\n", "Epoch: 844/2000, Loss: 0.3143\n", "Epoch: 845/2000, Loss: 0.3143\n", "Epoch: 846/2000, Loss: 0.3143\n", "Epoch: 847/2000, Loss: 0.3142\n", "Epoch: 848/2000, Loss: 0.3142\n", "Epoch: 849/2000, Loss: 0.3142\n", "Epoch: 850/2000, Loss: 0.3142\n", "Epoch: 851/2000, Loss: 0.3142\n", "Epoch: 852/2000, Loss: 0.3142\n", "Epoch: 853/2000, Loss: 0.3142\n", "Epoch: 854/2000, Loss: 0.3142\n", "Epoch: 855/2000, Loss: 0.3142\n", "Epoch: 856/2000, Loss: 0.3142\n", "Epoch: 857/2000, Loss: 0.3142\n", "Epoch: 858/2000, Loss: 0.3142\n", "Epoch: 859/2000, Loss: 0.3142\n", "Epoch: 860/2000, Loss: 0.3142\n", "Epoch: 861/2000, Loss: 0.3142\n", "Epoch: 862/2000, Loss: 0.3142\n", "Epoch: 863/2000, Loss: 0.3142\n", "Epoch: 864/2000, Loss: 0.3142\n", "Epoch: 865/2000, Loss: 0.3142\n", "Epoch: 866/2000, Loss: 0.3142\n", "Epoch: 867/2000, Loss: 0.3142\n", "Epoch: 868/2000, Loss: 0.3142\n", "Epoch: 869/2000, Loss: 0.3142\n", "Epoch: 870/2000, Loss: 0.3142\n", "Epoch: 871/2000, Loss: 0.3142\n", "Epoch: 872/2000, Loss: 0.3142\n", "Epoch: 873/2000, Loss: 0.3142\n", "Epoch: 874/2000, Loss: 0.3142\n", "Epoch: 875/2000, Loss: 0.3142\n", "Epoch: 876/2000, Loss: 0.3142\n", "Epoch: 877/2000, Loss: 0.3142\n", "Epoch: 878/2000, Loss: 0.3142\n", "Epoch: 879/2000, Loss: 0.3142\n", "Epoch: 880/2000, Loss: 0.3142\n", "Epoch: 881/2000, Loss: 0.3142\n", "Epoch: 882/2000, Loss: 0.3142\n", "Epoch: 883/2000, Loss: 0.3142\n", "Epoch: 884/2000, Loss: 0.3142\n", "Epoch: 885/2000, Loss: 0.3142\n", "Epoch: 886/2000, Loss: 0.3142\n", "Epoch: 887/2000, Loss: 0.3142\n", "Epoch: 888/2000, Loss: 0.3142\n", "Epoch: 889/2000, Loss: 0.3142\n", "Epoch: 890/2000, Loss: 0.3142\n", "Epoch: 891/2000, Loss: 0.3142\n", "Epoch: 892/2000, Loss: 0.3142\n", "Epoch: 893/2000, Loss: 0.3142\n", "Epoch: 894/2000, Loss: 0.3142\n", "Epoch: 895/2000, Loss: 0.3142\n", "Epoch: 896/2000, Loss: 0.3142\n", "Epoch: 897/2000, Loss: 0.3142\n", "Epoch: 898/2000, Loss: 0.3142\n", "Epoch: 899/2000, Loss: 0.3142\n", "Epoch: 900/2000, Loss: 0.3142\n", "Epoch: 901/2000, Loss: 0.3142\n", "Epoch: 902/2000, Loss: 0.3142\n", "Epoch: 903/2000, Loss: 0.3142\n", "Epoch: 904/2000, Loss: 0.3142\n", "Epoch: 905/2000, Loss: 0.3142\n", "Epoch: 906/2000, Loss: 0.3142\n", "Epoch: 907/2000, Loss: 0.3142\n", "Epoch: 908/2000, Loss: 0.3142\n", "Epoch: 909/2000, Loss: 0.3142\n", "Epoch: 910/2000, Loss: 0.3142\n", "Epoch: 911/2000, Loss: 0.3142\n", "Epoch: 912/2000, Loss: 0.3142\n", "Epoch: 913/2000, Loss: 0.3142\n", "Epoch: 914/2000, Loss: 0.3142\n", "Epoch: 915/2000, Loss: 0.3142\n", "Epoch: 916/2000, Loss: 0.3142\n", "Epoch: 917/2000, Loss: 0.3142\n", "Epoch: 918/2000, Loss: 0.3142\n", "Epoch: 919/2000, Loss: 0.3142\n", "Epoch: 920/2000, Loss: 0.3142\n", "Epoch: 921/2000, Loss: 0.3142\n", "Epoch: 922/2000, Loss: 0.3142\n", "Epoch: 923/2000, Loss: 0.3142\n", "Epoch: 924/2000, Loss: 0.3142\n", "Epoch: 925/2000, Loss: 0.3142\n", "Epoch: 926/2000, Loss: 0.3142\n", "Epoch: 927/2000, Loss: 0.3142\n", "Epoch: 928/2000, Loss: 0.3142\n", "Epoch: 929/2000, Loss: 0.3142\n", "Epoch: 930/2000, Loss: 0.3142\n", "Epoch: 931/2000, Loss: 0.3142\n", "Epoch: 932/2000, Loss: 0.3142\n", "Epoch: 933/2000, Loss: 0.3142\n", "Epoch: 934/2000, Loss: 0.3142\n", "Epoch: 935/2000, Loss: 0.3142\n", "Epoch: 936/2000, Loss: 0.3142\n", "Epoch: 937/2000, Loss: 0.3142\n", "Epoch: 938/2000, Loss: 0.3142\n", "Epoch: 939/2000, Loss: 0.3142\n", "Epoch: 940/2000, Loss: 0.3142\n", "Epoch: 941/2000, Loss: 0.3142\n", "Epoch: 942/2000, Loss: 0.3142\n", "Epoch: 943/2000, Loss: 0.3142\n", "Epoch: 944/2000, Loss: 0.3142\n", "Epoch: 945/2000, Loss: 0.3142\n", "Epoch: 946/2000, Loss: 0.3142\n", "Epoch: 947/2000, Loss: 0.3142\n", "Epoch: 948/2000, Loss: 0.3142\n", "Epoch: 949/2000, Loss: 0.3142\n", "Epoch: 950/2000, Loss: 0.3142\n", "Epoch: 951/2000, Loss: 0.3142\n", "Epoch: 952/2000, Loss: 0.3142\n", "Epoch: 953/2000, Loss: 0.3142\n", "Epoch: 954/2000, Loss: 0.3142\n", "Epoch: 955/2000, Loss: 0.3142\n", "Epoch: 956/2000, Loss: 0.3142\n", "Epoch: 957/2000, Loss: 0.3142\n", "Epoch: 958/2000, Loss: 0.3142\n", "Epoch: 959/2000, Loss: 0.3142\n", "Epoch: 960/2000, Loss: 0.3142\n", "Epoch: 961/2000, Loss: 0.3142\n", "Epoch: 962/2000, Loss: 0.3142\n", "Epoch: 963/2000, Loss: 0.3142\n", "Epoch: 964/2000, Loss: 0.3142\n", "Epoch: 965/2000, Loss: 0.3142\n", "Epoch: 966/2000, Loss: 0.3142\n", "Epoch: 967/2000, Loss: 0.3142\n", "Epoch: 968/2000, Loss: 0.3142\n", "Epoch: 969/2000, Loss: 0.3141\n", "Epoch: 970/2000, Loss: 0.3141\n", "Epoch: 971/2000, Loss: 0.3141\n", "Epoch: 972/2000, Loss: 0.3141\n", "Epoch: 973/2000, Loss: 0.3141\n", "Epoch: 974/2000, Loss: 0.3141\n", "Epoch: 975/2000, Loss: 0.3141\n", "Epoch: 976/2000, Loss: 0.3141\n", "Epoch: 977/2000, Loss: 0.3141\n", "Epoch: 978/2000, Loss: 0.3141\n", "Epoch: 979/2000, Loss: 0.3141\n", "Epoch: 980/2000, Loss: 0.3141\n", "Epoch: 981/2000, Loss: 0.3141\n", "Epoch: 982/2000, Loss: 0.3141\n", "Epoch: 983/2000, Loss: 0.3141\n", "Epoch: 984/2000, Loss: 0.3141\n", "Epoch: 985/2000, Loss: 0.3141\n", "Epoch: 986/2000, Loss: 0.3141\n", "Epoch: 987/2000, Loss: 0.3141\n", "Epoch: 988/2000, Loss: 0.3141\n", "Epoch: 989/2000, Loss: 0.3141\n", "Epoch: 990/2000, Loss: 0.3141\n", "Epoch: 991/2000, Loss: 0.3141\n", "Epoch: 992/2000, Loss: 0.3141\n", "Epoch: 993/2000, Loss: 0.3141\n", "Epoch: 994/2000, Loss: 0.3141\n", "Epoch: 995/2000, Loss: 0.3141\n", "Epoch: 996/2000, Loss: 0.3141\n", "Epoch: 997/2000, Loss: 0.3141\n", "Epoch: 998/2000, Loss: 0.3141\n", "Epoch: 999/2000, Loss: 0.3141\n", "Epoch: 1000/2000, Loss: 0.3141\n", "Epoch: 1001/2000, Loss: 0.3141\n", "Epoch: 1002/2000, Loss: 0.3141\n", "Epoch: 1003/2000, Loss: 0.3141\n", "Epoch: 1004/2000, Loss: 0.3141\n", "Epoch: 1005/2000, Loss: 0.3141\n", "Epoch: 1006/2000, Loss: 0.3141\n", "Epoch: 1007/2000, Loss: 0.3141\n", "Epoch: 1008/2000, Loss: 0.3141\n", "Epoch: 1009/2000, Loss: 0.3141\n", "Epoch: 1010/2000, Loss: 0.3141\n", "Epoch: 1011/2000, Loss: 0.3141\n", "Epoch: 1012/2000, Loss: 0.3141\n", "Epoch: 1013/2000, Loss: 0.3141\n", "Epoch: 1014/2000, Loss: 0.3141\n", "Epoch: 1015/2000, Loss: 0.3141\n", "Epoch: 1016/2000, Loss: 0.3141\n", "Epoch: 1017/2000, Loss: 0.3141\n", "Epoch: 1018/2000, Loss: 0.3141\n", "Epoch: 1019/2000, Loss: 0.3141\n", "Epoch: 1020/2000, Loss: 0.3141\n", "Epoch: 1021/2000, Loss: 0.3141\n", "Epoch: 1022/2000, Loss: 0.3141\n", "Epoch: 1023/2000, Loss: 0.3141\n", "Epoch: 1024/2000, Loss: 0.3141\n", "Epoch: 1025/2000, Loss: 0.3141\n", "Epoch: 1026/2000, Loss: 0.3141\n", "Epoch: 1027/2000, Loss: 0.3141\n", "Epoch: 1028/2000, Loss: 0.3141\n", "Epoch: 1029/2000, Loss: 0.3141\n", "Epoch: 1030/2000, Loss: 0.3141\n", "Epoch: 1031/2000, Loss: 0.3141\n", "Epoch: 1032/2000, Loss: 0.3141\n", "Epoch: 1033/2000, Loss: 0.3141\n", "Epoch: 1034/2000, Loss: 0.3141\n", "Epoch: 1035/2000, Loss: 0.3141\n", "Epoch: 1036/2000, Loss: 0.3141\n", "Epoch: 1037/2000, Loss: 0.3141\n", "Epoch: 1038/2000, Loss: 0.3141\n", "Epoch: 1039/2000, Loss: 0.3141\n", "Epoch: 1040/2000, Loss: 0.3141\n", "Epoch: 1041/2000, Loss: 0.3141\n", "Epoch: 1042/2000, Loss: 0.3141\n", "Epoch: 1043/2000, Loss: 0.3141\n", "Epoch: 1044/2000, Loss: 0.3141\n", "Epoch: 1045/2000, Loss: 0.3141\n", "Epoch: 1046/2000, Loss: 0.3141\n", "Epoch: 1047/2000, Loss: 0.3141\n", "Epoch: 1048/2000, Loss: 0.3141\n", "Epoch: 1049/2000, Loss: 0.3141\n", "Epoch: 1050/2000, Loss: 0.3141\n", "Epoch: 1051/2000, Loss: 0.3141\n", "Epoch: 1052/2000, Loss: 0.3141\n", "Epoch: 1053/2000, Loss: 0.3141\n", "Epoch: 1054/2000, Loss: 0.3141\n", "Epoch: 1055/2000, Loss: 0.3141\n", "Epoch: 1056/2000, Loss: 0.3141\n", "Epoch: 1057/2000, Loss: 0.3141\n", "Epoch: 1058/2000, Loss: 0.3141\n", "Epoch: 1059/2000, Loss: 0.3141\n", "Epoch: 1060/2000, Loss: 0.3141\n", "Epoch: 1061/2000, Loss: 0.3141\n", "Epoch: 1062/2000, Loss: 0.3141\n", "Epoch: 1063/2000, Loss: 0.3141\n", "Epoch: 1064/2000, Loss: 0.3141\n", "Epoch: 1065/2000, Loss: 0.3141\n", "Epoch: 1066/2000, Loss: 0.3141\n", "Epoch: 1067/2000, Loss: 0.3141\n", "Epoch: 1068/2000, Loss: 0.3141\n", "Epoch: 1069/2000, Loss: 0.3141\n", "Epoch: 1070/2000, Loss: 0.3141\n", "Epoch: 1071/2000, Loss: 0.3141\n", "Epoch: 1072/2000, Loss: 0.3141\n", "Epoch: 1073/2000, Loss: 0.3141\n", "Epoch: 1074/2000, Loss: 0.3141\n", "Epoch: 1075/2000, Loss: 0.3141\n", "Epoch: 1076/2000, Loss: 0.3141\n", "Epoch: 1077/2000, Loss: 0.3141\n", "Epoch: 1078/2000, Loss: 0.3141\n", "Epoch: 1079/2000, Loss: 0.3141\n", "Epoch: 1080/2000, Loss: 0.3141\n", "Epoch: 1081/2000, Loss: 0.3141\n", "Epoch: 1082/2000, Loss: 0.3141\n", "Epoch: 1083/2000, Loss: 0.3141\n", "Epoch: 1084/2000, Loss: 0.3141\n", "Epoch: 1085/2000, Loss: 0.3141\n", "Epoch: 1086/2000, Loss: 0.3141\n", "Epoch: 1087/2000, Loss: 0.3141\n", "Epoch: 1088/2000, Loss: 0.3141\n", "Epoch: 1089/2000, Loss: 0.3141\n", "Epoch: 1090/2000, Loss: 0.3141\n", "Epoch: 1091/2000, Loss: 0.3141\n", "Epoch: 1092/2000, Loss: 0.3141\n", "Epoch: 1093/2000, Loss: 0.3141\n", "Epoch: 1094/2000, Loss: 0.3141\n", "Epoch: 1095/2000, Loss: 0.3141\n", "Epoch: 1096/2000, Loss: 0.3141\n", "Epoch: 1097/2000, Loss: 0.3141\n", "Epoch: 1098/2000, Loss: 0.3141\n", "Epoch: 1099/2000, Loss: 0.3141\n", "Epoch: 1100/2000, Loss: 0.3141\n", "Epoch: 1101/2000, Loss: 0.3141\n", "Epoch: 1102/2000, Loss: 0.3141\n", "Epoch: 1103/2000, Loss: 0.3141\n", "Epoch: 1104/2000, Loss: 0.3141\n", "Epoch: 1105/2000, Loss: 0.3141\n", "Epoch: 1106/2000, Loss: 0.3141\n", "Epoch: 1107/2000, Loss: 0.3141\n", "Epoch: 1108/2000, Loss: 0.3141\n", "Epoch: 1109/2000, Loss: 0.3141\n", "Epoch: 1110/2000, Loss: 0.3141\n", "Epoch: 1111/2000, Loss: 0.3141\n", "Epoch: 1112/2000, Loss: 0.3141\n", "Epoch: 1113/2000, Loss: 0.3141\n", "Epoch: 1114/2000, Loss: 0.3141\n", "Epoch: 1115/2000, Loss: 0.3141\n", "Epoch: 1116/2000, Loss: 0.3141\n", "Epoch: 1117/2000, Loss: 0.3141\n", "Epoch: 1118/2000, Loss: 0.3141\n", "Epoch: 1119/2000, Loss: 0.3141\n", "Epoch: 1120/2000, Loss: 0.3141\n", "Epoch: 1121/2000, Loss: 0.3141\n", "Epoch: 1122/2000, Loss: 0.3141\n", "Epoch: 1123/2000, Loss: 0.3141\n", "Epoch: 1124/2000, Loss: 0.3141\n", "Epoch: 1125/2000, Loss: 0.3141\n", "Epoch: 1126/2000, Loss: 0.3141\n", "Epoch: 1127/2000, Loss: 0.3141\n", "Epoch: 1128/2000, Loss: 0.3141\n", "Epoch: 1129/2000, Loss: 0.3141\n", "Epoch: 1130/2000, Loss: 0.3141\n", "Epoch: 1131/2000, Loss: 0.3141\n", "Epoch: 1132/2000, Loss: 0.3141\n", "Epoch: 1133/2000, Loss: 0.3141\n", "Epoch: 1134/2000, Loss: 0.3141\n", "Epoch: 1135/2000, Loss: 0.3141\n", "Epoch: 1136/2000, Loss: 0.3141\n", "Epoch: 1137/2000, Loss: 0.3141\n", "Epoch: 1138/2000, Loss: 0.3141\n", "Epoch: 1139/2000, Loss: 0.3141\n", "Epoch: 1140/2000, Loss: 0.3141\n", "Epoch: 1141/2000, Loss: 0.3141\n", "Epoch: 1142/2000, Loss: 0.3141\n", "Epoch: 1143/2000, Loss: 0.3141\n", "Epoch: 1144/2000, Loss: 0.3141\n", "Epoch: 1145/2000, Loss: 0.3141\n", "Epoch: 1146/2000, Loss: 0.3141\n", "Epoch: 1147/2000, Loss: 0.3141\n", "Epoch: 1148/2000, Loss: 0.3141\n", "Epoch: 1149/2000, Loss: 0.3141\n", "Epoch: 1150/2000, Loss: 0.3141\n", "Epoch: 1151/2000, Loss: 0.3141\n", "Epoch: 1152/2000, Loss: 0.3141\n", "Epoch: 1153/2000, Loss: 0.3141\n", "Epoch: 1154/2000, Loss: 0.3141\n", "Epoch: 1155/2000, Loss: 0.3141\n", "Epoch: 1156/2000, Loss: 0.3141\n", "Epoch: 1157/2000, Loss: 0.3141\n", "Epoch: 1158/2000, Loss: 0.3141\n", "Epoch: 1159/2000, Loss: 0.3141\n", "Epoch: 1160/2000, Loss: 0.3141\n", "Epoch: 1161/2000, Loss: 0.3141\n", "Epoch: 1162/2000, Loss: 0.3141\n", "Epoch: 1163/2000, Loss: 0.3141\n", "Epoch: 1164/2000, Loss: 0.3141\n", "Epoch: 1165/2000, Loss: 0.3141\n", "Epoch: 1166/2000, Loss: 0.3141\n", "Epoch: 1167/2000, Loss: 0.3141\n", "Epoch: 1168/2000, Loss: 0.3141\n", "Epoch: 1169/2000, Loss: 0.3141\n", "Epoch: 1170/2000, Loss: 0.3141\n", "Epoch: 1171/2000, Loss: 0.3141\n", "Epoch: 1172/2000, Loss: 0.3141\n", "Epoch: 1173/2000, Loss: 0.3141\n", "Epoch: 1174/2000, Loss: 0.3141\n", "Epoch: 1175/2000, Loss: 0.3141\n", "Epoch: 1176/2000, Loss: 0.3141\n", "Epoch: 1177/2000, Loss: 0.3141\n", "Epoch: 1178/2000, Loss: 0.3141\n", "Epoch: 1179/2000, Loss: 0.3141\n", "Epoch: 1180/2000, Loss: 0.3141\n", "Epoch: 1181/2000, Loss: 0.3141\n", "Epoch: 1182/2000, Loss: 0.3141\n", "Epoch: 1183/2000, Loss: 0.3141\n", "Epoch: 1184/2000, Loss: 0.3141\n", "Epoch: 1185/2000, Loss: 0.3141\n", "Epoch: 1186/2000, Loss: 0.3141\n", "Epoch: 1187/2000, Loss: 0.3141\n", "Epoch: 1188/2000, Loss: 0.3141\n", "Epoch: 1189/2000, Loss: 0.3141\n", "Epoch: 1190/2000, Loss: 0.3141\n", "Epoch: 1191/2000, Loss: 0.3141\n", "Epoch: 1192/2000, Loss: 0.3141\n", "Epoch: 1193/2000, Loss: 0.3141\n", "Epoch: 1194/2000, Loss: 0.3141\n", "Epoch: 1195/2000, Loss: 0.3141\n", "Epoch: 1196/2000, Loss: 0.3141\n", "Epoch: 1197/2000, Loss: 0.3141\n", "Epoch: 1198/2000, Loss: 0.3141\n", "Epoch: 1199/2000, Loss: 0.3141\n", "Epoch: 1200/2000, Loss: 0.3141\n", "Epoch: 1201/2000, Loss: 0.3141\n", "Epoch: 1202/2000, Loss: 0.3141\n", "Epoch: 1203/2000, Loss: 0.3141\n", "Epoch: 1204/2000, Loss: 0.3141\n", "Epoch: 1205/2000, Loss: 0.3141\n", "Epoch: 1206/2000, Loss: 0.3141\n", "Epoch: 1207/2000, Loss: 0.3141\n", "Epoch: 1208/2000, Loss: 0.3141\n", "Epoch: 1209/2000, Loss: 0.3141\n", "Epoch: 1210/2000, Loss: 0.3141\n", "Epoch: 1211/2000, Loss: 0.3141\n", "Epoch: 1212/2000, Loss: 0.3141\n", "Epoch: 1213/2000, Loss: 0.3141\n", "Epoch: 1214/2000, Loss: 0.3141\n", "Epoch: 1215/2000, Loss: 0.3141\n", "Epoch: 1216/2000, Loss: 0.3141\n", "Epoch: 1217/2000, Loss: 0.3141\n", "Epoch: 1218/2000, Loss: 0.3141\n", "Epoch: 1219/2000, Loss: 0.3141\n", "Epoch: 1220/2000, Loss: 0.3141\n", "Epoch: 1221/2000, Loss: 0.3141\n", "Epoch: 1222/2000, Loss: 0.3141\n", "Epoch: 1223/2000, Loss: 0.3141\n", "Epoch: 1224/2000, Loss: 0.3141\n", "Epoch: 1225/2000, Loss: 0.3141\n", "Epoch: 1226/2000, Loss: 0.3141\n", "Epoch: 1227/2000, Loss: 0.3141\n", "Epoch: 1228/2000, Loss: 0.3141\n", "Epoch: 1229/2000, Loss: 0.3141\n", "Epoch: 1230/2000, Loss: 0.3141\n", "Epoch: 1231/2000, Loss: 0.3141\n", "Epoch: 1232/2000, Loss: 0.3141\n", "Epoch: 1233/2000, Loss: 0.3141\n", "Epoch: 1234/2000, Loss: 0.3141\n", "Epoch: 1235/2000, Loss: 0.3141\n", "Epoch: 1236/2000, Loss: 0.3141\n", "Epoch: 1237/2000, Loss: 0.3141\n", "Epoch: 1238/2000, Loss: 0.3141\n", "Epoch: 1239/2000, Loss: 0.3141\n", "Epoch: 1240/2000, Loss: 0.3140\n", "Epoch: 1241/2000, Loss: 0.3140\n", "Epoch: 1242/2000, Loss: 0.3140\n", "Epoch: 1243/2000, Loss: 0.3140\n", "Epoch: 1244/2000, Loss: 0.3140\n", "Epoch: 1245/2000, Loss: 0.3140\n", "Epoch: 1246/2000, Loss: 0.3140\n", "Epoch: 1247/2000, Loss: 0.3140\n", "Epoch: 1248/2000, Loss: 0.3140\n", "Epoch: 1249/2000, Loss: 0.3140\n", "Epoch: 1250/2000, Loss: 0.3140\n", "Epoch: 1251/2000, Loss: 0.3140\n", "Epoch: 1252/2000, Loss: 0.3140\n", "Epoch: 1253/2000, Loss: 0.3140\n", "Epoch: 1254/2000, Loss: 0.3140\n", "Epoch: 1255/2000, Loss: 0.3140\n", "Epoch: 1256/2000, Loss: 0.3140\n", "Epoch: 1257/2000, Loss: 0.3140\n", "Epoch: 1258/2000, Loss: 0.3140\n", "Epoch: 1259/2000, Loss: 0.3140\n", "Epoch: 1260/2000, Loss: 0.3140\n", "Epoch: 1261/2000, Loss: 0.3140\n", "Epoch: 1262/2000, Loss: 0.3140\n", "Epoch: 1263/2000, Loss: 0.3140\n", "Epoch: 1264/2000, Loss: 0.3140\n", "Epoch: 1265/2000, Loss: 0.3140\n", "Epoch: 1266/2000, Loss: 0.3140\n", "Epoch: 1267/2000, Loss: 0.3140\n", "Epoch: 1268/2000, Loss: 0.3140\n", "Epoch: 1269/2000, Loss: 0.3140\n", "Epoch: 1270/2000, Loss: 0.3140\n", "Epoch: 1271/2000, Loss: 0.3140\n", "Epoch: 1272/2000, Loss: 0.3140\n", "Epoch: 1273/2000, Loss: 0.3140\n", "Epoch: 1274/2000, Loss: 0.3140\n", "Epoch: 1275/2000, Loss: 0.3140\n", "Epoch: 1276/2000, Loss: 0.3140\n", "Epoch: 1277/2000, Loss: 0.3140\n", "Epoch: 1278/2000, Loss: 0.3140\n", "Epoch: 1279/2000, Loss: 0.3140\n", "Epoch: 1280/2000, Loss: 0.3140\n", "Epoch: 1281/2000, Loss: 0.3140\n", "Epoch: 1282/2000, Loss: 0.3140\n", "Epoch: 1283/2000, Loss: 0.3140\n", "Epoch: 1284/2000, Loss: 0.3140\n", "Epoch: 1285/2000, Loss: 0.3140\n", "Epoch: 1286/2000, Loss: 0.3140\n", "Epoch: 1287/2000, Loss: 0.3140\n", "Epoch: 1288/2000, Loss: 0.3140\n", "Epoch: 1289/2000, Loss: 0.3140\n", "Epoch: 1290/2000, Loss: 0.3140\n", "Epoch: 1291/2000, Loss: 0.3140\n", "Epoch: 1292/2000, Loss: 0.3140\n", "Epoch: 1293/2000, Loss: 0.3140\n", "Epoch: 1294/2000, Loss: 0.3140\n", "Epoch: 1295/2000, Loss: 0.3140\n", "Epoch: 1296/2000, Loss: 0.3140\n", "Epoch: 1297/2000, Loss: 0.3140\n", "Epoch: 1298/2000, Loss: 0.3140\n", "Epoch: 1299/2000, Loss: 0.3140\n", "Epoch: 1300/2000, Loss: 0.3140\n", "Epoch: 1301/2000, Loss: 0.3140\n", "Epoch: 1302/2000, Loss: 0.3140\n", "Epoch: 1303/2000, Loss: 0.3140\n", "Epoch: 1304/2000, Loss: 0.3140\n", "Epoch: 1305/2000, Loss: 0.3140\n", "Epoch: 1306/2000, Loss: 0.3140\n", "Epoch: 1307/2000, Loss: 0.3140\n", "Epoch: 1308/2000, Loss: 0.3140\n", "Epoch: 1309/2000, Loss: 0.3140\n", "Epoch: 1310/2000, Loss: 0.3140\n", "Epoch: 1311/2000, Loss: 0.3140\n", "Epoch: 1312/2000, Loss: 0.3140\n", "Epoch: 1313/2000, Loss: 0.3140\n", "Epoch: 1314/2000, Loss: 0.3140\n", "Epoch: 1315/2000, Loss: 0.3140\n", "Epoch: 1316/2000, Loss: 0.3140\n", "Epoch: 1317/2000, Loss: 0.3140\n", "Epoch: 1318/2000, Loss: 0.3140\n", "Epoch: 1319/2000, Loss: 0.3140\n", "Epoch: 1320/2000, Loss: 0.3140\n", "Epoch: 1321/2000, Loss: 0.3140\n", "Epoch: 1322/2000, Loss: 0.3140\n", "Epoch: 1323/2000, Loss: 0.3140\n", "Epoch: 1324/2000, Loss: 0.3140\n", "Epoch: 1325/2000, Loss: 0.3140\n", "Epoch: 1326/2000, Loss: 0.3140\n", "Epoch: 1327/2000, Loss: 0.3140\n", "Epoch: 1328/2000, Loss: 0.3140\n", "Epoch: 1329/2000, Loss: 0.3140\n", "Epoch: 1330/2000, Loss: 0.3140\n", "Epoch: 1331/2000, Loss: 0.3140\n", "Epoch: 1332/2000, Loss: 0.3140\n", "Epoch: 1333/2000, Loss: 0.3140\n", "Epoch: 1334/2000, Loss: 0.3140\n", "Epoch: 1335/2000, Loss: 0.3140\n", "Epoch: 1336/2000, Loss: 0.3140\n", "Epoch: 1337/2000, Loss: 0.3140\n", "Epoch: 1338/2000, Loss: 0.3140\n", "Epoch: 1339/2000, Loss: 0.3140\n", "Epoch: 1340/2000, Loss: 0.3140\n", "Epoch: 1341/2000, Loss: 0.3140\n", "Epoch: 1342/2000, Loss: 0.3140\n", "Epoch: 1343/2000, Loss: 0.3140\n", "Epoch: 1344/2000, Loss: 0.3140\n", "Epoch: 1345/2000, Loss: 0.3140\n", "Epoch: 1346/2000, Loss: 0.3140\n", "Epoch: 1347/2000, Loss: 0.3140\n", "Epoch: 1348/2000, Loss: 0.3140\n", "Epoch: 1349/2000, Loss: 0.3140\n", "Epoch: 1350/2000, Loss: 0.3140\n", "Epoch: 1351/2000, Loss: 0.3140\n", "Epoch: 1352/2000, Loss: 0.3140\n", "Epoch: 1353/2000, Loss: 0.3140\n", "Epoch: 1354/2000, Loss: 0.3140\n", "Epoch: 1355/2000, Loss: 0.3140\n", "Epoch: 1356/2000, Loss: 0.3140\n", "Epoch: 1357/2000, Loss: 0.3140\n", "Epoch: 1358/2000, Loss: 0.3140\n", "Epoch: 1359/2000, Loss: 0.3140\n", "Epoch: 1360/2000, Loss: 0.3140\n", "Epoch: 1361/2000, Loss: 0.3140\n", "Epoch: 1362/2000, Loss: 0.3140\n", "Epoch: 1363/2000, Loss: 0.3140\n", "Epoch: 1364/2000, Loss: 0.3140\n", "Epoch: 1365/2000, Loss: 0.3140\n", "Epoch: 1366/2000, Loss: 0.3140\n", "Epoch: 1367/2000, Loss: 0.3140\n", "Epoch: 1368/2000, Loss: 0.3140\n", "Epoch: 1369/2000, Loss: 0.3140\n", "Epoch: 1370/2000, Loss: 0.3140\n", "Epoch: 1371/2000, Loss: 0.3140\n", "Epoch: 1372/2000, Loss: 0.3140\n", "Epoch: 1373/2000, Loss: 0.3140\n", "Epoch: 1374/2000, Loss: 0.3140\n", "Epoch: 1375/2000, Loss: 0.3140\n", "Epoch: 1376/2000, Loss: 0.3140\n", "Epoch: 1377/2000, Loss: 0.3140\n", "Epoch: 1378/2000, Loss: 0.3140\n", "Epoch: 1379/2000, Loss: 0.3140\n", "Epoch: 1380/2000, Loss: 0.3140\n", "Epoch: 1381/2000, Loss: 0.3140\n", "Epoch: 1382/2000, Loss: 0.3140\n", "Epoch: 1383/2000, Loss: 0.3140\n", "Epoch: 1384/2000, Loss: 0.3140\n", "Epoch: 1385/2000, Loss: 0.3140\n", "Epoch: 1386/2000, Loss: 0.3140\n", "Epoch: 1387/2000, Loss: 0.3140\n", "Epoch: 1388/2000, Loss: 0.3140\n", "Epoch: 1389/2000, Loss: 0.3140\n", "Epoch: 1390/2000, Loss: 0.3140\n", "Epoch: 1391/2000, Loss: 0.3140\n", "Epoch: 1392/2000, Loss: 0.3140\n", "Epoch: 1393/2000, Loss: 0.3140\n", "Epoch: 1394/2000, Loss: 0.3140\n", "Epoch: 1395/2000, Loss: 0.3140\n", "Epoch: 1396/2000, Loss: 0.3140\n", "Epoch: 1397/2000, Loss: 0.3140\n", "Epoch: 1398/2000, Loss: 0.3140\n", "Epoch: 1399/2000, Loss: 0.3140\n", "Epoch: 1400/2000, Loss: 0.3140\n", "Epoch: 1401/2000, Loss: 0.3140\n", "Epoch: 1402/2000, Loss: 0.3140\n", "Epoch: 1403/2000, Loss: 0.3140\n", "Epoch: 1404/2000, Loss: 0.3140\n", "Epoch: 1405/2000, Loss: 0.3140\n", "Epoch: 1406/2000, Loss: 0.3140\n", "Epoch: 1407/2000, Loss: 0.3140\n", "Epoch: 1408/2000, Loss: 0.3140\n", "Epoch: 1409/2000, Loss: 0.3140\n", "Epoch: 1410/2000, Loss: 0.3140\n", "Epoch: 1411/2000, Loss: 0.3140\n", "Epoch: 1412/2000, Loss: 0.3140\n", "Epoch: 1413/2000, Loss: 0.3140\n", "Epoch: 1414/2000, Loss: 0.3140\n", "Epoch: 1415/2000, Loss: 0.3140\n", "Epoch: 1416/2000, Loss: 0.3140\n", "Epoch: 1417/2000, Loss: 0.3140\n", "Epoch: 1418/2000, Loss: 0.3140\n", "Epoch: 1419/2000, Loss: 0.3140\n", "Epoch: 1420/2000, Loss: 0.3140\n", "Epoch: 1421/2000, Loss: 0.3140\n", "Epoch: 1422/2000, Loss: 0.3140\n", "Epoch: 1423/2000, Loss: 0.3140\n", "Epoch: 1424/2000, Loss: 0.3140\n", "Epoch: 1425/2000, Loss: 0.3140\n", "Epoch: 1426/2000, Loss: 0.3140\n", "Epoch: 1427/2000, Loss: 0.3140\n", "Epoch: 1428/2000, Loss: 0.3140\n", "Epoch: 1429/2000, Loss: 0.3140\n", "Epoch: 1430/2000, Loss: 0.3140\n", "Epoch: 1431/2000, Loss: 0.3140\n", "Epoch: 1432/2000, Loss: 0.3140\n", "Epoch: 1433/2000, Loss: 0.3140\n", "Epoch: 1434/2000, Loss: 0.3140\n", "Epoch: 1435/2000, Loss: 0.3140\n", "Epoch: 1436/2000, Loss: 0.3140\n", "Epoch: 1437/2000, Loss: 0.3140\n", "Epoch: 1438/2000, Loss: 0.3140\n", "Epoch: 1439/2000, Loss: 0.3140\n", "Epoch: 1440/2000, Loss: 0.3140\n", "Epoch: 1441/2000, Loss: 0.3140\n", "Epoch: 1442/2000, Loss: 0.3140\n", "Epoch: 1443/2000, Loss: 0.3140\n", "Epoch: 1444/2000, Loss: 0.3140\n", "Epoch: 1445/2000, Loss: 0.3140\n", "Epoch: 1446/2000, Loss: 0.3140\n", "Epoch: 1447/2000, Loss: 0.3140\n", "Epoch: 1448/2000, Loss: 0.3140\n", "Epoch: 1449/2000, Loss: 0.3140\n", "Epoch: 1450/2000, Loss: 0.3140\n", "Epoch: 1451/2000, Loss: 0.3140\n", "Epoch: 1452/2000, Loss: 0.3140\n", "Epoch: 1453/2000, Loss: 0.3140\n", "Epoch: 1454/2000, Loss: 0.3140\n", "Epoch: 1455/2000, Loss: 0.3140\n", "Epoch: 1456/2000, Loss: 0.3140\n", "Epoch: 1457/2000, Loss: 0.3140\n", "Epoch: 1458/2000, Loss: 0.3140\n", "Epoch: 1459/2000, Loss: 0.3140\n", "Epoch: 1460/2000, Loss: 0.3140\n", "Epoch: 1461/2000, Loss: 0.3140\n", "Epoch: 1462/2000, Loss: 0.3140\n", "Epoch: 1463/2000, Loss: 0.3140\n", "Epoch: 1464/2000, Loss: 0.3140\n", "Epoch: 1465/2000, Loss: 0.3140\n", "Epoch: 1466/2000, Loss: 0.3140\n", "Epoch: 1467/2000, Loss: 0.3140\n", "Epoch: 1468/2000, Loss: 0.3140\n", "Epoch: 1469/2000, Loss: 0.3140\n", "Epoch: 1470/2000, Loss: 0.3140\n", "Epoch: 1471/2000, Loss: 0.3140\n", "Epoch: 1472/2000, Loss: 0.3140\n", "Epoch: 1473/2000, Loss: 0.3140\n", "Epoch: 1474/2000, Loss: 0.3140\n", "Epoch: 1475/2000, Loss: 0.3140\n", "Epoch: 1476/2000, Loss: 0.3140\n", "Epoch: 1477/2000, Loss: 0.3140\n", "Epoch: 1478/2000, Loss: 0.3140\n", "Epoch: 1479/2000, Loss: 0.3140\n", "Epoch: 1480/2000, Loss: 0.3140\n", "Epoch: 1481/2000, Loss: 0.3140\n", "Epoch: 1482/2000, Loss: 0.3140\n", "Epoch: 1483/2000, Loss: 0.3140\n", "Epoch: 1484/2000, Loss: 0.3140\n", "Epoch: 1485/2000, Loss: 0.3140\n", "Epoch: 1486/2000, Loss: 0.3140\n", "Epoch: 1487/2000, Loss: 0.3140\n", "Epoch: 1488/2000, Loss: 0.3140\n", "Epoch: 1489/2000, Loss: 0.3140\n", "Epoch: 1490/2000, Loss: 0.3140\n", "Epoch: 1491/2000, Loss: 0.3140\n", "Epoch: 1492/2000, Loss: 0.3140\n", "Epoch: 1493/2000, Loss: 0.3140\n", "Epoch: 1494/2000, Loss: 0.3140\n", "Epoch: 1495/2000, Loss: 0.3140\n", "Epoch: 1496/2000, Loss: 0.3140\n", "Epoch: 1497/2000, Loss: 0.3140\n", "Epoch: 1498/2000, Loss: 0.3140\n", "Epoch: 1499/2000, Loss: 0.3140\n", "Epoch: 1500/2000, Loss: 0.3140\n", "Epoch: 1501/2000, Loss: 0.3140\n", "Epoch: 1502/2000, Loss: 0.3140\n", "Epoch: 1503/2000, Loss: 0.3140\n", "Epoch: 1504/2000, Loss: 0.3140\n", "Epoch: 1505/2000, Loss: 0.3140\n", "Epoch: 1506/2000, Loss: 0.3140\n", "Epoch: 1507/2000, Loss: 0.3140\n", "Epoch: 1508/2000, Loss: 0.3140\n", "Epoch: 1509/2000, Loss: 0.3140\n", "Epoch: 1510/2000, Loss: 0.3140\n", "Epoch: 1511/2000, Loss: 0.3140\n", "Epoch: 1512/2000, Loss: 0.3140\n", "Epoch: 1513/2000, Loss: 0.3140\n", "Epoch: 1514/2000, Loss: 0.3140\n", "Epoch: 1515/2000, Loss: 0.3140\n", "Epoch: 1516/2000, Loss: 0.3140\n", "Epoch: 1517/2000, Loss: 0.3140\n", "Epoch: 1518/2000, Loss: 0.3140\n", "Epoch: 1519/2000, Loss: 0.3140\n", "Epoch: 1520/2000, Loss: 0.3140\n", "Epoch: 1521/2000, Loss: 0.3140\n", "Epoch: 1522/2000, Loss: 0.3140\n", "Epoch: 1523/2000, Loss: 0.3140\n", "Epoch: 1524/2000, Loss: 0.3140\n", "Epoch: 1525/2000, Loss: 0.3140\n", "Epoch: 1526/2000, Loss: 0.3140\n", "Epoch: 1527/2000, Loss: 0.3140\n", "Epoch: 1528/2000, Loss: 0.3140\n", "Epoch: 1529/2000, Loss: 0.3140\n", "Epoch: 1530/2000, Loss: 0.3140\n", "Epoch: 1531/2000, Loss: 0.3140\n", "Epoch: 1532/2000, Loss: 0.3140\n", "Epoch: 1533/2000, Loss: 0.3140\n", "Epoch: 1534/2000, Loss: 0.3140\n", "Epoch: 1535/2000, Loss: 0.3140\n", "Epoch: 1536/2000, Loss: 0.3140\n", "Epoch: 1537/2000, Loss: 0.3140\n", "Epoch: 1538/2000, Loss: 0.3140\n", "Epoch: 1539/2000, Loss: 0.3140\n", "Epoch: 1540/2000, Loss: 0.3140\n", "Epoch: 1541/2000, Loss: 0.3140\n", "Epoch: 1542/2000, Loss: 0.3140\n", "Epoch: 1543/2000, Loss: 0.3140\n", "Epoch: 1544/2000, Loss: 0.3140\n", "Epoch: 1545/2000, Loss: 0.3140\n", "Epoch: 1546/2000, Loss: 0.3140\n", "Epoch: 1547/2000, Loss: 0.3140\n", "Epoch: 1548/2000, Loss: 0.3140\n", "Epoch: 1549/2000, Loss: 0.3140\n", "Epoch: 1550/2000, Loss: 0.3140\n", "Epoch: 1551/2000, Loss: 0.3140\n", "Epoch: 1552/2000, Loss: 0.3140\n", "Epoch: 1553/2000, Loss: 0.3140\n", "Epoch: 1554/2000, Loss: 0.3140\n", "Epoch: 1555/2000, Loss: 0.3140\n", "Epoch: 1556/2000, Loss: 0.3140\n", "Epoch: 1557/2000, Loss: 0.3140\n", "Epoch: 1558/2000, Loss: 0.3140\n", "Epoch: 1559/2000, Loss: 0.3140\n", "Epoch: 1560/2000, Loss: 0.3140\n", "Epoch: 1561/2000, Loss: 0.3140\n", "Epoch: 1562/2000, Loss: 0.3140\n", "Epoch: 1563/2000, Loss: 0.3140\n", "Epoch: 1564/2000, Loss: 0.3140\n", "Epoch: 1565/2000, Loss: 0.3140\n", "Epoch: 1566/2000, Loss: 0.3140\n", "Epoch: 1567/2000, Loss: 0.3140\n", "Epoch: 1568/2000, Loss: 0.3140\n", "Epoch: 1569/2000, Loss: 0.3140\n", "Epoch: 1570/2000, Loss: 0.3140\n", "Epoch: 1571/2000, Loss: 0.3140\n", "Epoch: 1572/2000, Loss: 0.3140\n", "Epoch: 1573/2000, Loss: 0.3140\n", "Epoch: 1574/2000, Loss: 0.3140\n", "Epoch: 1575/2000, Loss: 0.3140\n", "Epoch: 1576/2000, Loss: 0.3140\n", "Epoch: 1577/2000, Loss: 0.3140\n", "Epoch: 1578/2000, Loss: 0.3140\n", "Epoch: 1579/2000, Loss: 0.3140\n", "Epoch: 1580/2000, Loss: 0.3140\n", "Epoch: 1581/2000, Loss: 0.3140\n", "Epoch: 1582/2000, Loss: 0.3140\n", "Epoch: 1583/2000, Loss: 0.3140\n", "Epoch: 1584/2000, Loss: 0.3140\n", "Epoch: 1585/2000, Loss: 0.3140\n", "Epoch: 1586/2000, Loss: 0.3140\n", "Epoch: 1587/2000, Loss: 0.3140\n", "Epoch: 1588/2000, Loss: 0.3140\n", "Epoch: 1589/2000, Loss: 0.3140\n", "Epoch: 1590/2000, Loss: 0.3140\n", "Epoch: 1591/2000, Loss: 0.3140\n", "Epoch: 1592/2000, Loss: 0.3140\n", "Epoch: 1593/2000, Loss: 0.3140\n", "Epoch: 1594/2000, Loss: 0.3140\n", "Epoch: 1595/2000, Loss: 0.3140\n", "Epoch: 1596/2000, Loss: 0.3140\n", "Epoch: 1597/2000, Loss: 0.3140\n", "Epoch: 1598/2000, Loss: 0.3140\n", "Epoch: 1599/2000, Loss: 0.3140\n", "Epoch: 1600/2000, Loss: 0.3140\n", "Epoch: 1601/2000, Loss: 0.3140\n", "Epoch: 1602/2000, Loss: 0.3140\n", "Epoch: 1603/2000, Loss: 0.3140\n", "Epoch: 1604/2000, Loss: 0.3140\n", "Epoch: 1605/2000, Loss: 0.3140\n", "Epoch: 1606/2000, Loss: 0.3140\n", "Epoch: 1607/2000, Loss: 0.3140\n", "Epoch: 1608/2000, Loss: 0.3140\n", "Epoch: 1609/2000, Loss: 0.3140\n", "Epoch: 1610/2000, Loss: 0.3140\n", "Epoch: 1611/2000, Loss: 0.3140\n", "Epoch: 1612/2000, Loss: 0.3140\n", "Epoch: 1613/2000, Loss: 0.3140\n", "Epoch: 1614/2000, Loss: 0.3140\n", "Epoch: 1615/2000, Loss: 0.3140\n", "Epoch: 1616/2000, Loss: 0.3140\n", "Epoch: 1617/2000, Loss: 0.3140\n", "Epoch: 1618/2000, Loss: 0.3140\n", "Epoch: 1619/2000, Loss: 0.3140\n", "Epoch: 1620/2000, Loss: 0.3140\n", "Epoch: 1621/2000, Loss: 0.3140\n", "Epoch: 1622/2000, Loss: 0.3140\n", "Epoch: 1623/2000, Loss: 0.3140\n", "Epoch: 1624/2000, Loss: 0.3140\n", "Epoch: 1625/2000, Loss: 0.3140\n", "Epoch: 1626/2000, Loss: 0.3140\n", "Epoch: 1627/2000, Loss: 0.3140\n", "Epoch: 1628/2000, Loss: 0.3140\n", "Epoch: 1629/2000, Loss: 0.3140\n", "Epoch: 1630/2000, Loss: 0.3140\n", "Epoch: 1631/2000, Loss: 0.3140\n", "Epoch: 1632/2000, Loss: 0.3140\n", "Epoch: 1633/2000, Loss: 0.3140\n", "Epoch: 1634/2000, Loss: 0.3140\n", "Epoch: 1635/2000, Loss: 0.3140\n", "Epoch: 1636/2000, Loss: 0.3140\n", "Epoch: 1637/2000, Loss: 0.3140\n", "Epoch: 1638/2000, Loss: 0.3140\n", "Epoch: 1639/2000, Loss: 0.3140\n", "Epoch: 1640/2000, Loss: 0.3140\n", "Epoch: 1641/2000, Loss: 0.3140\n", "Epoch: 1642/2000, Loss: 0.3140\n", "Epoch: 1643/2000, Loss: 0.3140\n", "Epoch: 1644/2000, Loss: 0.3140\n", "Epoch: 1645/2000, Loss: 0.3140\n", "Epoch: 1646/2000, Loss: 0.3140\n", "Epoch: 1647/2000, Loss: 0.3140\n", "Epoch: 1648/2000, Loss: 0.3140\n", "Epoch: 1649/2000, Loss: 0.3140\n", "Epoch: 1650/2000, Loss: 0.3140\n", "Epoch: 1651/2000, Loss: 0.3140\n", "Epoch: 1652/2000, Loss: 0.3140\n", "Epoch: 1653/2000, Loss: 0.3140\n", "Epoch: 1654/2000, Loss: 0.3140\n", "Epoch: 1655/2000, Loss: 0.3140\n", "Epoch: 1656/2000, Loss: 0.3140\n", "Epoch: 1657/2000, Loss: 0.3140\n", "Epoch: 1658/2000, Loss: 0.3140\n", "Epoch: 1659/2000, Loss: 0.3140\n", "Epoch: 1660/2000, Loss: 0.3140\n", "Epoch: 1661/2000, Loss: 0.3140\n", "Epoch: 1662/2000, Loss: 0.3140\n", "Epoch: 1663/2000, Loss: 0.3140\n", "Epoch: 1664/2000, Loss: 0.3140\n", "Epoch: 1665/2000, Loss: 0.3140\n", "Epoch: 1666/2000, Loss: 0.3140\n", "Epoch: 1667/2000, Loss: 0.3140\n", "Epoch: 1668/2000, Loss: 0.3140\n", "Epoch: 1669/2000, Loss: 0.3140\n", "Epoch: 1670/2000, Loss: 0.3140\n", "Epoch: 1671/2000, Loss: 0.3140\n", "Epoch: 1672/2000, Loss: 0.3140\n", "Epoch: 1673/2000, Loss: 0.3140\n", "Epoch: 1674/2000, Loss: 0.3140\n", "Epoch: 1675/2000, Loss: 0.3140\n", "Epoch: 1676/2000, Loss: 0.3140\n", "Epoch: 1677/2000, Loss: 0.3140\n", "Epoch: 1678/2000, Loss: 0.3140\n", "Epoch: 1679/2000, Loss: 0.3140\n", "Epoch: 1680/2000, Loss: 0.3140\n", "Epoch: 1681/2000, Loss: 0.3140\n", "Epoch: 1682/2000, Loss: 0.3140\n", "Epoch: 1683/2000, Loss: 0.3140\n", "Epoch: 1684/2000, Loss: 0.3140\n", "Epoch: 1685/2000, Loss: 0.3140\n", "Epoch: 1686/2000, Loss: 0.3140\n", "Epoch: 1687/2000, Loss: 0.3140\n", "Epoch: 1688/2000, Loss: 0.3140\n", "Epoch: 1689/2000, Loss: 0.3140\n", "Epoch: 1690/2000, Loss: 0.3140\n", "Epoch: 1691/2000, Loss: 0.3140\n", "Epoch: 1692/2000, Loss: 0.3140\n", "Epoch: 1693/2000, Loss: 0.3140\n", "Epoch: 1694/2000, Loss: 0.3140\n", "Epoch: 1695/2000, Loss: 0.3140\n", "Epoch: 1696/2000, Loss: 0.3140\n", "Epoch: 1697/2000, Loss: 0.3140\n", "Epoch: 1698/2000, Loss: 0.3140\n", "Epoch: 1699/2000, Loss: 0.3140\n", "Epoch: 1700/2000, Loss: 0.3140\n", "Epoch: 1701/2000, Loss: 0.3140\n", "Epoch: 1702/2000, Loss: 0.3140\n", "Epoch: 1703/2000, Loss: 0.3140\n", "Epoch: 1704/2000, Loss: 0.3140\n", "Epoch: 1705/2000, Loss: 0.3140\n", "Epoch: 1706/2000, Loss: 0.3140\n", "Epoch: 1707/2000, Loss: 0.3140\n", "Epoch: 1708/2000, Loss: 0.3140\n", "Epoch: 1709/2000, Loss: 0.3140\n", "Epoch: 1710/2000, Loss: 0.3140\n", "Epoch: 1711/2000, Loss: 0.3140\n", "Epoch: 1712/2000, Loss: 0.3140\n", "Epoch: 1713/2000, Loss: 0.3140\n", "Epoch: 1714/2000, Loss: 0.3140\n", "Epoch: 1715/2000, Loss: 0.3140\n", "Epoch: 1716/2000, Loss: 0.3140\n", "Epoch: 1717/2000, Loss: 0.3140\n", "Epoch: 1718/2000, Loss: 0.3140\n", "Epoch: 1719/2000, Loss: 0.3140\n", "Epoch: 1720/2000, Loss: 0.3140\n", "Epoch: 1721/2000, Loss: 0.3140\n", "Epoch: 1722/2000, Loss: 0.3140\n", "Epoch: 1723/2000, Loss: 0.3140\n", "Epoch: 1724/2000, Loss: 0.3140\n", "Epoch: 1725/2000, Loss: 0.3140\n", "Epoch: 1726/2000, Loss: 0.3140\n", "Epoch: 1727/2000, Loss: 0.3140\n", "Epoch: 1728/2000, Loss: 0.3140\n", "Epoch: 1729/2000, Loss: 0.3140\n", "Epoch: 1730/2000, Loss: 0.3140\n", "Epoch: 1731/2000, Loss: 0.3140\n", "Epoch: 1732/2000, Loss: 0.3140\n", "Epoch: 1733/2000, Loss: 0.3140\n", "Epoch: 1734/2000, Loss: 0.3140\n", "Epoch: 1735/2000, Loss: 0.3140\n", "Epoch: 1736/2000, Loss: 0.3140\n", "Epoch: 1737/2000, Loss: 0.3140\n", "Epoch: 1738/2000, Loss: 0.3140\n", "Epoch: 1739/2000, Loss: 0.3140\n", "Epoch: 1740/2000, Loss: 0.3140\n", "Epoch: 1741/2000, Loss: 0.3140\n", "Epoch: 1742/2000, Loss: 0.3140\n", "Epoch: 1743/2000, Loss: 0.3140\n", "Epoch: 1744/2000, Loss: 0.3140\n", "Epoch: 1745/2000, Loss: 0.3140\n", "Epoch: 1746/2000, Loss: 0.3140\n", "Epoch: 1747/2000, Loss: 0.3140\n", "Epoch: 1748/2000, Loss: 0.3140\n", "Epoch: 1749/2000, Loss: 0.3140\n", "Epoch: 1750/2000, Loss: 0.3140\n", "Epoch: 1751/2000, Loss: 0.3140\n", "Epoch: 1752/2000, Loss: 0.3140\n", "Epoch: 1753/2000, Loss: 0.3140\n", "Epoch: 1754/2000, Loss: 0.3140\n", "Epoch: 1755/2000, Loss: 0.3140\n", "Epoch: 1756/2000, Loss: 0.3140\n", "Epoch: 1757/2000, Loss: 0.3140\n", "Epoch: 1758/2000, Loss: 0.3140\n", "Epoch: 1759/2000, Loss: 0.3140\n", "Epoch: 1760/2000, Loss: 0.3140\n", "Epoch: 1761/2000, Loss: 0.3140\n", "Epoch: 1762/2000, Loss: 0.3140\n", "Epoch: 1763/2000, Loss: 0.3140\n", "Epoch: 1764/2000, Loss: 0.3140\n", "Epoch: 1765/2000, Loss: 0.3139\n", "Epoch: 1766/2000, Loss: 0.3139\n", "Epoch: 1767/2000, Loss: 0.3139\n", "Epoch: 1768/2000, Loss: 0.3139\n", "Epoch: 1769/2000, Loss: 0.3139\n", "Epoch: 1770/2000, Loss: 0.3139\n", "Epoch: 1771/2000, Loss: 0.3139\n", "Epoch: 1772/2000, Loss: 0.3139\n", "Epoch: 1773/2000, Loss: 0.3139\n", "Epoch: 1774/2000, Loss: 0.3139\n", "Epoch: 1775/2000, Loss: 0.3139\n", "Epoch: 1776/2000, Loss: 0.3139\n", "Epoch: 1777/2000, Loss: 0.3139\n", "Epoch: 1778/2000, Loss: 0.3139\n", "Epoch: 1779/2000, Loss: 0.3139\n", "Epoch: 1780/2000, Loss: 0.3139\n", "Epoch: 1781/2000, Loss: 0.3139\n", "Epoch: 1782/2000, Loss: 0.3139\n", "Epoch: 1783/2000, Loss: 0.3139\n", "Epoch: 1784/2000, Loss: 0.3139\n", "Epoch: 1785/2000, Loss: 0.3139\n", "Epoch: 1786/2000, Loss: 0.3139\n", "Epoch: 1787/2000, Loss: 0.3139\n", "Epoch: 1788/2000, Loss: 0.3139\n", "Epoch: 1789/2000, Loss: 0.3139\n", "Epoch: 1790/2000, Loss: 0.3139\n", "Epoch: 1791/2000, Loss: 0.3139\n", "Epoch: 1792/2000, Loss: 0.3139\n", "Epoch: 1793/2000, Loss: 0.3139\n", "Epoch: 1794/2000, Loss: 0.3139\n", "Epoch: 1795/2000, Loss: 0.3139\n", "Epoch: 1796/2000, Loss: 0.3139\n", "Epoch: 1797/2000, Loss: 0.3139\n", "Epoch: 1798/2000, Loss: 0.3139\n", "Epoch: 1799/2000, Loss: 0.3139\n", "Epoch: 1800/2000, Loss: 0.3139\n", "Epoch: 1801/2000, Loss: 0.3139\n", "Epoch: 1802/2000, Loss: 0.3139\n", "Epoch: 1803/2000, Loss: 0.3139\n", "Epoch: 1804/2000, Loss: 0.3139\n", "Epoch: 1805/2000, Loss: 0.3139\n", "Epoch: 1806/2000, Loss: 0.3139\n", "Epoch: 1807/2000, Loss: 0.3139\n", "Epoch: 1808/2000, Loss: 0.3139\n", "Epoch: 1809/2000, Loss: 0.3139\n", "Epoch: 1810/2000, Loss: 0.3139\n", "Epoch: 1811/2000, Loss: 0.3139\n", "Epoch: 1812/2000, Loss: 0.3139\n", "Epoch: 1813/2000, Loss: 0.3139\n", "Epoch: 1814/2000, Loss: 0.3139\n", "Epoch: 1815/2000, Loss: 0.3139\n", "Epoch: 1816/2000, Loss: 0.3139\n", "Epoch: 1817/2000, Loss: 0.3139\n", "Epoch: 1818/2000, Loss: 0.3139\n", "Epoch: 1819/2000, Loss: 0.3139\n", "Epoch: 1820/2000, Loss: 0.3139\n", "Epoch: 1821/2000, Loss: 0.3139\n", "Epoch: 1822/2000, Loss: 0.3139\n", "Epoch: 1823/2000, Loss: 0.3139\n", "Epoch: 1824/2000, Loss: 0.3139\n", "Epoch: 1825/2000, Loss: 0.3139\n", "Epoch: 1826/2000, Loss: 0.3139\n", "Epoch: 1827/2000, Loss: 0.3139\n", "Epoch: 1828/2000, Loss: 0.3139\n", "Epoch: 1829/2000, Loss: 0.3139\n", "Epoch: 1830/2000, Loss: 0.3139\n", "Epoch: 1831/2000, Loss: 0.3139\n", "Epoch: 1832/2000, Loss: 0.3139\n", "Epoch: 1833/2000, Loss: 0.3139\n", "Epoch: 1834/2000, Loss: 0.3139\n", "Epoch: 1835/2000, Loss: 0.3139\n", "Epoch: 1836/2000, Loss: 0.3139\n", "Epoch: 1837/2000, Loss: 0.3139\n", "Epoch: 1838/2000, Loss: 0.3139\n", "Epoch: 1839/2000, Loss: 0.3139\n", "Epoch: 1840/2000, Loss: 0.3139\n", "Epoch: 1841/2000, Loss: 0.3139\n", "Epoch: 1842/2000, Loss: 0.3139\n", "Epoch: 1843/2000, Loss: 0.3139\n", "Epoch: 1844/2000, Loss: 0.3139\n", "Epoch: 1845/2000, Loss: 0.3139\n", "Epoch: 1846/2000, Loss: 0.3139\n", "Epoch: 1847/2000, Loss: 0.3139\n", "Epoch: 1848/2000, Loss: 0.3139\n", "Epoch: 1849/2000, Loss: 0.3139\n", "Epoch: 1850/2000, Loss: 0.3139\n", "Epoch: 1851/2000, Loss: 0.3139\n", "Epoch: 1852/2000, Loss: 0.3139\n", "Epoch: 1853/2000, Loss: 0.3139\n", "Epoch: 1854/2000, Loss: 0.3139\n", "Epoch: 1855/2000, Loss: 0.3139\n", "Epoch: 1856/2000, Loss: 0.3139\n", "Epoch: 1857/2000, Loss: 0.3139\n", "Epoch: 1858/2000, Loss: 0.3139\n", "Epoch: 1859/2000, Loss: 0.3139\n", "Epoch: 1860/2000, Loss: 0.3139\n", "Epoch: 1861/2000, Loss: 0.3139\n", "Epoch: 1862/2000, Loss: 0.3139\n", "Epoch: 1863/2000, Loss: 0.3139\n", "Epoch: 1864/2000, Loss: 0.3139\n", "Epoch: 1865/2000, Loss: 0.3139\n", "Epoch: 1866/2000, Loss: 0.3139\n", "Epoch: 1867/2000, Loss: 0.3139\n", "Epoch: 1868/2000, Loss: 0.3139\n", "Epoch: 1869/2000, Loss: 0.3139\n", "Epoch: 1870/2000, Loss: 0.3139\n", "Epoch: 1871/2000, Loss: 0.3139\n", "Epoch: 1872/2000, Loss: 0.3139\n", "Epoch: 1873/2000, Loss: 0.3139\n", "Epoch: 1874/2000, Loss: 0.3139\n", "Epoch: 1875/2000, Loss: 0.3139\n", "Epoch: 1876/2000, Loss: 0.3139\n", "Epoch: 1877/2000, Loss: 0.3139\n", "Epoch: 1878/2000, Loss: 0.3139\n", "Epoch: 1879/2000, Loss: 0.3139\n", "Epoch: 1880/2000, Loss: 0.3139\n", "Epoch: 1881/2000, Loss: 0.3139\n", "Epoch: 1882/2000, Loss: 0.3139\n", "Epoch: 1883/2000, Loss: 0.3139\n", "Epoch: 1884/2000, Loss: 0.3139\n", "Epoch: 1885/2000, Loss: 0.3139\n", "Epoch: 1886/2000, Loss: 0.3139\n", "Epoch: 1887/2000, Loss: 0.3139\n", "Epoch: 1888/2000, Loss: 0.3139\n", "Epoch: 1889/2000, Loss: 0.3139\n", "Epoch: 1890/2000, Loss: 0.3139\n", "Epoch: 1891/2000, Loss: 0.3139\n", "Epoch: 1892/2000, Loss: 0.3139\n", "Epoch: 1893/2000, Loss: 0.3139\n", "Epoch: 1894/2000, Loss: 0.3139\n", "Epoch: 1895/2000, Loss: 0.3139\n", "Epoch: 1896/2000, Loss: 0.3139\n", "Epoch: 1897/2000, Loss: 0.3139\n", "Epoch: 1898/2000, Loss: 0.3139\n", "Epoch: 1899/2000, Loss: 0.3139\n", "Epoch: 1900/2000, Loss: 0.3139\n", "Epoch: 1901/2000, Loss: 0.3139\n", "Epoch: 1902/2000, Loss: 0.3139\n", "Epoch: 1903/2000, Loss: 0.3139\n", "Epoch: 1904/2000, Loss: 0.3139\n", "Epoch: 1905/2000, Loss: 0.3139\n", "Epoch: 1906/2000, Loss: 0.3139\n", "Epoch: 1907/2000, Loss: 0.3139\n", "Epoch: 1908/2000, Loss: 0.3139\n", "Epoch: 1909/2000, Loss: 0.3139\n", "Epoch: 1910/2000, Loss: 0.3139\n", "Epoch: 1911/2000, Loss: 0.3139\n", "Epoch: 1912/2000, Loss: 0.3139\n", "Epoch: 1913/2000, Loss: 0.3139\n", "Epoch: 1914/2000, Loss: 0.3139\n", "Epoch: 1915/2000, Loss: 0.3139\n", "Epoch: 1916/2000, Loss: 0.3139\n", "Epoch: 1917/2000, Loss: 0.3139\n", "Epoch: 1918/2000, Loss: 0.3139\n", "Epoch: 1919/2000, Loss: 0.3139\n", "Epoch: 1920/2000, Loss: 0.3139\n", "Epoch: 1921/2000, Loss: 0.3139\n", "Epoch: 1922/2000, Loss: 0.3139\n", "Epoch: 1923/2000, Loss: 0.3139\n", "Epoch: 1924/2000, Loss: 0.3139\n", "Epoch: 1925/2000, Loss: 0.3139\n", "Epoch: 1926/2000, Loss: 0.3139\n", "Epoch: 1927/2000, Loss: 0.3139\n", "Epoch: 1928/2000, Loss: 0.3139\n", "Epoch: 1929/2000, Loss: 0.3139\n", "Epoch: 1930/2000, Loss: 0.3139\n", "Epoch: 1931/2000, Loss: 0.3139\n", "Epoch: 1932/2000, Loss: 0.3139\n", "Epoch: 1933/2000, Loss: 0.3139\n", "Epoch: 1934/2000, Loss: 0.3139\n", "Epoch: 1935/2000, Loss: 0.3139\n", "Epoch: 1936/2000, Loss: 0.3139\n", "Epoch: 1937/2000, Loss: 0.3139\n", "Epoch: 1938/2000, Loss: 0.3139\n", "Epoch: 1939/2000, Loss: 0.3139\n", "Epoch: 1940/2000, Loss: 0.3139\n", "Epoch: 1941/2000, Loss: 0.3139\n", "Epoch: 1942/2000, Loss: 0.3139\n", "Epoch: 1943/2000, Loss: 0.3139\n", "Epoch: 1944/2000, Loss: 0.3139\n", "Epoch: 1945/2000, Loss: 0.3139\n", "Epoch: 1946/2000, Loss: 0.3139\n", "Epoch: 1947/2000, Loss: 0.3139\n", "Epoch: 1948/2000, Loss: 0.3139\n", "Epoch: 1949/2000, Loss: 0.3139\n", "Epoch: 1950/2000, Loss: 0.3139\n", "Epoch: 1951/2000, Loss: 0.3139\n", "Epoch: 1952/2000, Loss: 0.3139\n", "Epoch: 1953/2000, Loss: 0.3139\n", "Epoch: 1954/2000, Loss: 0.3139\n", "Epoch: 1955/2000, Loss: 0.3139\n", "Epoch: 1956/2000, Loss: 0.3139\n", "Epoch: 1957/2000, Loss: 0.3139\n", "Epoch: 1958/2000, Loss: 0.3139\n", "Epoch: 1959/2000, Loss: 0.3139\n", "Epoch: 1960/2000, Loss: 0.3139\n", "Epoch: 1961/2000, Loss: 0.3139\n", "Epoch: 1962/2000, Loss: 0.3139\n", "Epoch: 1963/2000, Loss: 0.3139\n", "Epoch: 1964/2000, Loss: 0.3139\n", "Epoch: 1965/2000, Loss: 0.3139\n", "Epoch: 1966/2000, Loss: 0.3139\n", "Epoch: 1967/2000, Loss: 0.3139\n", "Epoch: 1968/2000, Loss: 0.3139\n", "Epoch: 1969/2000, Loss: 0.3139\n", "Epoch: 1970/2000, Loss: 0.3139\n", "Epoch: 1971/2000, Loss: 0.3139\n", "Epoch: 1972/2000, Loss: 0.3139\n", "Epoch: 1973/2000, Loss: 0.3139\n", "Epoch: 1974/2000, Loss: 0.3139\n", "Epoch: 1975/2000, Loss: 0.3139\n", "Epoch: 1976/2000, Loss: 0.3139\n", "Epoch: 1977/2000, Loss: 0.3139\n", "Epoch: 1978/2000, Loss: 0.3139\n", "Epoch: 1979/2000, Loss: 0.3139\n", "Epoch: 1980/2000, Loss: 0.3139\n", "Epoch: 1981/2000, Loss: 0.3139\n", "Epoch: 1982/2000, Loss: 0.3139\n", "Epoch: 1983/2000, Loss: 0.3139\n", "Epoch: 1984/2000, Loss: 0.3139\n", "Epoch: 1985/2000, Loss: 0.3139\n", "Epoch: 1986/2000, Loss: 0.3139\n", "Epoch: 1987/2000, Loss: 0.3139\n", "Epoch: 1988/2000, Loss: 0.3139\n", "Epoch: 1989/2000, Loss: 0.3139\n", "Epoch: 1990/2000, Loss: 0.3139\n", "Epoch: 1991/2000, Loss: 0.3139\n", "Epoch: 1992/2000, Loss: 0.3139\n", "Epoch: 1993/2000, Loss: 0.3139\n", "Epoch: 1994/2000, Loss: 0.3139\n", "Epoch: 1995/2000, Loss: 0.3139\n", "Epoch: 1996/2000, Loss: 0.3139\n", "Epoch: 1997/2000, Loss: 0.3139\n", "Epoch: 1998/2000, Loss: 0.3139\n", "Epoch: 1999/2000, Loss: 0.3139\n" ] } ], "source": [ "# Initialize a basic 2x2 Markov Chain\n", "\n", "_markov_chain = MarkovChain(\n", " [[0, 1],\n", " [1, 0]],\n", "\n", " states=[\"Rainy\", \"Sunny\"],\n", ")\n", "\n", "model = MarkovChainNeuralNetwork(_markov_chain, num_layers=5)\n", "model.train_model(\n", " num_samples=30_000, \n", " epochs=2_000, \n", " learning_rate=0.1, \n", " momentum=0.9, \n", " verbose=True, \n", " patience=500, \n", " factor=0.5\n", " )" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUoFNRt2DBgrzzne/M4MGDM2zYsBx99NFZs2ZNhzXPPvtsZs+enTe96U0ZNGhQZsyYkfXr13dYs27dukyfPj277rprhg0blnPOOSfPPfdchzXLly/PwQcfnNra2uy9995ZtGjRjj1DgE4w54CdVaeibsWKFZk9e3Zuv/32NDc3Z8uWLZkyZUo2btxYXfPxj388P/vZz/KjH/0oK1asyMMPP5xjjjmmevz555/P9OnTs3nz5tx222258sors2jRosyfP7+6Zu3atZk+fXoOP/zwtLS05Kyzzsppp52W66+/vgueMsBLM+eAnVVNpVKp7OidH3300QwbNiwrVqzIYYcdlra2tuy5555ZvHhxPvjBDyZJ7rvvvuy3335ZuXJlDj300Pz7v/973v/+9+fhhx/O8OHDkyTf/OY3c9555+XRRx9N//79c95552Xp0qW55557qo917LHH5sknn8x11133qvbW3t6e+vr6tLW1pa6u7hXXv/Uflu7AK/DKHrh4erecF14PPf2+6Oz7uDv01jlnxkHX6On3RlfOudf0mbq2trYkydChQ5Mkq1atypYtWzJ58uTqmn333TdvectbsnLlyiTJypUrM27cuOqgS5Kmpqa0t7dn9erV1TUvPMe2NdvOAfB66S1zbtOmTWlvb+9wAXihHY66rVu35qyzzsq73vWuHHDAAUmS1tbW9O/fP0OGDOmwdvjw4Wltba2ueeGg23Z827GXW9Pe3p5nnnlmu/sx8ICu1pvm3IIFC1JfX1+9jBo1qkueI1COHY662bNn55577skPfvCDrtzPDjPwgK7Wm+bcvHnz0tbWVr08+OCDPb0loJfZoaibM2dOlixZkptvvjlvfvObq7c3NDRk8+bNefLJJzusX79+fRoaGqpr/u9PiW27/kpr6urqMnDgwO3uycADulJvm3O1tbWpq6vrcAF4oU5FXaVSyZw5c/LTn/40N910U8aMGdPh+IQJE7LLLrtk2bJl1dvWrFmTdevWpbGxMUnS2NiYu+++Oxs2bKiuaW5uTl1dXcaOHVtd88JzbFuz7RzbY+ABXaE3zzmAl9OvM4tnz56dxYsX59/+7d8yePDg6mdD6uvrM3DgwNTX12fWrFmZO3duhg4dmrq6unz0ox9NY2NjDj300CTJlClTMnbs2Jx00klZuHBhWltbc/7552f27Nmpra1NknzkIx/J17/+9Zx77rn58Ic/nJtuuik//OEPs3Rp9/yECsA25hyws+rUV+ouu+yytLW1ZdKkSRkxYkT1cvXVV1fXfOlLX8r73//+zJgxI4cddlgaGhryk5/8pHq8b9++WbJkSfr27ZvGxsaceOKJOfnkk/OZz3ymumbMmDFZunRpmpubM378+FxyySX5zne+k6ampi54ygAvzZwDdlav6ffU9WZ+hxO8dj39vugNv6eutzLjoGv09Huj1/yeOgAAegdRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUABRBwBQAFEHAFAAUQcAUIBOR90tt9ySD3zgAxk5cmRqampyzTXXdDh+yimnpKampsNl6tSpHdY8/vjjOeGEE1JXV5chQ4Zk1qxZefrppzusueuuu/Ke97wnAwYMyKhRo7Jw4cLOPzuATjLjgJ1Vp6Nu48aNGT9+fC699NKXXDN16tQ88sgj1cu//uu/djh+wgknZPXq1Wlubs6SJUtyyy235Iwzzqgeb29vz5QpUzJ69OisWrUqn//853PhhRfmW9/6Vme3C9ApZhyws+rX2TtMmzYt06ZNe9k1tbW1aWho2O6xe++9N9ddd11++ctf5pBDDkmSfO1rX8v73ve+fOELX8jIkSNz1VVXZfPmzbn88svTv3//7L///mlpackXv/jFDoMRoKuZccDOqls+U7d8+fIMGzYs++yzT84888w89thj1WMrV67MkCFDqsMuSSZPnpw+ffrkjjvuqK457LDD0r9//+qapqamrFmzJk888UR3bBngVTPjgN6o01+peyVTp07NMccckzFjxuT+++/PJz/5yUybNi0rV65M375909rammHDhnXcRL9+GTp0aFpbW5Mkra2tGTNmTIc1w4cPrx7bfffdX/S4mzZtyqZNm6rX29vbu/qpAZhxQK/V5VF37LHHVv973LhxOfDAA/O2t70ty5cvz5FHHtnVD1e1YMGCfPrTn+628wMkZhzQe3X7rzTZa6+9sscee+QPf/hDkqShoSEbNmzosOa5557L448/Xv2MSkNDQ9avX99hzbbrL/U5lnnz5qWtra16efDBB7v6qQC8iBkH9BbdHnUPPfRQHnvssYwYMSJJ0tjYmCeffDKrVq2qrrnpppuydevWTJw4sbrmlltuyZYtW6prmpubs88++2z32xLJnz64XFdX1+EC0N3MOKC36HTUPf3002lpaUlLS0uSZO3atWlpacm6devy9NNP55xzzsntt9+eBx54IMuWLctRRx2VvffeO01NTUmS/fbbL1OnTs3pp5+eO++8M7feemvmzJmTY489NiNHjkySHH/88enfv39mzZqV1atX5+qrr85XvvKVzJ07t+ueOcB2mHHAzqrTUferX/0qBx10UA466KAkydy5c3PQQQdl/vz56du3b+6666789V//dd7+9rdn1qxZmTBhQn7xi1+ktra2eo6rrroq++67b4488si8733vy7vf/e4Ov5+pvr4+N9xwQ9auXZsJEybk7LPPzvz58/2oP9DtzDhgZ9XpH5SYNGlSKpXKSx6//vrrX/EcQ4cOzeLFi192zYEHHphf/OIXnd0ewGtixgE7K3/7FQCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAKIOAKAAog4AoACiDgCgAJ2OultuuSUf+MAHMnLkyNTU1OSaa67pcLxSqWT+/PkZMWJEBg4cmMmTJ+f3v/99hzWPP/54TjjhhNTV1WXIkCGZNWtWnn766Q5r7rrrrrznPe/JgAEDMmrUqCxcuLDzzw6gk8w4YGfV6ajbuHFjxo8fn0svvXS7xxcuXJivfvWr+eY3v5k77rgju+22W5qamvLss89W15xwwglZvXp1mpubs2TJktxyyy0544wzqsfb29szZcqUjB49OqtWrcrnP//5XHjhhfnWt761A08R4NUz44CdVb/O3mHatGmZNm3ado9VKpV8+ctfzvnnn5+jjjoqSfK9730vw4cPzzXXXJNjjz029957b6677rr88pe/zCGHHJIk+drXvpb3ve99+cIXvpCRI0fmqquuyubNm3P55Zenf//+2X///dPS0pIvfvGLHQYjQFcz44CdVZd+pm7t2rVpbW3N5MmTq7fV19dn4sSJWblyZZJk5cqVGTJkSHXYJcnkyZPTp0+f3HHHHdU1hx12WPr3719d09TUlDVr1uSJJ57oyi0DvGpmHNCbdfordS+ntbU1STJ8+PAOtw8fPrx6rLW1NcOGDeu4iX79MnTo0A5rxowZ86JzbDu2++67v+ixN23alE2bNlWvt7e3v8ZnA9CRGQf0ZsX89OuCBQtSX19fvYwaNaqntwTQZcw44JV0adQ1NDQkSdavX9/h9vXr11ePNTQ0ZMOGDR2OP/fcc3n88cc7rNneOV74GP/XvHnz0tbWVr08+OCDr/0JAbyAGQf0Zl0adWPGjElDQ0OWLVtWva29vT133HFHGhsbkySNjY158skns2rVquqam266KVu3bs3EiROra2655ZZs2bKluqa5uTn77LPPdr8tkSS1tbWpq6vrcAHoSmYc0Jt1OuqefvrptLS0pKWlJcmfPjjc0tKSdevWpaamJmeddVY++9nP5tprr83dd9+dk08+OSNHjszRRx+dJNlvv/0yderUnH766bnzzjtz6623Zs6cOTn22GMzcuTIJMnxxx+f/v37Z9asWVm9enWuvvrqfOUrX8ncuXO77IkDbI8ZB+ysOv2DEr/61a9y+OGHV69vG0IzZ87MokWLcu6552bjxo0544wz8uSTT+bd7353rrvuugwYMKB6n6uuuipz5szJkUcemT59+mTGjBn56le/Wj1eX1+fG264IbNnz86ECROyxx57ZP78+X7UH+h2Zhyws6qpVCqVnt5Ed2hvb099fX3a2tpe1bcp3voPS7tlHw9cPL1bzguvh55+X3T2ffxGYsZB1+jp90ZXzrlifvoVAOCNTNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABRA1AEAFEDUAQAUQNQBABSgy6PuwgsvTE1NTYfLvvvuWz3+7LPPZvbs2XnTm96UQYMGZcaMGVm/fn2Hc6xbty7Tp0/PrrvummHDhuWcc87Jc88919VbBdgh5hzQG/XrjpPuv//+ufHGG//3Qfr978N8/OMfz9KlS/OjH/0o9fX1mTNnTo455pjceuutSZLnn38+06dPT0NDQ2677bY88sgjOfnkk7PLLrvkn//5n7tjuwCdZs4BvU23RF2/fv3S0NDwotvb2try3e9+N4sXL84RRxyRJLniiiuy33775fbbb8+hhx6aG264Ib/73e9y4403Zvjw4XnHO96Riy66KOedd14uvPDC9O/fvzu2DNAp5hzQ23TLZ+p+//vfZ+TIkdlrr71ywgknZN26dUmSVatWZcuWLZk8eXJ17b777pu3vOUtWblyZZJk5cqVGTduXIYPH15d09TUlPb29qxevfolH3PTpk1pb2/vcAHoLq/3nDPjgFfS5VE3ceLELFq0KNddd10uu+yyrF27Nu95z3vy1FNPpbW1Nf3798+QIUM63Gf48OFpbW1NkrS2tnYYdNuObzv2UhYsWJD6+vrqZdSoUV37xAD+v56Yc2Yc8Eq6/Nuv06ZNq/73gQcemIkTJ2b06NH54Q9/mIEDB3b1w1XNmzcvc+fOrV5vb2839IBu0RNzzowDXkm3/0qTIUOG5O1vf3v+8Ic/pKGhIZs3b86TTz7ZYc369eurn01paGh40U+Jbbu+vc+vbFNbW5u6uroOF4DXw+sx58w44JV0e9Q9/fTTuf/++zNixIhMmDAhu+yyS5YtW1Y9vmbNmqxbty6NjY1JksbGxtx9993ZsGFDdU1zc3Pq6uoyduzY7t4uQKeZc0Bv0OXffv3EJz6RD3zgAxk9enQefvjhXHDBBenbt2+OO+641NfXZ9asWZk7d26GDh2aurq6fPSjH01jY2MOPfTQJMmUKVMyduzYnHTSSVm4cGFaW1tz/vnnZ/bs2amtre3q7QJ0mjkH9EZdHnUPPfRQjjvuuDz22GPZc8898+53vzu333579txzzyTJl770pfTp0yczZszIpk2b0tTUlG984xvV+/ft2zdLlizJmWeemcbGxuy2226ZOXNmPvOZz3T1VgF2iDkH9EZdHnU/+MEPXvb4gAEDcumll+bSSy99yTWjR4/Oz3/+867eGkCXMOeA3sjffgUAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKICoAwAogKgDACiAqAMAKECvjrpLL700b33rWzNgwIBMnDgxd955Z09vCaBLmXNAV+m1UXf11Vdn7ty5ueCCC/LrX/8648ePT1NTUzZs2NDTWwPoEuYc0JV6bdR98YtfzOmnn55TTz01Y8eOzTe/+c3suuuuufzyy3t6awBdwpwDulK/nt7A9mzevDmrVq3KvHnzqrf16dMnkydPzsqVK7d7n02bNmXTpk3V621tbUmS9vb2V/WYWzf9z2vY8Ut7tY8PvVFPvy+2ratUKt2yj57U2TlnxkH36On3RlfOuV4ZdX/84x/z/PPPZ/jw4R1uHz58eO67777t3mfBggX59Kc//aLbR40a1S17fLXqv9yjDw+9UmffF0899VTq6+u7ZS89pbNzzoyDnUtPzLleGXU7Yt68eZk7d271+tatW/P444/nTW96U2pqal72vu3t7Rk1alQefPDB1NXVdfdW4Q2tM++3SqWSp556KiNHjnyddtd7mXGw8+ipOdcro26PPfZI3759s379+g63r1+/Pg0NDdu9T21tbWprazvcNmTIkE49bl1dnYEHr5NX+34r7St023R2zplxsPN5vedcr/xBif79+2fChAlZtmxZ9batW7dm2bJlaWxs7MGdAXQNcw7oar3yK3VJMnfu3MycOTOHHHJI/uIv/iJf/vKXs3Hjxpx66qk9vTWALmHOAV2p10bdhz70oTz66KOZP39+Wltb8453vCPXXXfdiz5U3BVqa2tzwQUXvOhbG0DX8377X6/XnPOaw+urp95zNZUSf1cAAMAbTK/8TB0AAJ0j6gAACiDqAAAKIOqSTJo0KWeddVZPbwMAKEBPdcVOH3WnnHJKampqUlNTk1122SVjxozJueeem2efffZVn+MnP/lJLrroom7cJezcHn300Zx55pl5y1vektra2jQ0NKSpqSm33nprT2+taF53eP3tzF3Ra3+lSWdMnTo1V1xxRbZs2ZJVq1Zl5syZqampyec+97lXdf+hQ4d28w5h5zZjxoxs3rw5V155Zfbaa6+sX78+y5Yty2OPPdbTWyua1x16xk7bFZWd3MyZMytHHXVUh9uOOeaYykEHHVSpVCqVP/7xj5Vjjz22MnLkyMrAgQMrBxxwQGXx4sUd1r/3ve+tfOxjH6teHz16dOWf/umfKqeeempl0KBBlVGjRlX+5V/+pXr88MMPr8yePbvDOTZs2FDZZZddKjfeeGPXPkHoYU888UQlSWX58uXbPb527dpKkspvfvObF93n5ptvrlQqlcrNN99cSVK58cYbKxMmTKgMHDiw0tjYWLnvvvuq97ngggsq48ePr3zve9+rjB49ulJXV1f50Ic+VGlvb69UKpXKlVdeWRk6dGjl2Wef7fD4Rx11VOXEE0/s2ifdC3jdoWfszF2x03/79f+65557ctttt6V///5JkmeffTYTJkzI0qVLc8899+SMM87ISSedlDvvvPNlz3PJJZfkkEMOyW9+85v8/d//fc4888ysWbMmSXLaaadl8eLF2bRpU3X997///fzZn/1ZjjjiiO57ctADBg0alEGDBuWaa67p8P/8jvjHf/zHXHLJJfnVr36Vfv365cMf/nCH4/fff3+uueaaLFmyJEuWLMmKFSty8cUXJ0n+9m//Ns8//3yuvfba6voNGzZk6dKlLzpPCbzu0DvsVF3xqvOvl5o5c2alb9++ld12261SW1tbSVLp06dP5cc//vFL3mf69OmVs88+u3p9e0X9wn+Bbt26tTJs2LDKZZddVqlUKpVnnnmmsvvuu1euvvrq6poDDzywcuGFF3bhM4Pe48c//nFl9913rwwYMKDyl3/5l5V58+ZVfvvb31Yqlc5/xWibpUuXVpJUnnnmmUql8qevGO26667VrxBVKpXKOeecU5k4cWL1+plnnlmZNm1a9foll1xS2WuvvSpbt27tjqfd47zu8PrbmbuiiK/UHX744Wlpackdd9yRmTNn5tRTT82MGTOSJM8//3wuuuiijBs3LkOHDs2gQYNy/fXXZ926dS97zgMPPLD63zU1NWloaMiGDRuSJAMGDMhJJ52Uyy+/PEny61//Ovfcc09OOeWU7nmC0MNmzJiRhx9+ONdee22mTp2a5cuX5+CDD86iRYs6dZ4Xvq9GjBiRJNX3VZK89a1vzeDBgzuseeHx008/PTfccEP++7//O0myaNGi6oeaS+R1h56xs3ZFEVG32267Ze+998748eNz+eWX54477sh3v/vdJMnnP//5fOUrX8l5552Xm2++OS0tLWlqasrmzZtf9py77LJLh+s1NTXZunVr9fppp52W5ubmPPTQQ7niiityxBFHZPTo0V3/5KCXGDBgQP7qr/4qn/rUp3LbbbfllFNOyQUXXJA+ff40Riov+IuDW7Zs2e45Xvi+2hYEL3xfvdL77qCDDsr48ePzve99L6tWrcrq1auL/8eU1x1efztrVxQRdS/Up0+ffPKTn8z555+fZ555JrfeemuOOuqonHjiiRk/fnz22muv/Od//udrfpxx48blkEMOybe//e0sXrzYZ0t4wxk7dmw2btyYPffcM0nyyCOPVI+1tLR02+OedtppWbRoUa644opMnjw5o0aN6rbH6o287vD62pm6orioS/70wd6+ffvm0ksvzZ//+Z+nubk5t912W+6999783d/9XdavX98lj3Paaafl4osvTqVSyd/8zd90yTmht3nsscdyxBFH5Pvf/37uuuuurF27Nj/60Y+ycOHCHHXUURk4cGAOPfTQXHzxxbn33nuzYsWKnH/++d22n+OPPz4PPfRQvv3tbxf9jymvO/QeO0tXFBl1/fr1y5w5c7Jw4cKcffbZOfjgg9PU1JRJkyaloaEhRx99dJc8znHHHZd+/frluOOOy4ABA7rknNDbDBo0KBMnTsyXvvSlHHbYYTnggAPyqU99Kqeffnq+/vWvJ0kuv/zyPPfcc5kwYULOOuusfPazn+22/dTX12fGjBkZNGhQl72XeyOvO/QeO0tX1FRe+IEMOuWBBx7I2972tvzyl7/MwQcf3NPbgTeMI488Mvvvv3+++tWv9vRW3lC87tC9XmtXiLodsGXLljz22GP5xCc+kbVr1/qTPfA6eeKJJ7J8+fJ88IMfzO9+97vss88+Pb2lNwSvO3SvruqKIv5M2Ovt1ltvzeGHH563v/3t+fGPf9zT24E3jIMOOihPPPFEPve5zwmL15HXHbpXV3WFr9QBABSgyB+UAAB4oxF1AAAFEHUAAAUQdQAABRB1AAAFEHUAAAUQdQAABRB1AAAFEHUAAAX4fxjSYUXgTGhBAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's Simulate and Compare Random Walks generate by the Neural Networks and the Original `MarkovChain.simulate` method\n", "\n", "nn_walk = model.simulate_random_walk(\"Rainy\", 5000)\n", "mc_walk = _markov_chain.simulate(\"Rainy\", 5000)\n", "\n", "\n", "fig, ax = plt.subplots(nrows=1, ncols=2)\n", "ax1 = ax[0]\n", "ax2 = ax[1]\n", "# Right - Neural Network\n", "ax1.hist(nn_walk)\n", "\n", "# Left - `MarkovChain.simulate`\n", "ax2.hist(mc_walk)\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0/2000, Loss: 1.0987\n", "Epoch: 1/2000, Loss: 1.0975\n", "Epoch: 2/2000, Loss: 1.0951\n", "Epoch: 3/2000, Loss: 1.0917\n", "Epoch: 4/2000, Loss: 1.0874\n", "Epoch: 5/2000, Loss: 1.0824\n", "Epoch: 6/2000, Loss: 1.0766\n", "Epoch: 7/2000, Loss: 1.0704\n", "Epoch: 8/2000, Loss: 1.0638\n", "Epoch: 9/2000, Loss: 1.0571\n", "Epoch: 10/2000, Loss: 1.0504\n", "Epoch: 11/2000, Loss: 1.0439\n", "Epoch: 12/2000, Loss: 1.0378\n", "Epoch: 13/2000, Loss: 1.0323\n", "Epoch: 14/2000, Loss: 1.0276\n", "Epoch: 15/2000, Loss: 1.0237\n", "Epoch: 16/2000, Loss: 1.0205\n", "Epoch: 17/2000, Loss: 1.0181\n", "Epoch: 18/2000, Loss: 1.0163\n", "Epoch: 19/2000, Loss: 1.0151\n", "Epoch: 20/2000, Loss: 1.0143\n", "Epoch: 21/2000, Loss: 1.0137\n", "Epoch: 22/2000, Loss: 1.0134\n", "Epoch: 23/2000, Loss: 1.0132\n", "Epoch: 24/2000, Loss: 1.0132\n", "Epoch: 25/2000, Loss: 1.0132\n", "Epoch: 26/2000, Loss: 1.0132\n", "Epoch: 27/2000, Loss: 1.0133\n", "Epoch: 28/2000, Loss: 1.0134\n", "Epoch: 29/2000, Loss: 1.0135\n", "Epoch: 30/2000, Loss: 1.0135\n", "Epoch: 31/2000, Loss: 1.0136\n", "Epoch: 32/2000, Loss: 1.0137\n", "Epoch: 33/2000, Loss: 1.0137\n", "Epoch: 34/2000, Loss: 1.0138\n", "Epoch: 35/2000, Loss: 1.0138\n", "Epoch: 36/2000, Loss: 1.0138\n", "Epoch: 37/2000, Loss: 1.0138\n", "Epoch: 38/2000, Loss: 1.0139\n", "Epoch: 39/2000, Loss: 1.0139\n", "Epoch: 40/2000, Loss: 1.0139\n", "Epoch: 41/2000, Loss: 1.0138\n", "Epoch: 42/2000, Loss: 1.0138\n", "Epoch: 43/2000, Loss: 1.0138\n", "Epoch: 44/2000, Loss: 1.0138\n", "Epoch: 45/2000, Loss: 1.0138\n", "Epoch: 46/2000, Loss: 1.0137\n", "Epoch: 47/2000, Loss: 1.0137\n", "Epoch: 48/2000, Loss: 1.0136\n", "Epoch: 49/2000, Loss: 1.0136\n", "Epoch: 50/2000, Loss: 1.0136\n", "Epoch: 51/2000, Loss: 1.0135\n", "Epoch: 52/2000, Loss: 1.0135\n", "Epoch: 53/2000, Loss: 1.0134\n", "Epoch: 54/2000, Loss: 1.0133\n", "Epoch: 55/2000, Loss: 1.0133\n", "Epoch: 56/2000, Loss: 1.0132\n", "Epoch: 57/2000, Loss: 1.0132\n", "Epoch: 58/2000, Loss: 1.0131\n", "Epoch: 59/2000, Loss: 1.0130\n", "Epoch: 60/2000, Loss: 1.0130\n", "Epoch: 61/2000, Loss: 1.0129\n", "Epoch: 62/2000, Loss: 1.0128\n", "Epoch: 63/2000, Loss: 1.0128\n", "Epoch: 64/2000, Loss: 1.0127\n", "Epoch: 65/2000, Loss: 1.0126\n", "Epoch: 66/2000, Loss: 1.0126\n", "Epoch: 67/2000, Loss: 1.0125\n", "Epoch: 68/2000, Loss: 1.0124\n", "Epoch: 69/2000, Loss: 1.0123\n", "Epoch: 70/2000, Loss: 1.0123\n", "Epoch: 71/2000, Loss: 1.0122\n", "Epoch: 72/2000, Loss: 1.0121\n", "Epoch: 73/2000, Loss: 1.0120\n", "Epoch: 74/2000, Loss: 1.0119\n", "Epoch: 75/2000, Loss: 1.0119\n", "Epoch: 76/2000, Loss: 1.0118\n", "Epoch: 77/2000, Loss: 1.0117\n", "Epoch: 78/2000, Loss: 1.0116\n", "Epoch: 79/2000, Loss: 1.0115\n", "Epoch: 80/2000, Loss: 1.0115\n", "Epoch: 81/2000, Loss: 1.0114\n", "Epoch: 82/2000, Loss: 1.0113\n", "Epoch: 83/2000, Loss: 1.0112\n", "Epoch: 84/2000, Loss: 1.0111\n", "Epoch: 85/2000, Loss: 1.0110\n", "Epoch: 86/2000, Loss: 1.0109\n", "Epoch: 87/2000, Loss: 1.0108\n", "Epoch: 88/2000, Loss: 1.0107\n", "Epoch: 89/2000, Loss: 1.0106\n", "Epoch: 90/2000, Loss: 1.0105\n", "Epoch: 91/2000, Loss: 1.0103\n", "Epoch: 92/2000, Loss: 1.0102\n", "Epoch: 93/2000, Loss: 1.0101\n", "Epoch: 94/2000, Loss: 1.0099\n", "Epoch: 95/2000, Loss: 1.0098\n", "Epoch: 96/2000, Loss: 1.0097\n", "Epoch: 97/2000, Loss: 1.0095\n", "Epoch: 98/2000, Loss: 1.0094\n", "Epoch: 99/2000, Loss: 1.0092\n", "Epoch: 100/2000, Loss: 1.0090\n", "Epoch: 101/2000, Loss: 1.0088\n", "Epoch: 102/2000, Loss: 1.0087\n", "Epoch: 103/2000, Loss: 1.0085\n", "Epoch: 104/2000, Loss: 1.0083\n", "Epoch: 105/2000, Loss: 1.0080\n", "Epoch: 106/2000, Loss: 1.0078\n", "Epoch: 107/2000, Loss: 1.0076\n", "Epoch: 108/2000, Loss: 1.0073\n", "Epoch: 109/2000, Loss: 1.0071\n", "Epoch: 110/2000, Loss: 1.0068\n", "Epoch: 111/2000, Loss: 1.0065\n", "Epoch: 112/2000, Loss: 1.0062\n", "Epoch: 113/2000, Loss: 1.0059\n", "Epoch: 114/2000, Loss: 1.0056\n", "Epoch: 115/2000, Loss: 1.0052\n", "Epoch: 116/2000, Loss: 1.0048\n", "Epoch: 117/2000, Loss: 1.0045\n", "Epoch: 118/2000, Loss: 1.0041\n", "Epoch: 119/2000, Loss: 1.0037\n", "Epoch: 120/2000, Loss: 1.0032\n", "Epoch: 121/2000, Loss: 1.0028\n", "Epoch: 122/2000, Loss: 1.0023\n", "Epoch: 123/2000, Loss: 1.0018\n", "Epoch: 124/2000, Loss: 1.0013\n", "Epoch: 125/2000, Loss: 1.0008\n", "Epoch: 126/2000, Loss: 1.0003\n", "Epoch: 127/2000, Loss: 0.9997\n", "Epoch: 128/2000, Loss: 0.9991\n", "Epoch: 129/2000, Loss: 0.9985\n", "Epoch: 130/2000, Loss: 0.9978\n", "Epoch: 131/2000, Loss: 0.9972\n", "Epoch: 132/2000, Loss: 0.9965\n", "Epoch: 133/2000, Loss: 0.9958\n", "Epoch: 134/2000, Loss: 0.9951\n", "Epoch: 135/2000, Loss: 0.9943\n", "Epoch: 136/2000, Loss: 0.9936\n", "Epoch: 137/2000, Loss: 0.9928\n", "Epoch: 138/2000, Loss: 0.9921\n", "Epoch: 139/2000, Loss: 0.9913\n", "Epoch: 140/2000, Loss: 0.9905\n", "Epoch: 141/2000, Loss: 0.9895\n", "Epoch: 142/2000, Loss: 0.9886\n", "Epoch: 143/2000, Loss: 0.9879\n", "Epoch: 144/2000, Loss: 0.9872\n", "Epoch: 145/2000, Loss: 0.9865\n", "Epoch: 146/2000, Loss: 0.9858\n", "Epoch: 147/2000, Loss: 0.9851\n", "Epoch: 148/2000, Loss: 0.9844\n", "Epoch: 149/2000, Loss: 0.9837\n", "Epoch: 150/2000, Loss: 0.9831\n", "Epoch: 151/2000, Loss: 0.9824\n", "Epoch: 152/2000, Loss: 0.9819\n", "Epoch: 153/2000, Loss: 0.9813\n", "Epoch: 154/2000, Loss: 0.9808\n", "Epoch: 155/2000, Loss: 0.9803\n", "Epoch: 156/2000, Loss: 0.9798\n", "Epoch: 157/2000, Loss: 0.9795\n", "Epoch: 158/2000, Loss: 0.9791\n", "Epoch: 159/2000, Loss: 0.9788\n", "Epoch: 160/2000, Loss: 0.9784\n", "Epoch: 161/2000, Loss: 0.9780\n", "Epoch: 162/2000, Loss: 0.9777\n", "Epoch: 163/2000, Loss: 0.9774\n", "Epoch: 164/2000, Loss: 0.9771\n", "Epoch: 165/2000, Loss: 0.9768\n", "Epoch: 166/2000, Loss: 0.9764\n", "Epoch: 167/2000, Loss: 0.9761\n", "Epoch: 168/2000, Loss: 0.9758\n", "Epoch: 169/2000, Loss: 0.9755\n", "Epoch: 170/2000, Loss: 0.9755\n", "Epoch: 171/2000, Loss: 0.9754\n", "Epoch: 172/2000, Loss: 0.9753\n", "Epoch: 173/2000, Loss: 0.9752\n", "Epoch: 174/2000, Loss: 0.9751\n", "Epoch: 175/2000, Loss: 0.9750\n", "Epoch: 176/2000, Loss: 0.9750\n", "Epoch: 177/2000, Loss: 0.9749\n", "Epoch: 178/2000, Loss: 0.9748\n", "Epoch: 179/2000, Loss: 0.9747\n", "Epoch: 180/2000, Loss: 0.9747\n", "Epoch: 181/2000, Loss: 0.9746\n", "Epoch: 182/2000, Loss: 0.9745\n", "Epoch: 183/2000, Loss: 0.9745\n", "Epoch: 184/2000, Loss: 0.9744\n", "Epoch: 185/2000, Loss: 0.9743\n", "Epoch: 186/2000, Loss: 0.9743\n", "Epoch: 187/2000, Loss: 0.9742\n", "Epoch: 188/2000, Loss: 0.9742\n", "Epoch: 189/2000, Loss: 0.9741\n", "Epoch: 190/2000, Loss: 0.9740\n", "Epoch: 191/2000, Loss: 0.9740\n", "Epoch: 192/2000, Loss: 0.9739\n", "Epoch: 193/2000, Loss: 0.9739\n", "Epoch: 194/2000, Loss: 0.9738\n", "Epoch: 195/2000, Loss: 0.9737\n", "Epoch: 196/2000, Loss: 0.9737\n", "Epoch: 197/2000, Loss: 0.9736\n", "Epoch: 198/2000, Loss: 0.9735\n", "Epoch: 199/2000, Loss: 0.9735\n", "Epoch: 200/2000, Loss: 0.9734\n", "Epoch: 201/2000, Loss: 0.9733\n", "Epoch: 202/2000, Loss: 0.9732\n", "Epoch: 203/2000, Loss: 0.9732\n", "Epoch: 204/2000, Loss: 0.9731\n", "Epoch: 205/2000, Loss: 0.9730\n", "Epoch: 206/2000, Loss: 0.9729\n", "Epoch: 207/2000, Loss: 0.9728\n", "Epoch: 208/2000, Loss: 0.9728\n", "Epoch: 209/2000, Loss: 0.9727\n", "Epoch: 210/2000, Loss: 0.9726\n", "Epoch: 211/2000, Loss: 0.9725\n", "Epoch: 212/2000, Loss: 0.9724\n", "Epoch: 213/2000, Loss: 0.9723\n", "Epoch: 214/2000, Loss: 0.9722\n", "Epoch: 215/2000, Loss: 0.9721\n", "Epoch: 216/2000, Loss: 0.9720\n", "Epoch: 217/2000, Loss: 0.9718\n", "Epoch: 218/2000, Loss: 0.9717\n", "Epoch: 219/2000, Loss: 0.9716\n", "Epoch: 220/2000, Loss: 0.9715\n", "Epoch: 221/2000, Loss: 0.9714\n", "Epoch: 222/2000, Loss: 0.9712\n", "Epoch: 223/2000, Loss: 0.9711\n", "Epoch: 224/2000, Loss: 0.9710\n", "Epoch: 225/2000, Loss: 0.9708\n", "Epoch: 226/2000, Loss: 0.9707\n", "Epoch: 227/2000, Loss: 0.9705\n", "Epoch: 228/2000, Loss: 0.9703\n", "Epoch: 229/2000, Loss: 0.9702\n", "Epoch: 230/2000, Loss: 0.9700\n", "Epoch: 231/2000, Loss: 0.9698\n", "Epoch: 232/2000, Loss: 0.9696\n", "Epoch: 233/2000, Loss: 0.9694\n", "Epoch: 234/2000, Loss: 0.9692\n", "Epoch: 235/2000, Loss: 0.9690\n", "Epoch: 236/2000, Loss: 0.9688\n", "Epoch: 237/2000, Loss: 0.9686\n", "Epoch: 238/2000, Loss: 0.9684\n", "Epoch: 239/2000, Loss: 0.9681\n", "Epoch: 240/2000, Loss: 0.9679\n", "Epoch: 241/2000, Loss: 0.9676\n", "Epoch: 242/2000, Loss: 0.9673\n", "Epoch: 243/2000, Loss: 0.9670\n", "Epoch: 244/2000, Loss: 0.9667\n", "Epoch: 245/2000, Loss: 0.9664\n", "Epoch: 246/2000, Loss: 0.9661\n", "Epoch: 247/2000, Loss: 0.9658\n", "Epoch: 248/2000, Loss: 0.9654\n", "Epoch: 249/2000, Loss: 0.9651\n", "Epoch: 250/2000, Loss: 0.9648\n", "Epoch: 251/2000, Loss: 0.9644\n", "Epoch: 252/2000, Loss: 0.9641\n", "Epoch: 253/2000, Loss: 0.9638\n", "Epoch: 254/2000, Loss: 0.9634\n", "Epoch: 255/2000, Loss: 0.9631\n", "Epoch: 256/2000, Loss: 0.9628\n", "Epoch: 257/2000, Loss: 0.9624\n", "Epoch: 258/2000, Loss: 0.9621\n", "Epoch: 259/2000, Loss: 0.9620\n", "Epoch: 260/2000, Loss: 0.9618\n", "Epoch: 261/2000, Loss: 0.9615\n", "Epoch: 262/2000, Loss: 0.9613\n", "Epoch: 263/2000, Loss: 0.9611\n", "Epoch: 264/2000, Loss: 0.9610\n", "Epoch: 265/2000, Loss: 0.9608\n", "Epoch: 266/2000, Loss: 0.9607\n", "Epoch: 267/2000, Loss: 0.9605\n", "Epoch: 268/2000, Loss: 0.9604\n", "Epoch: 269/2000, Loss: 0.9602\n", "Epoch: 270/2000, Loss: 0.9601\n", "Epoch: 271/2000, Loss: 0.9600\n", "Epoch: 272/2000, Loss: 0.9599\n", "Epoch: 273/2000, Loss: 0.9598\n", "Epoch: 274/2000, Loss: 0.9597\n", "Epoch: 275/2000, Loss: 0.9595\n", "Epoch: 276/2000, Loss: 0.9594\n", "Epoch: 277/2000, Loss: 0.9593\n", "Epoch: 278/2000, Loss: 0.9592\n", "Epoch: 279/2000, Loss: 0.9590\n", "Epoch: 280/2000, Loss: 0.9589\n", "Epoch: 281/2000, Loss: 0.9588\n", "Epoch: 282/2000, Loss: 0.9586\n", "Epoch: 283/2000, Loss: 0.9585\n", "Epoch: 284/2000, Loss: 0.9583\n", "Epoch: 285/2000, Loss: 0.9582\n", "Epoch: 286/2000, Loss: 0.9580\n", "Epoch: 287/2000, Loss: 0.9579\n", "Epoch: 288/2000, Loss: 0.9577\n", "Epoch: 289/2000, Loss: 0.9576\n", "Epoch: 290/2000, Loss: 0.9574\n", "Epoch: 291/2000, Loss: 0.9573\n", "Epoch: 292/2000, Loss: 0.9571\n", "Epoch: 293/2000, Loss: 0.9569\n", "Epoch: 294/2000, Loss: 0.9568\n", "Epoch: 295/2000, Loss: 0.9566\n", "Epoch: 296/2000, Loss: 0.9564\n", "Epoch: 297/2000, Loss: 0.9563\n", "Epoch: 298/2000, Loss: 0.9561\n", "Epoch: 299/2000, Loss: 0.9559\n", "Epoch: 300/2000, Loss: 0.9557\n", "Epoch: 301/2000, Loss: 0.9555\n", "Epoch: 302/2000, Loss: 0.9554\n", "Epoch: 303/2000, Loss: 0.9552\n", "Epoch: 304/2000, Loss: 0.9550\n", "Epoch: 305/2000, Loss: 0.9548\n", "Epoch: 306/2000, Loss: 0.9546\n", "Epoch: 307/2000, Loss: 0.9544\n", "Epoch: 308/2000, Loss: 0.9541\n", "Epoch: 309/2000, Loss: 0.9539\n", "Epoch: 310/2000, Loss: 0.9537\n", "Epoch: 311/2000, Loss: 0.9534\n", "Epoch: 312/2000, Loss: 0.9532\n", "Epoch: 313/2000, Loss: 0.9530\n", "Epoch: 314/2000, Loss: 0.9527\n", "Epoch: 315/2000, Loss: 0.9524\n", "Epoch: 316/2000, Loss: 0.9522\n", "Epoch: 317/2000, Loss: 0.9519\n", "Epoch: 318/2000, Loss: 0.9516\n", "Epoch: 319/2000, Loss: 0.9513\n", "Epoch: 320/2000, Loss: 0.9510\n", "Epoch: 321/2000, Loss: 0.9507\n", "Epoch: 322/2000, Loss: 0.9504\n", "Epoch: 323/2000, Loss: 0.9501\n", "Epoch: 324/2000, Loss: 0.9497\n", "Epoch: 325/2000, Loss: 0.9494\n", "Epoch: 326/2000, Loss: 0.9490\n", "Epoch: 327/2000, Loss: 0.9486\n", "Epoch: 328/2000, Loss: 0.9483\n", "Epoch: 329/2000, Loss: 0.9479\n", "Epoch: 330/2000, Loss: 0.9475\n", "Epoch: 331/2000, Loss: 0.9470\n", "Epoch: 332/2000, Loss: 0.9466\n", "Epoch: 333/2000, Loss: 0.9462\n", "Epoch: 334/2000, Loss: 0.9457\n", "Epoch: 335/2000, Loss: 0.9453\n", "Epoch: 336/2000, Loss: 0.9448\n", "Epoch: 337/2000, Loss: 0.9443\n", "Epoch: 338/2000, Loss: 0.9438\n", "Epoch: 339/2000, Loss: 0.9432\n", "Epoch: 340/2000, Loss: 0.9427\n", "Epoch: 341/2000, Loss: 0.9421\n", "Epoch: 342/2000, Loss: 0.9416\n", "Epoch: 343/2000, Loss: 0.9410\n", "Epoch: 344/2000, Loss: 0.9404\n", "Epoch: 345/2000, Loss: 0.9398\n", "Epoch: 346/2000, Loss: 0.9391\n", "Epoch: 347/2000, Loss: 0.9385\n", "Epoch: 348/2000, Loss: 0.9378\n", "Epoch: 349/2000, Loss: 0.9370\n", "Epoch: 350/2000, Loss: 0.9363\n", "Epoch: 351/2000, Loss: 0.9355\n", "Epoch: 352/2000, Loss: 0.9347\n", "Epoch: 353/2000, Loss: 0.9338\n", "Epoch: 354/2000, Loss: 0.9328\n", "Epoch: 355/2000, Loss: 0.9318\n", "Epoch: 356/2000, Loss: 0.9308\n", "Epoch: 357/2000, Loss: 0.9297\n", "Epoch: 358/2000, Loss: 0.9285\n", "Epoch: 359/2000, Loss: 0.9273\n", "Epoch: 360/2000, Loss: 0.9259\n", "Epoch: 361/2000, Loss: 0.9245\n", "Epoch: 362/2000, Loss: 0.9230\n", "Epoch: 363/2000, Loss: 0.9214\n", "Epoch: 364/2000, Loss: 0.9196\n", "Epoch: 365/2000, Loss: 0.9178\n", "Epoch: 366/2000, Loss: 0.9159\n", "Epoch: 367/2000, Loss: 0.9138\n", "Epoch: 368/2000, Loss: 0.9116\n", "Epoch: 369/2000, Loss: 0.9093\n", "Epoch: 370/2000, Loss: 0.9068\n", "Epoch: 371/2000, Loss: 0.9042\n", "Epoch: 372/2000, Loss: 0.9015\n", "Epoch: 373/2000, Loss: 0.8987\n", "Epoch: 374/2000, Loss: 0.8958\n", "Epoch: 375/2000, Loss: 0.8928\n", "Epoch: 376/2000, Loss: 0.8898\n", "Epoch: 377/2000, Loss: 0.8869\n", "Epoch: 378/2000, Loss: 0.8842\n", "Epoch: 379/2000, Loss: 0.8815\n", "Epoch: 380/2000, Loss: 0.8787\n", "Epoch: 381/2000, Loss: 0.8761\n", "Epoch: 382/2000, Loss: 0.8734\n", "Epoch: 383/2000, Loss: 0.8709\n", "Epoch: 384/2000, Loss: 0.8684\n", "Epoch: 385/2000, Loss: 0.8661\n", "Epoch: 386/2000, Loss: 0.8638\n", "Epoch: 387/2000, Loss: 0.8617\n", "Epoch: 388/2000, Loss: 0.8595\n", "Epoch: 389/2000, Loss: 0.8574\n", "Epoch: 390/2000, Loss: 0.8554\n", "Epoch: 391/2000, Loss: 0.8534\n", "Epoch: 392/2000, Loss: 0.8515\n", "Epoch: 393/2000, Loss: 0.8497\n", "Epoch: 394/2000, Loss: 0.8480\n", "Epoch: 395/2000, Loss: 0.8463\n", "Epoch: 396/2000, Loss: 0.8447\n", "Epoch: 397/2000, Loss: 0.8431\n", "Epoch: 398/2000, Loss: 0.8415\n", "Epoch: 399/2000, Loss: 0.8400\n", "Epoch: 400/2000, Loss: 0.8386\n", "Epoch: 401/2000, Loss: 0.8373\n", "Epoch: 402/2000, Loss: 0.8359\n", "Epoch: 403/2000, Loss: 0.8347\n", "Epoch: 404/2000, Loss: 0.8334\n", "Epoch: 405/2000, Loss: 0.8322\n", "Epoch: 406/2000, Loss: 0.8311\n", "Epoch: 407/2000, Loss: 0.8300\n", "Epoch: 408/2000, Loss: 0.8289\n", "Epoch: 409/2000, Loss: 0.8279\n", "Epoch: 410/2000, Loss: 0.8270\n", "Epoch: 411/2000, Loss: 0.8260\n", "Epoch: 412/2000, Loss: 0.8251\n", "Epoch: 413/2000, Loss: 0.8242\n", "Epoch: 414/2000, Loss: 0.8234\n", "Epoch: 415/2000, Loss: 0.8226\n", "Epoch: 416/2000, Loss: 0.8218\n", "Epoch: 417/2000, Loss: 0.8210\n", "Epoch: 418/2000, Loss: 0.8203\n", "Epoch: 419/2000, Loss: 0.8195\n", "Epoch: 420/2000, Loss: 0.8188\n", "Epoch: 421/2000, Loss: 0.8181\n", "Epoch: 422/2000, Loss: 0.8174\n", "Epoch: 423/2000, Loss: 0.8167\n", "Epoch: 424/2000, Loss: 0.8161\n", "Epoch: 425/2000, Loss: 0.8154\n", "Epoch: 426/2000, Loss: 0.8147\n", "Epoch: 427/2000, Loss: 0.8141\n", "Epoch: 428/2000, Loss: 0.8134\n", "Epoch: 429/2000, Loss: 0.8128\n", "Epoch: 430/2000, Loss: 0.8121\n", "Epoch: 431/2000, Loss: 0.8115\n", "Epoch: 432/2000, Loss: 0.8108\n", "Epoch: 433/2000, Loss: 0.8101\n", "Epoch: 434/2000, Loss: 0.8095\n", "Epoch: 435/2000, Loss: 0.8088\n", "Epoch: 436/2000, Loss: 0.8081\n", "Epoch: 437/2000, Loss: 0.8074\n", "Epoch: 438/2000, Loss: 0.8067\n", "Epoch: 439/2000, Loss: 0.8059\n", "Epoch: 440/2000, Loss: 0.8052\n", "Epoch: 441/2000, Loss: 0.8044\n", "Epoch: 442/2000, Loss: 0.8037\n", "Epoch: 443/2000, Loss: 0.8029\n", "Epoch: 444/2000, Loss: 0.8021\n", "Epoch: 445/2000, Loss: 0.8013\n", "Epoch: 446/2000, Loss: 0.8005\n", "Epoch: 447/2000, Loss: 0.7997\n", "Epoch: 448/2000, Loss: 0.7989\n", "Epoch: 449/2000, Loss: 0.7981\n", "Epoch: 450/2000, Loss: 0.7972\n", "Epoch: 451/2000, Loss: 0.7963\n", "Epoch: 452/2000, Loss: 0.7954\n", "Epoch: 453/2000, Loss: 0.7945\n", "Epoch: 454/2000, Loss: 0.7936\n", "Epoch: 455/2000, Loss: 0.7927\n", "Epoch: 456/2000, Loss: 0.7918\n", "Epoch: 457/2000, Loss: 0.7908\n", "Epoch: 458/2000, Loss: 0.7898\n", "Epoch: 459/2000, Loss: 0.7888\n", "Epoch: 460/2000, Loss: 0.7878\n", "Epoch: 461/2000, Loss: 0.7868\n", "Epoch: 462/2000, Loss: 0.7858\n", "Epoch: 463/2000, Loss: 0.7847\n", "Epoch: 464/2000, Loss: 0.7836\n", "Epoch: 465/2000, Loss: 0.7825\n", "Epoch: 466/2000, Loss: 0.7814\n", "Epoch: 467/2000, Loss: 0.7803\n", "Epoch: 468/2000, Loss: 0.7791\n", "Epoch: 469/2000, Loss: 0.7779\n", "Epoch: 470/2000, Loss: 0.7768\n", "Epoch: 471/2000, Loss: 0.7756\n", "Epoch: 472/2000, Loss: 0.7744\n", "Epoch: 473/2000, Loss: 0.7732\n", "Epoch: 474/2000, Loss: 0.7720\n", "Epoch: 475/2000, Loss: 0.7708\n", "Epoch: 476/2000, Loss: 0.7696\n", "Epoch: 477/2000, Loss: 0.7684\n", "Epoch: 478/2000, Loss: 0.7672\n", "Epoch: 479/2000, Loss: 0.7660\n", "Epoch: 480/2000, Loss: 0.7648\n", "Epoch: 481/2000, Loss: 0.7636\n", "Epoch: 482/2000, Loss: 0.7625\n", "Epoch: 483/2000, Loss: 0.7613\n", "Epoch: 484/2000, Loss: 0.7601\n", "Epoch: 485/2000, Loss: 0.7590\n", "Epoch: 486/2000, Loss: 0.7579\n", "Epoch: 487/2000, Loss: 0.7567\n", "Epoch: 488/2000, Loss: 0.7557\n", "Epoch: 489/2000, Loss: 0.7546\n", "Epoch: 490/2000, Loss: 0.7535\n", "Epoch: 491/2000, Loss: 0.7524\n", "Epoch: 492/2000, Loss: 0.7514\n", "Epoch: 493/2000, Loss: 0.7504\n", "Epoch: 494/2000, Loss: 0.7494\n", "Epoch: 495/2000, Loss: 0.7485\n", "Epoch: 496/2000, Loss: 0.7474\n", "Epoch: 497/2000, Loss: 0.7465\n", "Epoch: 498/2000, Loss: 0.7456\n", "Epoch: 499/2000, Loss: 0.7447\n", "Epoch: 500/2000, Loss: 0.7439\n", "Epoch: 501/2000, Loss: 0.7430\n", "Epoch: 502/2000, Loss: 0.7426\n", "Epoch: 503/2000, Loss: 0.7422\n", "Epoch: 504/2000, Loss: 0.7418\n", "Epoch: 505/2000, Loss: 0.7413\n", "Epoch: 506/2000, Loss: 0.7410\n", "Epoch: 507/2000, Loss: 0.7406\n", "Epoch: 508/2000, Loss: 0.7402\n", "Epoch: 509/2000, Loss: 0.7398\n", "Epoch: 510/2000, Loss: 0.7395\n", "Epoch: 511/2000, Loss: 0.7391\n", "Epoch: 512/2000, Loss: 0.7387\n", "Epoch: 513/2000, Loss: 0.7384\n", "Epoch: 514/2000, Loss: 0.7380\n", "Epoch: 515/2000, Loss: 0.7377\n", "Epoch: 516/2000, Loss: 0.7374\n", "Epoch: 517/2000, Loss: 0.7370\n", "Epoch: 518/2000, Loss: 0.7367\n", "Epoch: 519/2000, Loss: 0.7364\n", "Epoch: 520/2000, Loss: 0.7361\n", "Epoch: 521/2000, Loss: 0.7357\n", "Epoch: 522/2000, Loss: 0.7354\n", "Epoch: 523/2000, Loss: 0.7351\n", "Epoch: 524/2000, Loss: 0.7348\n", "Epoch: 525/2000, Loss: 0.7345\n", "Epoch: 526/2000, Loss: 0.7342\n", "Epoch: 527/2000, Loss: 0.7339\n", "Epoch: 528/2000, Loss: 0.7336\n", "Epoch: 529/2000, Loss: 0.7334\n", "Epoch: 530/2000, Loss: 0.7331\n", "Epoch: 531/2000, Loss: 0.7328\n", "Epoch: 532/2000, Loss: 0.7326\n", "Epoch: 533/2000, Loss: 0.7323\n", "Epoch: 534/2000, Loss: 0.7320\n", "Epoch: 535/2000, Loss: 0.7317\n", "Epoch: 536/2000, Loss: 0.7315\n", "Epoch: 537/2000, Loss: 0.7313\n", "Epoch: 538/2000, Loss: 0.7310\n", "Epoch: 539/2000, Loss: 0.7308\n", "Epoch: 540/2000, Loss: 0.7305\n", "Epoch: 541/2000, Loss: 0.7303\n", "Epoch: 542/2000, Loss: 0.7300\n", "Epoch: 543/2000, Loss: 0.7298\n", "Epoch: 544/2000, Loss: 0.7296\n", "Epoch: 545/2000, Loss: 0.7293\n", "Epoch: 546/2000, Loss: 0.7291\n", "Epoch: 547/2000, Loss: 0.7289\n", "Epoch: 548/2000, Loss: 0.7286\n", "Epoch: 549/2000, Loss: 0.7284\n", "Epoch: 550/2000, Loss: 0.7282\n", "Epoch: 551/2000, Loss: 0.7280\n", "Epoch: 552/2000, Loss: 0.7278\n", "Epoch: 553/2000, Loss: 0.7276\n", "Epoch: 554/2000, Loss: 0.7274\n", "Epoch: 555/2000, Loss: 0.7272\n", "Epoch: 556/2000, Loss: 0.7270\n", "Epoch: 557/2000, Loss: 0.7268\n", "Epoch: 558/2000, Loss: 0.7266\n", "Epoch: 559/2000, Loss: 0.7264\n", "Epoch: 560/2000, Loss: 0.7262\n", "Epoch: 561/2000, Loss: 0.7260\n", "Epoch: 562/2000, Loss: 0.7258\n", "Epoch: 563/2000, Loss: 0.7256\n", "Epoch: 564/2000, Loss: 0.7254\n", "Epoch: 565/2000, Loss: 0.7252\n", "Epoch: 566/2000, Loss: 0.7251\n", "Epoch: 567/2000, Loss: 0.7249\n", "Epoch: 568/2000, Loss: 0.7247\n", "Epoch: 569/2000, Loss: 0.7245\n", "Epoch: 570/2000, Loss: 0.7244\n", "Epoch: 571/2000, Loss: 0.7242\n", "Epoch: 572/2000, Loss: 0.7240\n", "Epoch: 573/2000, Loss: 0.7239\n", "Epoch: 574/2000, Loss: 0.7237\n", "Epoch: 575/2000, Loss: 0.7235\n", "Epoch: 576/2000, Loss: 0.7234\n", "Epoch: 577/2000, Loss: 0.7232\n", "Epoch: 578/2000, Loss: 0.7230\n", "Epoch: 579/2000, Loss: 0.7229\n", "Epoch: 580/2000, Loss: 0.7227\n", "Epoch: 581/2000, Loss: 0.7226\n", "Epoch: 582/2000, Loss: 0.7224\n", "Epoch: 583/2000, Loss: 0.7223\n", "Epoch: 584/2000, Loss: 0.7221\n", "Epoch: 585/2000, Loss: 0.7220\n", "Epoch: 586/2000, Loss: 0.7218\n", "Epoch: 587/2000, Loss: 0.7217\n", "Epoch: 588/2000, Loss: 0.7215\n", "Epoch: 589/2000, Loss: 0.7214\n", "Epoch: 590/2000, Loss: 0.7212\n", "Epoch: 591/2000, Loss: 0.7211\n", "Epoch: 592/2000, Loss: 0.7210\n", "Epoch: 593/2000, Loss: 0.7208\n", "Epoch: 594/2000, Loss: 0.7207\n", "Epoch: 595/2000, Loss: 0.7206\n", "Epoch: 596/2000, Loss: 0.7204\n", "Epoch: 597/2000, Loss: 0.7203\n", "Epoch: 598/2000, Loss: 0.7202\n", "Epoch: 599/2000, Loss: 0.7200\n", "Epoch: 600/2000, Loss: 0.7199\n", "Epoch: 601/2000, Loss: 0.7198\n", "Epoch: 602/2000, Loss: 0.7197\n", "Epoch: 603/2000, Loss: 0.7195\n", "Epoch: 604/2000, Loss: 0.7194\n", "Epoch: 605/2000, Loss: 0.7193\n", "Epoch: 606/2000, Loss: 0.7191\n", "Epoch: 607/2000, Loss: 0.7190\n", "Epoch: 608/2000, Loss: 0.7189\n", "Epoch: 609/2000, Loss: 0.7188\n", "Epoch: 610/2000, Loss: 0.7187\n", "Epoch: 611/2000, Loss: 0.7186\n", "Epoch: 612/2000, Loss: 0.7184\n", "Epoch: 613/2000, Loss: 0.7183\n", "Epoch: 614/2000, Loss: 0.7182\n", "Epoch: 615/2000, Loss: 0.7181\n", "Epoch: 616/2000, Loss: 0.7180\n", "Epoch: 617/2000, Loss: 0.7179\n", "Epoch: 618/2000, Loss: 0.7178\n", "Epoch: 619/2000, Loss: 0.7177\n", "Epoch: 620/2000, Loss: 0.7175\n", "Epoch: 621/2000, Loss: 0.7174\n", "Epoch: 622/2000, Loss: 0.7173\n", "Epoch: 623/2000, Loss: 0.7172\n", "Epoch: 624/2000, Loss: 0.7171\n", "Epoch: 625/2000, Loss: 0.7170\n", "Epoch: 626/2000, Loss: 0.7169\n", "Epoch: 627/2000, Loss: 0.7168\n", "Epoch: 628/2000, Loss: 0.7167\n", "Epoch: 629/2000, Loss: 0.7166\n", "Epoch: 630/2000, Loss: 0.7165\n", "Epoch: 631/2000, Loss: 0.7164\n", "Epoch: 632/2000, Loss: 0.7163\n", "Epoch: 633/2000, Loss: 0.7162\n", "Epoch: 634/2000, Loss: 0.7161\n", "Epoch: 635/2000, Loss: 0.7160\n", "Epoch: 636/2000, Loss: 0.7159\n", "Epoch: 637/2000, Loss: 0.7158\n", "Epoch: 638/2000, Loss: 0.7157\n", "Epoch: 639/2000, Loss: 0.7156\n", "Epoch: 640/2000, Loss: 0.7155\n", "Epoch: 641/2000, Loss: 0.7154\n", "Epoch: 642/2000, Loss: 0.7153\n", "Epoch: 643/2000, Loss: 0.7153\n", "Epoch: 644/2000, Loss: 0.7152\n", "Epoch: 645/2000, Loss: 0.7151\n", "Epoch: 646/2000, Loss: 0.7150\n", "Epoch: 647/2000, Loss: 0.7149\n", "Epoch: 648/2000, Loss: 0.7148\n", "Epoch: 649/2000, Loss: 0.7147\n", "Epoch: 650/2000, Loss: 0.7146\n", "Epoch: 651/2000, Loss: 0.7145\n", "Epoch: 652/2000, Loss: 0.7145\n", "Epoch: 653/2000, Loss: 0.7144\n", "Epoch: 654/2000, Loss: 0.7143\n", "Epoch: 655/2000, Loss: 0.7142\n", "Epoch: 656/2000, Loss: 0.7141\n", "Epoch: 657/2000, Loss: 0.7140\n", "Epoch: 658/2000, Loss: 0.7140\n", "Epoch: 659/2000, Loss: 0.7139\n", "Epoch: 660/2000, Loss: 0.7138\n", "Epoch: 661/2000, Loss: 0.7137\n", "Epoch: 662/2000, Loss: 0.7136\n", "Epoch: 663/2000, Loss: 0.7136\n", "Epoch: 664/2000, Loss: 0.7135\n", "Epoch: 665/2000, Loss: 0.7134\n", "Epoch: 666/2000, Loss: 0.7133\n", "Epoch: 667/2000, Loss: 0.7133\n", "Epoch: 668/2000, Loss: 0.7132\n", "Epoch: 669/2000, Loss: 0.7131\n", "Epoch: 670/2000, Loss: 0.7130\n", "Epoch: 671/2000, Loss: 0.7129\n", "Epoch: 672/2000, Loss: 0.7129\n", "Epoch: 673/2000, Loss: 0.7128\n", "Epoch: 674/2000, Loss: 0.7127\n", "Epoch: 675/2000, Loss: 0.7126\n", "Epoch: 676/2000, Loss: 0.7126\n", "Epoch: 677/2000, Loss: 0.7125\n", "Epoch: 678/2000, Loss: 0.7124\n", "Epoch: 679/2000, Loss: 0.7123\n", "Epoch: 680/2000, Loss: 0.7123\n", "Epoch: 681/2000, Loss: 0.7122\n", "Epoch: 682/2000, Loss: 0.7121\n", "Epoch: 683/2000, Loss: 0.7121\n", "Epoch: 684/2000, Loss: 0.7120\n", "Epoch: 685/2000, Loss: 0.7119\n", "Epoch: 686/2000, Loss: 0.7119\n", "Epoch: 687/2000, Loss: 0.7118\n", "Epoch: 688/2000, Loss: 0.7117\n", "Epoch: 689/2000, Loss: 0.7117\n", "Epoch: 690/2000, Loss: 0.7116\n", "Epoch: 691/2000, Loss: 0.7115\n", "Epoch: 692/2000, Loss: 0.7115\n", "Epoch: 693/2000, Loss: 0.7114\n", "Epoch: 694/2000, Loss: 0.7113\n", "Epoch: 695/2000, Loss: 0.7113\n", "Epoch: 696/2000, Loss: 0.7112\n", "Epoch: 697/2000, Loss: 0.7111\n", "Epoch: 698/2000, Loss: 0.7111\n", "Epoch: 699/2000, Loss: 0.7110\n", "Epoch: 700/2000, Loss: 0.7109\n", "Epoch: 701/2000, Loss: 0.7109\n", "Epoch: 702/2000, Loss: 0.7108\n", "Epoch: 703/2000, Loss: 0.7108\n", "Epoch: 704/2000, Loss: 0.7107\n", "Epoch: 705/2000, Loss: 0.7106\n", "Epoch: 706/2000, Loss: 0.7106\n", "Epoch: 707/2000, Loss: 0.7105\n", "Epoch: 708/2000, Loss: 0.7104\n", "Epoch: 709/2000, Loss: 0.7104\n", "Epoch: 710/2000, Loss: 0.7103\n", "Epoch: 711/2000, Loss: 0.7103\n", "Epoch: 712/2000, Loss: 0.7102\n", "Epoch: 713/2000, Loss: 0.7101\n", "Epoch: 714/2000, Loss: 0.7101\n", "Epoch: 715/2000, Loss: 0.7100\n", "Epoch: 716/2000, Loss: 0.7100\n", "Epoch: 717/2000, Loss: 0.7099\n", "Epoch: 718/2000, Loss: 0.7099\n", "Epoch: 719/2000, Loss: 0.7098\n", "Epoch: 720/2000, Loss: 0.7097\n", "Epoch: 721/2000, Loss: 0.7097\n", "Epoch: 722/2000, Loss: 0.7096\n", "Epoch: 723/2000, Loss: 0.7096\n", "Epoch: 724/2000, Loss: 0.7095\n", "Epoch: 725/2000, Loss: 0.7095\n", "Epoch: 726/2000, Loss: 0.7094\n", "Epoch: 727/2000, Loss: 0.7094\n", "Epoch: 728/2000, Loss: 0.7093\n", "Epoch: 729/2000, Loss: 0.7093\n", "Epoch: 730/2000, Loss: 0.7092\n", "Epoch: 731/2000, Loss: 0.7091\n", "Epoch: 732/2000, Loss: 0.7091\n", "Epoch: 733/2000, Loss: 0.7090\n", "Epoch: 734/2000, Loss: 0.7090\n", "Epoch: 735/2000, Loss: 0.7089\n", "Epoch: 736/2000, Loss: 0.7089\n", "Epoch: 737/2000, Loss: 0.7088\n", "Epoch: 738/2000, Loss: 0.7088\n", "Epoch: 739/2000, Loss: 0.7087\n", "Epoch: 740/2000, Loss: 0.7087\n", "Epoch: 741/2000, Loss: 0.7086\n", "Epoch: 742/2000, Loss: 0.7086\n", "Epoch: 743/2000, Loss: 0.7085\n", "Epoch: 744/2000, Loss: 0.7085\n", "Epoch: 745/2000, Loss: 0.7084\n", "Epoch: 746/2000, Loss: 0.7084\n", "Epoch: 747/2000, Loss: 0.7083\n", "Epoch: 748/2000, Loss: 0.7083\n", "Epoch: 749/2000, Loss: 0.7082\n", "Epoch: 750/2000, Loss: 0.7082\n", "Epoch: 751/2000, Loss: 0.7081\n", "Epoch: 752/2000, Loss: 0.7081\n", "Epoch: 753/2000, Loss: 0.7080\n", "Epoch: 754/2000, Loss: 0.7080\n", "Epoch: 755/2000, Loss: 0.7079\n", "Epoch: 756/2000, Loss: 0.7079\n", "Epoch: 757/2000, Loss: 0.7079\n", "Epoch: 758/2000, Loss: 0.7078\n", "Epoch: 759/2000, Loss: 0.7078\n", "Epoch: 760/2000, Loss: 0.7077\n", "Epoch: 761/2000, Loss: 0.7077\n", "Epoch: 762/2000, Loss: 0.7076\n", "Epoch: 763/2000, Loss: 0.7076\n", "Epoch: 764/2000, Loss: 0.7075\n", "Epoch: 765/2000, Loss: 0.7075\n", "Epoch: 766/2000, Loss: 0.7074\n", "Epoch: 767/2000, Loss: 0.7074\n", "Epoch: 768/2000, Loss: 0.7074\n", "Epoch: 769/2000, Loss: 0.7073\n", "Epoch: 770/2000, Loss: 0.7073\n", "Epoch: 771/2000, Loss: 0.7072\n", "Epoch: 772/2000, Loss: 0.7072\n", "Epoch: 773/2000, Loss: 0.7071\n", "Epoch: 774/2000, Loss: 0.7071\n", "Epoch: 775/2000, Loss: 0.7071\n", "Epoch: 776/2000, Loss: 0.7070\n", "Epoch: 777/2000, Loss: 0.7070\n", "Epoch: 778/2000, Loss: 0.7069\n", "Epoch: 779/2000, Loss: 0.7069\n", "Epoch: 780/2000, Loss: 0.7068\n", "Epoch: 781/2000, Loss: 0.7068\n", "Epoch: 782/2000, Loss: 0.7068\n", "Epoch: 783/2000, Loss: 0.7067\n", "Epoch: 784/2000, Loss: 0.7067\n", "Epoch: 785/2000, Loss: 0.7066\n", "Epoch: 786/2000, Loss: 0.7066\n", "Epoch: 787/2000, Loss: 0.7066\n", "Epoch: 788/2000, Loss: 0.7065\n", "Epoch: 789/2000, Loss: 0.7065\n", "Epoch: 790/2000, Loss: 0.7064\n", "Epoch: 791/2000, Loss: 0.7064\n", "Epoch: 792/2000, Loss: 0.7064\n", "Epoch: 793/2000, Loss: 0.7063\n", "Epoch: 794/2000, Loss: 0.7063\n", "Epoch: 795/2000, Loss: 0.7062\n", "Epoch: 796/2000, Loss: 0.7062\n", "Epoch: 797/2000, Loss: 0.7062\n", "Epoch: 798/2000, Loss: 0.7061\n", "Epoch: 799/2000, Loss: 0.7061\n", "Epoch: 800/2000, Loss: 0.7060\n", "Epoch: 801/2000, Loss: 0.7060\n", "Epoch: 802/2000, Loss: 0.7060\n", "Epoch: 803/2000, Loss: 0.7059\n", "Epoch: 804/2000, Loss: 0.7059\n", "Epoch: 805/2000, Loss: 0.7059\n", "Epoch: 806/2000, Loss: 0.7058\n", "Epoch: 807/2000, Loss: 0.7058\n", "Epoch: 808/2000, Loss: 0.7057\n", "Epoch: 809/2000, Loss: 0.7057\n", "Epoch: 810/2000, Loss: 0.7057\n", "Epoch: 811/2000, Loss: 0.7056\n", "Epoch: 812/2000, Loss: 0.7056\n", "Epoch: 813/2000, Loss: 0.7056\n", "Epoch: 814/2000, Loss: 0.7055\n", "Epoch: 815/2000, Loss: 0.7055\n", "Epoch: 816/2000, Loss: 0.7055\n", "Epoch: 817/2000, Loss: 0.7054\n", "Epoch: 818/2000, Loss: 0.7054\n", "Epoch: 819/2000, Loss: 0.7054\n", "Epoch: 820/2000, Loss: 0.7053\n", "Epoch: 821/2000, Loss: 0.7053\n", "Epoch: 822/2000, Loss: 0.7052\n", "Epoch: 823/2000, Loss: 0.7052\n", "Epoch: 824/2000, Loss: 0.7052\n", "Epoch: 825/2000, Loss: 0.7051\n", "Epoch: 826/2000, Loss: 0.7051\n", "Epoch: 827/2000, Loss: 0.7051\n", "Epoch: 828/2000, Loss: 0.7050\n", "Epoch: 829/2000, Loss: 0.7050\n", "Epoch: 830/2000, Loss: 0.7050\n", "Epoch: 831/2000, Loss: 0.7049\n", "Epoch: 832/2000, Loss: 0.7049\n", "Epoch: 833/2000, Loss: 0.7049\n", "Epoch: 834/2000, Loss: 0.7048\n", "Epoch: 835/2000, Loss: 0.7048\n", "Epoch: 836/2000, Loss: 0.7048\n", "Epoch: 837/2000, Loss: 0.7047\n", "Epoch: 838/2000, Loss: 0.7047\n", "Epoch: 839/2000, Loss: 0.7047\n", "Epoch: 840/2000, Loss: 0.7046\n", "Epoch: 841/2000, Loss: 0.7046\n", "Epoch: 842/2000, Loss: 0.7046\n", "Epoch: 843/2000, Loss: 0.7045\n", "Epoch: 844/2000, Loss: 0.7045\n", "Epoch: 845/2000, Loss: 0.7045\n", "Epoch: 846/2000, Loss: 0.7044\n", "Epoch: 847/2000, Loss: 0.7044\n", "Epoch: 848/2000, Loss: 0.7044\n", "Epoch: 849/2000, Loss: 0.7044\n", "Epoch: 850/2000, Loss: 0.7043\n", "Epoch: 851/2000, Loss: 0.7043\n", "Epoch: 852/2000, Loss: 0.7043\n", "Epoch: 853/2000, Loss: 0.7042\n", "Epoch: 854/2000, Loss: 0.7042\n", "Epoch: 855/2000, Loss: 0.7042\n", "Epoch: 856/2000, Loss: 0.7041\n", "Epoch: 857/2000, Loss: 0.7041\n", "Epoch: 858/2000, Loss: 0.7041\n", "Epoch: 859/2000, Loss: 0.7040\n", "Epoch: 860/2000, Loss: 0.7040\n", "Epoch: 861/2000, Loss: 0.7040\n", "Epoch: 862/2000, Loss: 0.7040\n", "Epoch: 863/2000, Loss: 0.7039\n", "Epoch: 864/2000, Loss: 0.7039\n", "Epoch: 865/2000, Loss: 0.7039\n", "Epoch: 866/2000, Loss: 0.7038\n", "Epoch: 867/2000, Loss: 0.7038\n", "Epoch: 868/2000, Loss: 0.7038\n", "Epoch: 869/2000, Loss: 0.7037\n", "Epoch: 870/2000, Loss: 0.7037\n", "Epoch: 871/2000, Loss: 0.7037\n", "Epoch: 872/2000, Loss: 0.7037\n", "Epoch: 873/2000, Loss: 0.7036\n", "Epoch: 874/2000, Loss: 0.7036\n", "Epoch: 875/2000, Loss: 0.7036\n", "Epoch: 876/2000, Loss: 0.7035\n", "Epoch: 877/2000, Loss: 0.7035\n", "Epoch: 878/2000, Loss: 0.7035\n", "Epoch: 879/2000, Loss: 0.7035\n", "Epoch: 880/2000, Loss: 0.7034\n", "Epoch: 881/2000, Loss: 0.7034\n", "Epoch: 882/2000, Loss: 0.7034\n", "Epoch: 883/2000, Loss: 0.7033\n", "Epoch: 884/2000, Loss: 0.7033\n", "Epoch: 885/2000, Loss: 0.7033\n", "Epoch: 886/2000, Loss: 0.7033\n", "Epoch: 887/2000, Loss: 0.7032\n", "Epoch: 888/2000, Loss: 0.7032\n", "Epoch: 889/2000, Loss: 0.7032\n", "Epoch: 890/2000, Loss: 0.7032\n", "Epoch: 891/2000, Loss: 0.7031\n", "Epoch: 892/2000, Loss: 0.7031\n", "Epoch: 893/2000, Loss: 0.7031\n", "Epoch: 894/2000, Loss: 0.7030\n", "Epoch: 895/2000, Loss: 0.7030\n", "Epoch: 896/2000, Loss: 0.7030\n", "Epoch: 897/2000, Loss: 0.7030\n", "Epoch: 898/2000, Loss: 0.7029\n", "Epoch: 899/2000, Loss: 0.7029\n", "Epoch: 900/2000, Loss: 0.7029\n", "Epoch: 901/2000, Loss: 0.7029\n", "Epoch: 902/2000, Loss: 0.7028\n", "Epoch: 903/2000, Loss: 0.7028\n", "Epoch: 904/2000, Loss: 0.7028\n", "Epoch: 905/2000, Loss: 0.7028\n", "Epoch: 906/2000, Loss: 0.7027\n", "Epoch: 907/2000, Loss: 0.7027\n", "Epoch: 908/2000, Loss: 0.7027\n", "Epoch: 909/2000, Loss: 0.7027\n", "Epoch: 910/2000, Loss: 0.7026\n", "Epoch: 911/2000, Loss: 0.7026\n", "Epoch: 912/2000, Loss: 0.7026\n", "Epoch: 913/2000, Loss: 0.7026\n", "Epoch: 914/2000, Loss: 0.7025\n", "Epoch: 915/2000, Loss: 0.7025\n", "Epoch: 916/2000, Loss: 0.7025\n", "Epoch: 917/2000, Loss: 0.7025\n", "Epoch: 918/2000, Loss: 0.7024\n", "Epoch: 919/2000, Loss: 0.7024\n", "Epoch: 920/2000, Loss: 0.7024\n", "Epoch: 921/2000, Loss: 0.7024\n", "Epoch: 922/2000, Loss: 0.7023\n", "Epoch: 923/2000, Loss: 0.7023\n", "Epoch: 924/2000, Loss: 0.7023\n", "Epoch: 925/2000, Loss: 0.7023\n", "Epoch: 926/2000, Loss: 0.7022\n", "Epoch: 927/2000, Loss: 0.7022\n", "Epoch: 928/2000, Loss: 0.7022\n", "Epoch: 929/2000, Loss: 0.7022\n", "Epoch: 930/2000, Loss: 0.7021\n", "Epoch: 931/2000, Loss: 0.7021\n", "Epoch: 932/2000, Loss: 0.7021\n", "Epoch: 933/2000, Loss: 0.7021\n", "Epoch: 934/2000, Loss: 0.7020\n", "Epoch: 935/2000, Loss: 0.7020\n", "Epoch: 936/2000, Loss: 0.7020\n", "Epoch: 937/2000, Loss: 0.7020\n", "Epoch: 938/2000, Loss: 0.7019\n", "Epoch: 939/2000, Loss: 0.7019\n", "Epoch: 940/2000, Loss: 0.7019\n", "Epoch: 941/2000, Loss: 0.7019\n", "Epoch: 942/2000, Loss: 0.7019\n", "Epoch: 943/2000, Loss: 0.7018\n", "Epoch: 944/2000, Loss: 0.7018\n", "Epoch: 945/2000, Loss: 0.7018\n", "Epoch: 946/2000, Loss: 0.7018\n", "Epoch: 947/2000, Loss: 0.7017\n", "Epoch: 948/2000, Loss: 0.7017\n", "Epoch: 949/2000, Loss: 0.7017\n", "Epoch: 950/2000, Loss: 0.7017\n", "Epoch: 951/2000, Loss: 0.7017\n", "Epoch: 952/2000, Loss: 0.7016\n", "Epoch: 953/2000, Loss: 0.7016\n", "Epoch: 954/2000, Loss: 0.7016\n", "Epoch: 955/2000, Loss: 0.7016\n", "Epoch: 956/2000, Loss: 0.7015\n", "Epoch: 957/2000, Loss: 0.7015\n", "Epoch: 958/2000, Loss: 0.7015\n", "Epoch: 959/2000, Loss: 0.7015\n", "Epoch: 960/2000, Loss: 0.7015\n", "Epoch: 961/2000, Loss: 0.7014\n", "Epoch: 962/2000, Loss: 0.7014\n", "Epoch: 963/2000, Loss: 0.7014\n", "Epoch: 964/2000, Loss: 0.7014\n", "Epoch: 965/2000, Loss: 0.7013\n", "Epoch: 966/2000, Loss: 0.7013\n", "Epoch: 967/2000, Loss: 0.7013\n", "Epoch: 968/2000, Loss: 0.7013\n", "Epoch: 969/2000, Loss: 0.7013\n", "Epoch: 970/2000, Loss: 0.7012\n", "Epoch: 971/2000, Loss: 0.7012\n", "Epoch: 972/2000, Loss: 0.7012\n", "Epoch: 973/2000, Loss: 0.7012\n", "Epoch: 974/2000, Loss: 0.7012\n", "Epoch: 975/2000, Loss: 0.7011\n", "Epoch: 976/2000, Loss: 0.7011\n", "Epoch: 977/2000, Loss: 0.7011\n", "Epoch: 978/2000, Loss: 0.7011\n", "Epoch: 979/2000, Loss: 0.7011\n", "Epoch: 980/2000, Loss: 0.7010\n", "Epoch: 981/2000, Loss: 0.7010\n", "Epoch: 982/2000, Loss: 0.7010\n", "Epoch: 983/2000, Loss: 0.7010\n", "Epoch: 984/2000, Loss: 0.7009\n", "Epoch: 985/2000, Loss: 0.7009\n", "Epoch: 986/2000, Loss: 0.7009\n", "Epoch: 987/2000, Loss: 0.7009\n", "Epoch: 988/2000, Loss: 0.7009\n", "Epoch: 989/2000, Loss: 0.7008\n", "Epoch: 990/2000, Loss: 0.7008\n", "Epoch: 991/2000, Loss: 0.7008\n", "Epoch: 992/2000, Loss: 0.7008\n", "Epoch: 993/2000, Loss: 0.7008\n", "Epoch: 994/2000, Loss: 0.7007\n", "Epoch: 995/2000, Loss: 0.7007\n", "Epoch: 996/2000, Loss: 0.7007\n", "Epoch: 997/2000, Loss: 0.7007\n", "Epoch: 998/2000, Loss: 0.7007\n", "Epoch: 999/2000, Loss: 0.7006\n", "Epoch: 1000/2000, Loss: 0.7006\n", "Epoch: 1001/2000, Loss: 0.7006\n", "Epoch: 1002/2000, Loss: 0.7006\n", "Epoch: 1003/2000, Loss: 0.7006\n", "Epoch: 1004/2000, Loss: 0.7006\n", "Epoch: 1005/2000, Loss: 0.7006\n", "Epoch: 1006/2000, Loss: 0.7005\n", "Epoch: 1007/2000, Loss: 0.7005\n", "Epoch: 1008/2000, Loss: 0.7005\n", "Epoch: 1009/2000, Loss: 0.7005\n", "Epoch: 1010/2000, Loss: 0.7005\n", "Epoch: 1011/2000, Loss: 0.7005\n", "Epoch: 1012/2000, Loss: 0.7005\n", "Epoch: 1013/2000, Loss: 0.7005\n", "Epoch: 1014/2000, Loss: 0.7005\n", "Epoch: 1015/2000, Loss: 0.7005\n", "Epoch: 1016/2000, Loss: 0.7005\n", "Epoch: 1017/2000, Loss: 0.7004\n", "Epoch: 1018/2000, Loss: 0.7004\n", "Epoch: 1019/2000, Loss: 0.7004\n", "Epoch: 1020/2000, Loss: 0.7004\n", "Epoch: 1021/2000, Loss: 0.7004\n", "Epoch: 1022/2000, Loss: 0.7004\n", "Epoch: 1023/2000, Loss: 0.7004\n", "Epoch: 1024/2000, Loss: 0.7004\n", "Epoch: 1025/2000, Loss: 0.7004\n", "Epoch: 1026/2000, Loss: 0.7004\n", "Epoch: 1027/2000, Loss: 0.7003\n", "Epoch: 1028/2000, Loss: 0.7003\n", "Epoch: 1029/2000, Loss: 0.7003\n", "Epoch: 1030/2000, Loss: 0.7003\n", "Epoch: 1031/2000, Loss: 0.7003\n", "Epoch: 1032/2000, Loss: 0.7003\n", "Epoch: 1033/2000, Loss: 0.7003\n", "Epoch: 1034/2000, Loss: 0.7003\n", "Epoch: 1035/2000, Loss: 0.7003\n", "Epoch: 1036/2000, Loss: 0.7003\n", "Epoch: 1037/2000, Loss: 0.7003\n", "Epoch: 1038/2000, Loss: 0.7002\n", "Epoch: 1039/2000, Loss: 0.7002\n", "Epoch: 1040/2000, Loss: 0.7002\n", "Epoch: 1041/2000, Loss: 0.7002\n", "Epoch: 1042/2000, Loss: 0.7002\n", "Epoch: 1043/2000, Loss: 0.7002\n", "Epoch: 1044/2000, Loss: 0.7002\n", "Epoch: 1045/2000, Loss: 0.7002\n", "Epoch: 1046/2000, Loss: 0.7002\n", "Epoch: 1047/2000, Loss: 0.7002\n", "Epoch: 1048/2000, Loss: 0.7002\n", "Epoch: 1049/2000, Loss: 0.7001\n", "Epoch: 1050/2000, Loss: 0.7001\n", "Epoch: 1051/2000, Loss: 0.7001\n", "Epoch: 1052/2000, Loss: 0.7001\n", "Epoch: 1053/2000, Loss: 0.7001\n", "Epoch: 1054/2000, Loss: 0.7001\n", "Epoch: 1055/2000, Loss: 0.7001\n", "Epoch: 1056/2000, Loss: 0.7001\n", "Epoch: 1057/2000, Loss: 0.7001\n", "Epoch: 1058/2000, Loss: 0.7001\n", "Epoch: 1059/2000, Loss: 0.7001\n", "Epoch: 1060/2000, Loss: 0.7000\n", "Epoch: 1061/2000, Loss: 0.7000\n", "Epoch: 1062/2000, Loss: 0.7000\n", "Epoch: 1063/2000, Loss: 0.7000\n", "Epoch: 1064/2000, Loss: 0.7000\n", "Epoch: 1065/2000, Loss: 0.7000\n", "Epoch: 1066/2000, Loss: 0.7000\n", "Epoch: 1067/2000, Loss: 0.7000\n", "Epoch: 1068/2000, Loss: 0.7000\n", "Epoch: 1069/2000, Loss: 0.7000\n", "Epoch: 1070/2000, Loss: 0.7000\n", "Epoch: 1071/2000, Loss: 0.6999\n", "Epoch: 1072/2000, Loss: 0.6999\n", "Epoch: 1073/2000, Loss: 0.6999\n", "Epoch: 1074/2000, Loss: 0.6999\n", "Epoch: 1075/2000, Loss: 0.6999\n", "Epoch: 1076/2000, Loss: 0.6999\n", "Epoch: 1077/2000, Loss: 0.6999\n", "Epoch: 1078/2000, Loss: 0.6999\n", "Epoch: 1079/2000, Loss: 0.6999\n", "Epoch: 1080/2000, Loss: 0.6999\n", "Epoch: 1081/2000, Loss: 0.6999\n", "Epoch: 1082/2000, Loss: 0.6998\n", "Epoch: 1083/2000, Loss: 0.6998\n", "Epoch: 1084/2000, Loss: 0.6998\n", "Epoch: 1085/2000, Loss: 0.6998\n", "Epoch: 1086/2000, Loss: 0.6998\n", "Epoch: 1087/2000, Loss: 0.6998\n", "Epoch: 1088/2000, Loss: 0.6998\n", "Epoch: 1089/2000, Loss: 0.6998\n", "Epoch: 1090/2000, Loss: 0.6998\n", "Epoch: 1091/2000, Loss: 0.6998\n", "Epoch: 1092/2000, Loss: 0.6998\n", "Epoch: 1093/2000, Loss: 0.6998\n", "Epoch: 1094/2000, Loss: 0.6997\n", "Epoch: 1095/2000, Loss: 0.6997\n", "Epoch: 1096/2000, Loss: 0.6997\n", "Epoch: 1097/2000, Loss: 0.6997\n", "Epoch: 1098/2000, Loss: 0.6997\n", "Epoch: 1099/2000, Loss: 0.6997\n", "Epoch: 1100/2000, Loss: 0.6997\n", "Epoch: 1101/2000, Loss: 0.6997\n", "Epoch: 1102/2000, Loss: 0.6997\n", "Epoch: 1103/2000, Loss: 0.6997\n", "Epoch: 1104/2000, Loss: 0.6997\n", "Epoch: 1105/2000, Loss: 0.6996\n", "Epoch: 1106/2000, Loss: 0.6996\n", "Epoch: 1107/2000, Loss: 0.6996\n", "Epoch: 1108/2000, Loss: 0.6996\n", "Epoch: 1109/2000, Loss: 0.6996\n", "Epoch: 1110/2000, Loss: 0.6996\n", "Epoch: 1111/2000, Loss: 0.6996\n", "Epoch: 1112/2000, Loss: 0.6996\n", "Epoch: 1113/2000, Loss: 0.6996\n", "Epoch: 1114/2000, Loss: 0.6996\n", "Epoch: 1115/2000, Loss: 0.6996\n", "Epoch: 1116/2000, Loss: 0.6996\n", "Epoch: 1117/2000, Loss: 0.6995\n", "Epoch: 1118/2000, Loss: 0.6995\n", "Epoch: 1119/2000, Loss: 0.6995\n", "Epoch: 1120/2000, Loss: 0.6995\n", "Epoch: 1121/2000, Loss: 0.6995\n", "Epoch: 1122/2000, Loss: 0.6995\n", "Epoch: 1123/2000, Loss: 0.6995\n", "Epoch: 1124/2000, Loss: 0.6995\n", "Epoch: 1125/2000, Loss: 0.6995\n", "Epoch: 1126/2000, Loss: 0.6995\n", "Epoch: 1127/2000, Loss: 0.6995\n", "Epoch: 1128/2000, Loss: 0.6995\n", "Epoch: 1129/2000, Loss: 0.6994\n", "Epoch: 1130/2000, Loss: 0.6994\n", "Epoch: 1131/2000, Loss: 0.6994\n", "Epoch: 1132/2000, Loss: 0.6994\n", "Epoch: 1133/2000, Loss: 0.6994\n", "Epoch: 1134/2000, Loss: 0.6994\n", "Epoch: 1135/2000, Loss: 0.6994\n", "Epoch: 1136/2000, Loss: 0.6994\n", "Epoch: 1137/2000, Loss: 0.6994\n", "Epoch: 1138/2000, Loss: 0.6994\n", "Epoch: 1139/2000, Loss: 0.6994\n", "Epoch: 1140/2000, Loss: 0.6994\n", "Epoch: 1141/2000, Loss: 0.6993\n", "Epoch: 1142/2000, Loss: 0.6993\n", "Epoch: 1143/2000, Loss: 0.6993\n", "Epoch: 1144/2000, Loss: 0.6993\n", "Epoch: 1145/2000, Loss: 0.6993\n", "Epoch: 1146/2000, Loss: 0.6993\n", "Epoch: 1147/2000, Loss: 0.6993\n", "Epoch: 1148/2000, Loss: 0.6993\n", "Epoch: 1149/2000, Loss: 0.6993\n", "Epoch: 1150/2000, Loss: 0.6993\n", "Epoch: 1151/2000, Loss: 0.6993\n", "Epoch: 1152/2000, Loss: 0.6993\n", "Epoch: 1153/2000, Loss: 0.6993\n", "Epoch: 1154/2000, Loss: 0.6992\n", "Epoch: 1155/2000, Loss: 0.6992\n", "Epoch: 1156/2000, Loss: 0.6992\n", "Epoch: 1157/2000, Loss: 0.6992\n", "Epoch: 1158/2000, Loss: 0.6992\n", "Epoch: 1159/2000, Loss: 0.6992\n", "Epoch: 1160/2000, Loss: 0.6992\n", "Epoch: 1161/2000, Loss: 0.6992\n", "Epoch: 1162/2000, Loss: 0.6992\n", "Epoch: 1163/2000, Loss: 0.6992\n", "Epoch: 1164/2000, Loss: 0.6992\n", "Epoch: 1165/2000, Loss: 0.6992\n", "Epoch: 1166/2000, Loss: 0.6991\n", "Epoch: 1167/2000, Loss: 0.6991\n", "Epoch: 1168/2000, Loss: 0.6991\n", "Epoch: 1169/2000, Loss: 0.6991\n", "Epoch: 1170/2000, Loss: 0.6991\n", "Epoch: 1171/2000, Loss: 0.6991\n", "Epoch: 1172/2000, Loss: 0.6991\n", "Epoch: 1173/2000, Loss: 0.6991\n", "Epoch: 1174/2000, Loss: 0.6991\n", "Epoch: 1175/2000, Loss: 0.6991\n", "Epoch: 1176/2000, Loss: 0.6991\n", "Epoch: 1177/2000, Loss: 0.6991\n", "Epoch: 1178/2000, Loss: 0.6991\n", "Epoch: 1179/2000, Loss: 0.6990\n", "Epoch: 1180/2000, Loss: 0.6990\n", "Epoch: 1181/2000, Loss: 0.6990\n", "Epoch: 1182/2000, Loss: 0.6990\n", "Epoch: 1183/2000, Loss: 0.6990\n", "Epoch: 1184/2000, Loss: 0.6990\n", "Epoch: 1185/2000, Loss: 0.6990\n", "Epoch: 1186/2000, Loss: 0.6990\n", "Epoch: 1187/2000, Loss: 0.6990\n", "Epoch: 1188/2000, Loss: 0.6990\n", "Epoch: 1189/2000, Loss: 0.6990\n", "Epoch: 1190/2000, Loss: 0.6990\n", "Epoch: 1191/2000, Loss: 0.6990\n", "Epoch: 1192/2000, Loss: 0.6989\n", "Epoch: 1193/2000, Loss: 0.6989\n", "Epoch: 1194/2000, Loss: 0.6989\n", "Epoch: 1195/2000, Loss: 0.6989\n", "Epoch: 1196/2000, Loss: 0.6989\n", "Epoch: 1197/2000, Loss: 0.6989\n", "Epoch: 1198/2000, Loss: 0.6989\n", "Epoch: 1199/2000, Loss: 0.6989\n", "Epoch: 1200/2000, Loss: 0.6989\n", "Epoch: 1201/2000, Loss: 0.6989\n", "Epoch: 1202/2000, Loss: 0.6989\n", "Epoch: 1203/2000, Loss: 0.6989\n", "Epoch: 1204/2000, Loss: 0.6989\n", "Epoch: 1205/2000, Loss: 0.6988\n", "Epoch: 1206/2000, Loss: 0.6988\n", "Epoch: 1207/2000, Loss: 0.6988\n", "Epoch: 1208/2000, Loss: 0.6988\n", "Epoch: 1209/2000, Loss: 0.6988\n", "Epoch: 1210/2000, Loss: 0.6988\n", "Epoch: 1211/2000, Loss: 0.6988\n", "Epoch: 1212/2000, Loss: 0.6988\n", "Epoch: 1213/2000, Loss: 0.6988\n", "Epoch: 1214/2000, Loss: 0.6988\n", "Epoch: 1215/2000, Loss: 0.6988\n", "Epoch: 1216/2000, Loss: 0.6988\n", "Epoch: 1217/2000, Loss: 0.6988\n", "Epoch: 1218/2000, Loss: 0.6987\n", "Epoch: 1219/2000, Loss: 0.6987\n", "Epoch: 1220/2000, Loss: 0.6987\n", "Epoch: 1221/2000, Loss: 0.6987\n", "Epoch: 1222/2000, Loss: 0.6987\n", "Epoch: 1223/2000, Loss: 0.6987\n", "Epoch: 1224/2000, Loss: 0.6987\n", "Epoch: 1225/2000, Loss: 0.6987\n", "Epoch: 1226/2000, Loss: 0.6987\n", "Epoch: 1227/2000, Loss: 0.6987\n", "Epoch: 1228/2000, Loss: 0.6987\n", "Epoch: 1229/2000, Loss: 0.6987\n", "Epoch: 1230/2000, Loss: 0.6987\n", "Epoch: 1231/2000, Loss: 0.6986\n", "Epoch: 1232/2000, Loss: 0.6986\n", "Epoch: 1233/2000, Loss: 0.6986\n", "Epoch: 1234/2000, Loss: 0.6986\n", "Epoch: 1235/2000, Loss: 0.6986\n", "Epoch: 1236/2000, Loss: 0.6986\n", "Epoch: 1237/2000, Loss: 0.6986\n", "Epoch: 1238/2000, Loss: 0.6986\n", "Epoch: 1239/2000, Loss: 0.6986\n", "Epoch: 1240/2000, Loss: 0.6986\n", "Epoch: 1241/2000, Loss: 0.6986\n", "Epoch: 1242/2000, Loss: 0.6986\n", "Epoch: 1243/2000, Loss: 0.6986\n", "Epoch: 1244/2000, Loss: 0.6986\n", "Epoch: 1245/2000, Loss: 0.6985\n", "Epoch: 1246/2000, Loss: 0.6985\n", "Epoch: 1247/2000, Loss: 0.6985\n", "Epoch: 1248/2000, Loss: 0.6985\n", "Epoch: 1249/2000, Loss: 0.6985\n", "Epoch: 1250/2000, Loss: 0.6985\n", "Epoch: 1251/2000, Loss: 0.6985\n", "Epoch: 1252/2000, Loss: 0.6985\n", "Epoch: 1253/2000, Loss: 0.6985\n", "Epoch: 1254/2000, Loss: 0.6985\n", "Epoch: 1255/2000, Loss: 0.6985\n", "Epoch: 1256/2000, Loss: 0.6985\n", "Epoch: 1257/2000, Loss: 0.6985\n", "Epoch: 1258/2000, Loss: 0.6985\n", "Epoch: 1259/2000, Loss: 0.6984\n", "Epoch: 1260/2000, Loss: 0.6984\n", "Epoch: 1261/2000, Loss: 0.6984\n", "Epoch: 1262/2000, Loss: 0.6984\n", "Epoch: 1263/2000, Loss: 0.6984\n", "Epoch: 1264/2000, Loss: 0.6984\n", "Epoch: 1265/2000, Loss: 0.6984\n", "Epoch: 1266/2000, Loss: 0.6984\n", "Epoch: 1267/2000, Loss: 0.6984\n", "Epoch: 1268/2000, Loss: 0.6984\n", "Epoch: 1269/2000, Loss: 0.6984\n", "Epoch: 1270/2000, Loss: 0.6984\n", "Epoch: 1271/2000, Loss: 0.6984\n", "Epoch: 1272/2000, Loss: 0.6984\n", "Epoch: 1273/2000, Loss: 0.6983\n", "Epoch: 1274/2000, Loss: 0.6983\n", "Epoch: 1275/2000, Loss: 0.6983\n", "Epoch: 1276/2000, Loss: 0.6983\n", "Epoch: 1277/2000, Loss: 0.6983\n", "Epoch: 1278/2000, Loss: 0.6983\n", "Epoch: 1279/2000, Loss: 0.6983\n", "Epoch: 1280/2000, Loss: 0.6983\n", "Epoch: 1281/2000, Loss: 0.6983\n", "Epoch: 1282/2000, Loss: 0.6983\n", "Epoch: 1283/2000, Loss: 0.6983\n", "Epoch: 1284/2000, Loss: 0.6983\n", "Epoch: 1285/2000, Loss: 0.6983\n", "Epoch: 1286/2000, Loss: 0.6983\n", "Epoch: 1287/2000, Loss: 0.6982\n", "Epoch: 1288/2000, Loss: 0.6982\n", "Epoch: 1289/2000, Loss: 0.6982\n", "Epoch: 1290/2000, Loss: 0.6982\n", "Epoch: 1291/2000, Loss: 0.6982\n", "Epoch: 1292/2000, Loss: 0.6982\n", "Epoch: 1293/2000, Loss: 0.6982\n", "Epoch: 1294/2000, Loss: 0.6982\n", "Epoch: 1295/2000, Loss: 0.6982\n", "Epoch: 1296/2000, Loss: 0.6982\n", "Epoch: 1297/2000, Loss: 0.6982\n", "Epoch: 1298/2000, Loss: 0.6982\n", "Epoch: 1299/2000, Loss: 0.6982\n", "Epoch: 1300/2000, Loss: 0.6982\n", "Epoch: 1301/2000, Loss: 0.6981\n", "Epoch: 1302/2000, Loss: 0.6981\n", "Epoch: 1303/2000, Loss: 0.6981\n", "Epoch: 1304/2000, Loss: 0.6981\n", "Epoch: 1305/2000, Loss: 0.6981\n", "Epoch: 1306/2000, Loss: 0.6981\n", "Epoch: 1307/2000, Loss: 0.6981\n", "Epoch: 1308/2000, Loss: 0.6981\n", "Epoch: 1309/2000, Loss: 0.6981\n", "Epoch: 1310/2000, Loss: 0.6981\n", "Epoch: 1311/2000, Loss: 0.6981\n", "Epoch: 1312/2000, Loss: 0.6981\n", "Epoch: 1313/2000, Loss: 0.6981\n", "Epoch: 1314/2000, Loss: 0.6981\n", "Epoch: 1315/2000, Loss: 0.6981\n", "Epoch: 1316/2000, Loss: 0.6980\n", "Epoch: 1317/2000, Loss: 0.6980\n", "Epoch: 1318/2000, Loss: 0.6980\n", "Epoch: 1319/2000, Loss: 0.6980\n", "Epoch: 1320/2000, Loss: 0.6980\n", "Epoch: 1321/2000, Loss: 0.6980\n", "Epoch: 1322/2000, Loss: 0.6980\n", "Epoch: 1323/2000, Loss: 0.6980\n", "Epoch: 1324/2000, Loss: 0.6980\n", "Epoch: 1325/2000, Loss: 0.6980\n", "Epoch: 1326/2000, Loss: 0.6980\n", "Epoch: 1327/2000, Loss: 0.6980\n", "Epoch: 1328/2000, Loss: 0.6980\n", "Epoch: 1329/2000, Loss: 0.6980\n", "Epoch: 1330/2000, Loss: 0.6980\n", "Epoch: 1331/2000, Loss: 0.6979\n", "Epoch: 1332/2000, Loss: 0.6979\n", "Epoch: 1333/2000, Loss: 0.6979\n", "Epoch: 1334/2000, Loss: 0.6979\n", "Epoch: 1335/2000, Loss: 0.6979\n", "Epoch: 1336/2000, Loss: 0.6979\n", "Epoch: 1337/2000, Loss: 0.6979\n", "Epoch: 1338/2000, Loss: 0.6979\n", "Epoch: 1339/2000, Loss: 0.6979\n", "Epoch: 1340/2000, Loss: 0.6979\n", "Epoch: 1341/2000, Loss: 0.6979\n", "Epoch: 1342/2000, Loss: 0.6979\n", "Epoch: 1343/2000, Loss: 0.6979\n", "Epoch: 1344/2000, Loss: 0.6979\n", "Epoch: 1345/2000, Loss: 0.6979\n", "Epoch: 1346/2000, Loss: 0.6978\n", "Epoch: 1347/2000, Loss: 0.6978\n", "Epoch: 1348/2000, Loss: 0.6978\n", "Epoch: 1349/2000, Loss: 0.6978\n", "Epoch: 1350/2000, Loss: 0.6978\n", "Epoch: 1351/2000, Loss: 0.6978\n", "Epoch: 1352/2000, Loss: 0.6978\n", "Epoch: 1353/2000, Loss: 0.6978\n", "Epoch: 1354/2000, Loss: 0.6978\n", "Epoch: 1355/2000, Loss: 0.6978\n", "Epoch: 1356/2000, Loss: 0.6978\n", "Epoch: 1357/2000, Loss: 0.6978\n", "Epoch: 1358/2000, Loss: 0.6978\n", "Epoch: 1359/2000, Loss: 0.6978\n", "Epoch: 1360/2000, Loss: 0.6978\n", "Epoch: 1361/2000, Loss: 0.6978\n", "Epoch: 1362/2000, Loss: 0.6977\n", "Epoch: 1363/2000, Loss: 0.6977\n", "Epoch: 1364/2000, Loss: 0.6977\n", "Epoch: 1365/2000, Loss: 0.6977\n", "Epoch: 1366/2000, Loss: 0.6977\n", "Epoch: 1367/2000, Loss: 0.6977\n", "Epoch: 1368/2000, Loss: 0.6977\n", "Epoch: 1369/2000, Loss: 0.6977\n", "Epoch: 1370/2000, Loss: 0.6977\n", "Epoch: 1371/2000, Loss: 0.6977\n", "Epoch: 1372/2000, Loss: 0.6977\n", "Epoch: 1373/2000, Loss: 0.6977\n", "Epoch: 1374/2000, Loss: 0.6977\n", "Epoch: 1375/2000, Loss: 0.6977\n", "Epoch: 1376/2000, Loss: 0.6977\n", "Epoch: 1377/2000, Loss: 0.6976\n", "Epoch: 1378/2000, Loss: 0.6976\n", "Epoch: 1379/2000, Loss: 0.6976\n", "Epoch: 1380/2000, Loss: 0.6976\n", "Epoch: 1381/2000, Loss: 0.6976\n", "Epoch: 1382/2000, Loss: 0.6976\n", "Epoch: 1383/2000, Loss: 0.6976\n", "Epoch: 1384/2000, Loss: 0.6976\n", "Epoch: 1385/2000, Loss: 0.6976\n", "Epoch: 1386/2000, Loss: 0.6976\n", "Epoch: 1387/2000, Loss: 0.6976\n", "Epoch: 1388/2000, Loss: 0.6976\n", "Epoch: 1389/2000, Loss: 0.6976\n", "Epoch: 1390/2000, Loss: 0.6976\n", "Epoch: 1391/2000, Loss: 0.6976\n", "Epoch: 1392/2000, Loss: 0.6976\n", "Epoch: 1393/2000, Loss: 0.6975\n", "Epoch: 1394/2000, Loss: 0.6975\n", "Epoch: 1395/2000, Loss: 0.6975\n", "Epoch: 1396/2000, Loss: 0.6975\n", "Epoch: 1397/2000, Loss: 0.6975\n", "Epoch: 1398/2000, Loss: 0.6975\n", "Epoch: 1399/2000, Loss: 0.6975\n", "Epoch: 1400/2000, Loss: 0.6975\n", "Epoch: 1401/2000, Loss: 0.6975\n", "Epoch: 1402/2000, Loss: 0.6975\n", "Epoch: 1403/2000, Loss: 0.6975\n", "Epoch: 1404/2000, Loss: 0.6975\n", "Epoch: 1405/2000, Loss: 0.6975\n", "Epoch: 1406/2000, Loss: 0.6975\n", "Epoch: 1407/2000, Loss: 0.6975\n", "Epoch: 1408/2000, Loss: 0.6975\n", "Epoch: 1409/2000, Loss: 0.6974\n", "Epoch: 1410/2000, Loss: 0.6974\n", "Epoch: 1411/2000, Loss: 0.6974\n", "Epoch: 1412/2000, Loss: 0.6974\n", "Epoch: 1413/2000, Loss: 0.6974\n", "Epoch: 1414/2000, Loss: 0.6974\n", "Epoch: 1415/2000, Loss: 0.6974\n", "Epoch: 1416/2000, Loss: 0.6974\n", "Epoch: 1417/2000, Loss: 0.6974\n", "Epoch: 1418/2000, Loss: 0.6974\n", "Epoch: 1419/2000, Loss: 0.6974\n", "Epoch: 1420/2000, Loss: 0.6974\n", "Epoch: 1421/2000, Loss: 0.6974\n", "Epoch: 1422/2000, Loss: 0.6974\n", "Epoch: 1423/2000, Loss: 0.6974\n", "Epoch: 1424/2000, Loss: 0.6974\n", "Epoch: 1425/2000, Loss: 0.6974\n", "Epoch: 1426/2000, Loss: 0.6973\n", "Epoch: 1427/2000, Loss: 0.6973\n", "Epoch: 1428/2000, Loss: 0.6973\n", "Epoch: 1429/2000, Loss: 0.6973\n", "Epoch: 1430/2000, Loss: 0.6973\n", "Epoch: 1431/2000, Loss: 0.6973\n", "Epoch: 1432/2000, Loss: 0.6973\n", "Epoch: 1433/2000, Loss: 0.6973\n", "Epoch: 1434/2000, Loss: 0.6973\n", "Epoch: 1435/2000, Loss: 0.6973\n", "Epoch: 1436/2000, Loss: 0.6973\n", "Epoch: 1437/2000, Loss: 0.6973\n", "Epoch: 1438/2000, Loss: 0.6973\n", "Epoch: 1439/2000, Loss: 0.6973\n", "Epoch: 1440/2000, Loss: 0.6973\n", "Epoch: 1441/2000, Loss: 0.6973\n", "Epoch: 1442/2000, Loss: 0.6972\n", "Epoch: 1443/2000, Loss: 0.6972\n", "Epoch: 1444/2000, Loss: 0.6972\n", "Epoch: 1445/2000, Loss: 0.6972\n", "Epoch: 1446/2000, Loss: 0.6972\n", "Epoch: 1447/2000, Loss: 0.6972\n", "Epoch: 1448/2000, Loss: 0.6972\n", "Epoch: 1449/2000, Loss: 0.6972\n", "Epoch: 1450/2000, Loss: 0.6972\n", "Epoch: 1451/2000, Loss: 0.6972\n", "Epoch: 1452/2000, Loss: 0.6972\n", "Epoch: 1453/2000, Loss: 0.6972\n", "Epoch: 1454/2000, Loss: 0.6972\n", "Epoch: 1455/2000, Loss: 0.6972\n", "Epoch: 1456/2000, Loss: 0.6972\n", "Epoch: 1457/2000, Loss: 0.6972\n", "Epoch: 1458/2000, Loss: 0.6972\n", "Epoch: 1459/2000, Loss: 0.6971\n", "Epoch: 1460/2000, Loss: 0.6971\n", "Epoch: 1461/2000, Loss: 0.6971\n", "Epoch: 1462/2000, Loss: 0.6971\n", "Epoch: 1463/2000, Loss: 0.6971\n", "Epoch: 1464/2000, Loss: 0.6971\n", "Epoch: 1465/2000, Loss: 0.6971\n", "Epoch: 1466/2000, Loss: 0.6971\n", "Epoch: 1467/2000, Loss: 0.6971\n", "Epoch: 1468/2000, Loss: 0.6971\n", "Epoch: 1469/2000, Loss: 0.6971\n", "Epoch: 1470/2000, Loss: 0.6971\n", "Epoch: 1471/2000, Loss: 0.6971\n", "Epoch: 1472/2000, Loss: 0.6971\n", "Epoch: 1473/2000, Loss: 0.6971\n", "Epoch: 1474/2000, Loss: 0.6971\n", "Epoch: 1475/2000, Loss: 0.6971\n", "Epoch: 1476/2000, Loss: 0.6970\n", "Epoch: 1477/2000, Loss: 0.6970\n", "Epoch: 1478/2000, Loss: 0.6970\n", "Epoch: 1479/2000, Loss: 0.6970\n", "Epoch: 1480/2000, Loss: 0.6970\n", "Epoch: 1481/2000, Loss: 0.6970\n", "Epoch: 1482/2000, Loss: 0.6970\n", "Epoch: 1483/2000, Loss: 0.6970\n", "Epoch: 1484/2000, Loss: 0.6970\n", "Epoch: 1485/2000, Loss: 0.6970\n", "Epoch: 1486/2000, Loss: 0.6970\n", "Epoch: 1487/2000, Loss: 0.6970\n", "Epoch: 1488/2000, Loss: 0.6970\n", "Epoch: 1489/2000, Loss: 0.6970\n", "Epoch: 1490/2000, Loss: 0.6970\n", "Epoch: 1491/2000, Loss: 0.6970\n", "Epoch: 1492/2000, Loss: 0.6970\n", "Epoch: 1493/2000, Loss: 0.6969\n", "Epoch: 1494/2000, Loss: 0.6969\n", "Epoch: 1495/2000, Loss: 0.6969\n", "Epoch: 1496/2000, Loss: 0.6969\n", "Epoch: 1497/2000, Loss: 0.6969\n", "Epoch: 1498/2000, Loss: 0.6969\n", "Epoch: 1499/2000, Loss: 0.6969\n", "Epoch: 1500/2000, Loss: 0.6969\n", "Epoch: 1501/2000, Loss: 0.6969\n", "Epoch: 1502/2000, Loss: 0.6969\n", "Epoch: 1503/2000, Loss: 0.6969\n", "Epoch: 1504/2000, Loss: 0.6969\n", "Epoch: 1505/2000, Loss: 0.6969\n", "Epoch: 1506/2000, Loss: 0.6969\n", "Epoch: 1507/2000, Loss: 0.6969\n", "Epoch: 1508/2000, Loss: 0.6969\n", "Epoch: 1509/2000, Loss: 0.6969\n", "Epoch: 1510/2000, Loss: 0.6969\n", "Epoch: 1511/2000, Loss: 0.6969\n", "Epoch: 1512/2000, Loss: 0.6969\n", "Epoch: 1513/2000, Loss: 0.6969\n", "Epoch: 1514/2000, Loss: 0.6969\n", "Epoch: 1515/2000, Loss: 0.6969\n", "Epoch: 1516/2000, Loss: 0.6969\n", "Epoch: 1517/2000, Loss: 0.6969\n", "Epoch: 1518/2000, Loss: 0.6969\n", "Epoch: 1519/2000, Loss: 0.6968\n", "Epoch: 1520/2000, Loss: 0.6968\n", "Epoch: 1521/2000, Loss: 0.6968\n", "Epoch: 1522/2000, Loss: 0.6968\n", "Epoch: 1523/2000, Loss: 0.6968\n", "Epoch: 1524/2000, Loss: 0.6968\n", "Epoch: 1525/2000, Loss: 0.6968\n", "Epoch: 1526/2000, Loss: 0.6968\n", "Epoch: 1527/2000, Loss: 0.6968\n", "Epoch: 1528/2000, Loss: 0.6968\n", "Epoch: 1529/2000, Loss: 0.6968\n", "Epoch: 1530/2000, Loss: 0.6968\n", "Epoch: 1531/2000, Loss: 0.6968\n", "Epoch: 1532/2000, Loss: 0.6968\n", "Epoch: 1533/2000, Loss: 0.6968\n", "Epoch: 1534/2000, Loss: 0.6968\n", "Epoch: 1535/2000, Loss: 0.6968\n", "Epoch: 1536/2000, Loss: 0.6968\n", "Epoch: 1537/2000, Loss: 0.6968\n", "Epoch: 1538/2000, Loss: 0.6968\n", "Epoch: 1539/2000, Loss: 0.6968\n", "Epoch: 1540/2000, Loss: 0.6968\n", "Epoch: 1541/2000, Loss: 0.6968\n", "Epoch: 1542/2000, Loss: 0.6968\n", "Epoch: 1543/2000, Loss: 0.6968\n", "Epoch: 1544/2000, Loss: 0.6968\n", "Epoch: 1545/2000, Loss: 0.6968\n", "Epoch: 1546/2000, Loss: 0.6968\n", "Epoch: 1547/2000, Loss: 0.6968\n", "Epoch: 1548/2000, Loss: 0.6968\n", "Epoch: 1549/2000, Loss: 0.6968\n", "Epoch: 1550/2000, Loss: 0.6968\n", "Epoch: 1551/2000, Loss: 0.6968\n", "Epoch: 1552/2000, Loss: 0.6968\n", "Epoch: 1553/2000, Loss: 0.6968\n", "Epoch: 1554/2000, Loss: 0.6967\n", "Epoch: 1555/2000, Loss: 0.6967\n", "Epoch: 1556/2000, Loss: 0.6967\n", "Epoch: 1557/2000, Loss: 0.6967\n", "Epoch: 1558/2000, Loss: 0.6967\n", "Epoch: 1559/2000, Loss: 0.6967\n", "Epoch: 1560/2000, Loss: 0.6967\n", "Epoch: 1561/2000, Loss: 0.6967\n", "Epoch: 1562/2000, Loss: 0.6967\n", "Epoch: 1563/2000, Loss: 0.6967\n", "Epoch: 1564/2000, Loss: 0.6967\n", "Epoch: 1565/2000, Loss: 0.6967\n", "Epoch: 1566/2000, Loss: 0.6967\n", "Epoch: 1567/2000, Loss: 0.6967\n", "Epoch: 1568/2000, Loss: 0.6967\n", "Epoch: 1569/2000, Loss: 0.6967\n", "Epoch: 1570/2000, Loss: 0.6967\n", "Epoch: 1571/2000, Loss: 0.6967\n", "Epoch: 1572/2000, Loss: 0.6967\n", "Epoch: 1573/2000, Loss: 0.6967\n", "Epoch: 1574/2000, Loss: 0.6967\n", "Epoch: 1575/2000, Loss: 0.6967\n", "Epoch: 1576/2000, Loss: 0.6967\n", "Epoch: 1577/2000, Loss: 0.6967\n", "Epoch: 1578/2000, Loss: 0.6967\n", "Epoch: 1579/2000, Loss: 0.6967\n", "Epoch: 1580/2000, Loss: 0.6967\n", "Epoch: 1581/2000, Loss: 0.6967\n", "Epoch: 1582/2000, Loss: 0.6967\n", "Epoch: 1583/2000, Loss: 0.6967\n", "Epoch: 1584/2000, Loss: 0.6967\n", "Epoch: 1585/2000, Loss: 0.6967\n", "Epoch: 1586/2000, Loss: 0.6967\n", "Epoch: 1587/2000, Loss: 0.6967\n", "Epoch: 1588/2000, Loss: 0.6967\n", "Epoch: 1589/2000, Loss: 0.6967\n", "Epoch: 1590/2000, Loss: 0.6967\n", "Epoch: 1591/2000, Loss: 0.6966\n", "Epoch: 1592/2000, Loss: 0.6966\n", "Epoch: 1593/2000, Loss: 0.6966\n", "Epoch: 1594/2000, Loss: 0.6966\n", "Epoch: 1595/2000, Loss: 0.6966\n", "Epoch: 1596/2000, Loss: 0.6966\n", "Epoch: 1597/2000, Loss: 0.6966\n", "Epoch: 1598/2000, Loss: 0.6966\n", "Epoch: 1599/2000, Loss: 0.6966\n", "Epoch: 1600/2000, Loss: 0.6966\n", "Epoch: 1601/2000, Loss: 0.6966\n", "Epoch: 1602/2000, Loss: 0.6966\n", "Epoch: 1603/2000, Loss: 0.6966\n", "Epoch: 1604/2000, Loss: 0.6966\n", "Epoch: 1605/2000, Loss: 0.6966\n", "Epoch: 1606/2000, Loss: 0.6966\n", "Epoch: 1607/2000, Loss: 0.6966\n", "Epoch: 1608/2000, Loss: 0.6966\n", "Epoch: 1609/2000, Loss: 0.6966\n", "Epoch: 1610/2000, Loss: 0.6966\n", "Epoch: 1611/2000, Loss: 0.6966\n", "Epoch: 1612/2000, Loss: 0.6966\n", "Epoch: 1613/2000, Loss: 0.6966\n", "Epoch: 1614/2000, Loss: 0.6966\n", "Epoch: 1615/2000, Loss: 0.6966\n", "Epoch: 1616/2000, Loss: 0.6966\n", "Epoch: 1617/2000, Loss: 0.6966\n", "Epoch: 1618/2000, Loss: 0.6966\n", "Epoch: 1619/2000, Loss: 0.6966\n", "Epoch: 1620/2000, Loss: 0.6966\n", "Epoch: 1621/2000, Loss: 0.6966\n", "Epoch: 1622/2000, Loss: 0.6966\n", "Epoch: 1623/2000, Loss: 0.6966\n", "Epoch: 1624/2000, Loss: 0.6966\n", "Epoch: 1625/2000, Loss: 0.6966\n", "Epoch: 1626/2000, Loss: 0.6966\n", "Epoch: 1627/2000, Loss: 0.6966\n", "Epoch: 1628/2000, Loss: 0.6965\n", "Epoch: 1629/2000, Loss: 0.6965\n", "Epoch: 1630/2000, Loss: 0.6965\n", "Epoch: 1631/2000, Loss: 0.6965\n", "Epoch: 1632/2000, Loss: 0.6965\n", "Epoch: 1633/2000, Loss: 0.6965\n", "Epoch: 1634/2000, Loss: 0.6965\n", "Epoch: 1635/2000, Loss: 0.6965\n", "Epoch: 1636/2000, Loss: 0.6965\n", "Epoch: 1637/2000, Loss: 0.6965\n", "Epoch: 1638/2000, Loss: 0.6965\n", "Epoch: 1639/2000, Loss: 0.6965\n", "Epoch: 1640/2000, Loss: 0.6965\n", "Epoch: 1641/2000, Loss: 0.6965\n", "Epoch: 1642/2000, Loss: 0.6965\n", "Epoch: 1643/2000, Loss: 0.6965\n", "Epoch: 1644/2000, Loss: 0.6965\n", "Epoch: 1645/2000, Loss: 0.6965\n", "Epoch: 1646/2000, Loss: 0.6965\n", "Epoch: 1647/2000, Loss: 0.6965\n", "Epoch: 1648/2000, Loss: 0.6965\n", "Epoch: 1649/2000, Loss: 0.6965\n", "Epoch: 1650/2000, Loss: 0.6965\n", "Epoch: 1651/2000, Loss: 0.6965\n", "Epoch: 1652/2000, Loss: 0.6965\n", "Epoch: 1653/2000, Loss: 0.6965\n", "Epoch: 1654/2000, Loss: 0.6965\n", "Epoch: 1655/2000, Loss: 0.6965\n", "Epoch: 1656/2000, Loss: 0.6965\n", "Epoch: 1657/2000, Loss: 0.6965\n", "Epoch: 1658/2000, Loss: 0.6965\n", "Epoch: 1659/2000, Loss: 0.6965\n", "Epoch: 1660/2000, Loss: 0.6965\n", "Epoch: 1661/2000, Loss: 0.6965\n", "Epoch: 1662/2000, Loss: 0.6965\n", "Epoch: 1663/2000, Loss: 0.6965\n", "Epoch: 1664/2000, Loss: 0.6965\n", "Epoch: 1665/2000, Loss: 0.6965\n", "Epoch: 1666/2000, Loss: 0.6964\n", "Epoch: 1667/2000, Loss: 0.6964\n", "Epoch: 1668/2000, Loss: 0.6964\n", "Epoch: 1669/2000, Loss: 0.6964\n", "Epoch: 1670/2000, Loss: 0.6964\n", "Epoch: 1671/2000, Loss: 0.6964\n", "Epoch: 1672/2000, Loss: 0.6964\n", "Epoch: 1673/2000, Loss: 0.6964\n", "Epoch: 1674/2000, Loss: 0.6964\n", "Epoch: 1675/2000, Loss: 0.6964\n", "Epoch: 1676/2000, Loss: 0.6964\n", "Epoch: 1677/2000, Loss: 0.6964\n", "Epoch: 1678/2000, Loss: 0.6964\n", "Epoch: 1679/2000, Loss: 0.6964\n", "Epoch: 1680/2000, Loss: 0.6964\n", "Epoch: 1681/2000, Loss: 0.6964\n", "Epoch: 1682/2000, Loss: 0.6964\n", "Epoch: 1683/2000, Loss: 0.6964\n", "Epoch: 1684/2000, Loss: 0.6964\n", "Epoch: 1685/2000, Loss: 0.6964\n", "Epoch: 1686/2000, Loss: 0.6964\n", "Epoch: 1687/2000, Loss: 0.6964\n", "Epoch: 1688/2000, Loss: 0.6964\n", "Epoch: 1689/2000, Loss: 0.6964\n", "Epoch: 1690/2000, Loss: 0.6964\n", "Epoch: 1691/2000, Loss: 0.6964\n", "Epoch: 1692/2000, Loss: 0.6964\n", "Epoch: 1693/2000, Loss: 0.6964\n", "Epoch: 1694/2000, Loss: 0.6964\n", "Epoch: 1695/2000, Loss: 0.6964\n", "Epoch: 1696/2000, Loss: 0.6964\n", "Epoch: 1697/2000, Loss: 0.6964\n", "Epoch: 1698/2000, Loss: 0.6964\n", "Epoch: 1699/2000, Loss: 0.6964\n", "Epoch: 1700/2000, Loss: 0.6964\n", "Epoch: 1701/2000, Loss: 0.6964\n", "Epoch: 1702/2000, Loss: 0.6964\n", "Epoch: 1703/2000, Loss: 0.6964\n", "Epoch: 1704/2000, Loss: 0.6963\n", "Epoch: 1705/2000, Loss: 0.6963\n", "Epoch: 1706/2000, Loss: 0.6963\n", "Epoch: 1707/2000, Loss: 0.6963\n", "Epoch: 1708/2000, Loss: 0.6963\n", "Epoch: 1709/2000, Loss: 0.6963\n", "Epoch: 1710/2000, Loss: 0.6963\n", "Epoch: 1711/2000, Loss: 0.6963\n", "Epoch: 1712/2000, Loss: 0.6963\n", "Epoch: 1713/2000, Loss: 0.6963\n", "Epoch: 1714/2000, Loss: 0.6963\n", "Epoch: 1715/2000, Loss: 0.6963\n", "Epoch: 1716/2000, Loss: 0.6963\n", "Epoch: 1717/2000, Loss: 0.6963\n", "Epoch: 1718/2000, Loss: 0.6963\n", "Epoch: 1719/2000, Loss: 0.6963\n", "Epoch: 1720/2000, Loss: 0.6963\n", "Epoch: 1721/2000, Loss: 0.6963\n", "Epoch: 1722/2000, Loss: 0.6963\n", "Epoch: 1723/2000, Loss: 0.6963\n", "Epoch: 1724/2000, Loss: 0.6963\n", "Epoch: 1725/2000, Loss: 0.6963\n", "Epoch: 1726/2000, Loss: 0.6963\n", "Epoch: 1727/2000, Loss: 0.6963\n", "Epoch: 1728/2000, Loss: 0.6963\n", "Epoch: 1729/2000, Loss: 0.6963\n", "Epoch: 1730/2000, Loss: 0.6963\n", "Epoch: 1731/2000, Loss: 0.6963\n", "Epoch: 1732/2000, Loss: 0.6963\n", "Epoch: 1733/2000, Loss: 0.6963\n", "Epoch: 1734/2000, Loss: 0.6963\n", "Epoch: 1735/2000, Loss: 0.6963\n", "Epoch: 1736/2000, Loss: 0.6963\n", "Epoch: 1737/2000, Loss: 0.6963\n", "Epoch: 1738/2000, Loss: 0.6963\n", "Epoch: 1739/2000, Loss: 0.6963\n", "Epoch: 1740/2000, Loss: 0.6963\n", "Epoch: 1741/2000, Loss: 0.6963\n", "Epoch: 1742/2000, Loss: 0.6963\n", "Epoch: 1743/2000, Loss: 0.6962\n", "Epoch: 1744/2000, Loss: 0.6962\n", "Epoch: 1745/2000, Loss: 0.6962\n", "Epoch: 1746/2000, Loss: 0.6962\n", "Epoch: 1747/2000, Loss: 0.6962\n", "Epoch: 1748/2000, Loss: 0.6962\n", "Epoch: 1749/2000, Loss: 0.6962\n", "Epoch: 1750/2000, Loss: 0.6962\n", "Epoch: 1751/2000, Loss: 0.6962\n", "Epoch: 1752/2000, Loss: 0.6962\n", "Epoch: 1753/2000, Loss: 0.6962\n", "Epoch: 1754/2000, Loss: 0.6962\n", "Epoch: 1755/2000, Loss: 0.6962\n", "Epoch: 1756/2000, Loss: 0.6962\n", "Epoch: 1757/2000, Loss: 0.6962\n", "Epoch: 1758/2000, Loss: 0.6962\n", "Epoch: 1759/2000, Loss: 0.6962\n", "Epoch: 1760/2000, Loss: 0.6962\n", "Epoch: 1761/2000, Loss: 0.6962\n", "Epoch: 1762/2000, Loss: 0.6962\n", "Epoch: 1763/2000, Loss: 0.6962\n", "Epoch: 1764/2000, Loss: 0.6962\n", "Epoch: 1765/2000, Loss: 0.6962\n", "Epoch: 1766/2000, Loss: 0.6962\n", "Epoch: 1767/2000, Loss: 0.6962\n", "Epoch: 1768/2000, Loss: 0.6962\n", "Epoch: 1769/2000, Loss: 0.6962\n", "Epoch: 1770/2000, Loss: 0.6962\n", "Epoch: 1771/2000, Loss: 0.6962\n", "Epoch: 1772/2000, Loss: 0.6962\n", "Epoch: 1773/2000, Loss: 0.6962\n", "Epoch: 1774/2000, Loss: 0.6962\n", "Epoch: 1775/2000, Loss: 0.6962\n", "Epoch: 1776/2000, Loss: 0.6962\n", "Epoch: 1777/2000, Loss: 0.6962\n", "Epoch: 1778/2000, Loss: 0.6962\n", "Epoch: 1779/2000, Loss: 0.6962\n", "Epoch: 1780/2000, Loss: 0.6962\n", "Epoch: 1781/2000, Loss: 0.6962\n", "Epoch: 1782/2000, Loss: 0.6962\n", "Epoch: 1783/2000, Loss: 0.6961\n", "Epoch: 1784/2000, Loss: 0.6961\n", "Epoch: 1785/2000, Loss: 0.6961\n", "Epoch: 1786/2000, Loss: 0.6961\n", "Epoch: 1787/2000, Loss: 0.6961\n", "Epoch: 1788/2000, Loss: 0.6961\n", "Epoch: 1789/2000, Loss: 0.6961\n", "Epoch: 1790/2000, Loss: 0.6961\n", "Epoch: 1791/2000, Loss: 0.6961\n", "Epoch: 1792/2000, Loss: 0.6961\n", "Epoch: 1793/2000, Loss: 0.6961\n", "Epoch: 1794/2000, Loss: 0.6961\n", "Epoch: 1795/2000, Loss: 0.6961\n", "Epoch: 1796/2000, Loss: 0.6961\n", "Epoch: 1797/2000, Loss: 0.6961\n", "Epoch: 1798/2000, Loss: 0.6961\n", "Epoch: 1799/2000, Loss: 0.6961\n", "Epoch: 1800/2000, Loss: 0.6961\n", "Epoch: 1801/2000, Loss: 0.6961\n", "Epoch: 1802/2000, Loss: 0.6961\n", "Epoch: 1803/2000, Loss: 0.6961\n", "Epoch: 1804/2000, Loss: 0.6961\n", "Epoch: 1805/2000, Loss: 0.6961\n", "Epoch: 1806/2000, Loss: 0.6961\n", "Epoch: 1807/2000, Loss: 0.6961\n", "Epoch: 1808/2000, Loss: 0.6961\n", "Epoch: 1809/2000, Loss: 0.6961\n", "Epoch: 1810/2000, Loss: 0.6961\n", "Epoch: 1811/2000, Loss: 0.6961\n", "Epoch: 1812/2000, Loss: 0.6961\n", "Epoch: 1813/2000, Loss: 0.6961\n", "Epoch: 1814/2000, Loss: 0.6961\n", "Epoch: 1815/2000, Loss: 0.6961\n", "Epoch: 1816/2000, Loss: 0.6961\n", "Epoch: 1817/2000, Loss: 0.6961\n", "Epoch: 1818/2000, Loss: 0.6961\n", "Epoch: 1819/2000, Loss: 0.6961\n", "Epoch: 1820/2000, Loss: 0.6961\n", "Epoch: 1821/2000, Loss: 0.6961\n", "Epoch: 1822/2000, Loss: 0.6961\n", "Epoch: 1823/2000, Loss: 0.6961\n", "Epoch: 1824/2000, Loss: 0.6960\n", "Epoch: 1825/2000, Loss: 0.6960\n", "Epoch: 1826/2000, Loss: 0.6960\n", "Epoch: 1827/2000, Loss: 0.6960\n", "Epoch: 1828/2000, Loss: 0.6960\n", "Epoch: 1829/2000, Loss: 0.6960\n", "Epoch: 1830/2000, Loss: 0.6960\n", "Epoch: 1831/2000, Loss: 0.6960\n", "Epoch: 1832/2000, Loss: 0.6960\n", "Epoch: 1833/2000, Loss: 0.6960\n", "Epoch: 1834/2000, Loss: 0.6960\n", "Epoch: 1835/2000, Loss: 0.6960\n", "Epoch: 1836/2000, Loss: 0.6960\n", "Epoch: 1837/2000, Loss: 0.6960\n", "Epoch: 1838/2000, Loss: 0.6960\n", "Epoch: 1839/2000, Loss: 0.6960\n", "Epoch: 1840/2000, Loss: 0.6960\n", "Epoch: 1841/2000, Loss: 0.6960\n", "Epoch: 1842/2000, Loss: 0.6960\n", "Epoch: 1843/2000, Loss: 0.6960\n", "Epoch: 1844/2000, Loss: 0.6960\n", "Epoch: 1845/2000, Loss: 0.6960\n", "Epoch: 1846/2000, Loss: 0.6960\n", "Epoch: 1847/2000, Loss: 0.6960\n", "Epoch: 1848/2000, Loss: 0.6960\n", "Epoch: 1849/2000, Loss: 0.6960\n", "Epoch: 1850/2000, Loss: 0.6960\n", "Epoch: 1851/2000, Loss: 0.6960\n", "Epoch: 1852/2000, Loss: 0.6960\n", "Epoch: 1853/2000, Loss: 0.6960\n", "Epoch: 1854/2000, Loss: 0.6960\n", "Epoch: 1855/2000, Loss: 0.6960\n", "Epoch: 1856/2000, Loss: 0.6960\n", "Epoch: 1857/2000, Loss: 0.6960\n", "Epoch: 1858/2000, Loss: 0.6960\n", "Epoch: 1859/2000, Loss: 0.6960\n", "Epoch: 1860/2000, Loss: 0.6960\n", "Epoch: 1861/2000, Loss: 0.6960\n", "Epoch: 1862/2000, Loss: 0.6960\n", "Epoch: 1863/2000, Loss: 0.6960\n", "Epoch: 1864/2000, Loss: 0.6960\n", "Epoch: 1865/2000, Loss: 0.6959\n", "Epoch: 1866/2000, Loss: 0.6959\n", "Epoch: 1867/2000, Loss: 0.6959\n", "Epoch: 1868/2000, Loss: 0.6959\n", "Epoch: 1869/2000, Loss: 0.6959\n", "Epoch: 1870/2000, Loss: 0.6959\n", "Epoch: 1871/2000, Loss: 0.6959\n", "Epoch: 1872/2000, Loss: 0.6959\n", "Epoch: 1873/2000, Loss: 0.6959\n", "Epoch: 1874/2000, Loss: 0.6959\n", "Epoch: 1875/2000, Loss: 0.6959\n", "Epoch: 1876/2000, Loss: 0.6959\n", "Epoch: 1877/2000, Loss: 0.6959\n", "Epoch: 1878/2000, Loss: 0.6959\n", "Epoch: 1879/2000, Loss: 0.6959\n", "Epoch: 1880/2000, Loss: 0.6959\n", "Epoch: 1881/2000, Loss: 0.6959\n", "Epoch: 1882/2000, Loss: 0.6959\n", "Epoch: 1883/2000, Loss: 0.6959\n", "Epoch: 1884/2000, Loss: 0.6959\n", "Epoch: 1885/2000, Loss: 0.6959\n", "Epoch: 1886/2000, Loss: 0.6959\n", "Epoch: 1887/2000, Loss: 0.6959\n", "Epoch: 1888/2000, Loss: 0.6959\n", "Epoch: 1889/2000, Loss: 0.6959\n", "Epoch: 1890/2000, Loss: 0.6959\n", "Epoch: 1891/2000, Loss: 0.6959\n", "Epoch: 1892/2000, Loss: 0.6959\n", "Epoch: 1893/2000, Loss: 0.6959\n", "Epoch: 1894/2000, Loss: 0.6959\n", "Epoch: 1895/2000, Loss: 0.6959\n", "Epoch: 1896/2000, Loss: 0.6959\n", "Epoch: 1897/2000, Loss: 0.6959\n", "Epoch: 1898/2000, Loss: 0.6959\n", "Epoch: 1899/2000, Loss: 0.6959\n", "Epoch: 1900/2000, Loss: 0.6959\n", "Epoch: 1901/2000, Loss: 0.6959\n", "Epoch: 1902/2000, Loss: 0.6959\n", "Epoch: 1903/2000, Loss: 0.6959\n", "Epoch: 1904/2000, Loss: 0.6959\n", "Epoch: 1905/2000, Loss: 0.6959\n", "Epoch: 1906/2000, Loss: 0.6959\n", "Epoch: 1907/2000, Loss: 0.6958\n", "Epoch: 1908/2000, Loss: 0.6958\n", "Epoch: 1909/2000, Loss: 0.6958\n", "Epoch: 1910/2000, Loss: 0.6958\n", "Epoch: 1911/2000, Loss: 0.6958\n", "Epoch: 1912/2000, Loss: 0.6958\n", "Epoch: 1913/2000, Loss: 0.6958\n", "Epoch: 1914/2000, Loss: 0.6958\n", "Epoch: 1915/2000, Loss: 0.6958\n", "Epoch: 1916/2000, Loss: 0.6958\n", "Epoch: 1917/2000, Loss: 0.6958\n", "Epoch: 1918/2000, Loss: 0.6958\n", "Epoch: 1919/2000, Loss: 0.6958\n", "Epoch: 1920/2000, Loss: 0.6958\n", "Epoch: 1921/2000, Loss: 0.6958\n", "Epoch: 1922/2000, Loss: 0.6958\n", "Epoch: 1923/2000, Loss: 0.6958\n", "Epoch: 1924/2000, Loss: 0.6958\n", "Epoch: 1925/2000, Loss: 0.6958\n", "Epoch: 1926/2000, Loss: 0.6958\n", "Epoch: 1927/2000, Loss: 0.6958\n", "Epoch: 1928/2000, Loss: 0.6958\n", "Epoch: 1929/2000, Loss: 0.6958\n", "Epoch: 1930/2000, Loss: 0.6958\n", "Epoch: 1931/2000, Loss: 0.6958\n", "Epoch: 1932/2000, Loss: 0.6958\n", "Epoch: 1933/2000, Loss: 0.6958\n", "Epoch: 1934/2000, Loss: 0.6958\n", "Epoch: 1935/2000, Loss: 0.6958\n", "Epoch: 1936/2000, Loss: 0.6958\n", "Epoch: 1937/2000, Loss: 0.6958\n", "Epoch: 1938/2000, Loss: 0.6958\n", "Epoch: 1939/2000, Loss: 0.6958\n", "Epoch: 1940/2000, Loss: 0.6958\n", "Epoch: 1941/2000, Loss: 0.6958\n", "Epoch: 1942/2000, Loss: 0.6958\n", "Epoch: 1943/2000, Loss: 0.6958\n", "Epoch: 1944/2000, Loss: 0.6958\n", "Epoch: 1945/2000, Loss: 0.6958\n", "Epoch: 1946/2000, Loss: 0.6958\n", "Epoch: 1947/2000, Loss: 0.6958\n", "Epoch: 1948/2000, Loss: 0.6958\n", "Epoch: 1949/2000, Loss: 0.6958\n", "Epoch: 1950/2000, Loss: 0.6957\n", "Epoch: 1951/2000, Loss: 0.6957\n", "Epoch: 1952/2000, Loss: 0.6957\n", "Epoch: 1953/2000, Loss: 0.6957\n", "Epoch: 1954/2000, Loss: 0.6957\n", "Epoch: 1955/2000, Loss: 0.6957\n", "Epoch: 1956/2000, Loss: 0.6957\n", "Epoch: 1957/2000, Loss: 0.6957\n", "Epoch: 1958/2000, Loss: 0.6957\n", "Epoch: 1959/2000, Loss: 0.6957\n", "Epoch: 1960/2000, Loss: 0.6957\n", "Epoch: 1961/2000, Loss: 0.6957\n", "Epoch: 1962/2000, Loss: 0.6957\n", "Epoch: 1963/2000, Loss: 0.6957\n", "Epoch: 1964/2000, Loss: 0.6957\n", "Epoch: 1965/2000, Loss: 0.6957\n", "Epoch: 1966/2000, Loss: 0.6957\n", "Epoch: 1967/2000, Loss: 0.6957\n", "Epoch: 1968/2000, Loss: 0.6957\n", "Epoch: 1969/2000, Loss: 0.6957\n", "Epoch: 1970/2000, Loss: 0.6957\n", "Epoch: 1971/2000, Loss: 0.6957\n", "Epoch: 1972/2000, Loss: 0.6957\n", "Epoch: 1973/2000, Loss: 0.6957\n", "Epoch: 1974/2000, Loss: 0.6957\n", "Epoch: 1975/2000, Loss: 0.6957\n", "Epoch: 1976/2000, Loss: 0.6957\n", "Epoch: 1977/2000, Loss: 0.6957\n", "Epoch: 1978/2000, Loss: 0.6957\n", "Epoch: 1979/2000, Loss: 0.6957\n", "Epoch: 1980/2000, Loss: 0.6957\n", "Epoch: 1981/2000, Loss: 0.6957\n", "Epoch: 1982/2000, Loss: 0.6957\n", "Epoch: 1983/2000, Loss: 0.6957\n", "Epoch: 1984/2000, Loss: 0.6957\n", "Epoch: 1985/2000, Loss: 0.6957\n", "Epoch: 1986/2000, Loss: 0.6957\n", "Epoch: 1987/2000, Loss: 0.6957\n", "Epoch: 1988/2000, Loss: 0.6957\n", "Epoch: 1989/2000, Loss: 0.6957\n", "Epoch: 1990/2000, Loss: 0.6957\n", "Epoch: 1991/2000, Loss: 0.6957\n", "Epoch: 1992/2000, Loss: 0.6957\n", "Epoch: 1993/2000, Loss: 0.6956\n", "Epoch: 1994/2000, Loss: 0.6956\n", "Epoch: 1995/2000, Loss: 0.6956\n", "Epoch: 1996/2000, Loss: 0.6956\n", "Epoch: 1997/2000, Loss: 0.6956\n", "Epoch: 1998/2000, Loss: 0.6956\n", "Epoch: 1999/2000, Loss: 0.6956\n" ] } ], "source": [ "# Now let's work with a more complex Markov-Chain\n", "\n", "# Initialize a basic 3x3 Markov Chain\n", "\n", "_markov_chain = MarkovChain(\n", " [[0.3, 0.5, 0.2], \n", " [0.1, 0.8, 0.1], \n", " [0.3, 0.3, 0.4]],\n", "\n", " states=[\"Rainy\", \"Sunny\", \"Cloudy\"],\n", ")\n", "\n", "model = MarkovChainNeuralNetwork(_markov_chain, num_layers=5)\n", "model.train_model(\n", " num_samples=30_000, \n", " epochs=2_000, \n", " learning_rate=0.1, \n", " momentum=0.9, \n", " verbose=True, \n", " patience=500, \n", " factor=0.5\n", " )" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "image/png": "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Ly9XQUGBvv766+YeGi5y7Ngx3X///QoJCdHzzz+vfv36qba2Vnl5eUpLS7vi319G4+G90rrxO6nlsvz+zWjlUlNTjdGjR/usGzNmjDFw4EDDMAzj73//uzF27FgjMjLSaNeundG3b19j7dq1PvU///nPjd/85jfm4+joaONf/uVfjCeffNLo2LGjERUVZfzrv/6r2T506FAjLS3Np4+Kigqjbdu2xpYtWxp3ghbxzTffGJKMwsLCy7YfPXrUkGTs3bv3kuds27bNMAzD2LZtmyHJ2LJlixEXF2e0a9fOcDqdxuHDh83nPPvss8aAAQOMN954w4iOjjbsdrvxq1/9yvB6vYZhGMbq1auN0NBQ49y5cz7bHz16tPH444837qRbqZEjRxo/+9nPjNOnT1/S9s033xiGYRiSjHfffddcv2/fPmPo0KFGUFCQERoaakyePNn49ttvzfYfv8cM4/ufeWpqqvm4vLzcGDVqlBEUFGTcfvvtxptvvmlER0cbS5cuNQzDMJ588kkjKSnJp4+amhqja9euxquvvnpTc25JeK+0bvxOatmsvn9r9R+//tiBAwe0c+dOBQYGSpLOnTunuLg45ebm6sCBA5oyZYomTJig3bt3X7WfJUuW6N5779XevXv1T//0T5o2bZpKS0slSZMmTdLatWtVXV1t1r/55pv62c9+poceeqjpJteKdezYUR07dtTGjRt9fm434n//7/+tJUuW6JNPPlGbNm301FNP+bQfOXJEGzduVE5OjnJyclRUVKRFixZJkv7H//gfunDhgt577z2zvqKiQrm5uZf0cys6deqUNm3apLS0NHXo0OGS9sv9vdEzZ87I5XLptttu0549e7RhwwZt2bJF6enpDdr2E088oePHj2vbtm16++23tXz5clVUVJjtkyZN0qZNm3Ty5ElzXU5Ojr777jv96le/atC2WjLeK9bC76SW45bYv113/GuhUlNTjYCAAKNDhw6GzWYzJBn+/v7G22+/fcXnJCUlGc8884z5+HJHRRcfidbV1RlhYWHGihUrDMMwjLNnzxq33XabsW7dOrOmf//+xvz58xtxZtbz9ttvG7fddpsRFBRk/Lf/9t+MjIwM49NPPzUMo+FnH+rl5uYakoyzZ88ahvH92Yf27dubZxsMwzBmzZplDB482Hw8bdo0Y+TIkebjJUuWGD169DDq6uqaYtqtyq5duwxJxjvvvHPVOl10JPvKK68Yt912m8+Rb25uruHv7294PB7DMK59JFtaWmpIMnbv3m22Hzp0yJBkHskahmHExsYaf/zjH83HjzzyiPHEE0/cwExbNt4rrRe/k1quW2H/ZokzdUOHDpXb7dauXbuUmpqqJ598UsnJyZKkCxcuaOHCherXr59CQ0PVsWNH5eXlqays7Kp99u/f3/y3n5+fHA6HmaqDgoI0YcIEvf7665Kkv/71rzpw4ICeeOKJppmgRSQnJ+vEiRN67733NGLECBUWFmrQoEHKzs5uUD8XvzYRERGS5HPEc/vtt6tTp04+NRe3T548WZs3b9b//b//V5KUnZ1tfrn5VmfcwB+YOXTokAYMGOBz5Hv//ferrq7OPJNwPX20adNGcXFx5rrevXtfcuQ8adIkrVq1SpJUXl6uDz/80JJnjXivtG78TmqZboX9myVCXYcOHdSzZ08NGDBAr7/+unbt2qXXXntNkvT8889r2bJlmjNnjrZt2ya32y2Xy6Wampqr9tm2bVufx35+fqqrqzMfT5o0Sfn5+fryyy+1atUqPfTQQ4qOjm78yVlMUFCQfvGLX+if//mftXPnTj3xxBN69tln5e///X/Fi990tbW1l+3j4tem/pfLxa/NtV67gQMHasCAAXrjjTdUUlKigwcPsvP7wZ133ik/P79G/7Kwv7//JTvUK72+V5OSkqIvvvhCxcXFevPNNxUTE6MHH3ywsYbZovBeab34ndQy3Qr7N0uEuov5+/vrd7/7nebOnauzZ89qx44dGj16tB5//HENGDBAPXr00H/913/d9Hb69eune++9V//2b/+mtWvXWvJswU8hNjZWZ86cUdeuXSXJ5/sEbre7ybY7adIkZWdna9WqVUpMTFRUVFSTbas1CQ0NlcvlUlZWls6cOXNJe2Vl5SXr+vTpo08//dSnfseOHfL391evXr0kSV27dvV5bS9cuKADBw6Yj3v37q3z58+rpKTEXFdaWnrJ9jp37qxHH31Uq1atUnZ2tp588skbnWqrw3uldeJ3UstxK+zfLBfqpO+/4BsQEKCsrCzdeeedys/P186dO3Xo0CH94z/+o8rLyxtlO5MmTdKiRYtkGIb++3//743Sp1V9/fXXeuihh/Tmm29q3759Onr0qDZs2KDFixdr9OjRateunYYMGaJFixbp0KFDKioq0ty5c5tsPOPGjdOXX36pf/u3f2Pn9yNZWVm6cOGC/uEf/kH/5//8H/3tb3/ToUOH9NJLL8npdF5SP378eAUFBSk1NVUHDhzQtm3b9PTTT2vChAkKDw+XJD300EPKzc1Vbm6uDh8+rGnTpvns0Hr16qURI0boH//xH7Vr1y6VlJRo0qRJateu3SXbmzRpklavXq1Dhw4pNTW1yX4OzYX3ivXwO6nlsPr+zZKhrk2bNkpPT9fixYv1zDPPaNCgQXK5XEpISJDD4dCjjz7aKNv59a9/rTZt2ujXv/61goKCGqVPq+rYsaMGDx6spUuXKj4+Xn379tU///M/a/LkyXr55ZclSa+//rrOnz+vuLg4TZ8+Xb///e+bbDzBwcFKTk5Wx44dG+3/g1X06NFDf/3rXzV06FA988wz6tu3r37xi1+ooKBAK1asuKS+ffv2ysvL06lTp3Tffffpscce07Bhw8zXVZKeeuoppaamKiUlRT//+c/Vo0cPDR061KefVatWKTIyUj//+c81ZswYTZkyRWFhYZdsLzExUREREXK5XIqMjGz8H0Az471iPfxOajmsvn/zM27km4OQ9P1NDO+44w7t2bNHgwYNau7hoIGGDRumu+++Wy+99FJzDwUNcPr0af3sZz/TqlWrNGbMmOYezi2B90rrwO+k1u9m92+W+IsSP7Xa2lp9/fXXmjt3roYMGcKbp5X55ptvVFhYqMLCQi1fvry5h4PrVFdXp7///e9asmSJQkJC9Mtf/rK5h2R5vFdaB34ntX6NtX8j1N2AHTt2aOjQobrrrrv09ttvN/dw0EADBw7UN998oz/+8Y/mF13R8pWVlSkmJkbdunVTdna22rRh99XUeK+0DvxOav0aa//Gx68AAAAWYMkLJQAAAG41hDoAAAALINQBAABYAKEOAADAAgh1AAAAFkCoAwAAsABCHQAAgAUQ6gAAACyAUAcAAGAB/w+W6JCQugV+NwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's Simulate and Compare Random Walks generate \n", "# by the Neural Networks and the Original \n", "# `MarkovChain.simulate` method\n", "\n", "nn_walk = model.simulate_random_walk(\"Rainy\", 5000)\n", "mc_walk = _markov_chain.simulate(\"Rainy\", 5000)\n", "\n", "\n", "fig, ax = plt.subplots(nrows=1, ncols=2)\n", "ax1 = ax[0]\n", "ax2 = ax[1]\n", "\n", "# Right - Neural Network\n", "ax1.hist(nn_walk)\n", "\n", "# Left - `MarkovChain.simulate`\n", "ax2.hist(mc_walk)\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Stock Predictions using Markov Switching Models" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "import yfinance as yf" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[*********************100%%**********************] 1 of 1 completed\n" ] } ], "source": [ "# Apple Inc. weekly stock data for 2 years\n", "ticker_symbol = 'AAPL' \n", "start_date = '2022-01-01'\n", "end_date = '2024-01-01'\n", "stock_data = yf.download(ticker_symbol, start=start_date, end=end_date, interval='1wk')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# For simplicity we'll only consider the High values\n", "y = stock_data[\"High\"]\n", "X = np.arange(stock_data.shape[0])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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t9xyC8rLy3td09XVhTVr1iAjIwMpKSlYtWoV6urqorTi2PXUU09BEAQ8+uijyvd4b4fnwoULuPPOO5GRkYHExETMnDkT+/btUx4XRRFPPvkk8vLykJiYiGXLluHUqVNRXHFs8Hg8+OEPf4hx48YhMTEREyZMwI9+9KNeZ7Lw3gZu27ZtWLlyJfLz8yEIAt55551ejwdyL5ubm7F69WqYTCZYLBbcd999aGtrG8HfYggiiaIoim+88YZoMBjEl156STx69Kh4//33ixaLRayrq4v20mLOddddJ7788svikSNHxIMHD4rXX3+9WFRUJLa1tSnXPPjgg2JhYaG4adMmcd++feLChQvFyy+/PIqrjj179uwRx44dK86aNUv8zne+o3yf9zZ0zc3NYnFxsfiNb3xD3L17t3j27Fnx448/Fk+fPq1c89RTT4lms1l85513xC+//FK86aabxHHjxomdnZ1RXLn6/eQnPxEzMjLEDz74QKyoqBDffPNNMSUlRfzNb36jXMN7G7i///3v4g9+8APxrbfeEgGIb7/9dq/HA7mXy5cvF2fPni3u2rVL3L59uzhx4kTx61//+gj/JgNjgOJz2WWXiWvWrFH+7PF4xPz8fHH9+vVRXFV8qK+vFwGIW7duFUVRFFtaWkS9Xi+++eabyjXHjx8XAYg7d+6M1jJjSmtrqzhp0iRx48aN4tVXX60EKLy3w/O9731PXLRo0YCPe71eMTc3V/zFL36hfK+lpUU0Go3in//855FYYsy64YYbxHvvvbfX92677TZx9erVoijy3g5H3wAlkHt57NgxEYC4d+9e5ZoPP/xQFARBvHDhwoitfTDc4gHgdDpRVlaGZcuWKd/TaDRYtmwZdu7cGcWVxQebzQYASE9PBwCUlZXB5XL1ut8lJSUoKiri/Q7QmjVrcMMNN/S6hwDv7XC99957mD9/Pm6//XZkZ2djzpw5+P3vf688XlFRAavV2uv+ms1mLFiwgPd3CJdffjk2bdqEkydPAgC+/PJL7NixAytWrADAextOgdzLnTt3wmKxYP78+co1y5Ytg0ajwe7du0d8zf7E5GGB4dbY2AiPx4OcnJxe38/JycGJEyeitKr44PV68eijj+KKK67AjBkzAABWqxUGgwEWi6XXtTk5ObBarVFYZWx54403sH//fuzdu7ffY7y3w3P27Fk899xzWLduHf71X/8Ve/fuxSOPPAKDwYB77rlHuYf+/q7g/R3c97//fdjtdpSUlECr1cLj8eAnP/kJVq9eDQC8t2EUyL20Wq3Izs7u9bhOp0N6erpq7jcDFIqoNWvW4MiRI9ixY0e0lxIXqqqq8J3vfAcbN25EQkJCtJcTd7xeL+bPn4+f/vSnAIA5c+bgyJEjeP7553HPPfdEeXWx7X//93/x2muv4fXXX8f06dNx8OBBPProo8jPz+e9Jb+4xQMgMzMTWq22X6dDXV0dcnNzo7Sq2Ld27Vp88MEH2LJlCwoKCpTv5+bmwul0oqWlpdf1vN9DKysrQ319PebOnQudTgedToetW7fimWeegU6nQ05ODu/tMOTl5WHatGm9vjd16lRUVlYCgHIP+XdF8B5//HF8//vfxx133IGZM2firrvuwmOPPYb169cD4L0Np0DuZW5uLurr63s97na70dzcrJr7zQAFgMFgwLx587Bp0yble16vF5s2bUJpaWkUVxabRFHE2rVr8fbbb2Pz5s0YN25cr8fnzZsHvV7f636Xl5ejsrKS93sIS5cuxeHDh3Hw4EHla/78+Vi9erXyz7y3obviiiv6tcSfPHkSxcXFAIBx48YhNze31/212+3YvXs37+8QOjo6oNH0fsvRarXwer0AeG/DKZB7WVpaipaWFpSVlSnXbN68GV6vFwsWLBjxNfsV7SpdtXjjjTdEo9EovvLKK+KxY8fEBx54QLRYLKLVao320mLOt7/9bdFsNoufffaZWFtbq3x1dHQo1zz44INiUVGRuHnzZnHfvn1iaWmpWFpaGsVVx66eXTyiyHs7HHv27BF1Op34k5/8RDx16pT42muviUlJSeKf/vQn5ZqnnnpKtFgs4rvvviseOnRIvPnmm9kKG4B77rlHHDNmjNJm/NZbb4mZmZnid7/7XeUa3tvAtba2igcOHBAPHDggAhB/9atfiQcOHBDPnz8vimJg93L58uXinDlzxN27d4s7duwQJ02axDZjtXr22WfFoqIi0WAwiJdddpm4a9euaC8pJgHw+/Xyyy8r13R2dooPPfSQmJaWJiYlJYm33nqrWFtbG71Fx7C+AQrv7fC8//774owZM0Sj0SiWlJSIL7zwQq/HvV6v+MMf/lDMyckRjUajuHTpUrG8vDxKq40ddrtd/M53viMWFRWJCQkJ4vjx48Uf/OAHosPhUK7hvQ3cli1b/P49e88994iiGNi9bGpqEr/+9a+LKSkposlkEr/5zW+Kra2tUfht/BNEsccYPyIiIiIVYA0KERERqQ4DFCIiIlIdBihERESkOgxQiIiISHUYoBAREZHqMEAhIiIi1WGAQkRERKrDAIWIiIhUhwEKERERqQ4DFCIiIlIdBihERESkOgxQiIiISHX+P9eczzsGbcjLAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the data\n", "plt.plot(X, y)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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cz/44AN4eXnBzc0Ns2bNglarbZvQRNTqWEQRETXRd999h3//+9947733kJiYCD8/P6xYseK6drt378aFCxewe/durFmzBqtXr8bq1avbPjARtQpeziMis7d161Y4ODgYbdPpdDdsv2zZMsyYMQPTp08HACxYsAA7duxAWVmZUTsXFxd8+umnsLCwQFBQEMaNG4e4uDg88cQTLf8miKjNsSeKiMzeqFGjkJKSYvT48ssvb9g+NTUVYWFhRtv++jUA9OnTBxYWFoavvby8kJ+f33LBiUhS7IkiIrNnb2+P7t27G227fPnybR/XysrK6GuZTAa9Xn/bxyUi08CeKCKiJurZsyeOHDlitO2vXxNRx8eeKCKiJpozZw6eeOIJDBo0CEOHDsX69etx/PhxdO3aVepoRNSGWEQRETXRI488gosXL+Kll15CVVUVHnzwQTz22GM4fPiw1NGIqA3JhBBC6hBERO3d3//+d6hUKvz3v/+VOgoRtRH2RBERNVFFRQVWrlyJqKgoWFhY4Pvvv8fOnTsRGxsrdTQiakPsiSIiaqLKykrce++9SE5ORlVVFXr27InXX38dEydOlDoaEbUhFlFEREREzcApDoiIiIiagUUUERERUTOwiCIiIiJqBhZRRERERM3AIoqIiIioGVhEERERETUDiygiIiKiZmARRURERNQM/w+fvv/kURcUXQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Now we'll train the MarkovSwitchingModel using the Chainopy API.\n", "# We'll have to divide to label the data into Regimes.\n", "# Lets look at the distribution of the data\n", "sns.kdeplot(y)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([67., 0., 0., 0., 0., 19., 0., 0., 0., 18.]),\n", " array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ]),\n", " )" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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I0eOWOHh4dbnn39ujR492kpPT7dOnTplhYaGWs8//7zvvtXV1VZ8fLz16KOPWpZlWdnZ2VbPnj39zj9r1ixLknXixAnLsiwrIyPDmjRpkt8xb7/9thUSEmJ9/fXXlmVZVqdOnawxY8acc/aFCxdaycnJvtvz5s2zevfuXefcDofDqqqq8lu/+OKLraeeeuqcjwEEm+9+pn/oT3/6k9W9e3ertrbWt7Z06VIrMjLSOnPmjGVZltW3b19r4cKFlmVZ1pgxY6yHHnrICgsLs06ePGl9+umnliTr4MGDRr4OINikp6dbrVq1stq0aeO3hYeH+34P5ubmWk6n03efAQMGWJmZmX7nGTRokN/vsvT0dKtTp07WN99841u74YYbrHHjxjXa7M125aNDhw4aOXKk8vLylJubq5EjR+qCCy7w7T98+LBqamo0aNAg31poaKj69++vAwcOSJIOHDhQ5yPbf/jH6/bt26e8vDxFRkb6ttTUVNXW1qqkpMR3XL9+/erM+OKLL2rQoEGKjY1VZGSk5syZo9LS0p/8uvbt26dTp04pOjra7zFLSkp0+PDhn/8NAoLcgQMH5HK5ZLPZfGuDBg3SqVOn9Omnn0qSrrrqKm3dulWWZentt9/W2LFj1aNHD23btk0FBQWKj49X165dm+tLAM57w4YN0969e/22v/71rz96fHFxsfr37++39sPbknTppZeqVatWvttxcXE6fvx4o83dJH9Y7ue69dZbfU9/LF26tEke49SpU/rjH/+o6dOn19n3/Re3tmnTxm9fYWGhxo8frwceeECpqalyOp1as2aNHn/88XM+XlxcnN+l4+8E+nYnoKUbOnSonn32We3bt0+hoaFKSkrS0KFDtXXrVp04cUJXXXVVc48InNfatGmjSy65xG/tu7hviNDQUL/bNptNtbW1DT7vd5o1Pq699lpVV1fLZrMpNTXVb9/FF1+ssLAwvfPOO+rUqZMkqaamRrt27dKMGTMkST169NCrr77qd78dO3b43e7bt6/2799f53+cc9m+fbs6deqke++917f2ySef+B0TFhbme7Hc9x+vvLxcrVu3VufOnQN6TKAl6dGjh1566SVZluW7+vHOO++obdu2uvDCCyX93+s+Fi1a5AuNoUOHasGCBTpx4oTuvPPOZpsfaIm6d++uXbt2acKECb61H76Rw4Rm/ZCxVq1a6cCBA9q/f7/f5R3p25qbMmWK7r77bm3atEn79+/X7bffrq+++koZGRmSpMmTJ+vQoUO6++67VVxcrNWrV9d5QcysWbO0fft2TZ06VXv37tWhQ4f0yiuv1HnB6Q917dpVpaWlWrNmjQ4fPqwlS5Zo3bp1fsd07txZJSUl2rt3r7744gt5vV6lpKTI5XJpzJgx+uc//6kjR45o+/btuvfee7V79+6Gf9OA85Db7a5z6XfSpEkqKyvTtGnT9NFHH+mVV17RvHnzlJWVpZCQb//V0759e/Xq1UvPP/+874WlV155pfbs2aODBw9y5QNoZNOmTdPKlSu1atUqHTp0SPPnz9f777/v9/SoCc3+CacOh0MOh+Os+xYsWKC0tDT94Q9/UN++ffXxxx9r8+bNat++vaRvnzZ56aWXtH79evXu3VsrVqzQww8/7HeOXr16qaCgQAcPHtSQIUPUp08f3XfffYqPj//Jua677jrNnDlTU6dO1eWXX67t27f73gXznbS0NF177bUaNmyYOnTooBdeeEE2m02vv/66rrzySt1yyy3q1q2bbrzxRn3yySeKiYlpwHcKOH9t3bpVffr08dv+/Oc/6/XXX9e7776r3r17a/LkycrIyNCcOXP87nvVVVfpzJkzvviIiopSz549FRsbq+7duzfDVwO0XOPHj1d2drbuuusu9e3bVyUlJZo4caLCw8ONzmGzLMsy+ogAAOC8cc011yg2NlZ/+9vfjD1ms77mAwAAmPPVV19pxYoVSk1NVatWrfTCCy/orbfe0ptvvml0Dq58AADwC/H1119r1KhReu+991RVVaXu3btrzpw5Gjt2rNE5iA8AAGBUs7/gFAAA/LIQHwAAwCjiAwAAGEV8AAAAo4gPAABgFPEBAACMIj4AAIBRxAcAADDq/wGXi4hPnLCVgAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Lets label the data according to the following scheme:\n", "# For simplicity we'll only consider three regimes\n", "# y in Mean +- st. dev = Moderate\n", "# y > Mean + st. dev = High\n", "# y < Mean +- st. dev = Low\n", "\n", "y = np.squeeze(y.to_numpy())\n", "y_mean = y.mean()\n", "y_stdev = y.std()\n", "regime_sequence = []\n", "for vals in y:\n", " if y_mean - y_stdev <= vals <= y_mean + y_stdev:\n", " regime_sequence.append(\"Moderate\")\n", " elif vals > y_mean + y_stdev: \n", " regime_sequence.append(\"High\")\n", " elif vals < y_mean + y_stdev: \n", " regime_sequence.append(\"Low\")\n", "\n", "plt.hist(regime_sequence)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "# Now we'll train the MarkovSwitchingModel\n", "model = MarkovSwitchingModel()\n", "model.fit(y, regime_sequence=regime_sequence, lags=2)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "# Now let's use the MarkovSwitchingModel to predict highest price for the next 50 weeks\n", "vals, regimes = model.predict(regime_sequence[-1], steps=50)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.plot(X, y, label = 'Given Data', color = 'blue')\n", "ax.plot(range(X.shape[0], X.shape[0] + 50), vals, label = 'Prediction', color='orange')\n", "ax.set_xlabel(\"Time\")\n", "ax.set_ylabel(\"Apple Weekly High Price\")\n", "ax.set_title(\"Data and Prediction\")\n", "ax.legend()" ] } ], "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.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }