{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# quick start " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Test what is the decoding change for single size training " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resources\n", "\n", "* [*The* Reinforcement learning book from Sutton & Barto](http://incompleteideas.net/sutton/book/the-book-2nd.html)\n", "* [The REINFORCE paper from Ronald J. Williams (1992)](http://www-anw.cs.umass.edu/~barto/courses/cs687/williams92simple.pdf)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# FULL MODEL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Packages" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "from itertools import count\n", "import random\n", "\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "import torch.autograd as autograd\n", "from torch.autograd import Variable\n", "from torch.nn import init\n", "from torch.nn import DataParallel\n", "\n", "import matplotlib.mlab as mlab\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation\n", "from IPython.display import HTML\n", "\n", "import POMDPgame_bars\n", "from POMDPgame_bars import*\n", "\n", "import POMDPgame_basic\n", "from POMDPgame_basic import*\n", "\n", "import POMDPgame_holes\n", "from POMDPgame_holes import*\n", "\n", "import RNN\n", "from RNN import *\n", "\n", "import navigation2\n", "from navigation2 import*\n", "\n", "import Nets\n", "from Nets import*\n", "\n", "import Tests\n", "from Tests import*\n", "\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Qnetwork\n", "\n", "To select actions we take maximum of Q value, corresponding to certain move." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the liquid state approach to work, you need a lot of neurons as surplus or enough hidden to hidden connectivity to make it have an effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## POMDP RNN Game\n", "\n", "In this game , we use a new reward function determined by game, if the agent achieves the goal before 50, reward is 1. If time pass 50 reward is 0.5, once time pass 100 agent gets a reward of -0.5 . Practically, this is found to be easier to learn than the rewards as a continous function of time. Tf the agent learns to search in a efficient way, the largest possible way for search is to firstly arrive at corner then goes to the goal, which, takes about 50 steps, it is reasonble to make 50 and 100 as milestone thing. Also in principe as the game doesn't have a timer , it is not if it can use a reward as funtion of time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3 condition for ending , when pass time limit, game over" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For weight update, it seems to be better do it after episode, as it makes non-sense evaluate strategy during episode, but a the end. Also, it is much quicker. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A programming of MDP here, hidden state is as state of enviroment" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAECCAYAAAAYUakXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAACG1JREFUeJzt3U+opXd9x/HPtyZOMLiIxIRQRSSG\ngpsO5RILgkREiW6ii9JmlYUwFpqNu+x06UayKpaRhmRjbDfBLMQaZpONiiMEO4WWpJK2Y0Kmkk0p\nNMb47SJnvo5xxjve8+e5957XCy7nnGeemfP9zYU3z3Puc86t7g5AkvzR0gMAx4cgAEMQgCEIwBAE\nYAgCMBYNQlU9WFX/VlUvVdVjS86ybVX1clX9c1W9UFUXl55nk6rqiaq6UlWXrtn2vqp6rqpeXN3e\nseSMm3KDtX61qn6++t6+UFWfW3LGdSwWhKp6V5K/TfLZJB9N8nBVfXSpeXbkk919trsPlh5kw55M\n8uA7tj2W5EJ335fkwurxafBkfnetSfL46nt7tru/u+OZNmbJI4T7k7zU3T/r7l8m+XaShxachyPq\n7ueTvP6OzQ8leWp1/6kkn9/pUFtyg7WeGksG4Y+T/Nc1jy+vtp1WneT7VfWTqjq39DA7cHd3v5ok\nq9u7Fp5n2x6tqp+uTilO7OnRkkGo62w7zddRf7y7/yxvnyL9TVV9YumB2JhvJLk3ydkkryb5+rLj\nHN2SQbic5IPXPP5AklcWmmXruvuV1e2VJM/k7VOm0+y1qronSVa3VxaeZ2u6+7Xufqu7f53kmznB\n39slg/DjJPdV1Yer6t1J/irJswvOszVVdXtVvffq/SSfSXLp9/+tE+/ZJI+s7j+S5DsLzrJVV8O3\n8oWc4O/tLUs9cXf/qqoeTfJPSd6V5Inu/pel5tmyu5M8U1XJ2//n3+ru7y070uZU1dNJHkhyZ1Vd\nTvKVJF9L8o9V9cUk/5nkL5abcHNusNYHqups3j7lfTnJlxYbcE3l7c/AVa5UBIYgAEMQgCEIwBAE\nYByLIOzJpbxJ9met+7LO5HSt9VgEIcmp+Q+9Cfuy1n1ZZ3KK1npcggAcAzu9MOnddaZvy+2/s/3N\nvJFbc2ZncyxpX9a6L+tMTsZa/y//m1/2G9d7Q+Fv2emly7fl9nysPrXLpwSS/Kgv3NR+a50y7NNH\noME+OHIQ9vQj0OBUW+cIwUegwSmzThD27SPQ4NRb50XFm/oItNVFG+eS5La8Z42nA7ZtnSOEm/oI\ntO4+390H3X1w3H80A/tunSDszUegwb448inDnn0EGuyFtS5MWv2GmhP7W2qA3+a9DMAQBGAIAjAE\nARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGDv91OVte+nxP196BDiyj3z5h0uP4AgB+A1BAIYgAEMQ\ngCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAE\nARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAuGWdv1xVLyf5nyRvJflVdx9s\nYihgGWsFYeWT3f2LDfw7wMKcMgBj3SB0ku9X1U+q6twmBgKWs+4pw8e7+5WquivJc1X1r939/LU7\nrEJxLkluy3vWfDpgm9Y6QujuV1a3V5I8k+T+6+xzvrsPuvvg1pxZ5+mALTtyEKrq9qp679X7ST6T\n5NKmBgN2b51ThruTPFNVV/+db3X39zYyFbCIIwehu3+W5E83OAuwMD92BIYgAEMQgCEIwBAEYAgC\nMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiCAAxBAIYg\nAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAccvSA5xW//6Xf/cH7X/vP/z1liaBm+cIARiCAAxB\nAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhvcybIn3JnASOUIAhiAA49AgVNUTVXWlqi5ds+19VfVc\nVb24ur1ju2MCu3AzRwhPJnnwHdseS3Khu+9LcmH1GDjhDg1Cdz+f5PV3bH4oyVOr+08l+fyG5wIW\ncNTXEO7u7leTZHV71412rKpzVXWxqi6+mTeO+HTALmz9RcXuPt/dB919cGvObPvpgDUcNQivVdU9\nSbK6vbK5kYClHDUIzyZ5ZHX/kSTf2cw4wJJu5seOTyf5QZI/qarLVfXFJF9L8umqejHJp1ePgRPu\n0EuXu/vhG/zRpzY8C7AwVyoCQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiC\nAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAh\nCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAA49AgVNUTVXWlqi5ds+2r\nVfXzqnph9fW57Y4J7MLNHCE8meTB62x/vLvPrr6+u9mxgCUcGoTufj7J6zuYBVjYOq8hPFpVP12d\nUtyxsYmAxRw1CN9Icm+Ss0leTfL1G+1YVeeq6mJVXXwzbxzx6YBdOFIQuvu17n6ru3+d5JtJ7v89\n+57v7oPuPrg1Z446J7ADRwpCVd1zzcMvJLl0o32Bk+OWw3aoqqeTPJDkzqq6nOQrSR6oqrNJOsnL\nSb60xRmBHTk0CN398HU2//0WZgEW5kpFYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggCM\nQ9/cdJJ85Ms/XHoEONEcIQBDEIAhCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIA\nDEEAhiAAQxCAIQjAEARgCAIwBAEYggCM6u7dPVnVfyf5j+v80Z1JfrGzQZa1L2vdl3UmJ2OtH+ru\n9x+2006DcMMhqi5298HSc+zCvqx1X9aZnK61OmUAhiAA47gE4fzSA+zQvqx1X9aZnKK1HovXEIDj\n4bgcIQDHgCAAQxCAIQjAEARg/D+FDrP+euJ/tgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nFOYwj1ibAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAECCAYAAAAYUakXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAACINJREFUeJzt3U+opXd9x/HPtyZOMLiIpAmhLaXE\nILhxKJcoCCUiSuomuihtVlkIY8Fs3GWnSzeSVbGMGJKNabsJZiHWMJtsaukIwU6hJalEHRMylWxE\naIzx20XOfDvGGefmnj/Pvfe8XnA55zxzZs73NxfePM+5z3ludXcAkuQPlh4AOD4EARiCAAxBAIYg\nAEMQgLFoEKrqwar6r6p6qaoeW3KWbauql6vq36vqhaq6uPQ8m1RVT1TVlaq6dM22D1TVc1X14ur2\njiVn3JQbrPUrVfWz1ff2har6zJIzrmOxIFTVe5L8XZK/TPLhJA9X1YeXmmdHPtHdZ7v7YOlBNuzJ\nJA++Y9tjSS50931JLqwenwZP5nfXmiSPr763Z7v7OzueaWOW3EO4P8lL3f2j7v5Vkn9I8tCC83BE\n3f18ktffsfmhJE+t7j+V5LM7HWpLbrDWU2PJIPxRkp9e8/jyattp1Um+V1U/qKpzSw+zA3d396tJ\nsrq9a+F5tu3Rqvrh6pDixB4eLRmEus6203we9ce7+8/z9iHSF6vqL5YeiI35epJ7k5xN8mqSry07\nztEtGYTLSf7kmsd/nOSVhWbZuu5+ZXV7JckzefuQ6TR7raruSZLV7ZWF59ma7n6tu9/q7t8k+UZO\n8Pd2ySD8W5L7qurPquq9Sf4mybMLzrM1VXV7Vb3/6v0kn05y6ff/rRPv2SSPrO4/kuTbC86yVVfD\nt/K5nODv7S1LvXB3/7qqHk3yz0nek+SJ7v6PpebZsruTPFNVydv/59/q7u8uO9LmVNXTSR5IcmdV\nXU7y5SRfTfJPVfX5JD9J8lfLTbg5N1jrA1V1Nm8f8r6c5AuLDbim8vFn4CpnKgJDEIAhCMAQBGAI\nAjCORRD25FTeJPuz1n1ZZ3K61nosgpDk1PyHHsK+rHVf1pmcorUelyAAx8BOT0x6b53p23L772x/\nM2/k1pzZ2RxL2pe17ss6k5Ox1v/NL/OrfuN6Hyj8LTs9dfm23J6P1id3+ZJAkn/tC4d63lqHDPt0\nCTTYB0cOwp5eAg1OtXX2EFwCDU6ZdYKwb5dAg1NvnTcVD3UJtNVJG+eS5La8b42XA7ZtnT2EQ10C\nrbvPd/dBdx8c9x/NwL5bJwh7cwk02BdHPmTYs0ugwV5Y68Sk1W+oObG/pQb4bT7LAAxBAIYgAEMQ\ngCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAsdOrLm/bS49/bOkR4Mg++KXvLz2CPQTg/wkCMAQBGIIA\nDEEAhiAAQxCAIQjAEARgCAIwTtWpy/vi3Z7i6pRuDsseAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgC\nMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARhr/Sq3qno5\nyS+SvJXk1919sImhgGVs4nc7fqK7f76BfwdYmEMGYKwbhE7yvar6QVWd28RAwHLWPWT4eHe/UlV3\nJXmuqv6zu5+/9gmrUJxLktvyvjVfDtimtfYQuvuV1e2VJM8kuf86zznf3QfdfXBrzqzzcsCWHTkI\nVXV7Vb3/6v0kn05yaVODAbu3ziHD3Umeqaqr/863uvu7G5kKWMSRg9DdP0rykQ3OAizMjx2BIQjA\nEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIA\nDEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGDcsvQAp9V///Xfv6vn3/uPf7ul\nSeDw7CEAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMDwWYYt8dkETiJ7CMAQBGDcNAhV9URV\nXamqS9ds+0BVPVdVL65u79jumMAuHGYP4ckkD75j22NJLnT3fUkurB4DJ9xNg9Ddzyd5/R2bH0ry\n1Or+U0k+u+G5gAUc9T2Eu7v71SRZ3d51oydW1bmqulhVF9/MG0d8OWAXtv6mYnef7+6D7j64NWe2\n/XLAGo4ahNeq6p4kWd1e2dxIwFKOGoRnkzyyuv9Ikm9vZhxgSYf5sePTSf4lyYeq6nJVfT7JV5N8\nqqpeTPKp1WPghLvpqcvd/fAN/uiTG54FWJgzFYEhCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAE\nYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiCAAxB\nAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQDGLUsPwLv30uMf\nW3oETil7CMC4aRCq6omqulJVl67Z9pWq+llVvbD6+sx2xwR24TB7CE8mefA62x/v7rOrr+9sdixg\nCTcNQnc/n+T1HcwCLGyd9xAeraofrg4p7tjYRMBijhqErye5N8nZJK8m+dqNnlhV56rqYlVdfDNv\nHPHlgF04UhC6+7Xufqu7f5PkG0nu/z3PPd/dB919cGvOHHVOYAeOFISquueah59LculGzwVOjpue\nmFRVTyd5IMmdVXU5yZeTPFBVZ5N0kpeTfGGLMwI7ctMgdPfD19n8zS3MAizMmYrAEARgCAIwBAEY\nggAMQQCGIABDEIAhCMAQBGAIAjAEARin6jLsH/zS95ceAU40ewjAEARgCAIwBAEYggAMQQCGIABD\nEIAhCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAo7p7dy9W9T9Jfnyd\nP7ozyc93Nsiy9mWt+7LO5GSs9U+7+w9v9qSdBuGGQ1Rd7O6DpefYhX1Z676sMzlda3XIAAxBAMZx\nCcL5pQfYoX1Z676sMzlFaz0W7yEAx8Nx2UMAjgFBAIYgAEMQgCEIwPg//ei4paeD9csAAAAASUVO\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAECCAYAAACBhbLnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAADU9JREFUeJzt3W2MZXddB/Dvz+7SSiGhFdo0FEVL\noxAjixmxSY0pIGRFYiGRaKOmL0gWEkiA4EPhDWhCgi+g+MJgCtT2BY+RhzamUZoFU02kWmCFkmIK\nWLF005UgAU0sFH6+mLNhWGZmZ2fuzL2H/+eTTO45/3vunm/+2bnfOefch+ruAMAofmzZAQDgICk+\nAIai+AAYiuIDYCiKD4ChKD4AhrK04quqo1X1b1X1xaq6YVk5dqOqHqiqz1XViaq6Z9l5tlJVN1fV\nqaq6d8PYxVV1Z1XdP91etMyMW9ki+5uq6qvTvJ+oqhcuM+NmquopVfWJqrqvqj5fVa+exld63rfJ\nPYc5v6Cq/rmq/nXK/ifT+E9X1d3TnH+gqh6z7Kxn2ib7LVX17xvm/ciys26mqs6rqs9U1d9M6ys/\n58mSiq+qzkvyF0l+PckzklxXVc9YRpY9eE53H+nutWUH2cYtSY6eMXZDkuPdfWWS49P6KrolP5w9\nSW6c5v1Id99xwJl24tEkr+vupye5Kskrp//bqz7vW+VOVn/OH0ny3O5+ZpIjSY5W1VVJ/izr2a9M\n8t9JXrbEjFvZKnuS/OGGeT+xvIjbenWS+zasz2HOl3bE9+wkX+zuL3f3t5O8P8m1S8ryI6u770ry\n9TOGr01y67R8a5IXH2ioHdoi+8rr7pPd/elp+VtZf1J4clZ83rfJvfJ63f9Mq4enn07y3CR/PY2v\n3Jwn22ZfeVV1eZLfSPKuab0ygzlPlld8T07ynxvWH8xMfskmneRjVfWpqjq27DDn6NLuPpmsP9kl\nuWTJec7Vq6rqs9Op0JU6XXimqnpqkmcluTszmvczciczmPPplNuJJKeS3JnkS0m+0d2PTpus7HPM\nmdm7+/S8v3ma9xur6vwlRtzK25P8UZLvTes/kZnM+bKKrzYZm8VfOZOru/sXs36q9pVV9avLDjSI\ndyS5IuunhE4meety42ytqh6X5ENJXtPd31x2np3aJPcs5ry7v9vdR5JcnvUzSk/fbLODTbUzZ2av\nqp9P8vokP5fkl5JcnOSPlxjxh1TVi5Kc6u5PbRzeZNOVnPNlFd+DSZ6yYf3yJA8tKcs56+6HpttT\nST6S9V+0uXi4qi5Lkun21JLz7Fh3Pzw9SXwvyTuzovNeVYezXh7v6e4PT8MrP++b5Z7LnJ/W3d9I\n8vdZv075hKo6NN218s8xG7IfnU49d3c/kuSvsnrzfnWS36yqB7J+qeq5WT8CnMWcL6v4/iXJldMr\ngB6T5HeS3L6kLOekqi6sqsefXk7ygiT3bv+olXJ7kuun5euT3LbELOfkdHFMXpIVnPfpOse7k9zX\n3W/bcNdKz/tWuWcy50+qqidMyz+e5Neyfo3yE0l+a9ps5eY82TL7Fzb8kVRZv062UvPe3a/v7su7\n+6lZf/7+eHf/bmYw50lSy/p2hull0W9Pcl6Sm7v7zUsJco6q6meyfpSXJIeSvHdVs1fV+5Jck+SJ\nSR5O8sYkH03ywSQ/meQrSV7a3Sv3IpItsl+T9VNuneSBJC8/fd1sVVTVryT5hySfy/evfbwh69fL\nVnbet8l9XVZ/zn8h6y+kOC/rf8x/sLv/dPpdfX/WTxV+JsnvTUdQK2Ob7B9P8qSsnz48keQVG14E\ns1Kq6pokf9DdL5rDnCdLLD4AWAaf3ALAUBQfAENRfAAMRfEBMBTFB8BQll58M/zIryTzzZ3MN/tc\ncyfzzT7X3Ml8s881dzKf7EsvviSzmKhNzDV3Mt/sc82dzDf7XHMn880+19zJTLKvQvEBwIE50Dew\nP6bO7wty4Q+MfSeP5HBW8YPHtzfX3Ml8s881dzLf7HPNncw3+1xzJ8vP/n/533y7H9nsw7J/wKGz\nbbCdqjqa5M+z/nE77+rut2y3/QW5ML9cz9vLLgFgU3f38R1tt+tTnT8i36IOwGD2co3Pt6gDMDt7\nKb65f4s6AAPayzW+HX3b7vS+jmNJckEeu4fdAcDe7eWIb0ffot7dN3X3WnevzfWVSgD86NhL8c32\nW9QBGNeuT3V296NV9aokf5fvf4v65xeWDAD2wZ7ex9fddyS5Y0FZAGDf+cgyAIai+AAYiuIDYCiK\nD4ChKD4AhqL4ABiK4gNgKIoPgKHs6Q3sy/TFG69adgQAFuBpr/3kge7PER8AQ1F8AAxF8QEwFMUH\nwFAUHwBDUXwADEXxATAUxQfAUBQfAENRfAAMRfEBMBTFB8BQFB8AQ1F8AAxF8QEwFMUHwFAUHwBD\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQsAAAKfCAYAAAB5Su2aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAFLZJREFUeJzt3G2spHd53/HfVa+9jkmRMcTU9Vq1\nQ6wUGiWAVuCUKKI4SQ1FmBeggqJmlVpaodKWkFSAi1TUF5GCWgUaqaXaxhRHQjyUENlCtInlgFCl\n2nR5tjHEG0LNxg5LxEOqRHXs5OqLc296tD1mL58558ys+Hyko5n7P/fMXPLsfn3PfWa2ujsA5/PX\n1j0AcGEQC2BELIARsQBGxAIYEQtgZGNiUVU3VdWXq+pUVb1l3fMkSVW9u6rOVNV929auqKq7qurB\n5fJpa57xmqr6WFU9UFX3V9UbNnTOS6vqk1X1uWXOf72sX1dV9y5zfqCqLlnnnMtMF1XVZ6rqI5s4\nY1V9taq+UFWfraqTy9q+v94bEYuquijJv0/y0iTPSfLaqnrOeqdKkrwnyU3nrL0lyd3dfX2Su5ft\ndXo8yS9197OT3JDk9ct/u02b89EkL+nuH0vy3CQ3VdUNSd6e5B3LnN9KcssaZzzrDUke2La9iTP+\nve5+bncfXbb3//Xu7rX/JPnxJL+9bfvWJLeue65llmuT3Ldt+8tJrlquX5Xky+ue8Zx570jy05s8\nZ5LLknw6yQuT/HGSQzv9OVjTbEeWv2wvSfKRJLWBM341yTPOWdv313sjjiySXJ3ka9u2Ty9rm+iZ\n3f1IkiyXV655nr9SVdcmeV6Se7OBcy6H959NcibJXUl+P8m3u/vxZZdNeN3fmeRNSf5y2X56Nm/G\nTvI7VfWpqjq+rO37631orx9wl2qHNZ9DfxKq6vuT/GaSX+juP6na6T/penX3XyR5blVdnuS3kjx7\np90Odqr/p6penuRMd3+qql58dnmHXdf9Z/NF3f1wVV2Z5K6q+tJBPOmmHFmcTnLNtu0jSR5e0yzn\n8/WquipJlssza54nVXVxtkLx3u7+8LK8cXOe1d3fTvLxbJ1jubyqzv5Pa92v+4uSvKKqvprk/dl6\nK/LObNaM6e6Hl8sz2YruC3IAr/emxOJ/Jrl+Oet8SZLXJLlzzTM9kTuTHFuuH8vWOYK1qa1DiNuS\n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\nACNiAYyIBTAiFsCIWAAjYgGMiAUwIhbAiFgAI2IBjIgFMCIWwIhYACNiAYyIBTAiFsCIWAAjYgGM\niAUwIhbAiFgAI2IBjIgFMCIWwIhYACNiAYycNxZV9e6qOlNV921bu6Kq7qqqB5fLpy3rVVW/VlWn\nqurzVfX8/RweODiTI4v3JLnpnLW3JLm7u69PcveynSQvTXL98nM8ybv2Zkxg3c4bi+7+RJJvnrN8\nc5Lbl+u3J3nltvXf6C33JLm8qq7aq2GB9dntOYtndvcjSbJcXrmsX53ka9v2O72s/X+q6nhVnayq\nk4/l0V2OARyUvT7BWTus9U47dveJ7j7a3UcvzuE9HgPYa7uNxdfPvr1YLs8s66eTXLNtvyNJHt79\neMCm2G0s7kxybLl+LMkd29Z/bvmtyA1JvnP27QpwYTt0vh2q6n1JXpzkGVV1OsnbkvxKkg9W1S1J\nHkry6mX3jyZ5WZJTSf4syc/vw8zAGpw3Ft392ie46cYd9u0kr191KGDz+AQnMCIWwIhYACNiAYyI\nBTAiFsCIWAAjYgGMiAUwIhbAiFgAI2IBjIgFMCIWwIhYACNiAYyIBTAiFsCIWAAjYgGMiAUwIhbA\niFgAI2IBjIgFMCIWwIhYACNiAYyIBTAiFsCIWAAjYgGMiAUwIhbAiFgAI2IBjIgFMCIWwIhYACNi\nAYyIBTAiFsCIWAAjYgGMiAUwIhbAiFgAI2IBjIgFMCIWwIhYACNiAYyIBTAiFsCIWAAjYgGMiAUw\nIhbAiFgAI2IBjIgFMCIWwIhYACNiAYyIBTAiFsCIWAAjYgGMiAUwIhbAiFgAI2IBjIgFMHLeWFTV\nu6vqTFXdt23t31TVl6rq81X1W1V1+bbbbq2qU1X15ar6+/s1OHCwJkcW70ly0zlrdyX5ke7+0SS/\nl+TWJKmq5yR5TZK/s9znP1TVRXs2LbA2541Fd38iyTfPWfud7n582bwnyZHl+s1J3t/dj3b3HyQ5\nleQFezgvsCZ7cc7iHyf5r8v1q5N8bdttp5c14AJ3aJU7V9Vbkzye5L1nl3bYrZ/gvseTHE+SS3PZ\nKmMAB2DXsaiqY0lenuTG7j4bhNNJrtm225EkD+90/+4+keREkjy1rtgxKMDm2NXbkKq6Kcmbk7yi\nu/9s2013JnlNVR2uquuSXJ/kk6uPCazbeY8squp9SV6c5BlVdTrJ27L124/DSe6qqiS5p7tf1933\nV9UHk3wxW29PXt/df7FfwwMH57yx6O7X7rB823fZ/5eT/PIqQwGbxyc4gRGxAEbEAhgRC2BELIAR\nsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEARsQC\nGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgBGxAEbEAhgRC2BE\nLIARsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEA\nRsQCGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgBGxAEbOG4uq\nendVnamq+3a47V9UVVfVM5btqqpfq6pTVfX5qnr+fgwNHLzJkcV7ktx07mJVXZPkp5M8tG35pUmu\nX36OJ3nX6iMCm+C8sejuTyT55g43vSPJm5L0trWbk/xGb7knyeVVddWeTAqs1a7OWVTVK5L8YXd/\n7pybrk7ytW3bp5c14AJ36MneoaouS/LWJD+z0807rPUOa6mq49l6q5JLc9mTHQM4YLs5snhWkuuS\nfK6qvprkSJJPV9XfyNaRxDXb9j2S5OGdHqS7T3T30e4+enEO72IM4CA96Vh09xe6+8ruvra7r81W\nIJ7f3X+U5M4kP7f8VuSGJN/p7kf2dmRgHSa/On1fkv+R5Ier6nRV3fJddv9okq8kOZXkPyX5J3sy\nJbB25z1n0d2vPc/t12673klev/pYwKbxCU5gRCyAEbEARsQCGBELYEQsgBGxAEbEAhgRC2BELIAR\nsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEARsQC\nGBELYEQsgBGxAEbEAhgRC2BELIARsQBGxAIYEQtgRCyAEbEARsQCGBELYEQsgJFD6x5g4ofeeM+6\nR4DveY4sgBGxAEbEAhgRC2BELIARsQBGxAIYqe5e9wypqm8k+V9JnpHkj9c8zsSFMKcZ986FMOdu\nZ/xb3f0Dkx03IhZnVdXJ7j667jnO50KY04x750KY8yBm9DYEGBELYGTTYnFi3QMMXQhzmnHvXAhz\n7vuMG3XOAthcm3ZkAWwosQBGxAIYEQtgRCyAkf8LvakD4+6GjJcAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAECCAYAAAAYUakXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAACG1JREFUeJzt3U+opXd9x/HPtyZOMLiIxIRQRSSG\ngpsO5RILgkREiW6ii9JmlYUwFpqNu+x06UayKpaRhmRjbDfBLMQaZpONiiMEO4WWpJK2Y0Kmkk0p\nNMb47SJnvo5xxjve8+e5957XCy7nnGeemfP9zYU3z3Puc86t7g5AkvzR0gMAx4cgAEMQgCEIwBAE\nYAgCMBYNQlU9WFX/VlUvVdVjS86ybVX1clX9c1W9UFUXl55nk6rqiaq6UlWXrtn2vqp6rqpeXN3e\nseSMm3KDtX61qn6++t6+UFWfW3LGdSwWhKp6V5K/TfLZJB9N8nBVfXSpeXbkk919trsPlh5kw55M\n8uA7tj2W5EJ335fkwurxafBkfnetSfL46nt7tru/u+OZNmbJI4T7k7zU3T/r7l8m+XaShxachyPq\n7ueTvP6OzQ8leWp1/6kkn9/pUFtyg7WeGksG4Y+T/Nc1jy+vtp1WneT7VfWTqjq39DA7cHd3v5ok\nq9u7Fp5n2x6tqp+uTilO7OnRkkGo62w7zddRf7y7/yxvnyL9TVV9YumB2JhvJLk3ydkkryb5+rLj\nHN2SQbic5IPXPP5AklcWmmXruvuV1e2VJM/k7VOm0+y1qronSVa3VxaeZ2u6+7Xufqu7f53kmznB\n39slg/DjJPdV1Yer6t1J/irJswvOszVVdXtVvffq/SSfSXLp9/+tE+/ZJI+s7j+S5DsLzrJVV8O3\n8oWc4O/tLUs9cXf/qqoeTfJPSd6V5Inu/pel5tmyu5M8U1XJ2//n3+ru7y070uZU1dNJHkhyZ1Vd\nTvKVJF9L8o9V9cUk/5nkL5abcHNusNYHqups3j7lfTnJlxYbcE3l7c/AVa5UBIYgAEMQgCEIwBAE\nYByLIOzJpbxJ9met+7LO5HSt9VgEIcmp+Q+9Cfuy1n1ZZ3KK1npcggAcAzu9MOnddaZvy+2/s/3N\nvJFbc2ZncyxpX9a6L+tMTsZa/y//m1/2G9d7Q+Fv2emly7fl9nysPrXLpwSS/Kgv3NR+a50y7NNH\noME+OHIQ9vQj0OBUW+cIwUegwSmzThD27SPQ4NRb50XFm/oItNVFG+eS5La8Z42nA7ZtnSOEm/oI\ntO4+390H3X1w3H80A/tunSDszUegwb448inDnn0EGuyFtS5MWv2GmhP7W2qA3+a9DMAQBGAIAjAE\nARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGDv91OVte+nxP196BDiyj3z5h0uP4AgB+A1BAIYgAEMQ\ngCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAE\nARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAuGWdv1xVLyf5nyRvJflVdx9s\nYihgGWsFYeWT3f2LDfw7wMKcMgBj3SB0ku9X1U+q6twmBgKWs+4pw8e7+5WquivJc1X1r939/LU7\nrEJxLkluy3vWfDpgm9Y6QujuV1a3V5I8k+T+6+xzvrsPuvvg1pxZ5+mALTtyEKrq9qp679X7ST6T\n5NKmBgN2b51ThruTPFNVV/+db3X39zYyFbCIIwehu3+W5E83OAuwMD92BIYgAEMQgCEIwBAEYAgC\nMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiCAAxBAIYg\nAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAccvSA5xW//6Xf/cH7X/vP/z1liaBm+cIARiCAAxB\nAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhvcybIn3JnASOUIAhiAA49AgVNUTVXWlqi5ds+19VfVc\nVb24ur1ju2MCu3AzRwhPJnnwHdseS3Khu+9LcmH1GDjhDg1Cdz+f5PV3bH4oyVOr+08l+fyG5wIW\ncNTXEO7u7leTZHV71412rKpzVXWxqi6+mTeO+HTALmz9RcXuPt/dB919cGvObPvpgDUcNQivVdU9\nSbK6vbK5kYClHDUIzyZ5ZHX/kSTf2cw4wJJu5seOTyf5QZI/qarLVfXFJF9L8umqejHJp1ePgRPu\n0EuXu/vhG/zRpzY8C7AwVyoCQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAhCMAQBGAIAjAEARiC\nAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggAMQQCGIABDEIAh\nCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIADEEAhiAA49AgVNUTVXWlqi5ds+2r\nVfXzqnph9fW57Y4J7MLNHCE8meTB62x/vLvPrr6+u9mxgCUcGoTufj7J6zuYBVjYOq8hPFpVP12d\nUtyxsYmAxRw1CN9Icm+Ss0leTfL1G+1YVeeq6mJVXXwzbxzx6YBdOFIQuvu17n6ru3+d5JtJ7v89\n+57v7oPuPrg1Z446J7ADRwpCVd1zzcMvJLl0o32Bk+OWw3aoqqeTPJDkzqq6nOQrSR6oqrNJOsnL\nSb60xRmBHTk0CN398HU2//0WZgEW5kpFYAgCMAQBGIIADEEAhiAAQxCAIQjAEARgCAIwBAEYggCM\nQ9/cdJJ85Ms/XHoEONEcIQBDEIAhCMAQBGAIAjAEARiCAAxBAIYgAEMQgCEIwBAEYAgCMAQBGIIA\nDEEAhiAAQxCAIQjAEARgCAIwBAEYggCM6u7dPVnVfyf5j+v80Z1JfrGzQZa1L2vdl3UmJ2OtH+ru\n9x+2006DcMMhqi5298HSc+zCvqx1X9aZnK61OmUAhiAA47gE4fzSA+zQvqx1X9aZnKK1HovXEIDj\n4bgcIQDHgCAAQxCAIQjAEARg/D+FDrP+euJ/tgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "basicgame = CreateGame(GameBasic, holes = 0)\n", "basicgame.reset(size = 15, reward_control=0)\n", "plt.matshow(basicgame.grid.grid)\n", "\n", "holegame = CreateGame(GameHole, holes = 50)\n", "holegame.reset(size = 15, reward_control=0)\n", "plt.matshow(holegame.grid.grid)\n", "\n", "bargame = CreateGame(GameBar, holes = 0)\n", "bargame.reset(size = 15, reward_control=0)\n", "plt.matshow(bargame.grid.grid)\n", "\n", "scalegame = CreateGame(GameScale, holes = 0)\n", "scalegame.reset(reward_control=0)\n", "plt.matshow(scalegame.grid.grid)\n", "\n", "scalegame_x = CreateGame(GameScale_x, holes = 0)\n", "scalegame_x.reset(reward_control=0)\n", "plt.matshow(scalegame_x.grid.grid)\n", "\n", "scalegame_y = CreateGame(GameScale_y, holes = 0)\n", "scalegame_y.reset(reward_control=0)\n", "plt.matshow(scalegame_y.grid.grid)\n", "\n", "Imp_game = CreateGame(GameImplicit, holes = 0)\n", "Imp_game.reset(size = 15, reward_control=0)\n", "plt.matshow(Imp_game.grid.grid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Think of how to make this traning stable, adding exploration noise , intenral noise or environmental variability like multiple mazes " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "basic\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/tie/anaconda3/lib/python3.6/site-packages/torch/tensor.py:255: UserWarning: non-inplace resize is deprecated\n", " warnings.warn(\"non-inplace resize is deprecated\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "basic performance 0.9527753216405364\n", "hole\n", "hole performance -0.3183029669333262\n", "bar\n", "bar performance 0.8349530560846572\n", "scale\n", "scale performance 0.6963462003459759\n", "scale_x\n", "scale_x performance 0.21955497694015552\n", "scale_y\n", "scale_y performance -0.19571314464684966\n", "implicit\n", "implicit performance 0.39944716794554336\n" ] } ], "source": [ "# moving bar train\n", "trial = 399\n", "tasks = ['basic', 'hole', 'bar', 'scale', 'scale_x', 'scale_y', 'implicit']\n", "iterations = [9, 29, 29, 9, 29, 29, 29]\n", "# iterations = [1, 1, 1, 1, 1, 1, 1]\n", "for iters, task in zip(iterations, tasks):\n", " Task = MultipleTasks(task = task, weight_write = 'weights_cpu_pos1/rnn_1515tanh512_checkpoint{}'.format(trial))\n", " weight_read = 'weights_' + task + '/rnn_1515tanh512_checkpoint{}_{}'.format(trial, iters)\n", " Test(task, Task.game, weight = weight_read)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hole\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/tie/anaconda3/lib/python3.6/site-packages/torch/tensor.py:255: UserWarning: non-inplace resize is deprecated\n", " warnings.warn(\"non-inplace resize is deprecated\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "hole performance -0.10105390339243536\n", "hole\n", "hole performance -0.17334266430439166\n", "hole\n", "hole performance -0.029716851767431884\n" ] } ], "source": [ "# moving bar train\n", "trial = 399\n", "tasks = 3 * ['hole']\n", "iterations = np.arange(3)\n", "# iterations = [1, 1, 1, 1, 1, 1, 1]\n", "for iters, task in zip(iterations, tasks):\n", " Task = MultipleTasks(task = task, weight_write = 'weights_cpu_pos1/rnn_1515tanh512_checkpoint{}'.format(trial))\n", " weight_read = 'weights_' + task + '/rnn_1515tanh512_checkpoint{}_{}'.format(trial, iters)\n", " Test(task, Task.game, weight = weight_read)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### measure decoding " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Decoding accuracy decreases, there are two possible reasons: \n", "1, decoding has bias, information of position is only refleted by decoding, if there is certain bias , it is not trustable\n", "2, it is the real measure of information, so there are less spatial information about space, or an effect decoupling/disentanglement of position. This can be due the network succeed at finding an even lower diemnsion object which gives successful performance. The representation deceases its information to input in a sense. \n", "\n", "This can be linked to receptive field by looking at how space is represented. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "759px", "left": "0px", "right": "1228px", "top": "67px", "width": "212px" }, "toc_section_display": "block", "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }