From 5cfb5be18b718a438587d53586078d118a64c715 Mon Sep 17 00:00:00 2001 From: Shangtong Zhang Date: Sat, 19 May 2018 09:36:59 -0600 Subject: [PATCH] Add figure for DDPG with pixels --- README.md | 5 +++-- images/ddpg-pixel.png | Bin 0 -> 27559 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 images/ddpg-pixel.png diff --git a/README.md b/README.md index 2b98a6c..4ab2491 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Implemented algorithms: * Quantile Regression DQN (Distributional DQN with Wasserstein Distance) * Synchronous Advantage Actor Critic (A2C) * Synchronous N-Step Q-Learning -* Deep Deterministic Policy Gradient (DDPG) -* (Continuous/Discrete) Synchronous Proximal Policy Optimization (PPO) +* Deep Deterministic Policy Gradient (DDPG, pixel & low-dim-state) +* (Continuous/Discrete) Synchronous Proximal Policy Optimization (PPO, pixel & low-dim-state) * The Option-Critic Architecture (OC) * Action Conditional Video Prediction @@ -67,6 +67,7 @@ Please use this bibtex if you want to cite this repo ## DDPG ![Loading...](https://raw.githubusercontent.com/ShangtongZhang/DeepRL/master/images/ddpg_continuous-180407-234141.png) +![Loading...](https://raw.githubusercontent.com/ShangtongZhang/DeepRL/master/images/ddpg-pixel.png) ## PPO ![Loading...](https://raw.githubusercontent.com/ShangtongZhang/DeepRL/master/images/ppo_continuous-180408-002056.png) diff --git a/images/ddpg-pixel.png b/images/ddpg-pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2ece89f8cf9583619415a1f88aee5b03fffcfa GIT binary patch literal 27559 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 literal 0 HcmV?d00001