From 16cd5de55630685b4b1cb945dcaf51a2baf39f6a Mon Sep 17 00:00:00 2001 From: axk51013 Date: Thu, 9 Nov 2017 23:33:15 +0800 Subject: [PATCH 1/2] finish report --- report.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/report.md b/report.md index 1e5017e..3007fc5 100644 --- a/report.md +++ b/report.md @@ -1,3 +1,52 @@ # Homework3-Policy-Gradient report TA: try to elaborate the algorithms that you implemented and any details worth mentioned. +### Problem 1 +build a two layer NN ++ Code +```python +hidden_layer1 = tf.contrib.layers.fully_connected(self._observations, hidden_dim, activation_fn=tf.tanh) +hidden_layer2 = tf.contrib.layers.fully_connected(hidden_layer1, out_dim, activation_fn=None) +probs = tf.nn.softmax(hidden_layer2) +``` + +### Problem 2 ++ Code +```python +surr_loss = -tf.reduce_mean(tf.multiply(log_prob, self._advantages)) +``` +### Problem 3 +Because we have baseline b and reward r, all we need to do is a = r - b. ++ Code +```python +a = r - b +``` +![](https://i.imgur.com/iVfUkwI.png) ![](https://i.imgur.com/z9AnuHS.png) +Finish at 78 iters, However 4/5 of my training exceed 80 iters, even some of them exceed 100 iters. + +### Problem 4 ++ Code +```python +baseline = None +``` +![](https://i.imgur.com/6EESZ5u.png) ![](https://i.imgur.com/TGzCt8K.png) + +Removing the baseline would'n introduce bias. + +### Problem 5 ++ Code +```python +b_next = np.append(b[1:], 0) +y = x + discount_rate * b_next +``` +![](https://i.imgur.com/jXQSQGi.png) +1[](https://i.imgur.com/javH0dL.png) + +### Problem 6 ++ Code +```python +a = util.discount(a, self.discount_rate * LAMBDA) +``` +![](https://i.imgur.com/yzH4rfr.png) +![](https://i.imgur.com/2F9VqJz.png) + From 76d3b3cf6001db1ace59550538977ae416eec581 Mon Sep 17 00:00:00 2001 From: Oscar860601 Date: Thu, 9 Nov 2017 23:42:39 +0800 Subject: [PATCH 2/2] finish --- Lab3-policy-gradient.ipynb | 477 ++++++++++++++++++------------------- policy_gradient/policy.py | 5 + policy_gradient/util.py | 3 + 3 files changed, 243 insertions(+), 242 deletions(-) diff --git a/Lab3-policy-gradient.ipynb b/Lab3-policy-gradient.ipynb index 4529e50..2cadba0 100644 --- a/Lab3-policy-gradient.ipynb +++ b/Lab3-policy-gradient.ipynb @@ -2,11 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 8, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "# Automatically reload changes to external code\n", "%load_ext autoreload\n", @@ -28,14 +37,16 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": 9, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "[2017-09-12 22:50:43,560] Making new env: CartPole-v0\n" + "[2017-11-09 19:32:30,767] Making new env: CartPole-v0\n" ] } ], @@ -103,14 +114,16 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": 10, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/andrew/miniconda2/envs/cedl/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py:95: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n", + "D:\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\gradients_impl.py:93: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n", " \"Converting sparse IndexedSlices to a dense Tensor of unknown shape. \"\n" ] } @@ -152,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": { "collapsed": true }, @@ -214,6 +227,7 @@ " Sample solution should be only 1 line.\n", " \"\"\"\n", " # YOUR CODE HERE >>>>>>\n", + " a = r - b \n", " # <<<<<<<<\n", "\n", " p[\"returns\"] = r\n", @@ -258,101 +272,11 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration 1: Average Return = 14.85\n", - "Iteration 2: Average Return = 15.59\n", - "Iteration 3: Average Return = 16.61\n", - "Iteration 4: Average Return = 17.43\n", - "Iteration 5: Average Return = 17.08\n", - "Iteration 6: Average Return = 17.24\n", - "Iteration 7: Average Return = 21.3\n", - "Iteration 8: Average Return = 21.42\n", - "Iteration 9: Average Return = 20.62\n", - "Iteration 10: Average Return = 26.82\n", - "Iteration 11: Average Return = 28.0\n", - "Iteration 12: Average Return = 28.41\n", - "Iteration 13: Average Return = 28.96\n", - "Iteration 14: Average Return = 28.15\n", - "Iteration 15: Average Return = 30.64\n", - "Iteration 16: Average Return = 36.2\n", - "Iteration 17: Average Return = 38.13\n", - "Iteration 18: Average Return = 34.5\n", - "Iteration 19: Average Return = 40.37\n", - "Iteration 20: Average Return = 35.78\n", - "Iteration 21: Average Return = 47.81\n", - "Iteration 22: Average Return = 47.21\n", - "Iteration 23: Average Return = 43.34\n", - "Iteration 24: Average Return = 46.1\n", - "Iteration 25: Average Return = 50.25\n", - "Iteration 26: Average Return = 51.02\n", - "Iteration 27: Average Return = 59.81\n", - "Iteration 28: Average Return = 57.49\n", - "Iteration 29: Average Return = 61.39\n", - "Iteration 30: Average Return = 62.26\n", - "Iteration 31: Average Return = 61.98\n", - "Iteration 32: Average Return = 62.16\n", - "Iteration 33: Average Return = 59.89\n", - "Iteration 34: Average Return = 73.46\n", - "Iteration 35: Average Return = 78.51\n", - "Iteration 36: Average Return = 72.79\n", - "Iteration 37: Average Return = 78.74\n", - "Iteration 38: Average Return = 86.95\n", - "Iteration 39: Average Return = 94.08\n", - "Iteration 40: Average Return = 97.58\n", - "Iteration 41: Average Return = 103.42\n", - "Iteration 42: Average Return = 101.17\n", - "Iteration 43: Average Return = 112.39\n", - "Iteration 44: Average Return = 115.09\n", - "Iteration 45: Average Return = 134.65\n", - "Iteration 46: Average Return = 138.92\n", - "Iteration 47: Average Return = 147.15\n", - "Iteration 48: Average Return = 152.35\n", - "Iteration 49: Average Return = 149.66\n", - "Iteration 50: Average Return = 148.15\n", - "Iteration 51: Average Return = 144.82\n", - "Iteration 52: Average Return = 144.43\n", - "Iteration 53: Average Return = 153.21\n", - "Iteration 54: Average Return = 163.66\n", - "Iteration 55: Average Return = 154.28\n", - "Iteration 56: Average Return = 155.07\n", - "Iteration 57: Average Return = 161.53\n", - "Iteration 58: Average Return = 166.28\n", - "Iteration 59: Average Return = 174.05\n", - "Iteration 60: Average Return = 172.8\n", - "Iteration 61: Average Return = 170.78\n", - "Iteration 62: Average Return = 179.58\n", - "Iteration 63: Average Return = 174.84\n", - "Iteration 64: Average Return = 175.74\n", - "Iteration 65: Average Return = 174.99\n", - "Iteration 66: Average Return = 187.7\n", - "Iteration 67: Average Return = 178.94\n", - "Iteration 68: Average Return = 182.74\n", - "Iteration 69: Average Return = 181.42\n", - "Iteration 70: Average Return = 182.19\n", - "Iteration 71: Average Return = 184.58\n", - "Iteration 72: Average Return = 181.9\n", - "Iteration 73: Average Return = 184.29\n", - "Iteration 74: Average Return = 188.8\n", - "Iteration 75: Average Return = 190.46\n", - "Iteration 76: Average Return = 188.89\n", - "Iteration 77: Average Return = 187.9\n", - "Iteration 78: Average Return = 190.19\n", - "Iteration 79: Average Return = 186.28\n", - "Iteration 80: Average Return = 189.1\n", - "Iteration 81: Average Return = 188.16\n", - "Iteration 82: Average Return = 191.32\n", - "Iteration 83: Average Return = 192.03\n", - "Iteration 84: Average Return = 195.45\n", - "Solve at 84 iterations, which equals 8400 episodes.\n" - ] - } - ], + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "sess.run(tf.global_variables_initializer())\n", "\n", @@ -371,30 +295,11 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nyo892QAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "util.plot_curve(loss_list, \"loss\")\n", "util.plot_curve(avg_return_list, \"average return\")" @@ -428,6 +333,136 @@ "Modify the code to compare the variance and performance before and after adding baseline. And explain wht the baseline won't introduce bias. Then, write a report about your findings and explainations. " ] }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration 1: Average Return = 26.49\n", + "Iteration 2: Average Return = 29.43\n", + "Iteration 3: Average Return = 28.48\n", + "Iteration 4: Average Return = 30.64\n", + "Iteration 5: Average Return = 31.16\n", + "Iteration 6: Average Return = 34.4\n", + "Iteration 7: Average Return = 35.76\n", + "Iteration 8: Average Return = 36.66\n", + "Iteration 9: Average Return = 38.88\n", + "Iteration 10: Average Return = 38.69\n", + "Iteration 11: Average Return = 39.65\n", + "Iteration 12: Average Return = 42.97\n", + "Iteration 13: Average Return = 40.22\n", + "Iteration 14: Average Return = 37.81\n", + "Iteration 15: Average Return = 37.11\n", + "Iteration 16: Average Return = 40.78\n", + "Iteration 17: Average Return = 45.22\n", + "Iteration 18: Average Return = 42.94\n", + "Iteration 19: Average Return = 44.96\n", + "Iteration 20: Average Return = 50.13\n", + "Iteration 21: Average Return = 43.86\n", + "Iteration 22: Average Return = 47.98\n", + "Iteration 23: Average Return = 47.68\n", + "Iteration 24: Average Return = 50.6\n", + "Iteration 25: Average Return = 48.18\n", + "Iteration 26: Average Return = 45.84\n", + "Iteration 27: Average Return = 51.54\n", + "Iteration 28: Average Return = 51.42\n", + "Iteration 29: Average Return = 54.96\n", + "Iteration 30: Average Return = 54.22\n", + "Iteration 31: Average Return = 52.35\n", + "Iteration 32: Average Return = 57.42\n", + "Iteration 33: Average Return = 54.51\n", + "Iteration 34: Average Return = 56.61\n", + "Iteration 35: Average Return = 59.1\n", + "Iteration 36: Average Return = 55.35\n", + "Iteration 37: Average Return = 59.0\n", + "Iteration 38: Average Return = 62.88\n", + "Iteration 39: Average Return = 68.58\n", + "Iteration 40: Average Return = 66.9\n", + "Iteration 41: Average Return = 70.28\n", + "Iteration 42: Average Return = 73.51\n", + "Iteration 43: Average Return = 74.84\n", + "Iteration 44: Average Return = 74.57\n", + "Iteration 45: Average Return = 78.6\n", + "Iteration 46: Average Return = 88.02\n", + "Iteration 47: Average Return = 95.04\n", + "Iteration 48: Average Return = 96.09\n", + "Iteration 49: Average Return = 120.65\n", + "Iteration 50: Average Return = 109.07\n", + "Iteration 51: Average Return = 118.15\n", + "Iteration 52: Average Return = 126.82\n", + "Iteration 53: Average Return = 132.28\n", + "Iteration 54: Average Return = 140.52\n", + "Iteration 55: Average Return = 137.18\n", + "Iteration 56: Average Return = 137.32\n", + "Iteration 57: Average Return = 139.21\n", + "Iteration 58: Average Return = 137.17\n", + "Iteration 59: Average Return = 146.89\n", + "Iteration 60: Average Return = 152.25\n", + "Iteration 61: Average Return = 147.36\n", + "Iteration 62: Average Return = 160.62\n", + "Iteration 63: Average Return = 168.33\n", + "Iteration 64: Average Return = 167.81\n", + "Iteration 65: Average Return = 168.95\n", + "Iteration 66: Average Return = 177.16\n", + "Iteration 67: Average Return = 174.9\n", + "Iteration 68: Average Return = 179.34\n", + "Iteration 69: Average Return = 183.06\n", + "Iteration 70: Average Return = 188.12\n", + "Iteration 71: Average Return = 184.22\n", + "Iteration 72: Average Return = 192.08\n", + "Iteration 73: Average Return = 189.34\n", + "Iteration 74: Average Return = 188.61\n", + "Iteration 75: Average Return = 185.63\n", + "Iteration 76: Average Return = 185.77\n", + "Iteration 77: Average Return = 188.0\n", + "Iteration 78: Average Return = 185.48\n", + "Iteration 79: Average Return = 189.75\n", + "Iteration 80: Average Return = 187.06\n", + "Iteration 81: Average Return = 184.95\n", + "Iteration 82: Average Return = 186.36\n", + "Iteration 83: Average Return = 187.36\n", + "Iteration 84: Average Return = 188.36\n", + "Iteration 85: Average Return = 190.38\n", + "Iteration 86: Average Return = 190.97\n", + "Iteration 87: Average Return = 195.71\n", + "Solve at 87 iterations, which equals 8700 episodes.\n" + ] + } + ], + "source": [ + "sess.run(tf.global_variables_initializer())\n", + "\n", + "n_iter = 200\n", + "n_episode = 100\n", + "path_length = 200\n", + "discount_rate = 0.99\n", + "baseline = None\n", + "\n", + "po = PolicyOptimizer(env, policy, baseline, n_iter, n_episode, path_length,\n", + " discount_rate)\n", + "\n", + "# Train the policy optimizer\n", + "loss_list, avg_return_list = po.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "util.plot_curve(loss_list, \"loss\")\n", + "util.plot_curve(avg_return_list, \"average return\")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -477,7 +512,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -523,6 +558,7 @@ " Sample solution should be only 1 line. (you can use `util.discount` in policy_gradient/util.py)\n", " \"\"\"\n", " # YOUR CODE HERE >>>>>>>>\n", + " a = util.discount(a, self.discount_rate * LAMBDA)\n", " # <<<<<<<\n", " p[\"returns\"] = target_v\n", " p[\"baselines\"] = b\n", @@ -543,8 +579,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 38, "metadata": { + "collapsed": false, "scrolled": true }, "outputs": [ @@ -552,90 +589,65 @@ "name": "stdout", "output_type": "stream", "text": [ - "Iteration 1: Average Return = 25.12\n", - "Iteration 2: Average Return = 31.17\n", - "Iteration 3: Average Return = 30.07\n", - "Iteration 4: Average Return = 31.98\n", - "Iteration 5: Average Return = 36.77\n", - "Iteration 6: Average Return = 36.22\n", - "Iteration 7: Average Return = 43.52\n", - "Iteration 8: Average Return = 45.12\n", - "Iteration 9: Average Return = 50.86\n", - "Iteration 10: Average Return = 58.81\n", - "Iteration 11: Average Return = 58.87\n", - "Iteration 12: Average Return = 65.66\n", - "Iteration 13: Average Return = 69.72\n", - "Iteration 14: Average Return = 76.32\n", - "Iteration 15: Average Return = 77.74\n", - "Iteration 16: Average Return = 78.17\n", - "Iteration 17: Average Return = 94.97\n", - "Iteration 18: Average Return = 89.34\n", - "Iteration 19: Average Return = 98.15\n", - "Iteration 20: Average Return = 103.35\n", - "Iteration 21: Average Return = 106.54\n", - "Iteration 22: Average Return = 109.03\n", - "Iteration 23: Average Return = 113.63\n", - "Iteration 24: Average Return = 119.11\n", - "Iteration 25: Average Return = 115.67\n", - "Iteration 26: Average Return = 126.51\n", - "Iteration 27: Average Return = 131.33\n", - "Iteration 28: Average Return = 138.83\n", - "Iteration 29: Average Return = 143.7\n", - "Iteration 30: Average Return = 146.15\n", - "Iteration 31: Average Return = 146.41\n", - "Iteration 32: Average Return = 157.34\n", - "Iteration 33: Average Return = 160.51\n", - "Iteration 34: Average Return = 159.67\n", - "Iteration 35: Average Return = 169.42\n", - "Iteration 36: Average Return = 170.71\n", - "Iteration 37: Average Return = 174.41\n", - "Iteration 38: Average Return = 172.93\n", - "Iteration 39: Average Return = 173.29\n", - "Iteration 40: Average Return = 177.32\n", - "Iteration 41: Average Return = 177.14\n", - "Iteration 42: Average Return = 179.85\n", - "Iteration 43: Average Return = 181.82\n", - "Iteration 44: Average Return = 182.0\n", - "Iteration 45: Average Return = 181.89\n", - "Iteration 46: Average Return = 183.19\n", - "Iteration 47: Average Return = 183.87\n", - "Iteration 48: Average Return = 183.26\n", - "Iteration 49: Average Return = 183.27\n", - "Iteration 50: Average Return = 189.11\n", - "Iteration 51: Average Return = 181.45\n", - "Iteration 52: Average Return = 186.91\n", - "Iteration 53: Average Return = 188.84\n", - "Iteration 54: Average Return = 189.76\n", - "Iteration 55: Average Return = 189.51\n", - "Iteration 56: Average Return = 186.36\n", - "Iteration 57: Average Return = 190.55\n", - "Iteration 58: Average Return = 189.35\n", - "Iteration 59: Average Return = 189.84\n", - "Iteration 60: Average Return = 187.14\n", - "Iteration 61: Average Return = 191.82\n", - "Iteration 62: Average Return = 189.32\n", - "Iteration 63: Average Return = 190.74\n", - "Iteration 64: Average Return = 188.13\n", - "Iteration 65: Average Return = 190.99\n", - "Iteration 66: Average Return = 189.23\n", - "Iteration 67: Average Return = 186.98\n", - "Iteration 68: Average Return = 188.0\n", - "Iteration 69: Average Return = 191.68\n", - "Iteration 70: Average Return = 188.03\n", - "Iteration 71: Average Return = 193.07\n", - "Iteration 72: Average Return = 191.96\n", - "Iteration 73: Average Return = 189.53\n", - "Iteration 74: Average Return = 186.71\n", - "Iteration 75: Average Return = 190.05\n", - "Iteration 76: Average Return = 191.1\n", - "Iteration 77: Average Return = 193.49\n", - "Iteration 78: Average Return = 188.66\n", - "Iteration 79: Average Return = 191.49\n", - "Iteration 80: Average Return = 191.68\n", - "Iteration 81: Average Return = 193.19\n", - "Iteration 82: Average Return = 193.87\n", - "Iteration 83: Average Return = 195.04\n", - "Solve at 83 iterations, which equals 8300 episodes.\n" + "Iteration 1: Average Return = 35.9\n", + "Iteration 2: Average Return = 36.56\n", + "Iteration 3: Average Return = 44.01\n", + "Iteration 4: Average Return = 38.99\n", + "Iteration 5: Average Return = 50.8\n", + "Iteration 6: Average Return = 50.16\n", + "Iteration 7: Average Return = 49.52\n", + "Iteration 8: Average Return = 51.58\n", + "Iteration 9: Average Return = 52.02\n", + "Iteration 10: Average Return = 57.15\n", + "Iteration 11: Average Return = 60.54\n", + "Iteration 12: Average Return = 67.6\n", + "Iteration 13: Average Return = 66.56\n", + "Iteration 14: Average Return = 71.31\n", + "Iteration 15: Average Return = 88.19\n", + "Iteration 16: Average Return = 81.68\n", + "Iteration 17: Average Return = 92.36\n", + "Iteration 18: Average Return = 101.59\n", + "Iteration 19: Average Return = 107.51\n", + "Iteration 20: Average Return = 129.83\n", + "Iteration 21: Average Return = 131.6\n", + "Iteration 22: Average Return = 136.74\n", + "Iteration 23: Average Return = 137.16\n", + "Iteration 24: Average Return = 150.07\n", + "Iteration 25: Average Return = 147.15\n", + "Iteration 26: Average Return = 145.06\n", + "Iteration 27: Average Return = 157.3\n", + "Iteration 28: Average Return = 163.53\n", + "Iteration 29: Average Return = 168.1\n", + "Iteration 30: Average Return = 171.3\n", + "Iteration 31: Average Return = 174.78\n", + "Iteration 32: Average Return = 170.52\n", + "Iteration 33: Average Return = 177.01\n", + "Iteration 34: Average Return = 180.08\n", + "Iteration 35: Average Return = 179.51\n", + "Iteration 36: Average Return = 186.23\n", + "Iteration 37: Average Return = 188.8\n", + "Iteration 38: Average Return = 180.59\n", + "Iteration 39: Average Return = 185.0\n", + "Iteration 40: Average Return = 180.51\n", + "Iteration 41: Average Return = 189.1\n", + "Iteration 42: Average Return = 184.42\n", + "Iteration 43: Average Return = 187.96\n", + "Iteration 44: Average Return = 185.21\n", + "Iteration 45: Average Return = 183.96\n", + "Iteration 46: Average Return = 185.79\n", + "Iteration 47: Average Return = 183.98\n", + "Iteration 48: Average Return = 187.16\n", + "Iteration 49: Average Return = 189.29\n", + "Iteration 50: Average Return = 188.51\n", + "Iteration 51: Average Return = 190.92\n", + "Iteration 52: Average Return = 190.94\n", + "Iteration 53: Average Return = 183.68\n", + "Iteration 54: Average Return = 190.52\n", + "Iteration 55: Average Return = 193.11\n", + "Iteration 56: Average Return = 192.09\n", + "Iteration 57: Average Return = 194.45\n", + "Iteration 58: Average Return = 195.79\n", + "Solve at 58 iterations, which equals 5800 episodes.\n" ] } ], @@ -658,30 +670,11 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nyo892QAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "util.plot_curve(loss_list, \"loss\")\n", "util.plot_curve(avg_return_list, \"average return\")" @@ -699,9 +692,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [Root]", "language": "python", - "name": "python3" + "name": "Python [Root]" }, "language_info": { "codemirror_mode": { @@ -713,7 +706,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.3" + "version": "3.5.1" } }, "nbformat": 4, diff --git a/policy_gradient/policy.py b/policy_gradient/policy.py index 99fecf3..dba19bb 100644 --- a/policy_gradient/policy.py +++ b/policy_gradient/policy.py @@ -29,6 +29,9 @@ def __init__(self, in_dim, out_dim, hidden_dim, optimizer, session): Sample solution is about 2~4 lines. """ + hidden_layer1 = tf.contrib.layers.fully_connected(self._observations, hidden_dim, activation_fn=tf.tanh) + hidden_layer2 = tf.contrib.layers.fully_connected(hidden_layer1, out_dim, activation_fn=None) + probs = tf.nn.softmax(hidden_layer2) # YOUR CODE HERE >>>>>> # <<<<<<<< @@ -74,6 +77,8 @@ def __init__(self, in_dim, out_dim, hidden_dim, optimizer, session): # YOUR CODE HERE >>>>>> # <<<<<<<< + surr_loss = -tf.reduce_mean(tf.multiply(log_prob, self._advantages)) + grads_and_vars = self._opt.compute_gradients(surr_loss) train_op = self._opt.apply_gradients(grads_and_vars, name="train_op") diff --git a/policy_gradient/util.py b/policy_gradient/util.py index 61ef302..dc74f36 100644 --- a/policy_gradient/util.py +++ b/policy_gradient/util.py @@ -32,6 +32,9 @@ def discount_bootstrap(x, discount_rate, b): Sample code should be about 3 lines """ # YOUR CODE >>>>>>>>>>>>>>>>>>> + b_ = np.append(b[1:], 0) + y = np.add(x,discount_rate*b_) + return y # <<<<<<<<<<<<<<<<<<<<<<<<<<<< def plot_curve(data, key, filename=None):