{ "metadata": { "name": "", "signature": "sha256:8d5fa4941669666d168305a4b9ae3773f311c4f9bb4b56846f2ce05c361ed6cb" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%pylab" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Using matplotlib backend: TkAgg\n", "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "from explauto.environment.toys.discrete_1d_progress import Discrete1dProgress\n", "from explauto.agent import Agent\n", "from explauto.interest_model.competences import competence_bool\n", "from explauto.experiment import Experiment" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from explauto import Environment, SensorimotorModel, InterestModel, Agent, Experiment\n", "from explauto.sensorimotor_model.discrete import LidstoneModel\n", "m_card = 7\n", "s_card = 7\n", "env = Discrete1dProgress(m_card=m_card, s_card=s_card)\n", "\n", "sm_model = LidstoneModel(m_card, s_card)\n", "im_model = InterestModel.from_configuration(env.conf, env.conf.s_dims, 'random')\n", "ag = Agent(env.conf, sm_model, im_model)\n", "\n", "expe = Experiment(env, ag)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class TaskCompetences(object):\n", " def __init__(self, time_step=0.01):\n", " self.score_function = lambda t, p, b, c: c * (1 - exp( - t / p)) + b\n", " self.scores = []\n", " self.scores.append([0.05, 0., 1.])\n", " self.scores.append([0.2, 0., 1.])\n", " self.scores.append([0.5, 0., 2.]) \n", " self.times = zeros(len(self.scores))\n", " self.time_step = time_step\n", " def competence(self, task_index):\n", " score = self.score_function(self.times[task_index], *self.scores[task_index])\n", " self.times[task_index] += self.time_step\n", " return score" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from explauto.interest_model.discrete_progress import DiscreteProgress\n", "tasks = TaskCompetences()\n", "#tasks.scores = [tasks.scores[0]] * len(tasks.scores)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "y_all = []\n", "ydiff_all = []\n", "x = linspace(0, 1, 100)\n", "for p, b, c in tasks.scores:\n", " y = []\n", " for xx in x:\n", " y.append(tasks.score_function(xx, p, b, c))\n", " y_all.append(y)\n", " ydiff = diff(y)\n", " ydiff_all.append(ydiff)\n", " subplot(211)\n", " plot(x, y)\n", " title('scores with time')\n", " subplot(212)\n", " plot(x[:-1], ydiff)\n", " title('score derivates with time')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nf/8bgISEBJydnZk2bZqxw4Sdnd1V7cPPz4+dO3cap319fcnPz7+qFyK1h6b8H/Hw8CAvLw+AvLw8\nevfujZlZp0gj1qrGjh3b6HtImhs32zzo1/dqxZSUlCsu0x2DXVOORXWNvWayM1LaL8cmLdvUfxeb\nNm0yPs3dWIC6mn03RXsGw6YcC6UUly5d4qabbiIkJIS9e/de1T5akpWxPTXlWISHh3Ps2DE8PT0Z\nOnQo//znP9u7mp1Cc+Nmmwf91urT3x005zWTDeU1aq433ngDb29v7O3tCQ4ONl79GQwGli5dSmBg\nIPb29oSEhBj/Ae3du5fhw4fj6OjIiBEj2Ldvn3F7YWFhvPzyy4wZMwYbGxvi4+M5efIk48ePp3fv\n3gQHB/PVV1/VqUflsYiPjyc0NJTw8HA2bdpEZmamcZkFCxYwa9YsxowZw7p163juuefYtWtXvfu2\ntbXl3Llzxiv00tJSHB0dOXbsmHH5jIwMrK2tyczMJDs7m8mTJ+Pm5oazszNTpkwxBpeXXnqJn3/+\nmfnz52NnZ8dTTz0F0Oj32rp1K9dccw329vZ4e3uzbNmyeo9/3759OXToEABr167FxMTEuN+VK1dy\n1113AdoVb+UvlnHjxgGwfPlyDh48yKuvvsrmzZspLi7m+eefx9nZmX79+hEZGVnvPmfPns358+eZ\nMmUKdnZ2vPXWWyQkJGBiYkJFRYXxWC5atIgxY8ZgZ2fH1KlTyczMZObMmTg4ODBixAgSExON22zK\n37g5mvJ/ZOnSpQwbNowLFy7w22+/8eSTT5Kfn98q++9qmhM32zzoS5/+Klf7msnNmzdf8TWTV+PU\nqVN8+OGH/Prrr+Tl5bF9+3b8/PwAePvtt9mwYQPbtm0jLy+PVatWYW1tTVZWFnfccQcLFiwgKyuL\nZ599ljvuuIPs7GzjdtesWcMnn3xCQUEBvXv3Zvz48cyaNYuMjAw2bNjAn/70pzq5mSqPxQMPPMDw\n4cN56aWXmDRpEp999pnxH250dDSPPfYY586do1evXuTk5DBlyhQuXbpUZ9/5+fn07dsXnU6HTqfD\nwsKCu+++u8Yb3b788kvCwsJwcXFBKcXcuXM5f/4858+fx8rKivnz5wPw6quvMnbsWD788EPy8/N5\n7733KCwsrPd7nTx5EoC5c+eyYsUK8vLyOHbsGDfffHO9f4OwsDBj4rBdu3YREBDAhQsXSEpKYteu\n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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "progress_tracker = DiscreteProgress(None, x_card=len(tasks.scores), win_size=10, measure=None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "task_index_history = []\n", "progress_history = []\n", "for i in range(300):\n", " #print progress_tracker.queues\n", " task_index = progress_tracker.sample(temp=3.)[0]\n", " progress_history.append(progress_tracker.w)\n", " #print task_index\n", " score = tasks.competence(task_index)\n", " #print score\n", " progress_tracker.update_from_index_and_competence(task_index, score)\n", " \n", " task_index_history.append(task_index)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "progress_history = array(progress_history)\n", "plot(progress_history / sum(progress_history, axis=1).reshape(-1, 1).repeat(3, axis=1))\n", "ylim([0,1])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "(0, 1)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nT/8bzQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "progress_history = array(progress_history)\n", "print(progress_history.shape)\n", "sum(progress_history, axis=1).reshape(-1, 1).repeat(3, axis=1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(300, 3)\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "array([[ 0.5 , 0.5 , 0.5 ],\n", " [ 0.91327418, 0.91327418, 0.91327418],\n", " [ 1.91327418, 1.91327418, 1.91327418],\n", " [ 2.71085328, 2.71085328, 2.71085328],\n", " [ 2.71085328, 2.71085328, 2.71085328],\n", " [ 2.75843457, 2.75843457, 2.75843457],\n", " [ 2.83849558, 2.83849558, 2.83849558],\n", " [ 2.93737182, 2.93737182, 2.93737182],\n", " [ 3.52773764, 3.52773764, 3.52773764],\n", " [ 3.63306499, 3.63306499, 3.63306499],\n", " [ 3.73365593, 3.73365593, 3.73365593],\n", " [ 3.81938757, 3.81938757, 3.81938757],\n", " [ 4.13932769, 4.13932769, 4.13932769],\n", " [ 4.51778273, 4.51778273, 4.51778273],\n", " [ 4.73810284, 4.73810284, 4.73810284],\n", " [ 4.7998156 , 4.7998156 , 4.7998156 ],\n", " [ 4.9617554 , 4.9617554 , 4.9617554 ],\n", " [ 5.07647611, 5.07647611, 5.07647611],\n", " [ 5.10588208, 5.10588208, 5.10588208],\n", " [ 5.10931564, 5.10931564, 5.10931564],\n", " [ 5.09891559, 5.09891559, 5.09891559],\n", " [ 5.03982684, 5.03982684, 5.03982684],\n", " [ 4.7552856 , 4.7552856 , 4.7552856 ],\n", " [ 4.69829395, 4.69829395, 4.69829395],\n", " [ 4.64672578, 4.64672578, 4.64672578],\n", " [ 4.53346182, 4.53346182, 4.53346182],\n", " [ 4.29835384, 4.29835384, 4.29835384],\n", " [ 4.25169303, 4.25169303, 4.25169303],\n", " [ 3.88984552, 3.88984552, 3.88984552],\n", " [ 3.37551547, 3.37551547, 3.37551547],\n", " [ 3.33329502, 3.33329502, 3.33329502],\n", " [ 3.29509238, 3.29509238, 3.29509238],\n", " [ 3.2605252 , 3.2605252 , 3.2605252 ],\n", " [ 2.51215587, 2.51215587, 2.51215587],\n", " [ 2.48087819, 2.48087819, 2.48087819],\n", " [ 1.98763442, 1.98763442, 1.98763442],\n", " [ 1.9593332 , 1.9593332 , 1.9593332 ],\n", " [ 0.9727583 , 0.9727583 , 0.9727583 ],\n", " [ 0.96611623, 0.96611623, 0.96611623],\n", " [ 0.94815766, 0.94815766, 0.94815766],\n", " [ 0.93107494, 0.93107494, 0.93107494],\n", " [ 0.90546695, 0.90546695, 0.90546695],\n", " [ 0.88921736, 0.88921736, 0.88921736],\n", " [ 0.87376028, 0.87376028, 0.87376028],\n", " [ 0.85905705, 0.85905705, 0.85905705],\n", " [ 0.8525465 , 0.8525465 , 0.8525465 ],\n", " [ 0.83856036, 0.83856036, 0.83856036],\n", " [ 0.81538928, 0.81538928, 0.81538928],\n", " [ 0.79442323, 0.79442323, 0.79442323],\n", " [ 0.78111919, 0.78111919, 0.78111919],\n", " [ 0.76214832, 0.76214832, 0.76214832],\n", " [ 0.74498277, 0.74498277, 0.74498277],\n", " [ 0.73232758, 0.73232758, 0.73232758],\n", " [ 0.72594595, 0.72594595, 0.72594595],\n", " [ 0.71041391, 0.71041391, 0.71041391],\n", " [ 0.69635995, 0.69635995, 0.69635995],\n", " [ 0.68364339, 0.68364339, 0.68364339],\n", " [ 0.67213698, 0.67213698, 0.67213698],\n", " [ 0.66009899, 0.66009899, 0.66009899],\n", " [ 0.65384373, 0.65384373, 0.65384373],\n", " [ 0.64771232, 0.64771232, 0.64771232],\n", " [ 0.64170233, 0.64170233, 0.64170233],\n", " [ 0.63581135, 0.63581135, 0.63581135],\n", " [ 0.62436046, 0.62436046, 0.62436046],\n", " [ 0.61394902, 0.61394902, 0.61394902],\n", " [ 0.6030566 , 0.6030566 , 0.6030566 ],\n", " [ 0.59269541, 0.59269541, 0.59269541],\n", " [ 0.58692107, 0.58692107, 0.58692107],\n", " [ 0.57750042, 0.57750042, 0.57750042],\n", " [ 0.56764455, 0.56764455, 0.56764455],\n", " [ 0.56198455, 0.56198455, 0.56198455],\n", " [ 0.55260936, 0.55260936, 0.55260936],\n", " [ 0.54706143, 0.54706143, 0.54706143],\n", " [ 0.53853727, 0.53853727, 0.53853727],\n", " [ 0.52961931, 0.52961931, 0.52961931],\n", " [ 0.52113628, 0.52113628, 0.52113628],\n", " [ 0.5134233 , 0.5134233 , 0.5134233 ],\n", " [ 0.505354 , 0.505354 , 0.505354 ],\n", " [ 0.49837501, 0.49837501, 0.49837501],\n", " [ 0.49206015, 0.49206015, 0.49206015],\n", " [ 0.48438439, 0.48438439, 0.48438439],\n", " [ 0.47867048, 0.47867048, 0.47867048],\n", " [ 0.47323241, 0.47323241, 0.47323241],\n", " [ 0.46790203, 0.46790203, 0.46790203],\n", " [ 0.46267719, 0.46267719, 0.46267719],\n", " [ 0.45537578, 0.45537578, 0.45537578],\n", " [ 0.45020562, 0.45020562, 0.45020562],\n", " [ 0.4432603 , 0.4432603 , 0.4432603 ],\n", " [ 0.43813892, 0.43813892, 0.43813892],\n", " [ 0.43153234, 0.43153234, 0.43153234],\n", " [ 0.42651237, 0.42651237, 0.42651237],\n", " [ 0.42022799, 0.42022799, 0.42022799],\n", " [ 0.4142501 , 0.4142501 , 0.4142501 ],\n", " [ 0.40957194, 0.40957194, 0.40957194],\n", " [ 0.40533897, 0.40533897, 0.40533897],\n", " [ 0.4004184 , 0.4004184 , 0.4004184 ],\n", " [ 0.39559527, 0.39559527, 0.39559527],\n", " [ 0.39176512, 0.39176512, 0.39176512],\n", " [ 0.38607878, 0.38607878, 0.38607878],\n", " [ 0.38066976, 0.38066976, 0.38066976],\n", " [ 0.37594213, 0.37594213, 0.37594213],\n", " [ 0.37247647, 0.37247647, 0.37247647],\n", " [ 0.3693406 , 0.3693406 , 0.3693406 ],\n", " [ 0.36419539, 0.36419539, 0.36419539],\n", " [ 0.35930111, 0.35930111, 0.35930111],\n", " [ 0.35466709, 0.35466709, 0.35466709],\n", " [ 0.35001151, 0.35001151, 0.35001151],\n", " [ 0.34558298, 0.34558298, 0.34558298],\n", " [ 0.34137044, 0.34137044, 0.34137044],\n", " [ 0.33736334, 0.33736334, 0.33736334],\n", " [ 0.33452589, 0.33452589, 0.33452589],\n", " [ 0.33071422, 0.33071422, 0.33071422],\n", " [ 0.32814679, 0.32814679, 0.32814679],\n", " [ 0.32452102, 0.32452102, 0.32452102],\n", " [ 0.32107208, 0.32107208, 0.32107208],\n", " [ 0.31652983, 0.31652983, 0.31652983],\n", " [ 0.31420672, 0.31420672, 0.31420672],\n", " [ 0.31092599, 0.31092599, 0.31092599],\n", " [ 0.30647367, 0.30647367, 0.30647367],\n", " [ 0.30437164, 0.30437164, 0.30437164],\n", " [ 0.30000749, 0.30000749, 0.30000749],\n", " [ 0.29688676, 0.29688676, 0.29688676],\n", " [ 0.29498476, 0.29498476, 0.29498476],\n", " [ 0.29070703, 0.29070703, 0.29070703],\n", " [ 0.2877385 , 0.2877385 , 0.2877385 ],\n", " [ 0.28354547, 0.28354547, 0.28354547],\n", " [ 0.28072172, 0.28072172, 0.28072172],\n", " [ 0.27803568, 0.27803568, 0.27803568],\n", " [ 0.27392568, 0.27392568, 0.27392568],\n", " [ 0.26989706, 0.26989706, 0.26989706],\n", " [ 0.26734202, 0.26734202, 0.26734202],\n", " [ 0.26491159, 0.26491159, 0.26491159],\n", " [ 0.26096275, 0.26096275, 0.26096275],\n", " [ 0.25865085, 0.25865085, 0.25865085],\n", " [ 0.25645171, 0.25645171, 0.25645171],\n", " [ 0.25473071, 0.25473071, 0.25473071],\n", " [ 0.25086006, 0.25086006, 0.25086006],\n", " [ 0.24706605, 0.24706605, 0.24706605],\n", " [ 0.24550882, 0.24550882, 0.24550882],\n", " [ 0.24341694, 0.24341694, 0.24341694],\n", " [ 0.23969805, 0.23969805, 0.23969805],\n", " [ 0.23770819, 0.23770819, 0.23770819],\n", " [ 0.23406294, 0.23406294, 0.23406294],\n", " [ 0.23217012, 0.23217012, 0.23217012],\n", " [ 0.23076109, 0.23076109, 0.23076109],\n", " [ 0.22718803, 0.22718803, 0.22718803],\n", " [ 0.22591308, 0.22591308, 0.22591308],\n", " [ 0.22241077, 0.22241077, 0.22241077],\n", " [ 0.22061026, 0.22061026, 0.22061026],\n", " [ 0.21889757, 0.21889757, 0.21889757],\n", " [ 0.21546461, 0.21546461, 0.21546461],\n", " [ 0.21209962, 0.21209962, 0.21209962],\n", " [ 0.210946 , 0.210946 , 0.210946 ],\n", " [ 0.20764765, 0.20764765, 0.20764765],\n", " [ 0.20601848, 0.20601848, 0.20601848],\n", " [ 0.20278544, 0.20278544, 0.20278544],\n", " [ 0.20123573, 0.20123573, 0.20123573],\n", " [ 0.19806671, 0.19806671, 0.19806671],\n", " [ 0.19702287, 0.19702287, 0.19702287],\n", " [ 0.1939166 , 0.1939166 , 0.1939166 ],\n", " [ 0.19244247, 0.19244247, 0.19244247],\n", " [ 0.18939771, 0.18939771, 0.18939771],\n", " [ 0.18799547, 0.18799547, 0.18799547],\n", " [ 0.18666162, 0.18666162, 0.18666162],\n", " [ 0.18539283, 0.18539283, 0.18539283],\n", " [ 0.18240836, 0.18240836, 0.18240836],\n", " [ 0.18120144, 0.18120144, 0.18120144],\n", " [ 0.18025694, 0.18025694, 0.18025694],\n", " [ 0.17910888, 0.17910888, 0.17910888],\n", " [ 0.17825426, 0.17825426, 0.17825426],\n", " [ 0.17532888, 0.17532888, 0.17532888],\n", " [ 0.17455559, 0.17455559, 0.17455559],\n", " [ 0.17385588, 0.17385588, 0.17385588],\n", " [ 0.17276382, 0.17276382, 0.17276382],\n", " [ 0.1721307 , 0.1721307 , 0.1721307 ],\n", " [ 0.16926325, 0.16926325, 0.16926325],\n", " [ 0.16822445, 0.16822445, 0.16822445],\n", " [ 0.16541378, 0.16541378, 0.16541378],\n", " [ 0.16442564, 0.16442564, 0.16442564],\n", " [ 0.1634857 , 0.1634857 , 0.1634857 ],\n", " [ 0.16073068, 0.16073068, 0.16073068],\n", " [ 0.15803022, 0.15803022, 0.15803022],\n", " [ 0.15713611, 0.15713611, 0.15713611],\n", " [ 0.15656324, 0.15656324, 0.15656324],\n", " [ 0.15391625, 0.15391625, 0.15391625],\n", " [ 0.15132167, 0.15132167, 0.15132167],\n", " [ 0.15047118, 0.15047118, 0.15047118],\n", " [ 0.14966216, 0.14966216, 0.14966216],\n", " [ 0.14889259, 0.14889259, 0.14889259],\n", " [ 0.14816056, 0.14816056, 0.14816056],\n", " [ 0.14746423, 0.14746423, 0.14746423],\n", " [ 0.14694588, 0.14694588, 0.14694588],\n", " [ 0.14440268, 0.14440268, 0.14440268],\n", " [ 0.14374031, 0.14374031, 0.14374031],\n", " [ 0.14311024, 0.14311024, 0.14311024],\n", " [ 0.14251091, 0.14251091, 0.14251091],\n", " [ 0.1419408 , 0.1419408 , 0.1419408 ],\n", " [ 0.1413985 , 0.1413985 , 0.1413985 ],\n", " [ 0.14092947, 0.14092947, 0.14092947],\n", " [ 0.13843663, 0.13843663, 0.13843663],\n", " [ 0.13599315, 0.13599315, 0.13599315],\n", " [ 0.13556876, 0.13556876, 0.13556876],\n", " [ 0.13518475, 0.13518475, 0.13518475],\n", " [ 0.1346689 , 0.1346689 , 0.1346689 ],\n", " [ 0.1322738 , 0.1322738 , 0.1322738 ],\n", " [ 0.12992613, 0.12992613, 0.12992613],\n", " [ 0.12943544, 0.12943544, 0.12943544],\n", " [ 0.12908797, 0.12908797, 0.12908797],\n", " [ 0.12862121, 0.12862121, 0.12862121],\n", " [ 0.12632003, 0.12632003, 0.12632003],\n", " [ 0.12600563, 0.12600563, 0.12600563],\n", " [ 0.12572115, 0.12572115, 0.12572115],\n", " [ 0.12346553, 0.12346553, 0.12346553],\n", " [ 0.12302153, 0.12302153, 0.12302153],\n", " [ 0.12259919, 0.12259919, 0.12259919],\n", " [ 0.12219744, 0.12219744, 0.12219744],\n", " [ 0.11998649, 0.11998649, 0.11998649],\n", " [ 0.11972908, 0.11972908, 0.11972908],\n", " [ 0.11949617, 0.11949617, 0.11949617],\n", " [ 0.11928542, 0.11928542, 0.11928542],\n", " [ 0.11890327, 0.11890327, 0.11890327],\n", " [ 0.1167361 , 0.1167361 , 0.1167361 ],\n", " [ 0.11461184, 0.11461184, 0.11461184],\n", " [ 0.11424832, 0.11424832, 0.11424832],\n", " [ 0.11405763, 0.11405763, 0.11405763],\n", " [ 0.11197543, 0.11197543, 0.11197543],\n", " [ 0.11162965, 0.11162965, 0.11162965],\n", " [ 0.11130072, 0.11130072, 0.11130072],\n", " [ 0.10925976, 0.10925976, 0.10925976],\n", " [ 0.10894688, 0.10894688, 0.10894688],\n", " [ 0.10877433, 0.10877433, 0.10877433],\n", " [ 0.10677378, 0.10677378, 0.10677378],\n", " [ 0.10647616, 0.10647616, 0.10647616],\n", " [ 0.10451522, 0.10451522, 0.10451522],\n", " [ 0.10259311, 0.10259311, 0.10259311],\n", " [ 0.10070906, 0.10070906, 0.10070906],\n", " [ 0.09886232, 0.09886232, 0.09886232],\n", " [ 0.09705214, 0.09705214, 0.09705214],\n", " [ 0.09527781, 0.09527781, 0.09527781],\n", " [ 0.09512169, 0.09512169, 0.09512169],\n", " [ 0.09483858, 0.09483858, 0.09483858],\n", " [ 0.09469731, 0.09469731, 0.09469731],\n", " [ 0.09456949, 0.09456949, 0.09456949],\n", " [ 0.09283029, 0.09283029, 0.09283029],\n", " [ 0.09271463, 0.09271463, 0.09271463],\n", " [ 0.09100987, 0.09100987, 0.09100987],\n", " [ 0.08933887, 0.08933887, 0.08933887],\n", " [ 0.08906957, 0.08906957, 0.08906957],\n", " [ 0.0888134 , 0.0888134 , 0.0888134 ],\n", " [ 0.08856973, 0.08856973, 0.08856973],\n", " [ 0.08846508, 0.08846508, 0.08846508],\n", " [ 0.08682717, 0.08682717, 0.08682717],\n", " [ 0.08522168, 0.08522168, 0.08522168],\n", " [ 0.0849899 , 0.0849899 , 0.0849899 ],\n", " [ 0.08341621, 0.08341621, 0.08341621],\n", " [ 0.08332151, 0.08332151, 0.08332151],\n", " [ 0.08323583, 0.08323583, 0.08323583],\n", " [ 0.08301534, 0.08301534, 0.08301534],\n", " [ 0.08147282, 0.08147282, 0.08147282],\n", " [ 0.07996083, 0.07996083, 0.07996083],\n", " [ 0.07847878, 0.07847878, 0.07847878],\n", " [ 0.07702609, 0.07702609, 0.07702609],\n", " [ 0.07681635, 0.07681635, 0.07681635],\n", " [ 0.07539242, 0.07539242, 0.07539242],\n", " [ 0.07399668, 0.07399668, 0.07399668],\n", " [ 0.07379718, 0.07379718, 0.07379718],\n", " [ 0.07360741, 0.07360741, 0.07360741],\n", " [ 0.07352988, 0.07352988, 0.07352988],\n", " [ 0.07345973, 0.07345973, 0.07345973],\n", " [ 0.07327921, 0.07327921, 0.07327921],\n", " [ 0.07321574, 0.07321574, 0.07321574],\n", " [ 0.0731583 , 0.0731583 , 0.0731583 ],\n", " [ 0.07298659, 0.07298659, 0.07298659],\n", " [ 0.07282325, 0.07282325, 0.07282325],\n", " [ 0.07266788, 0.07266788, 0.07266788],\n", " [ 0.07261591, 0.07261591, 0.07261591],\n", " [ 0.07124781, 0.07124781, 0.07124781],\n", " [ 0.0699068 , 0.0699068 , 0.0699068 ],\n", " [ 0.06985977, 0.06985977, 0.06985977],\n", " [ 0.06971198, 0.06971198, 0.06971198],\n", " [ 0.06966943, 0.06966943, 0.06966943],\n", " [ 0.06952884, 0.06952884, 0.06952884],\n", " [ 0.06949034, 0.06949034, 0.06949034],\n", " [ 0.06935661, 0.06935661, 0.06935661],\n", " [ 0.0692294 , 0.0692294 , 0.0692294 ],\n", " [ 0.0691084 , 0.0691084 , 0.0691084 ],\n", " [ 0.06907356, 0.06907356, 0.06907356],\n", " [ 0.06895846, 0.06895846, 0.06895846],\n", " [ 0.06764401, 0.06764401, 0.06764401],\n", " [ 0.06761248, 0.06761248, 0.06761248],\n", " [ 0.06758396, 0.06758396, 0.06758396],\n", " [ 0.06629553, 0.06629553, 0.06629553],\n", " [ 0.06618605, 0.06618605, 0.06618605],\n", " [ 0.06492313, 0.06492313, 0.06492313],\n", " [ 0.06481898, 0.06481898, 0.06481898],\n", " [ 0.06479317, 0.06479317, 0.06479317],\n", " [ 0.06476982, 0.06476982, 0.06476982],\n", " [ 0.06353191, 0.06353191, 0.06353191],\n", " [ 0.06231852, 0.06231852, 0.06231852],\n", " [ 0.06229739, 0.06229739, 0.06229739]])" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "ydiff_all = array(ydiff_all)\n", "ydiff_norm = ydiff_all / sum(ydiff_all, axis=0).reshape(1, -1).repeat(3, axis=0)\n", "ydiff_norm.shape\n", "plot(ydiff_norm.T)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 96, "text": [ "[,\n", " ,\n", " ]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 96 }, { "cell_type": "code", "collapsed": false, "input": [ "from explauto.environment.toys.hierarchical_mild import f\n", "x = linspace(0, 10, 100)\n", "y_hist = []\n", "for temp in linspace(1e-5, 10., 6):\n", " y = f(x, temp) + 100*rand()\n", " y_hist.append(y)\n", " plot(x, y)\n", " #plot(diff(y))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nxz/+serr63XnnXcm25uamhQKhSRJoVAoWfQBAMXl6J77P//5T1199dW6+OKLk7de1q1bp8svv1wt\nLS3q6ur66t8KCQDIzCySzZs3m1//+tfNOXPmmMFgsFjLTkhdXV2mz+cz6+vrzfnz55ttbW2lTqmk\nhoaGzEWLFpnf//73S51KSfX29porVqww586da86bN8985ZVXSp1Sydx3331mfX29uWDBAnPVqlXm\nl19+WeqUimbNmjVmdXW1uWDBgmTb4cOHzWuvvda86KKLTL/fb/b29o45T1E+OCwWi+nnP/+5tmzZ\not27d+upp57Snj17irH0hJR4TuDf//63Xn31VT3yyCOn9O+jra1N9fX1p/y7qe644w5df/312rNn\nj95++23Nmzev1CmVxP79+/XYY49p165deueddxSLxbRhw4ZSp1U0a9as0ZYtW9LagsGg/H6/Ojs7\n1dDQkNPzQ0Up7jt27NCcOXNUW1uriooK3XjjjXr22WeLsfSEZPecwEcffVTirErj4MGD2rRpk269\n9dZT+t1Un332mV5++WXdcsstkqTy8nJNnTq1xFmVxpQpU1RRUaH+/n4NDQ2pv79fs2bNKnVaRXPV\nVVep0vJQn5NniIpS3A8dOqTZs2cnj2tqanTo0KFiLD3h7d+/X2+88YauuOKKUqdSEnfddZfuv/9+\neTyn9qdP79u3TzNmzNCaNWt0ySWX6LbbblN/f3+p0yqJqqoq3X333Tr//PN13nnnadq0abr22mtL\nnVZJRSIReb1eScPvSoxEImOOKcp/Uaf6/25ncuTIEa1cuVJtbW0666yzSp1O0T3//POqrq7W4sWL\nT+mrdkkaGhrSrl27dPvtt2vXrl0688wzT9mP7ti7d68eeugh7d+/Xx999JGOHDmiv/3tb6VOa8Kw\ne4bITlGK+6xZs3TgwIHk8YEDB1RTU1OMpSesxHMCP/rRj07Zt4xu375dHR0d+trXvqZVq1bppZde\n0urVq0udVknU1NSopqZGS5YskSStXLlSu3btKnFWpbFz505deeWVmj59usrLy7V8+XJt37691GmV\nlJNniIpS3C+77DK9//772r9/vwYGBvT000+rqampGEtPSGaG5wRONffdd58OHDigffv2acOGDfru\nd7+rv/71r6VOqyRmzpyp2bNnq7OzU5K0detWzZ8/v8RZlcbcuXP16quv6tixYzJNU1u3blV9fX2p\n0yopR88QfVVv57HatGmTWVdXZ1544YXmfffdV6xlJ6SXX37ZNAzD/MY3vmEuWrTIXLRokbl58+ZS\np1VS4XDYXLp0aanTKKk333zTvOyyy8yLL77YXLZsmdnX11fqlEpm/fr1ybdCrl692hwYGCh1SkVz\n4403mueee65ZUVFh1tTUmE888YR5+PBhs6GhIa+3Qhb1m5gAAMVxar9FAQBciuIOAC5EcQcAF6K4\nA4ALUdwBwIUo7gDgQv8PDbVZy4fvLNwAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(argmin(array(y_hist)).T)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "argmin(array(y_hist), axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0])" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "commands = array(env.random_motors(100), dtype=int)\n", "ms = env.dataset(commands)\n", "plot(ms[:, 0], ms[:, 1], 'o')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "[]" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "n_trials = 200\n", "progr = zeros((n_trials, s_card))\n", "for i in range(n_trials):\n", " expe.run(1)\n", " progr[i,:] = ag.i_model.progress()\n" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "arrays used as indices must be of integer (or boolean) type", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mprogr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mzeros\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_trials\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ms_card\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_trials\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mexpe\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[0mprogr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mag\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mi_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprogress\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/experiment/experiment.pyc\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, n_iter, bg)\u001b[0m\n\u001b[0;32m 65\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_t\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 67\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_run\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_iter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 68\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mwait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/experiment/experiment.pyc\u001b[0m in \u001b[0;36m_run\u001b[1;34m(self, n_iter)\u001b[0m\n\u001b[0;32m 83\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnotifications\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mqueue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 84\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 85\u001b[1;33m \u001b[0mm\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mag\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mproduce\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 86\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[0menv_state\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/agent/agent.pyc\u001b[0m in \u001b[0;36mproduce\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 128\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 129\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchoose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 130\u001b[1;33m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minfer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexpl_dims\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minf_dims\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 131\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 132\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0ms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextract_ms\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/agent/agent.pyc\u001b[0m in \u001b[0;36minfer\u001b[1;34m(self, expl_dims, inf_dims, x)\u001b[0m\n\u001b[0;32m 88\u001b[0m y = self.sensorimotor_model.infer(expl_dims,\n\u001b[0;32m 89\u001b[0m \u001b[0minf_dims\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 90\u001b[1;33m x.flatten())\n\u001b[0m\u001b[0;32m 91\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mExplautoBootstrapError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 92\u001b[0m \u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Sensorimotor model not bootstrapped yet'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/sensorimotor_model/discrete.py\u001b[0m in \u001b[0;36minfer\u001b[1;34m(self, in_dims, out_dims, x)\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[0mp_out\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoint_distr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 21\u001b[1;33m \u001b[0mp_out\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoint_distr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 22\u001b[0m \u001b[0mp_out\u001b[0m \u001b[1;33m/=\u001b[0m \u001b[0mp_out\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 23\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mdiscrete_random_draw\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp_out\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mIndexError\u001b[0m: arrays used as indices must be of integer (or boolean) type" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "%debug" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "> \u001b[1;32m/home/clement/Documents/Boulot/INRIA_FLOWERS/CODE/explauto/explauto/sensorimotor_model/discrete.py\u001b[0m(21)\u001b[0;36minfer\u001b[1;34m()\u001b[0m\n", "\u001b[1;32m 20 \u001b[1;33m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m---> 21 \u001b[1;33m \u001b[0mp_out\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoint_distr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[1;32m 22 \u001b[1;33m \u001b[0mp_out\u001b[0m \u001b[1;33m/=\u001b[0m \u001b[0mp_out\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "stream": "stdout", "text": [ "ipdb> p x\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "array([ 4.57077553])\n" ] } ] }, { "cell_type": "code", "collapsed": false, "input": [ "clf()\n", "plot(progr)\n", "legend([str(i) for i in range(s_card)])\n", "[text(n_trials * 1.1, progr[-1, x], str(x)) for x in range(s_card)] " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "figure()\n", "for s in range(s_card):\n", " inds = nonzero(ag.i_model.choices.flatten()[:ag.i_model.t] == s)[0]\n", " plot(inds, ag.i_model.comps[inds], '*', ms=12)\n", "legend([str(i) for i in range(s_card)]) " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "2**8" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "256" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "figure()\n", "win = 40\n", "spent = []\n", "for t in range(expe_1.i_rec-40):\n", " spent.append([float(sum(expe_1.records[t:t+win, 1] == s))/win * 100 for s in range(s_card)])\n", "plot(spent)\n", "legend([str(i) for i in range(s_card)]) " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(0., 1., 100)\n", "plot(x, exp(2. * x) / exp(2.))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "[]" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "zip(range(4), x)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "[(0, 10), (1, 11), (2, 12), (3, 13)]" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "n_trials = 10\n", "logs_x = zeros((n_trials, s_card))\n", "for trial in range(n_trials):\n", " del ag, expe_1\n", " ag = Agent(**myconf)\n", " expe_1 = Experiment(env, ag, 0, [0,1])\n", " expe_1.run(10)\n", " logs_x[trial, :] = [(ag.choices[:ag.t, :] == x).sum() for x in range(s_card)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "logs_x.sum(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "array([ 73., 0., 0., 19., 8., 0.])" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "logs_x" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "array([[ 2., 0., 0., 7., 1., 0.],\n", " [ 1., 0., 0., 9., 0., 0.],\n", " [ 6., 0., 0., 3., 1., 0.],\n", " [ 8., 0., 0., 0., 2., 0.],\n", " [ 7., 0., 0., 0., 3., 0.],\n", " [ 9., 0., 0., 0., 1., 0.],\n", " [ 10., 0., 0., 0., 0., 0.],\n", " [ 10., 0., 0., 0., 0., 0.],\n", " [ 10., 0., 0., 0., 0., 0.],\n", " [ 10., 0., 0., 0., 0., 0.]])" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "env.s_card" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "6" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "print ag.choices[:ag.t, :]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 2.]\n", " [ 5.]\n", " [ 2.]\n", " [ 3.]\n", " [ 4.]\n", " [ 1.]\n", " [ 5.]\n", " [ 3.]\n", " [ 4.]\n", " [ 0.]\n", " [ 2.]\n", " [ 2.]\n", " [ 2.]\n", " [ 2.]\n", " [ 5.]\n", " [ 4.]\n", " [ 1.]\n", " [ 5.]\n", " [ 5.]\n", " [ 4.]]\n" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "[(ag.choices[:ag.t, :] == x).sum() for x in range(s_card)]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "[2, 4, 11, 8, 7, 8]" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "from model.sm_model import LidstoneModel" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "model = LidstoneModel(3, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "model.counts" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "array([[ 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0.]])" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "model.update(2, 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "p" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "array([[ 0.08333333, 0.08333333, 0.08333333, 0.08333333],\n", " [ 0.08333333, 0.08333333, 0.08333333, 0.08333333],\n", " [ 0.08333333, 0.08333333, 0.08333333, 0.08333333]])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "from collections import deque" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "q = deque(zeros(3), 3)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "q.append(array([2., 0.]))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "print q" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "deque([array([ 0., 0.]), array([ 1., 0.]), array([ 2., 0.])], maxlen=3)\n" ] } ], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "cov(array(q), rowvar = 0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "array([[ 1., 0.],\n", " [ 0., 0.]])" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "d = deque([[t, 0.] for t in range(4)])\n", "print d" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "deque([[0, 0.0], [1, 0.0], [2, 0.0], [3, 0.0]])\n" ] } ], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "cov(d, rowvar=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 69, "text": [ "array([[ 1.66666667, 0. ],\n", " [ 0. , 0. ]])" ] } ], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "[0, 1] == 0" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 70, "text": [ "False" ] } ], "prompt_number": 70 }, { "cell_type": "code", "collapsed": false, "input": [ "d = array([0., 0., 0.])\n", "d = d / d.sum()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "-c:2: RuntimeWarning: invalid value encountered in divide\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "(discrete_random_draw(d, nb=10000) == 2).sum()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 67, "text": [ "3347" ] } ], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "d" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "array([0, 0, 0])" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "d = array([1, 1, 1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "d" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "array([ 0.33333333, 0.33333333, 0.33333333])" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }