-
-
Save awjuliani/1256e7ad7c8ac54051d09963606c8a47 to your computer and use it in GitHub Desktop.
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Simple Reinforcement Learning with Tensorflow: Part 3 - Model-Based RL\n", | |
"In this iPython notebook we implement a policy and model network which work in tandem to solve the CartPole reinforcement learning problem. To learn more, read here: https://medium.com/p/9a6fe0cce99\n", | |
"\n", | |
"For more reinforcment learning tutorials, see:\n", | |
"https://github.com/awjuliani/DeepRL-Agents" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Loading libraries and starting CartPole environment" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import cPickle as pickle\n", | |
"import tensorflow as tf\n", | |
"%matplotlib inline\n", | |
"import matplotlib.pyplot as plt\n", | |
"import math\n", | |
"\n", | |
"from modelAny import *\n", | |
"\n", | |
"from tensorflow.python.framework import dtypes\n", | |
"from tensorflow.python.framework import ops\n", | |
"from tensorflow.python.ops import array_ops\n", | |
"from tensorflow.python.ops import control_flow_ops\n", | |
"from tensorflow.python.ops import embedding_ops\n", | |
"from tensorflow.python.ops import math_ops\n", | |
"from tensorflow.python.ops import nn_ops\n", | |
"from tensorflow.python.ops import rnn\n", | |
"from tensorflow.python.ops import rnn_cell\n", | |
"from tensorflow.python.ops import variable_scope" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO:gym.envs.registration:Making new env: CartPole-v0\n", | |
"[2016-07-26 11:29:37,204] Making new env: CartPole-v0\n" | |
] | |
} | |
], | |
"source": [ | |
"import gym\n", | |
"env = gym.make('CartPole-v0')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Setting Hyper-parameters" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# hyperparameters\n", | |
"H = 8 # number of hidden layer neurons\n", | |
"learning_rate = 1e-2\n", | |
"gamma = 0.99 # discount factor for reward\n", | |
"decay_rate = 0.99 # decay factor for RMSProp leaky sum of grad^2\n", | |
"resume = False # resume from previous checkpoint?\n", | |
"\n", | |
"model_bs = 3 # Batch size when learning from model\n", | |
"real_bs = 3 # Batch size when learning from real environment\n", | |
"\n", | |
"# model initialization\n", | |
"D = 4 # input dimensionality" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Policy Network" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"tf.reset_default_graph()\n", | |
"observations = tf.placeholder(tf.float32, [None,4] , name=\"input_x\")\n", | |
"W1 = tf.get_variable(\"W1\", shape=[4, H],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"layer1 = tf.nn.relu(tf.matmul(observations,W1))\n", | |
"W2 = tf.get_variable(\"W2\", shape=[H, 1],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"score = tf.matmul(layer1,W2)\n", | |
"probability = tf.nn.sigmoid(score)\n", | |
"\n", | |
"tvars = tf.trainable_variables()\n", | |
"input_y = tf.placeholder(tf.float32,[None,1], name=\"input_y\")\n", | |
"advantages = tf.placeholder(tf.float32,name=\"reward_signal\")\n", | |
"adam = tf.train.AdamOptimizer(learning_rate=learning_rate)\n", | |
"W1Grad = tf.placeholder(tf.float32,name=\"batch_grad1\")\n", | |
"W2Grad = tf.placeholder(tf.float32,name=\"batch_grad2\")\n", | |
"batchGrad = [W1Grad,W2Grad]\n", | |
"loglik = tf.log(input_y*(input_y - probability) + (1 - input_y)*(input_y + probability))\n", | |
"loss = -tf.reduce_mean(loglik * advantages) \n", | |
"newGrads = tf.gradients(loss,tvars)\n", | |
"updateGrads = adam.apply_gradients(zip(batchGrad,tvars))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Model Network\n", | |
"Here we implement a multi-layer neural network that predicts the next observation, reward, and done state from a current state and action." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"mH = 256 # model layer size\n", | |
"\n", | |
"input_data = tf.placeholder(tf.float32, [None, 5])\n", | |
"with tf.variable_scope('rnnlm'):\n", | |
" softmax_w = tf.get_variable(\"softmax_w\", [mH, 50])\n", | |
" softmax_b = tf.get_variable(\"softmax_b\", [50])\n", | |
"\n", | |
"previous_state = tf.placeholder(tf.float32, [None,5] , name=\"previous_state\")\n", | |
"W1M = tf.get_variable(\"W1M\", shape=[5, mH],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"B1M = tf.Variable(tf.zeros([mH]),name=\"B1M\")\n", | |
"layer1M = tf.nn.relu(tf.matmul(previous_state,W1M) + B1M)\n", | |
"W2M = tf.get_variable(\"W2M\", shape=[mH, mH],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"B2M = tf.Variable(tf.zeros([mH]),name=\"B2M\")\n", | |
"layer2M = tf.nn.relu(tf.matmul(layer1M,W2M) + B2M)\n", | |
"wO = tf.get_variable(\"wO\", shape=[mH, 4],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"wR = tf.get_variable(\"wR\", shape=[mH, 1],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"wD = tf.get_variable(\"wD\", shape=[mH, 1],\n", | |
" initializer=tf.contrib.layers.xavier_initializer())\n", | |
"\n", | |
"bO = tf.Variable(tf.zeros([4]),name=\"bO\")\n", | |
"bR = tf.Variable(tf.zeros([1]),name=\"bR\")\n", | |
"bD = tf.Variable(tf.ones([1]),name=\"bD\")\n", | |
"\n", | |
"\n", | |
"predicted_observation = tf.matmul(layer2M,wO,name=\"predicted_observation\") + bO\n", | |
"predicted_reward = tf.matmul(layer2M,wR,name=\"predicted_reward\") + bR\n", | |
"predicted_done = tf.sigmoid(tf.matmul(layer2M,wD,name=\"predicted_done\") + bD)\n", | |
"\n", | |
"true_observation = tf.placeholder(tf.float32,[None,4],name=\"true_observation\")\n", | |
"true_reward = tf.placeholder(tf.float32,[None,1],name=\"true_reward\")\n", | |
"true_done = tf.placeholder(tf.float32,[None,1],name=\"true_done\")\n", | |
"\n", | |
"\n", | |
"predicted_state = tf.concat(1,[predicted_observation,predicted_reward,predicted_done])\n", | |
"\n", | |
"observation_loss = tf.square(true_observation - predicted_observation)\n", | |
"\n", | |
"reward_loss = tf.square(true_reward - predicted_reward)\n", | |
"\n", | |
"done_loss = tf.mul(predicted_done, true_done) + tf.mul(1-predicted_done, 1-true_done)\n", | |
"done_loss = -tf.log(done_loss)\n", | |
"\n", | |
"model_loss = tf.reduce_mean(observation_loss + done_loss + reward_loss)\n", | |
"\n", | |
"modelAdam = tf.train.AdamOptimizer(learning_rate=learning_rate)\n", | |
"updateModel = modelAdam.minimize(model_loss)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Helper-functions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def resetGradBuffer(gradBuffer):\n", | |
" for ix,grad in enumerate(gradBuffer):\n", | |
" gradBuffer[ix] = grad * 0\n", | |
" return gradBuffer\n", | |
" \n", | |
"def discount_rewards(r):\n", | |
" \"\"\" take 1D float array of rewards and compute discounted reward \"\"\"\n", | |
" discounted_r = np.zeros_like(r)\n", | |
" running_add = 0\n", | |
" for t in reversed(xrange(0, r.size)):\n", | |
" running_add = running_add * gamma + r[t]\n", | |
" discounted_r[t] = running_add\n", | |
" return discounted_r\n", | |
"\n", | |
"\n", | |
"# This function uses our model to produce a new state when given a previous state and action\n", | |
"def stepModel(sess, xs, action):\n", | |
" toFeed = np.reshape(np.hstack([xs[-1][0],np.array(action)]),[1,5])\n", | |
" myPredict = sess.run([predicted_state],feed_dict={previous_state: toFeed})\n", | |
" reward = myPredict[0][:,4]\n", | |
" observation = myPredict[0][:,0:4]\n", | |
" observation[:,0] = np.clip(observation[:,0],-2.4,2.4)\n", | |
" observation[:,2] = np.clip(observation[:,2],-0.4,0.4)\n", | |
" doneP = np.clip(myPredict[0][:,5],0,1)\n", | |
" if doneP > 0.1 or len(xs)>= 300:\n", | |
" done = True\n", | |
" else:\n", | |
" done = False\n", | |
" return observation, reward, done" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Training the Policy and Model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"World Perf: Episode 4.000000. Reward 34.666667. action: 1.000000. mean reward 34.666667.\n", | |
"World Perf: Episode 7.000000. Reward 18.333333. action: 1.000000. mean reward 34.503333.\n", | |
"World Perf: Episode 10.000000. Reward 30.666667. action: 1.000000. mean reward 34.464967.\n", | |
"World Perf: Episode 13.000000. Reward 34.333333. action: 0.000000. mean reward 34.463650.\n", | |
"World Perf: Episode 16.000000. Reward 39.666667. action: 0.000000. mean reward 34.515680.\n", | |
"World Perf: Episode 19.000000. Reward 20.000000. action: 0.000000. mean reward 34.370524.\n", | |
"World Perf: Episode 22.000000. Reward 30.333333. action: 0.000000. mean reward 34.330152.\n", | |
"World Perf: Episode 25.000000. Reward 20.333333. action: 1.000000. mean reward 34.190184.\n", | |
"World Perf: Episode 28.000000. Reward 19.333333. action: 1.000000. mean reward 34.041615.\n", | |
"World Perf: Episode 31.000000. Reward 32.333333. action: 0.000000. mean reward 34.024532.\n", | |
"World Perf: Episode 34.000000. Reward 26.333333. action: 0.000000. mean reward 33.947620.\n", | |
"World Perf: Episode 37.000000. Reward 25.000000. action: 0.000000. mean reward 33.858144.\n", | |
"World Perf: Episode 40.000000. Reward 41.000000. action: 1.000000. mean reward 33.929563.\n", | |
"World Perf: Episode 43.000000. Reward 26.333333. action: 1.000000. mean reward 33.853600.\n", | |
"World Perf: Episode 46.000000. Reward 25.333333. action: 0.000000. mean reward 33.768398.\n", | |
"World Perf: Episode 49.000000. Reward 22.000000. action: 0.000000. mean reward 33.650714.\n", | |
"World Perf: Episode 52.000000. Reward 35.666667. action: 1.000000. mean reward 33.670873.\n", | |
"World Perf: Episode 55.000000. Reward 30.000000. action: 1.000000. mean reward 33.634165.\n", | |
"World Perf: Episode 58.000000. Reward 29.000000. action: 1.000000. mean reward 33.587823.\n", | |
"World Perf: Episode 61.000000. Reward 31.666667. action: 1.000000. mean reward 33.568611.\n", | |
"World Perf: Episode 64.000000. Reward 29.000000. action: 0.000000. mean reward 33.522925.\n", | |
"World Perf: Episode 67.000000. Reward 27.000000. action: 0.000000. mean reward 33.457696.\n", | |
"World Perf: Episode 70.000000. Reward 58.333333. action: 1.000000. mean reward 33.706452.\n", | |
"World Perf: Episode 73.000000. Reward 29.333333. action: 0.000000. mean reward 33.662721.\n", | |
"World Perf: Episode 76.000000. Reward 12.333333. action: 0.000000. mean reward 33.449427.\n", | |
"World Perf: Episode 79.000000. Reward 25.000000. action: 0.000000. mean reward 33.364933.\n", | |
"World Perf: Episode 82.000000. Reward 21.666667. action: 1.000000. mean reward 33.247950.\n", | |
"World Perf: Episode 85.000000. Reward 27.333333. action: 0.000000. mean reward 33.188804.\n", | |
"World Perf: Episode 88.000000. Reward 34.000000. action: 1.000000. mean reward 33.196916.\n", | |
"World Perf: Episode 91.000000. Reward 22.333333. action: 0.000000. mean reward 33.088280.\n", | |
"World Perf: Episode 94.000000. Reward 43.000000. action: 1.000000. mean reward 33.187397.\n", | |
"World Perf: Episode 97.000000. Reward 14.000000. action: 0.000000. mean reward 32.995523.\n", | |
"World Perf: Episode 100.000000. Reward 19.000000. action: 1.000000. mean reward 32.855568.\n", | |
"World Perf: Episode 103.000000. Reward 23.333333. action: 1.000000. mean reward 32.760346.\n", | |
"World Perf: Episode 106.000000. Reward 41.666667. action: 0.000000. mean reward 32.733059.\n", | |
"World Perf: Episode 109.000000. Reward 48.000000. action: 1.000000. mean reward 32.898281.\n", | |
"World Perf: Episode 112.000000. Reward 17.000000. action: 1.000000. mean reward 33.378304.\n", | |
"World Perf: Episode 115.000000. Reward 52.333333. action: 0.000000. mean reward 33.407272.\n", | |
"World Perf: Episode 118.000000. Reward 16.000000. action: 1.000000. mean reward 32.948177.\n", | |
"World Perf: Episode 121.000000. Reward 22.000000. action: 0.000000. mean reward 32.596844.\n", | |
"World Perf: Episode 124.000000. Reward 30.000000. action: 1.000000. mean reward 32.334019.\n", | |
"World Perf: Episode 127.000000. Reward 22.666667. action: 1.000000. mean reward 31.985229.\n", | |
"World Perf: Episode 130.000000. Reward 75.333333. action: 1.000000. mean reward 32.219444.\n", | |
"World Perf: Episode 133.000000. Reward 37.666667. action: 0.000000. mean reward 32.033123.\n", | |
"World Perf: Episode 136.000000. Reward 34.666667. action: 1.000000. mean reward 36.278812.\n", | |
"World Perf: Episode 139.000000. Reward 44.333333. action: 0.000000. mean reward 37.793564.\n", | |
"World Perf: Episode 142.000000. Reward 43.000000. action: 0.000000. mean reward 37.605556.\n", | |
"World Perf: Episode 145.000000. Reward 17.333333. action: 0.000000. mean reward 37.140411.\n", | |
"World Perf: Episode 148.000000. Reward 58.000000. action: 0.000000. mean reward 37.012058.\n", | |
"World Perf: Episode 151.000000. Reward 54.000000. action: 0.000000. mean reward 36.910122.\n", | |
"World Perf: Episode 154.000000. Reward 43.666667. action: 0.000000. mean reward 36.677944.\n", | |
"World Perf: Episode 157.000000. Reward 49.666667. action: 1.000000. mean reward 36.497761.\n", | |
"World Perf: Episode 160.000000. Reward 33.333333. action: 1.000000. mean reward 36.195156.\n", | |
"World Perf: Episode 163.000000. Reward 26.333333. action: 0.000000. mean reward 35.835846.\n", | |
"World Perf: Episode 166.000000. Reward 36.333333. action: 0.000000. mean reward 35.844830.\n", | |
"World Perf: Episode 169.000000. Reward 28.333333. action: 1.000000. mean reward 35.657898.\n", | |
"World Perf: Episode 172.000000. Reward 47.333333. action: 1.000000. mean reward 35.645672.\n", | |
"World Perf: Episode 175.000000. Reward 54.000000. action: 1.000000. mean reward 35.669083.\n", | |
"World Perf: Episode 178.000000. Reward 39.666667. action: 1.000000. mean reward 35.657860.\n", | |
"World Perf: Episode 181.000000. Reward 29.000000. action: 0.000000. mean reward 36.254162.\n", | |
"World Perf: Episode 184.000000. Reward 40.333333. action: 1.000000. mean reward 38.040600.\n", | |
"World Perf: Episode 187.000000. Reward 47.000000. action: 1.000000. mean reward 39.061661.\n", | |
"World Perf: Episode 190.000000. Reward 50.666667. action: 0.000000. mean reward 40.936543.\n", | |
"World Perf: Episode 193.000000. Reward 41.666667. action: 1.000000. mean reward 41.026863.\n", | |
"World Perf: Episode 196.000000. Reward 39.666667. action: 0.000000. mean reward 42.870926.\n", | |
"World Perf: Episode 199.000000. Reward 40.333333. action: 1.000000. mean reward 43.584274.\n", | |
"World Perf: Episode 202.000000. Reward 37.333333. action: 0.000000. mean reward 43.347317.\n", | |
"World Perf: Episode 205.000000. Reward 40.333333. action: 0.000000. mean reward 44.021179.\n", | |
"World Perf: Episode 208.000000. Reward 21.333333. action: 1.000000. mean reward 43.482227.\n", | |
"World Perf: Episode 211.000000. Reward 41.666667. action: 0.000000. mean reward 43.259212.\n", | |
"World Perf: Episode 214.000000. Reward 34.000000. action: 1.000000. mean reward 44.416565.\n", | |
"World Perf: Episode 217.000000. Reward 34.666667. action: 0.000000. mean reward 44.088322.\n", | |
"World Perf: Episode 220.000000. Reward 34.666667. action: 1.000000. mean reward 44.904999.\n", | |
"World Perf: Episode 223.000000. Reward 47.333333. action: 1.000000. mean reward 44.721806.\n", | |
"World Perf: Episode 226.000000. Reward 44.666667. action: 1.000000. mean reward 45.130310.\n", | |
"World Perf: Episode 229.000000. Reward 43.333333. action: 0.000000. mean reward 44.777817.\n", | |
"World Perf: Episode 232.000000. Reward 43.333333. action: 0.000000. mean reward 44.769470.\n", | |
"World Perf: Episode 235.000000. Reward 44.333333. action: 0.000000. mean reward 46.332897.\n", | |
"World Perf: Episode 238.000000. Reward 45.000000. action: 1.000000. mean reward 45.947269.\n", | |
"World Perf: Episode 241.000000. Reward 54.666667. action: 0.000000. mean reward 46.343395.\n", | |
"World Perf: Episode 244.000000. Reward 24.000000. action: 1.000000. mean reward 45.764530.\n", | |
"World Perf: Episode 247.000000. Reward 34.333333. action: 1.000000. mean reward 45.315842.\n", | |
"World Perf: Episode 250.000000. Reward 48.333333. action: 0.000000. mean reward 45.853481.\n", | |
"World Perf: Episode 253.000000. Reward 67.333333. action: 0.000000. mean reward 45.776394.\n", | |
"World Perf: Episode 256.000000. Reward 34.000000. action: 1.000000. mean reward 47.594440.\n", | |
"World Perf: Episode 259.000000. Reward 38.333333. action: 0.000000. mean reward 47.181637.\n", | |
"World Perf: Episode 262.000000. Reward 66.000000. action: 0.000000. mean reward 47.100784.\n", | |
"World Perf: Episode 265.000000. Reward 34.333333. action: 0.000000. mean reward 46.671185.\n", | |
"World Perf: Episode 268.000000. Reward 37.666667. action: 1.000000. mean reward 46.222218.\n", | |
"World Perf: Episode 271.000000. Reward 32.333333. action: 1.000000. mean reward 45.771107.\n", | |
"World Perf: Episode 274.000000. Reward 47.666667. action: 1.000000. mean reward 45.407619.\n", | |
"World Perf: Episode 277.000000. Reward 59.000000. action: 1.000000. mean reward 46.145554.\n", | |
"World Perf: Episode 280.000000. Reward 63.333333. action: 0.000000. mean reward 59.825062.\n", | |
"World Perf: Episode 283.000000. Reward 34.666667. action: 1.000000. mean reward 61.017429.\n", | |
"World Perf: Episode 286.000000. Reward 44.000000. action: 1.000000. mean reward 60.357105.\n", | |
"World Perf: Episode 289.000000. Reward 59.333333. action: 1.000000. mean reward 65.682976.\n", | |
"World Perf: Episode 292.000000. Reward 41.333333. action: 1.000000. mean reward 65.250412.\n", | |
"World Perf: Episode 295.000000. Reward 24.666667. action: 1.000000. mean reward 68.016304.\n", | |
"World Perf: Episode 298.000000. Reward 81.000000. action: 0.000000. mean reward 67.736053.\n", | |
"World Perf: Episode 301.000000. Reward 50.000000. action: 1.000000. mean reward 69.622490.\n", | |
"World Perf: Episode 304.000000. Reward 51.333333. action: 1.000000. mean reward 69.084587.\n", | |
"World Perf: Episode 307.000000. Reward 59.666667. action: 0.000000. mean reward 68.367020.\n", | |
"World Perf: Episode 310.000000. Reward 50.000000. action: 1.000000. mean reward 67.690346.\n", | |
"World Perf: Episode 313.000000. Reward 40.666667. action: 0.000000. mean reward 66.820183.\n", | |
"World Perf: Episode 316.000000. Reward 36.333333. action: 0.000000. mean reward 65.936417." | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"WARNING:gym.core:Observation '[-2.44450251 -2.42356798 -0.16837024 0.5882781 ]' is not contained within observation space 'Box(4,)'.\n", | |
"[2016-07-26 11:31:53,950] Observation '[-2.44450251 -2.42356798 -0.16837024 0.5882781 ]' is not contained within observation space 'Box(4,)'.\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
"World Perf: Episode 319.000000. Reward 66.666667. action: 0.000000. mean reward 65.364967.\n", | |
"World Perf: Episode 322.000000. Reward 65.333333. action: 1.000000. mean reward 64.802299.\n", | |
"World Perf: Episode 325.000000. Reward 37.333333. action: 0.000000. mean reward 66.096016.\n", | |
"World Perf: Episode 328.000000. Reward 69.333333. action: 0.000000. mean reward 66.710442.\n", | |
"World Perf: Episode 331.000000. Reward 62.333333. action: 0.000000. mean reward 66.162369.\n", | |
"World Perf: Episode 334.000000. Reward 47.666667. action: 0.000000. mean reward 65.585594.\n", | |
"World Perf: Episode 337.000000. Reward 51.333333. action: 1.000000. mean reward 67.923607.\n", | |
"World Perf: Episode 340.000000. Reward 79.666667. action: 0.000000. mean reward 67.730087.\n", | |
"World Perf: Episode 343.000000. Reward 46.333333. action: 1.000000. mean reward 67.174133.\n", | |
"World Perf: Episode 346.000000. Reward 37.333333. action: 0.000000. mean reward 67.237823.\n", | |
"World Perf: Episode 349.000000. Reward 37.666667. action: 1.000000. mean reward 66.365395.\n", | |
"World Perf: Episode 352.000000. Reward 106.000000. action: 1.000000. mean reward 66.240921.\n", | |
"World Perf: Episode 355.000000. Reward 69.666667. action: 0.000000. mean reward 65.685989.\n", | |
"World Perf: Episode 358.000000. Reward 79.000000. action: 0.000000. mean reward 65.385353.\n", | |
"World Perf: Episode 361.000000. Reward 57.666667. action: 0.000000. mean reward 64.762840.\n", | |
"World Perf: Episode 364.000000. Reward 58.333333. action: 1.000000. mean reward 64.234383.\n", | |
"World Perf: Episode 367.000000. Reward 50.000000. action: 1.000000. mean reward 63.548519.\n", | |
"World Perf: Episode 370.000000. Reward 76.666667. action: 1.000000. mean reward 64.027878.\n", | |
"World Perf: Episode 373.000000. Reward 77.000000. action: 1.000000. mean reward 63.644070.\n", | |
"World Perf: Episode 376.000000. Reward 57.333333. action: 0.000000. mean reward 62.986038.\n", | |
"World Perf: Episode 379.000000. Reward 60.333333. action: 1.000000. mean reward 65.628548.\n", | |
"World Perf: Episode 382.000000. Reward 58.000000. action: 0.000000. mean reward 65.577202.\n", | |
"World Perf: Episode 385.000000. Reward 37.333333. action: 0.000000. mean reward 64.748459.\n", | |
"World Perf: Episode 388.000000. Reward 66.666667. action: 1.000000. mean reward 64.282372.\n", | |
"World Perf: Episode 391.000000. Reward 76.666667. action: 0.000000. mean reward 63.913193.\n", | |
"World Perf: Episode 394.000000. Reward 52.000000. action: 1.000000. mean reward 63.357983.\n", | |
"World Perf: Episode 397.000000. Reward 77.000000. action: 0.000000. mean reward 63.219463.\n", | |
"World Perf: Episode 400.000000. Reward 50.666667. action: 0.000000. mean reward 62.579128.\n", | |
"World Perf: Episode 403.000000. Reward 88.000000. action: 0.000000. mean reward 63.359425.\n", | |
"World Perf: Episode 406.000000. Reward 40.666667. action: 0.000000. mean reward 62.642246.\n", | |
"World Perf: Episode 409.000000. Reward 95.000000. action: 0.000000. mean reward 62.540451.\n", | |
"World Perf: Episode 412.000000. Reward 37.333333. action: 0.000000. mean reward 61.773060.\n", | |
"World Perf: Episode 415.000000. Reward 89.666667. action: 0.000000. mean reward 61.664021.\n", | |
"World Perf: Episode 418.000000. Reward 143.333333. action: 0.000000. mean reward 62.052608.\n", | |
"World Perf: Episode 421.000000. Reward 52.666667. action: 0.000000. mean reward 61.447842.\n", | |
"World Perf: Episode 424.000000. Reward 69.000000. action: 0.000000. mean reward 61.259960.\n", | |
"World Perf: Episode 427.000000. Reward 92.000000. action: 1.000000. mean reward 61.145710.\n", | |
"World Perf: Episode 430.000000. Reward 56.333333. action: 0.000000. mean reward 60.763550.\n", | |
"World Perf: Episode 433.000000. Reward 68.666667. action: 1.000000. mean reward 61.629684.\n", | |
"World Perf: Episode 436.000000. Reward 98.000000. action: 1.000000. mean reward 61.509510.\n", | |
"World Perf: Episode 439.000000. Reward 63.000000. action: 0.000000. mean reward 61.085052.\n", | |
"World Perf: Episode 442.000000. Reward 57.000000. action: 0.000000. mean reward 62.059277.\n", | |
"World Perf: Episode 445.000000. Reward 78.000000. action: 1.000000. mean reward 61.708813.\n", | |
"World Perf: Episode 448.000000. Reward 105.333333. action: 0.000000. mean reward 61.850525.\n", | |
"World Perf: Episode 451.000000. Reward 76.000000. action: 0.000000. mean reward 62.154224.\n", | |
"World Perf: Episode 454.000000. Reward 60.000000. action: 0.000000. mean reward 63.642593.\n", | |
"World Perf: Episode 457.000000. Reward 124.000000. action: 0.000000. mean reward 63.774948.\n", | |
"World Perf: Episode 460.000000. Reward 121.000000. action: 1.000000. mean reward 66.592888.\n", | |
"World Perf: Episode 463.000000. Reward 92.666667. action: 0.000000. mean reward 66.369972.\n", | |
"World Perf: Episode 466.000000. Reward 74.666667. action: 0.000000. mean reward 66.004295.\n", | |
"World Perf: Episode 469.000000. Reward 38.000000. action: 1.000000. mean reward 65.230652.\n", | |
"World Perf: Episode 472.000000. Reward 83.333333. action: 1.000000. mean reward 64.824677.\n", | |
"World Perf: Episode 475.000000. Reward 71.000000. action: 0.000000. mean reward 64.375679.\n", | |
"World Perf: Episode 478.000000. Reward 84.000000. action: 0.000000. mean reward 64.126076.\n", | |
"World Perf: Episode 481.000000. Reward 79.333333. action: 0.000000. mean reward 63.696423.\n", | |
"World Perf: Episode 484.000000. Reward 68.333333. action: 0.000000. mean reward 67.260323.\n", | |
"World Perf: Episode 487.000000. Reward 85.333333. action: 0.000000. mean reward 68.744957.\n", | |
"World Perf: Episode 490.000000. Reward 39.333333. action: 0.000000. mean reward 67.900719.\n", | |
"World Perf: Episode 493.000000. Reward 64.333333. action: 0.000000. mean reward 68.298889.\n", | |
"World Perf: Episode 496.000000. Reward 82.000000. action: 0.000000. mean reward 69.705017.\n", | |
"World Perf: Episode 499.000000. Reward 61.333333. action: 0.000000. mean reward 69.012932.\n", | |
"World Perf: Episode 502.000000. Reward 57.666667. action: 1.000000. mean reward 70.689323.\n", | |
"World Perf: Episode 505.000000. Reward 149.000000. action: 0.000000. mean reward 73.023964.\n", | |
"World Perf: Episode 508.000000. Reward 104.666667. action: 1.000000. mean reward 76.298637.\n", | |
"World Perf: Episode 511.000000. Reward 97.333333. action: 0.000000. mean reward 78.555893.\n", | |
"World Perf: Episode 514.000000. Reward 90.666667. action: 0.000000. mean reward 80.044609.\n", | |
"World Perf: Episode 517.000000. Reward 58.666667. action: 1.000000. mean reward 82.120979.\n", | |
"World Perf: Episode 520.000000. Reward 64.333333. action: 1.000000. mean reward 81.213943.\n", | |
"World Perf: Episode 523.000000. Reward 81.666667. action: 0.000000. mean reward 80.516701.\n", | |
"World Perf: Episode 526.000000. Reward 66.666667. action: 0.000000. mean reward 79.743752.\n", | |
"World Perf: Episode 529.000000. Reward 201.666667. action: 0.000000. mean reward 84.411575.\n", | |
"529\n" | |
] | |
} | |
], | |
"source": [ | |
"xs,drs,ys,ds = [],[],[],[]\n", | |
"running_reward = None\n", | |
"reward_sum = 0\n", | |
"episode_number = 1\n", | |
"real_episodes = 1\n", | |
"init = tf.initialize_all_variables()\n", | |
"batch_size = real_bs\n", | |
"\n", | |
"drawFromModel = False # When set to True, will use model for observations\n", | |
"trainTheModel = True # Whether to train the model\n", | |
"trainThePolicy = False # Whether to train the policy\n", | |
"switch_point = 1\n", | |
"\n", | |
"# Launch the graph\n", | |
"with tf.Session() as sess:\n", | |
" rendering = False\n", | |
" sess.run(init)\n", | |
" observation = env.reset()\n", | |
" x = observation\n", | |
" gradBuffer = sess.run(tvars)\n", | |
" gradBuffer = resetGradBuffer(gradBuffer)\n", | |
" \n", | |
" while episode_number <= 5000:\n", | |
" # Start displaying environment once performance is acceptably high.\n", | |
" if (reward_sum/batch_size > 150 and drawFromModel == False) or rendering == True : \n", | |
" env.render()\n", | |
" rendering = True\n", | |
" \n", | |
" x = np.reshape(observation,[1,4])\n", | |
"\n", | |
" tfprob = sess.run(probability,feed_dict={observations: x})\n", | |
" action = 1 if np.random.uniform() < tfprob else 0\n", | |
"\n", | |
" # record various intermediates (needed later for backprop)\n", | |
" xs.append(x) \n", | |
" y = 1 if action == 0 else 0 \n", | |
" ys.append(y)\n", | |
" \n", | |
" # step the model or real environment and get new measurements\n", | |
" if drawFromModel == False:\n", | |
" observation, reward, done, info = env.step(action)\n", | |
" else:\n", | |
" observation, reward, done = stepModel(sess,xs,action)\n", | |
" \n", | |
" reward_sum += reward\n", | |
" \n", | |
" ds.append(done*1)\n", | |
" drs.append(reward) # record reward (has to be done after we call step() to get reward for previous action)\n", | |
"\n", | |
" if done: \n", | |
" \n", | |
" if drawFromModel == False: \n", | |
" real_episodes += 1\n", | |
" episode_number += 1\n", | |
"\n", | |
" # stack together all inputs, hidden states, action gradients, and rewards for this episode\n", | |
" epx = np.vstack(xs)\n", | |
" epy = np.vstack(ys)\n", | |
" epr = np.vstack(drs)\n", | |
" epd = np.vstack(ds)\n", | |
" xs,drs,ys,ds = [],[],[],[] # reset array memory\n", | |
" \n", | |
" if trainTheModel == True:\n", | |
" actions = np.array([np.abs(y-1) for y in epy][:-1])\n", | |
" state_prevs = epx[:-1,:]\n", | |
" state_prevs = np.hstack([state_prevs,actions])\n", | |
" state_nexts = epx[1:,:]\n", | |
" rewards = np.array(epr[1:,:])\n", | |
" dones = np.array(epd[1:,:])\n", | |
" state_nextsAll = np.hstack([state_nexts,rewards,dones])\n", | |
"\n", | |
" feed_dict={previous_state: state_prevs, true_observation: state_nexts,true_done:dones,true_reward:rewards}\n", | |
" loss,pState,_ = sess.run([model_loss,predicted_state,updateModel],feed_dict)\n", | |
" if trainThePolicy == True:\n", | |
" discounted_epr = discount_rewards(epr).astype('float32')\n", | |
" discounted_epr -= np.mean(discounted_epr)\n", | |
" discounted_epr /= np.std(discounted_epr)\n", | |
" tGrad = sess.run(newGrads,feed_dict={observations: epx, input_y: epy, advantages: discounted_epr})\n", | |
" \n", | |
" # If gradients becom too large, end training process\n", | |
" if np.sum(tGrad[0] == tGrad[0]) == 0:\n", | |
" break\n", | |
" for ix,grad in enumerate(tGrad):\n", | |
" gradBuffer[ix] += grad\n", | |
" \n", | |
" if switch_point + batch_size == episode_number: \n", | |
" switch_point = episode_number\n", | |
" if trainThePolicy == True:\n", | |
" sess.run(updateGrads,feed_dict={W1Grad: gradBuffer[0],W2Grad:gradBuffer[1]})\n", | |
" gradBuffer = resetGradBuffer(gradBuffer)\n", | |
"\n", | |
" running_reward = reward_sum if running_reward is None else running_reward * 0.99 + reward_sum * 0.01\n", | |
" if drawFromModel == False:\n", | |
" print 'World Perf: Episode %f. Reward %f. action: %f. mean reward %f.' % (real_episodes,reward_sum/real_bs,action, running_reward/real_bs)\n", | |
" if reward_sum/batch_size > 200:\n", | |
" break\n", | |
" reward_sum = 0\n", | |
"\n", | |
" # Once the model has been trained on 100 episodes, we start alternating between training the policy\n", | |
" # from the model and training the model from the real environment.\n", | |
" if episode_number > 100:\n", | |
" drawFromModel = not drawFromModel\n", | |
" trainTheModel = not trainTheModel\n", | |
" trainThePolicy = not trainThePolicy\n", | |
" \n", | |
" if drawFromModel == True:\n", | |
" observation = np.random.uniform(-0.1,0.1,[4]) # Generate reasonable starting point\n", | |
" batch_size = model_bs\n", | |
" else:\n", | |
" observation = env.reset()\n", | |
" batch_size = real_bs\n", | |
" \n", | |
"print real_episodes" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Checking model representation\n", | |
"Here we can examine how well the model is able to approximate the true environment after training. The green line indicates the real environment, and the blue indicates model predictions." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nwQXNcZyqwQXNcZyqwQXNcZyqwQXNcZyqwQXNcZyqwQXNcZyqwQXNcZyqoayCli/lbto+vw3S7C4Q\nkeHltMdxnOqm3B7a7UDO0rci8hVggKruBZwN3FJmexzHqWLKKmhqFdA/zLPLccCdwb5/B7qFeaMc\nx3FaS9x9aHGnIHYcp4qIW9Acx3Eio+TK6SVScNrfoLq64zhVjKrmq5XRIpXw0DLTEaczFTgVQERG\nAxs1qI6TjUplPS3kdfnll8duQxJtcXvaji2l2vOth77F/Yvuj8yWKCirhyYi92L1I3cWkdVYdZfO\ngKrqbar6uIhMFpE3sIpBZ5TTHsdxomNr41Y61sTdyGtKWa1R1VMK2OfcctrgOE55SKKg+aBAkYwf\nPz5uE74gSbaA25OPJNkCpdmTREFrM0VSRETbiq2O0x6YdPckLhh9AZMG5oydbxUigraBQQHHcaqQ\nJHpoLmiO4xSFC5rjOFWDC5rjOFWDC5rjOFWDC5rjOFWDC5rjOFWDC5rjOFWDC5rjOFWDC5rjOFWD\nC5rjOFWDC5rjOFVDuxQ0ETlaRJaKyDIRuTjL9p1FZFpQxm6RiJxebpscxymddidoIlID3IiVsvsy\ncLKIDMnY7VxggaoOBw4HfikiybpKjuM0o90JGjASWK6qb6lqPXA/VrounXeAHYL3OwDvq+rWMtvl\nOE6JJFHQym1NZpm6tZjIpfM74GkRWQd0BU4ss02O40RAEgUtCYMClwKvququwP7ATSLSNWabHMdp\ngSQKWrmtqQP2SFvOVqZuDPBzAFVdISKrgCHAnMyDXXHFFV+8Hz9+fOLSGTtOe6FRG2nURmqkeJ9o\n5syZzJw5MzqjKHMKbhHpANQCRwJvA68AJ6vqkrR9fgn8Q1WvFJGemJANU9UPMo7lKbgdJyHUN9TT\n5eou1P+kPrJjRpGCu9xVnxpE5FxgOta8/b2qLhGRswlK2QHXALeLyKtY/c4fZ4qZ4zjJIonNTahA\n5XRVfQIYnLHu1rT37wFfK7cdjuNER1IFLQmDAo7jtDFc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc\n0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRpc0BzHqRraraC1\nVMYu2Ge8iMwXkddE5Nly2+Q4TmkkVdDKalFaGbsjgXXAbBGZoqpL0/bpBtwETFTVOhHZpZw2OY5T\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10c1ef9d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(8, 12))\n", | |
"for i in range(6):\n", | |
" plt.subplot(6, 2, 2*i + 1)\n", | |
" plt.plot(pState[:,i])\n", | |
" plt.subplot(6,2,2*i+1)\n", | |
" plt.plot(state_nextsAll[:,i])\n", | |
"plt.tight_layout()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.11" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} | |
@krystynak
Your actions shape has to have a second dimension. For instance, below work and will result in 0,5 empty array:
np.hstack([np.empty(0).reshape(0,4), np.empty(0).reshape(0,1)])
While below will give you your error:
np.hstack([np.empty(0).reshape(0,4),np.empty(0).reshape(0,)])
I wold reshape actions to (-1,1) or initialize it as np.empty(0).reshape(0,1) and append using np.vstack
Hi Arthur,
Thank you very much for making these tutorials! They are awesome!
However there seems to be a number of incompatibilities/bugs in this notebook. I had to make the following modifications to get the notebook running on Tensorflow 1.0.0:
- I had to comment out the line:
from modelAny import *
because neither was any script by the name modelAny provided, nor were any of the resources of the script required by the rest of the code. rnn_cell
seems to be removed fromtensorflow.python.ops
in the current generation. Also this was never used in the rest of the code. So I commented outfrom tensorflow.python.ops import rnn_cell
.tf.concat()
has a different syntax now. I had to make the following modification:
predicted_state = tf.concat([predicted_observation,predicted_reward,predicted_done],1)
tf.mul()
had to be replaced bytf.multiply()
as follows:
done_loss = tf.multiply(predicted_done, true_done) + tf.multiply(1-predicted_done, 1-true_done)
And everything executed as expected :)
Thank you
Anirban
RuntimeWarning: overflow encountered in multiply x = um.multiply(x, x, out=x).
Then the reward starts to have large values like 11062986271742011518222336.000000.
The actions shape can be (0,) i.e. empty and there will be a ValueError when
state_prevs = np.hstack([state_prevs, actions])
I see this error most of the time, and am not sure what to do
when the actions is empty.
World Perf: Episode 106.000000. Reward 15.333333. action: 0.000000. mean reward 24.393341.
actions shape: (1, 1)
state_prevs shape: (1, 4)
actions shape: (0,)
state_prevs shape: (0, 4)
Traceback (most recent call last):
File "ReLearn/rltut3.py", line 191, in
state_prevs = np.hstack([state_prevs,actions])
File "/Users/john/Work/TF/lib/python2.7/site-packages/numpy/core/shape_base.py", line 280, in hstack
return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions