{"action":"created","comment":{"url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/comments/224182307","pull_request_review_id":163487628,"id":224182307,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNDE4MjMwNw==","diff_hunk":"@@ -0,0 +1,240 @@\n+﻿using UnityEngine.MachineLearning.InferenceEngine;\n+using System.Collections.Generic;\n+using System;\n+using UnityEngine.MachineLearning.InferenceEngine.Util;\n+using System.Linq;\n+\n+namespace MLAgents.InferenceBrain\n+{\n+    public interface TensorGenerator\n+    {\n+        void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo);\n+    }\n+\n+    /// <summary>\n+    /// Reshapes a Tensor so that his first diemsion becomes equal to the current batch size\n+    /// and initializes its content to be zeros. Will only work on 2-dimensional tensors.\n+    /// The second dimension of the Tensor will not be modiied.\n+    /// </summary>\n+    public class BiDimensionalOutputGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            var shapeSecondAxis = tensor.Shape[1];\n+            tensor.Shape[0] = batchSize;\n+            if (tensor.ValueType == Tensor.TensorType.FloatingPoint)\n+            {\n+                tensor.Data = new float[batchSize, shapeSecondAxis];\n+            }\n+            else\n+            {\n+                tensor.Data = new int[batchSize, shapeSecondAxis];\n+            }\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the BatchSize input : Will be a one dimensional\n+    /// integer array of size 1 containing the batch size.\n+    /// </summary>\n+    public class BatchSizeGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            tensor.Data = new int[] {batchSize};\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the SequenceLength input : Will be a one\n+    /// dimensional integer array of size 1 containing 1.\n+    /// Note : the sequence length is always one since recurrent networks only predicts for\n+    /// one step at the time.\n+    /// </summary>\n+    public class SequenceLengthGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            tensor.Data = new int[] {1};\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the VectorObservation input : Will be a two\n+    /// dimensional float array of dimension [batchSize x vectorObservationSize].\n+    /// It will use the Vector Observation data contained in the agentInfo to fill the data\n+    /// of the tensor.\n+    /// </summary>\n+    public class VectorObservationGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            tensor.Shape[0] = batchSize;\n+            var vecObsSizeT = tensor.Shape[1];\n+            tensor.Data = new float[batchSize, vecObsSizeT];\n+            var agentIndex = 0;\n+            foreach (var agent in agentInfo.Keys)\n+            {\n+                var vectorObs = agentInfo[agent].stackedVectorObservation;\n+                for (var j = 0; j < vecObsSizeT; j++)\n+                {\n+                    tensor.Data.SetValue(vectorObs[j], new int[2] {agentIndex, j});\n+                }\n+                agentIndex++;\n+            }\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the Recurrent input : Will be a two\n+    /// dimensional float array of dimension [batchSize x memorySize].\n+    /// It will use the Memory data contained in the agentInfo to fill the data\n+    /// of the tensor.\n+    /// </summary>\n+    public class RecurrentInputGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            tensor.Shape[0] = batchSize;\n+            var memorySize = tensor.Shape[1];\n+            tensor.Data = new float[batchSize, memorySize];\n+            var agentIndex = 0;\n+            foreach (var agent in agentInfo.Keys)\n+            {\n+                var memory = agentInfo[agent].memories;\n+                for (var j = 0; j < memorySize; j++)\n+                {\n+                    if (memory == null)\n+                    {\n+                        break;\n+                    }\n+\n+                    if (j >= memory.Count)\n+                    {\n+                        break;\n+                    }\n+                    tensor.Data.SetValue(memory[j], new int[2] {agentIndex, j});\n+                }\n+                agentIndex++;\n+            }\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the Previous Action input : Will be a two\n+    /// dimensional integer array of dimension [batchSize x actionSize].\n+    /// It will use the previous action data contained in the agentInfo to fill the data\n+    /// of the tensor.\n+    /// </summary>\n+    public class PreviousActionInputGenerator : TensorGenerator\n+    {\n+        public void Execute(Tensor tensor, int batchSize, Dictionary<Agent, AgentInfo> agentInfo)\n+        {\n+            if (tensor.ValueType != Tensor.TensorType.Integer)\n+            {\n+                throw new NotImplementedException(\n+                    \"Previous Action Inputs are only valid for discrete control\");\n+            }\n+\n+            tensor.Shape[0] = batchSize;\n+            var actionSize = tensor.Shape[1];\n+            tensor.Data = new int[batchSize, actionSize];\n+            var agentIndex = 0;\n+            foreach (var agent in agentInfo.Keys)\n+            {\n+                var pastAction = agentInfo[agent].storedVectorActions;\n+                for (var j = 0; j < actionSize; j++)\n+                {\n+                    tensor.Data.SetValue((int) pastAction[j], new int[2] {agentIndex, j});\n+                }\n+\n+                agentIndex++;\n+            }\n+        }\n+    }\n+\n+    /// <summary>\n+    /// Generates the Tensor corresponding to the Action Mask input : Will be a two","path":"UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/TensorGenerator.cs","position":157,"original_position":157,"commit_id":"f8ffd22e6612d43dd62105663c6fc98648f160f1","original_commit_id":"f8ffd22e6612d43dd62105663c6fc98648f160f1","user":{"login":"vincentpierre","id":28320361,"node_id":"MDQ6VXNlcjI4MzIwMzYx","avatar_url":"https://avatars3.githubusercontent.com/u/28320361?v=4","gravatar_id":"","url":"https://api.github.com/users/vincentpierre","html_url":"https://github.com/vincentpierre","followers_url":"https://api.github.com/users/vincentpierre/followers","following_url":"https://api.github.com/users/vincentpierre/following{/other_user}","gists_url":"https://api.github.com/users/vincentpierre/gists{/gist_id}","starred_url":"https://api.github.com/users/vincentpierre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vincentpierre/subscriptions","organizations_url":"https://api.github.com/users/vincentpierre/orgs","repos_url":"https://api.github.com/users/vincentpierre/repos","events_url":"https://api.github.com/users/vincentpierre/events{/privacy}","received_events_url":"https://api.github.com/users/vincentpierre/received_events","type":"User","site_admin":false},"body":"Won't fix","created_at":"2018-10-10T18:01:10Z","updated_at":"2018-10-10T18:01:10Z","html_url":"https://github.com/Unity-Technologies/ml-agents/pull/1303#discussion_r224182307","pull_request_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/comments/224182307"},"html":{"href":"https://github.com/Unity-Technologies/ml-agents/pull/1303#discussion_r224182307"},"pull_request":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303"}},"in_reply_to_id":223966894},"pull_request":{"url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303","id":221247336,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIxMjQ3MzM2","html_url":"https://github.com/Unity-Technologies/ml-agents/pull/1303","diff_url":"https://github.com/Unity-Technologies/ml-agents/pull/1303.diff","patch_url":"https://github.com/Unity-Technologies/ml-agents/pull/1303.patch","issue_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/1303","number":1303,"state":"open","locked":false,"title":"New Learning Brain","user":{"login":"vincentpierre","id":28320361,"node_id":"MDQ6VXNlcjI4MzIwMzYx","avatar_url":"https://avatars3.githubusercontent.com/u/28320361?v=4","gravatar_id":"","url":"https://api.github.com/users/vincentpierre","html_url":"https://github.com/vincentpierre","followers_url":"https://api.github.com/users/vincentpierre/followers","following_url":"https://api.github.com/users/vincentpierre/following{/other_user}","gists_url":"https://api.github.com/users/vincentpierre/gists{/gist_id}","starred_url":"https://api.github.com/users/vincentpierre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vincentpierre/subscriptions","organizations_url":"https://api.github.com/users/vincentpierre/orgs","repos_url":"https://api.github.com/users/vincentpierre/repos","events_url":"https://api.github.com/users/vincentpierre/events{/privacy}","received_events_url":"https://api.github.com/users/vincentpierre/received_events","type":"User","site_admin":false},"body":"[Design Doc](https://docs.google.com/document/d/1BjqUWcNWQI18nhjX2CxtXPeteoRCKgryj9jLMk99wjc/edit#heading=h.v7t1ynb2u4tr)\r\n\r\n# API : \r\n - _LearningBrain_ : Left Unchanged\r\n   - **Initialize()** : Left unchanged\r\n   - **DecideAction()** : Left unchanged\r\n   - **GiveModel(Model model, seed = 0)** :  Initializes the Brain with the Model that it will use when selecting actions for the agents\r\n   - **GetModelFailedChecks()** : Return a list of failed checks corresponding to the failed compatibility checks between the Model and the BrainParameters. Note : This does not reload the model. If changes have been made to the BrainParameters or the Model, the model must be reloaded using GiveModel before trying to get the compatibility checks.\r\n - _TensorNodeNames_ : Contains the names of the tensors as expected in the models\r\n - _TensorGenerators_ :  Mapping between Tensor names and generators. A TensorGenerator implements a Dictionary of strings (node names) to an Action. The Action take as argument the tensor, the current batch size and a Dictionary of Agent to AgentInfo corresponding to the current batch. Each Generator reshapes and fills the data of the tensor based of the data of the batch. When the Tensor is an Input to the model, the shape of the Tensor will be modified depending on the current batch size and the data of the Tensor will be filled using the Dictionary of Agent to AgentInfo. When the Tensor is an Output of the model, only the shape of the Tensor will be modified using the current batch size. The data will be prefilled with zeros.\r\n   - **TensorGenerators(BrainParameters bp, RandomNormal randomNormal)**: Creates a tensor generator adapted from the BrainParameters passed as input. The randomNormal input corresponds to the one that will be used to generate the random inputs in the case of continuous control.\r\n - _TensorAppliers_ : Mapping between the output Tensor names and the method that will use the output tensors and the Agents present in the batch to update their action, memories and value estimates. A TensorApplier implements a Dictionary of strings (node names) to an Action. This action takes as input the Tensor and the Dictionary of Agent to AgentInfo for the current batch.\r\n   - **TensorAppliers(BrainParameters bp, Multinomial multinomial)**\r\nCreates a tensor applier adapted from the BrainParameters passed as input. The multinomial input corresponds to the one that will be used to generate the random actions in the case of discrete control.\r\n - _TensorChecks_: Static class : Generates an IEnumerable of string corresponding to the failed compatibility checks between the InferenceEngine and the BrainParameters.\r\n    - **GetChecks(InferenceEngine engine, IEnumerable<Tensor> inputs, IEnumerable<Tensor> outputs, BrainParameters brainParams, long versionModel, long versionBrain, long isContinuousModel, long memoryModel, long actionSizeModel)**\r\n\t\t\r\n# UI : \r\n![ml-agents models with inference api](https://user-images.githubusercontent.com/28320361/46635228-7c46ed00-cb08-11e8-8298-e8b066a820ad.png)\r\n\r\n# TODO : \r\n - [ ] Review \r\n - [ ] Documentation\r\n","created_at":"2018-10-08T21:24:37Z","updated_at":"2018-10-10T18:01:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8944b204369ba6d24ce82cc3558dc45fa7c325a3","assignee":null,"assignees":[],"requested_reviewers":[{"login":"awjuliani","id":9065325,"node_id":"MDQ6VXNlcjkwNjUzMjU=","avatar_url":"https://avatars2.githubusercontent.com/u/9065325?v=4","gravatar_id":"","url":"https://api.github.com/users/awjuliani","html_url":"https://github.com/awjuliani","followers_url":"https://api.github.com/users/awjuliani/followers","following_url":"https://api.github.com/users/awjuliani/following{/other_user}","gists_url":"https://api.github.com/users/awjuliani/gists{/gist_id}","starred_url":"https://api.github.com/users/awjuliani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/awjuliani/subscriptions","organizations_url":"https://api.github.com/users/awjuliani/orgs","repos_url":"https://api.github.com/users/awjuliani/repos","events_url":"https://api.github.com/users/awjuliani/events{/privacy}","received_events_url":"https://api.github.com/users/awjuliani/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303/commits","review_comments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303/comments","review_comment_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/1303/comments","statuses_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/statuses/f8ffd22e6612d43dd62105663c6fc98648f160f1","head":{"label":"Unity-Technologies:develop-learning-brain","ref":"develop-learning-brain","sha":"f8ffd22e6612d43dd62105663c6fc98648f160f1","user":{"login":"Unity-Technologies","id":426196,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyNjE5Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/426196?v=4","gravatar_id":"","url":"https://api.github.com/users/Unity-Technologies","html_url":"https://github.com/Unity-Technologies","followers_url":"https://api.github.com/users/Unity-Technologies/followers","following_url":"https://api.github.com/users/Unity-Technologies/following{/other_user}","gists_url":"https://api.github.com/users/Unity-Technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/Unity-Technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Unity-Technologies/subscriptions","organizations_url":"https://api.github.com/users/Unity-Technologies/orgs","repos_url":"https://api.github.com/users/Unity-Technologies/repos","events_url":"https://api.github.com/users/Unity-Technologies/events{/privacy}","received_events_url":"https://api.github.com/users/Unity-Technologies/received_events","type":"Organization","site_admin":false},"repo":{"id":102904613,"node_id":"MDEwOlJlcG9zaXRvcnkxMDI5MDQ2MTM=","name":"ml-agents","full_name":"Unity-Technologies/ml-agents","private":false,"owner":{"login":"Unity-Technologies","id":426196,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyNjE5Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/426196?v=4","gravatar_id":"","url":"https://api.github.com/users/Unity-Technologies","html_url":"https://github.com/Unity-Technologies","followers_url":"https://api.github.com/users/Unity-Technologies/followers","following_url":"https://api.github.com/users/Unity-Technologies/following{/other_user}","gists_url":"https://api.github.com/users/Unity-Technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/Unity-Technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Unity-Technologies/subscriptions","organizations_url":"https://api.github.com/users/Unity-Technologies/orgs","repos_url":"https://api.github.com/users/Unity-Technologies/repos","events_url":"https://api.github.com/users/Unity-Technologies/events{/privacy}","received_events_url":"https://api.github.com/users/Unity-Technologies/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Unity-Technologies/ml-agents","description":"Unity Machine Learning Agents Toolkit","fork":false,"url":"https://api.github.com/repos/Unity-Technologies/ml-agents","forks_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/forks","keys_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/teams","hooks_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/hooks","issue_events_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/events{/number}","events_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/events","assignees_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/assignees{/user}","branches_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/branches{/branch}","tags_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/tags","blobs_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/refs{/sha}","trees_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/statuses/{sha}","languages_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/languages","stargazers_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/stargazers","contributors_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/contributors","subscribers_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/subscribers","subscription_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/subscription","commits_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/commits{/sha}","git_commits_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/commits{/sha}","comments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/comments{/number}","issue_comment_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/comments{/number}","contents_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/contents/{+path}","compare_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/merges","archive_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/downloads","issues_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues{/number}","pulls_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls{/number}","milestones_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/milestones{/number}","notifications_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/labels{/name}","releases_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/releases{/id}","deployments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/deployments","created_at":"2017-09-08T21:09:04Z","updated_at":"2018-10-10T16:11:37Z","pushed_at":"2018-10-10T17:46:30Z","git_url":"git://github.com/Unity-Technologies/ml-agents.git","ssh_url":"git@github.com:Unity-Technologies/ml-agents.git","clone_url":"https://github.com/Unity-Technologies/ml-agents.git","svn_url":"https://github.com/Unity-Technologies/ml-agents","homepage":"https://unity3d.ai","size":116616,"stargazers_count":4141,"watchers_count":4141,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":957,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":957,"open_issues":128,"watchers":4141,"default_branch":"master"}},"base":{"label":"Unity-Technologies:develop","ref":"develop","sha":"253b3bb169cb0d4f798da78690db7ac6aac3b939","user":{"login":"Unity-Technologies","id":426196,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyNjE5Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/426196?v=4","gravatar_id":"","url":"https://api.github.com/users/Unity-Technologies","html_url":"https://github.com/Unity-Technologies","followers_url":"https://api.github.com/users/Unity-Technologies/followers","following_url":"https://api.github.com/users/Unity-Technologies/following{/other_user}","gists_url":"https://api.github.com/users/Unity-Technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/Unity-Technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Unity-Technologies/subscriptions","organizations_url":"https://api.github.com/users/Unity-Technologies/orgs","repos_url":"https://api.github.com/users/Unity-Technologies/repos","events_url":"https://api.github.com/users/Unity-Technologies/events{/privacy}","received_events_url":"https://api.github.com/users/Unity-Technologies/received_events","type":"Organization","site_admin":false},"repo":{"id":102904613,"node_id":"MDEwOlJlcG9zaXRvcnkxMDI5MDQ2MTM=","name":"ml-agents","full_name":"Unity-Technologies/ml-agents","private":false,"owner":{"login":"Unity-Technologies","id":426196,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyNjE5Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/426196?v=4","gravatar_id":"","url":"https://api.github.com/users/Unity-Technologies","html_url":"https://github.com/Unity-Technologies","followers_url":"https://api.github.com/users/Unity-Technologies/followers","following_url":"https://api.github.com/users/Unity-Technologies/following{/other_user}","gists_url":"https://api.github.com/users/Unity-Technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/Unity-Technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Unity-Technologies/subscriptions","organizations_url":"https://api.github.com/users/Unity-Technologies/orgs","repos_url":"https://api.github.com/users/Unity-Technologies/repos","events_url":"https://api.github.com/users/Unity-Technologies/events{/privacy}","received_events_url":"https://api.github.com/users/Unity-Technologies/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Unity-Technologies/ml-agents","description":"Unity Machine Learning Agents Toolkit","fork":false,"url":"https://api.github.com/repos/Unity-Technologies/ml-agents","forks_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/forks","keys_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/teams","hooks_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/hooks","issue_events_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/events{/number}","events_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/events","assignees_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/assignees{/user}","branches_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/branches{/branch}","tags_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/tags","blobs_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/refs{/sha}","trees_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/statuses/{sha}","languages_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/languages","stargazers_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/stargazers","contributors_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/contributors","subscribers_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/subscribers","subscription_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/subscription","commits_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/commits{/sha}","git_commits_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/git/commits{/sha}","comments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/comments{/number}","issue_comment_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/comments{/number}","contents_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/contents/{+path}","compare_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/merges","archive_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/downloads","issues_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues{/number}","pulls_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls{/number}","milestones_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/milestones{/number}","notifications_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/labels{/name}","releases_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/releases{/id}","deployments_url":"https://api.github.com/repos/Unity-Technologies/ml-agents/deployments","created_at":"2017-09-08T21:09:04Z","updated_at":"2018-10-10T16:11:37Z","pushed_at":"2018-10-10T17:46:30Z","git_url":"git://github.com/Unity-Technologies/ml-agents.git","ssh_url":"git@github.com:Unity-Technologies/ml-agents.git","clone_url":"https://github.com/Unity-Technologies/ml-agents.git","svn_url":"https://github.com/Unity-Technologies/ml-agents","homepage":"https://unity3d.ai","size":116616,"stargazers_count":4141,"watchers_count":4141,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":957,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":957,"open_issues":128,"watchers":4141,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303"},"html":{"href":"https://github.com/Unity-Technologies/ml-agents/pull/1303"},"issue":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/1303"},"comments":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/issues/1303/comments"},"review_comments":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303/comments"},"review_comment":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/pulls/1303/commits"},"statuses":{"href":"https://api.github.com/repos/Unity-Technologies/ml-agents/statuses/f8ffd22e6612d43dd62105663c6fc98648f160f1"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"vincentpierre"}}