{"action":"created","comment":{"url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/comments/104900736","pull_request_review_id":25754873,"id":104900736,"diff_hunk":"@@ -0,0 +1,196 @@\n+from rl.core import Agent\n+import warnings\n+from copy import deepcopy\n+\n+import numpy as np\n+from keras.callbacks import History\n+\n+from rl.callbacks import TestLogger, TrainEpisodeLogger, TrainIntervalLogger, Visualizer, CallbackList\n+from rl.agents.dqn import mean_q\n+from rl.util import huber_loss\n+from keras.layers import Input, Lambda\n+from keras.models import Model\n+import keras.backend as K\n+from rl.policy import EpsGreedyQPolicy\n+from rl.util import get_object_config\n+\n+\n+class Sarsa(Agent):","path":"rl/agents/sarsa.py","position":18,"original_position":18,"commit_id":"b4e6504b0bd52d669e02f3b80020f1fa179ce043","original_commit_id":"b4e6504b0bd52d669e02f3b80020f1fa179ce043","user":{"login":"raopku","id":20624881,"avatar_url":"https://avatars1.githubusercontent.com/u/20624881?v=3","gravatar_id":"","url":"https://api.github.com/users/raopku","html_url":"https://github.com/raopku","followers_url":"https://api.github.com/users/raopku/followers","following_url":"https://api.github.com/users/raopku/following{/other_user}","gists_url":"https://api.github.com/users/raopku/gists{/gist_id}","starred_url":"https://api.github.com/users/raopku/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raopku/subscriptions","organizations_url":"https://api.github.com/users/raopku/orgs","repos_url":"https://api.github.com/users/raopku/repos","events_url":"https://api.github.com/users/raopku/events{/privacy}","received_events_url":"https://api.github.com/users/raopku/received_events","type":"User","site_admin":false},"body":"Done!","created_at":"2017-03-08T11:45:34Z","updated_at":"2017-03-08T11:45:34Z","html_url":"https://github.com/matthiasplappert/keras-rl/pull/80#discussion_r104900736","pull_request_url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80","_links":{"self":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/comments/104900736"},"html":{"href":"https://github.com/matthiasplappert/keras-rl/pull/80#discussion_r104900736"},"pull_request":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80"}}},"pull_request":{"url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80","id":107333052,"html_url":"https://github.com/matthiasplappert/keras-rl/pull/80","diff_url":"https://github.com/matthiasplappert/keras-rl/pull/80.diff","patch_url":"https://github.com/matthiasplappert/keras-rl/pull/80.patch","issue_url":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/80","number":80,"state":"open","locked":false,"title":"Sarsa","user":{"login":"raopku","id":20624881,"avatar_url":"https://avatars1.githubusercontent.com/u/20624881?v=3","gravatar_id":"","url":"https://api.github.com/users/raopku","html_url":"https://github.com/raopku","followers_url":"https://api.github.com/users/raopku/followers","following_url":"https://api.github.com/users/raopku/following{/other_user}","gists_url":"https://api.github.com/users/raopku/gists{/gist_id}","starred_url":"https://api.github.com/users/raopku/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raopku/subscriptions","organizations_url":"https://api.github.com/users/raopku/orgs","repos_url":"https://api.github.com/users/raopku/repos","events_url":"https://api.github.com/users/raopku/events{/privacy}","received_events_url":"https://api.github.com/users/raopku/received_events","type":"User","site_admin":false},"body":"hi， i try to add sarsa to kera-rl, which is a on policy method. i hope to get your advices.\r\n\r\nsarsa has a good performance as well as dqn in test.\r\nhere is part of the training and test log of sarsa:\r\n\r\n_1.  39160/50000: episode: 569, duration: 0.073s, episode steps: 13, steps per second: 178, episode reward: 13.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.538 [0.000, 1.000], mean observation: -0.102 [-1.508, 1.001], loss: 78.813515, mean_absolute_error: 25.318531, mean_q: 46.006168\r\n2.  39497/50000: episode: 570, duration: 1.759s, episode steps: 337, steps per second: 192, episode reward: 337.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.499 [0.000, 1.000], mean observation: -0.371 [-2.403, 0.846], loss: 5.173460, mean_absolute_error: 25.618706, mean_q: 51.514038\r\n3.  39943/50000: episode: 571, duration: 2.289s, episode steps: 446, steps per second: 195, episode reward: 446.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.498 [0.000, 1.000], mean observation: -0.331 [-2.406, 0.787], loss: 5.497804, mean_absolute_error: 30.704956, mean_q: 61.820629\r\n4.  40336/50000: episode: 572, duration: 2.014s, episode steps: 393, steps per second: 195, episode reward: 393.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.496 [0.000, 1.000], mean observation: -0.325 [-2.404, 0.747], loss: 7.162166, mean_absolute_error: 34.744827, mean_q: 69.789268\r\n5.  40606/50000: episode: 573, duration: 1.399s, episode steps: 270, steps per second: 193, episode reward: 270.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.493 [0.000, 1.000], mean observation: -0.424 [-2.410, 0.839], loss: 10.314215, mean_absolute_error: 35.141079, mean_q: 70.361778\r\n6.  40815/50000: episode: 574, duration: 1.085s, episode steps: 209, steps per second: 193, episode reward: 209.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.488 [0.000, 1.000], mean observation: -0.434 [-2.407, 0.829], loss: 11.722631, mean_absolute_error: 34.661804, mean_q: 69.480194\r\n7.  40972/50000: episode: 575, duration: 0.812s, episode steps: 157, steps per second: 193, episode reward: 157.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.490 [0.000, 1.000], mean observation: -0.477 [-2.411, 0.763], loss: 12.467401, mean_absolute_error: 33.558754, mean_q: 67.255028\r\n8.  41234/50000: episode: 576, duration: 1.349s, episode steps: 262, steps per second: 194, episode reward: 262.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.492 [0.000, 1.000], mean observation: -0.346 [-2.404, 0.669], loss: 7.255551, mean_absolute_error: 32.923386, mean_q: 66.093132\r\n9.  41459/50000: episode: 577, duration: 1.170s, episode steps: 225, steps per second: 192, episode reward: 225.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.489 [0.000, 1.000], mean observation: -0.399 [-2.407, 0.716], loss: 7.881680, mean_absolute_error: 32.571781, mean_q: 65.325783\r\n10.  41618/50000: episode: 578, duration: 0.827s, episode steps: 159, steps per second: 192, episode reward: 159.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.484 [0.000, 1.000], mean observation: -0.461 [-2.422, 0.830], loss: 9.681943, mean_absolute_error: 32.277889, mean_q: 64.637405\r\n11.  41770/50000: episode: 579, duration: 0.796s, episode steps: 152, steps per second: 191, episode reward: 152.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.480 [0.000, 1.000], mean observation: -0.436 [-2.409, 0.703], loss: 8.825049, mean_absolute_error: 31.912720, mean_q: 63.900661\r\n12.  41941/50000: episode: 580, duration: 0.923s, episode steps: 171, steps per second: 185, episode reward: 171.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.485 [0.000, 1.000], mean observation: -0.437 [-2.401, 0.788], loss: 6.073021, mean_absolute_error: 29.318228, mean_q: 59.021816\r\n13.  41961/50000: episode: 581, duration: 0.105s, episode steps: 20, steps per second: 190, episode reward: 20.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.450 [0.000, 1.000], mean observation: -0.100 [-0.777, 0.408], loss: 115.714035, mean_absolute_error: 36.320160, mean_q: 69.197922\r\n14.  42119/50000: episode: 582, duration: 0.834s, episode steps: 158, steps per second: 189, episode reward: 158.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.487 [0.000, 1.000], mean observation: -0.486 [-2.405, 1.014], loss: 5.336740, mean_absolute_error: 25.154266, mean_q: 50.379875\r\n15.  42332/50000: episode: 583, duration: 1.095s, episode steps: 213, steps per second: 194, episode reward: 213.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.493 [0.000, 1.000], mean observation: -0.442 [-2.406, 0.723], loss: 4.218929, mean_absolute_error: 25.599110, mean_q: 51.515762\r\n16.  42592/50000: episode: 584, duration: 1.340s, episode steps: 260, steps per second: 194, episode reward: 260.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.492 [0.000, 1.000], mean observation: -0.403 [-2.408, 1.153], loss: 4.275846, mean_absolute_error: 27.900024, mean_q: 56.208786\r\n17.  42806/50000: episode: 585, duration: 1.099s, episode steps: 214, steps per second: 195, episode reward: 214.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.491 [0.000, 1.000], mean observation: -0.426 [-2.401, 0.662], loss: 5.496417, mean_absolute_error: 29.929241, mean_q: 60.228607\r\n18.  43161/50000: episode: 586, duration: 1.837s, episode steps: 355, steps per second: 193, episode reward: 355.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.496 [0.000, 1.000], mean observation: -0.352 [-2.411, 0.993], loss: 4.180575, mean_absolute_error: 31.831348, mean_q: 64.014320\r\n19.  43407/50000: episode: 587, duration: 1.282s, episode steps: 246, steps per second: 192, episode reward: 246.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.488 [0.000, 1.000], mean observation: -0.368 [-2.416, 0.791], loss: 5.268764, mean_absolute_error: 34.747101, mean_q: 69.731743\r\n20.  43587/50000: episode: 588, duration: 0.930s, episode steps: 180, steps per second: 194, episode reward: 180.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.494 [0.000, 1.000], mean observation: -0.425 [-2.404, 0.976], loss: 4.918419, mean_absolute_error: 32.250721, mean_q: 64.780350\r\n21.  43878/50000: episode: 589, duration: 1.498s, episode steps: 291, steps per second: 194, episode reward: 291.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.495 [0.000, 1.000], mean observation: -0.378 [-2.400, 0.820], loss: 3.559587, mean_absolute_error: 30.955891, mean_q: 62.303963\r\n22.  44085/50000: episode: 590, duration: 1.100s, episode steps: 207, steps per second: 188, episode reward: 207.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.493 [0.000, 1.000], mean observation: -0.423 [-2.402, 1.118], loss: 4.248461, mean_absolute_error: 31.473944, mean_q: 63.114391\r\n23.  44317/50000: episode: 591, duration: 1.210s, episode steps: 232, steps per second: 192, episode reward: 232.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.496 [0.000, 1.000], mean observation: -0.466 [-2.409, 0.790], loss: 4.001917, mean_absolute_error: 28.706333, mean_q: 57.565121\r\n24.  44543/50000: episode: 592, duration: 1.195s, episode steps: 226, steps per second: 189, episode reward: 226.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.487 [0.000, 1.000], mean observation: -0.407 [-2.416, 0.962], loss: 3.740270, mean_absolute_error: 31.419731, mean_q: 62.968628\r\n25.  44586/50000: episode: 593, duration: 0.231s, episode steps: 43, steps per second: 186, episode reward: 43.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.512 [0.000, 1.000], mean observation: -0.122 [-1.466, 0.768], loss: 70.439819, mean_absolute_error: 43.222881, mean_q: 84.397018\r\n26.  45030/50000: episode: 594, duration: 2.319s, episode steps: 444, steps per second: 191, episode reward: 444.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.498 [0.000, 1.000], mean observation: -0.372 [-2.412, 0.932], loss: 2.807137, mean_absolute_error: 27.900322, mean_q: 56.097328\r\n27.  45340/50000: episode: 595, duration: 1.608s, episode steps: 310, steps per second: 193, episode reward: 310.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.494 [0.000, 1.000], mean observation: -0.417 [-2.412, 1.342], loss: 4.111747, mean_absolute_error: 31.967915, mean_q: 64.238747\r\n28.  45359/50000: episode: 596, duration: 0.099s, episode steps: 19, steps per second: 192, episode reward: 19.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.421 [0.000, 1.000], mean observation: -0.092 [-1.229, 0.833], loss: 184.295975, mean_absolute_error: 46.253048, mean_q: 88.515640\r\n29.  45375/50000: episode: 597, duration: 0.085s, episode steps: 16, steps per second: 189, episode reward: 16.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.500 [0.000, 1.000], mean observation: -0.112 [-1.210, 0.736], loss: 139.994568, mean_absolute_error: 40.125668, mean_q: 76.450195\r\n30.  45389/50000: episode: 598, duration: 0.072s, episode steps: 14, steps per second: 194, episode reward: 14.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.500 [0.000, 1.000], mean observation: -0.094 [-1.504, 1.016], loss: 126.419289, mean_absolute_error: 33.818523, mean_q: 63.424053\r\n31.  46669/50000: episode: 599, duration: 6.621s, episode steps: 1280, steps per second: 193, episode reward: 1280.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.499 [0.000, 1.000], mean observation: -0.195 [-2.401, 0.950], loss: 2.423131, mean_absolute_error: 35.562000, mean_q: 71.474716\r\n32.  46682/50000: episode: 600, duration: 0.065s, episode steps: 13, steps per second: 199, episode reward: 13.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.462 [0.000, 1.000], mean observation: 0.108 [-0.590, 1.204], loss: 287.581421, mean_absolute_error: 53.062397, mean_q: 98.143349\r\n33.  46692/50000: episode: 601, duration: 0.051s, episode steps: 10, steps per second: 195, episode reward: 10.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.200 [0.000, 1.000], mean observation: 0.104 [-1.210, 1.947], loss: 178.736511, mean_absolute_error: 42.688896, mean_q: 78.323395\r\n34.  46850/50000: episode: 602, duration: 0.818s, episode steps: 158, steps per second: 193, episode reward: 158.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.468 [0.000, 1.000], mean observation: -0.356 [-2.432, 1.212], loss: 3.939428, mean_absolute_error: 28.380835, mean_q: 56.186005\r\n35.  46860/50000: episode: 603, duration: 0.053s, episode steps: 10, steps per second: 190, episode reward: 10.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.700 [0.000, 1.000], mean observation: -0.101 [-1.826, 1.192], loss: 202.571625, mean_absolute_error: 39.104698, mean_q: 73.624138\r\n36.  46871/50000: episode: 604, duration: 0.058s, episode steps: 11, steps per second: 191, episode reward: 11.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.545 [0.000, 1.000], mean observation: -0.132 [-1.551, 0.931], loss: 122.612541, mean_absolute_error: 33.110775, mean_q: 62.137218\r\n37.  46883/50000: episode: 605, duration: 0.061s, episode steps: 12, steps per second: 198, episode reward: 12.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.500 [0.000, 1.000], mean observation: -0.094 [-1.568, 1.013], loss: 88.018639, mean_absolute_error: 28.947802, mean_q: 53.648243\r\n38.  46894/50000: episode: 606, duration: 0.057s, episode steps: 11, steps per second: 194, episode reward: 11.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.545 [0.000, 1.000], mean observation: -0.128 [-1.579, 0.967], loss: 56.758041, mean_absolute_error: 22.585814, mean_q: 42.552174\r\n39.  47353/50000: episode: 607, duration: 2.335s, episode steps: 459, steps per second: 197, episode reward: 459.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.495 [0.000, 1.000], mean observation: -0.424 [-2.413, 1.143], loss: 2.878763, mean_absolute_error: 19.995998, mean_q: 39.891628\r\n40.  47714/50000: episode: 608, duration: 1.866s, episode steps: 361, steps per second: 194, episode reward: 361.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.496 [0.000, 1.000], mean observation: -0.306 [-2.409, 0.629], loss: 3.910569, mean_absolute_error: 30.068365, mean_q: 60.476444\r\n41.  47966/50000: episode: 609, duration: 1.301s, episode steps: 252, steps per second: 194, episode reward: 252.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.516 [0.000, 1.000], mean observation: 0.287 [-0.982, 2.423], loss: 13.914490, mean_absolute_error: 38.089821, mean_q: 76.123962\r\n42.  48404/50000: episode: 610, duration: 2.260s, episode steps: 438, steps per second: 194, episode reward: 438.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.493 [0.000, 1.000], mean observation: -0.273 [-2.417, 0.770], loss: 4.556427, mean_absolute_error: 33.880352, mean_q: 68.118507\r\n43.  48679/50000: episode: 611, duration: 1.398s, episode steps: 275, steps per second: 197, episode reward: 275.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.491 [0.000, 1.000], mean observation: -0.341 [-2.407, 0.780], loss: 6.272665, mean_absolute_error: 34.596462, mean_q: 69.608238\r\n44.  48915/50000: episode: 612, duration: 1.207s, episode steps: 236, steps per second: 195, episode reward: 236.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.492 [0.000, 1.000], mean observation: -0.400 [-2.416, 0.765], loss: 6.228085, mean_absolute_error: 32.595016, mean_q: 65.591354\r\n45.  49210/50000: episode: 613, duration: 1.505s, episode steps: 295, steps per second: 196, episode reward: 295.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.495 [0.000, 1.000], mean observation: -0.322 [-2.401, 0.652], loss: 4.664176, mean_absolute_error: 34.195961, mean_q: 68.738914\r\n46.  49507/50000: episode: 614, duration: 1.582s, episode steps: 297, steps per second: 188, episode reward: 297.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.495 [0.000, 1.000], mean observation: -0.337 [-2.404, 0.697], loss: 4.632622, mean_absolute_error: 33.983124, mean_q: 68.312134\r\n47.  49948/50000: episode: 615, duration: 2.280s, episode steps: 441, steps per second: 193, episode reward: 441.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.497 [0.000, 1.000], mean observation: -0.316 [-2.406, 0.781], loss: 3.973557, mean_absolute_error: 35.319050, mean_q: 71.031212\r\n48. done, took 261.086 seconds\r\n49. Testing for 5 episodes ...\r\n50. Episode 1: reward: 832.000, steps: 832\r\n51. Episode 2: reward: 597.000, steps: 597\r\n52. Episode 3: reward: 752.000, steps: 752\r\n53. Episode 4: reward: 656.000, steps: 656\r\n54. Episode 5: reward: 598.000, steps: 598_\r\n\r\n\r\nsome key point of this implement, i hope for your advices:\r\n\r\n- update after every experience, following the action which is actually taken. Memory is disabled.\r\n\r\n- add a 'nextState' parameter in backward method. the nextState is needed in Sarsa Update formula, however the nextState was not stored by fit(), backward(), and test().\r\n\r\n- record the nextAction in backward method. when in forward process, if the nextAction exists, return the nextAction which makes sure the agent learning from the experiences on policy\r\n\r\n- target model is disabled. i think there is no need for a target model from the update formula of sarsa algorithm.\r\n\r\n\r\n\r\n","created_at":"2017-02-22T04:25:59Z","updated_at":"2017-03-08T11:45:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a29f15087b35851a46086b8a36d85ba7879b16af","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80/commits","review_comments_url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80/comments","review_comment_url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/80/comments","statuses_url":"https://api.github.com/repos/matthiasplappert/keras-rl/statuses/b4e6504b0bd52d669e02f3b80020f1fa179ce043","head":{"label":"raopku:sarsa","ref":"sarsa","sha":"b4e6504b0bd52d669e02f3b80020f1fa179ce043","user":{"login":"raopku","id":20624881,"avatar_url":"https://avatars1.githubusercontent.com/u/20624881?v=3","gravatar_id":"","url":"https://api.github.com/users/raopku","html_url":"https://github.com/raopku","followers_url":"https://api.github.com/users/raopku/followers","following_url":"https://api.github.com/users/raopku/following{/other_user}","gists_url":"https://api.github.com/users/raopku/gists{/gist_id}","starred_url":"https://api.github.com/users/raopku/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raopku/subscriptions","organizations_url":"https://api.github.com/users/raopku/orgs","repos_url":"https://api.github.com/users/raopku/repos","events_url":"https://api.github.com/users/raopku/events{/privacy}","received_events_url":"https://api.github.com/users/raopku/received_events","type":"User","site_admin":false},"repo":{"id":78392259,"name":"keras-rl","full_name":"raopku/keras-rl","owner":{"login":"raopku","id":20624881,"avatar_url":"https://avatars1.githubusercontent.com/u/20624881?v=3","gravatar_id":"","url":"https://api.github.com/users/raopku","html_url":"https://github.com/raopku","followers_url":"https://api.github.com/users/raopku/followers","following_url":"https://api.github.com/users/raopku/following{/other_user}","gists_url":"https://api.github.com/users/raopku/gists{/gist_id}","starred_url":"https://api.github.com/users/raopku/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raopku/subscriptions","organizations_url":"https://api.github.com/users/raopku/orgs","repos_url":"https://api.github.com/users/raopku/repos","events_url":"https://api.github.com/users/raopku/events{/privacy}","received_events_url":"https://api.github.com/users/raopku/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/raopku/keras-rl","description":"Deep Reinforcement Learning for Keras.","fork":true,"url":"https://api.github.com/repos/raopku/keras-rl","forks_url":"https://api.github.com/repos/raopku/keras-rl/forks","keys_url":"https://api.github.com/repos/raopku/keras-rl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/raopku/keras-rl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/raopku/keras-rl/teams","hooks_url":"https://api.github.com/repos/raopku/keras-rl/hooks","issue_events_url":"https://api.github.com/repos/raopku/keras-rl/issues/events{/number}","events_url":"https://api.github.com/repos/raopku/keras-rl/events","assignees_url":"https://api.github.com/repos/raopku/keras-rl/assignees{/user}","branches_url":"https://api.github.com/repos/raopku/keras-rl/branches{/branch}","tags_url":"https://api.github.com/repos/raopku/keras-rl/tags","blobs_url":"https://api.github.com/repos/raopku/keras-rl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/raopku/keras-rl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/raopku/keras-rl/git/refs{/sha}","trees_url":"https://api.github.com/repos/raopku/keras-rl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/raopku/keras-rl/statuses/{sha}","languages_url":"https://api.github.com/repos/raopku/keras-rl/languages","stargazers_url":"https://api.github.com/repos/raopku/keras-rl/stargazers","contributors_url":"https://api.github.com/repos/raopku/keras-rl/contributors","subscribers_url":"https://api.github.com/repos/raopku/keras-rl/subscribers","subscription_url":"https://api.github.com/repos/raopku/keras-rl/subscription","commits_url":"https://api.github.com/repos/raopku/keras-rl/commits{/sha}","git_commits_url":"https://api.github.com/repos/raopku/keras-rl/git/commits{/sha}","comments_url":"https://api.github.com/repos/raopku/keras-rl/comments{/number}","issue_comment_url":"https://api.github.com/repos/raopku/keras-rl/issues/comments{/number}","contents_url":"https://api.github.com/repos/raopku/keras-rl/contents/{+path}","compare_url":"https://api.github.com/repos/raopku/keras-rl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/raopku/keras-rl/merges","archive_url":"https://api.github.com/repos/raopku/keras-rl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/raopku/keras-rl/downloads","issues_url":"https://api.github.com/repos/raopku/keras-rl/issues{/number}","pulls_url":"https://api.github.com/repos/raopku/keras-rl/pulls{/number}","milestones_url":"https://api.github.com/repos/raopku/keras-rl/milestones{/number}","notifications_url":"https://api.github.com/repos/raopku/keras-rl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/raopku/keras-rl/labels{/name}","releases_url":"https://api.github.com/repos/raopku/keras-rl/releases{/id}","deployments_url":"https://api.github.com/repos/raopku/keras-rl/deployments","created_at":"2017-01-09T03:56:41Z","updated_at":"2017-02-22T09:09:33Z","pushed_at":"2017-03-08T03:42:36Z","git_url":"git://github.com/raopku/keras-rl.git","ssh_url":"git@github.com:raopku/keras-rl.git","clone_url":"https://github.com/raopku/keras-rl.git","svn_url":"https://github.com/raopku/keras-rl","homepage":"","size":1207,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"matthiasplappert:master","ref":"master","sha":"ed1d3e1fbabe0c07ca8a7d50af342a17af235fc2","user":{"login":"matthiasplappert","id":124243,"avatar_url":"https://avatars1.githubusercontent.com/u/124243?v=3","gravatar_id":"","url":"https://api.github.com/users/matthiasplappert","html_url":"https://github.com/matthiasplappert","followers_url":"https://api.github.com/users/matthiasplappert/followers","following_url":"https://api.github.com/users/matthiasplappert/following{/other_user}","gists_url":"https://api.github.com/users/matthiasplappert/gists{/gist_id}","starred_url":"https://api.github.com/users/matthiasplappert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthiasplappert/subscriptions","organizations_url":"https://api.github.com/users/matthiasplappert/orgs","repos_url":"https://api.github.com/users/matthiasplappert/repos","events_url":"https://api.github.com/users/matthiasplappert/events{/privacy}","received_events_url":"https://api.github.com/users/matthiasplappert/received_events","type":"User","site_admin":false},"repo":{"id":62458409,"name":"keras-rl","full_name":"matthiasplappert/keras-rl","owner":{"login":"matthiasplappert","id":124243,"avatar_url":"https://avatars1.githubusercontent.com/u/124243?v=3","gravatar_id":"","url":"https://api.github.com/users/matthiasplappert","html_url":"https://github.com/matthiasplappert","followers_url":"https://api.github.com/users/matthiasplappert/followers","following_url":"https://api.github.com/users/matthiasplappert/following{/other_user}","gists_url":"https://api.github.com/users/matthiasplappert/gists{/gist_id}","starred_url":"https://api.github.com/users/matthiasplappert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthiasplappert/subscriptions","organizations_url":"https://api.github.com/users/matthiasplappert/orgs","repos_url":"https://api.github.com/users/matthiasplappert/repos","events_url":"https://api.github.com/users/matthiasplappert/events{/privacy}","received_events_url":"https://api.github.com/users/matthiasplappert/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/matthiasplappert/keras-rl","description":"Deep Reinforcement Learning for Keras.","fork":false,"url":"https://api.github.com/repos/matthiasplappert/keras-rl","forks_url":"https://api.github.com/repos/matthiasplappert/keras-rl/forks","keys_url":"https://api.github.com/repos/matthiasplappert/keras-rl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/matthiasplappert/keras-rl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/matthiasplappert/keras-rl/teams","hooks_url":"https://api.github.com/repos/matthiasplappert/keras-rl/hooks","issue_events_url":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/events{/number}","events_url":"https://api.github.com/repos/matthiasplappert/keras-rl/events","assignees_url":"https://api.github.com/repos/matthiasplappert/keras-rl/assignees{/user}","branches_url":"https://api.github.com/repos/matthiasplappert/keras-rl/branches{/branch}","tags_url":"https://api.github.com/repos/matthiasplappert/keras-rl/tags","blobs_url":"https://api.github.com/repos/matthiasplappert/keras-rl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/matthiasplappert/keras-rl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/matthiasplappert/keras-rl/git/refs{/sha}","trees_url":"https://api.github.com/repos/matthiasplappert/keras-rl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/matthiasplappert/keras-rl/statuses/{sha}","languages_url":"https://api.github.com/repos/matthiasplappert/keras-rl/languages","stargazers_url":"https://api.github.com/repos/matthiasplappert/keras-rl/stargazers","contributors_url":"https://api.github.com/repos/matthiasplappert/keras-rl/contributors","subscribers_url":"https://api.github.com/repos/matthiasplappert/keras-rl/subscribers","subscription_url":"https://api.github.com/repos/matthiasplappert/keras-rl/subscription","commits_url":"https://api.github.com/repos/matthiasplappert/keras-rl/commits{/sha}","git_commits_url":"https://api.github.com/repos/matthiasplappert/keras-rl/git/commits{/sha}","comments_url":"https://api.github.com/repos/matthiasplappert/keras-rl/comments{/number}","issue_comment_url":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/comments{/number}","contents_url":"https://api.github.com/repos/matthiasplappert/keras-rl/contents/{+path}","compare_url":"https://api.github.com/repos/matthiasplappert/keras-rl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/matthiasplappert/keras-rl/merges","archive_url":"https://api.github.com/repos/matthiasplappert/keras-rl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/matthiasplappert/keras-rl/downloads","issues_url":"https://api.github.com/repos/matthiasplappert/keras-rl/issues{/number}","pulls_url":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls{/number}","milestones_url":"https://api.github.com/repos/matthiasplappert/keras-rl/milestones{/number}","notifications_url":"https://api.github.com/repos/matthiasplappert/keras-rl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/matthiasplappert/keras-rl/labels{/name}","releases_url":"https://api.github.com/repos/matthiasplappert/keras-rl/releases{/id}","deployments_url":"https://api.github.com/repos/matthiasplappert/keras-rl/deployments","created_at":"2016-07-02T15:53:12Z","updated_at":"2017-03-08T06:50:51Z","pushed_at":"2017-03-08T08:49:47Z","git_url":"git://github.com/matthiasplappert/keras-rl.git","ssh_url":"git@github.com:matthiasplappert/keras-rl.git","clone_url":"https://github.com/matthiasplappert/keras-rl.git","svn_url":"https://github.com/matthiasplappert/keras-rl","homepage":"","size":1189,"stargazers_count":1017,"watchers_count":1017,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":177,"mirror_url":null,"open_issues_count":23,"forks":177,"open_issues":23,"watchers":1017,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80"},"html":{"href":"https://github.com/matthiasplappert/keras-rl/pull/80"},"issue":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/80"},"comments":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/issues/80/comments"},"review_comments":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80/comments"},"review_comment":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/pulls/80/commits"},"statuses":{"href":"https://api.github.com/repos/matthiasplappert/keras-rl/statuses/b4e6504b0bd52d669e02f3b80020f1fa179ce043"}}}}
{"actor":{"display_login":"raopku"}}