{"action":"created","comment":{"url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/comments/202575307","pull_request_review_id":137301445,"id":202575307,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMjU3NTMwNw==","diff_hunk":"@@ -0,0 +1,850 @@\n+/*\n+ * Copyright 2018 Analytics Zoo Authors.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *     http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package com.intel.analytics.zoo.pipeline.api.keras.layers.b\n+\n+import com.intel.analytics.bigdl._\n+import com.intel.analytics.bigdl.nn.abstractnn.{AbstractModule, Activity, TensorModule}\n+import com.intel.analytics.bigdl.nn.keras.{Recurrent => BKerasRecurrent}\n+import com.intel.analytics.bigdl.nn.{BatchNormParams, BatchNormalization, Cell, Container, Dropout, DynamicContainer, MultiRNNCell, TimeDistributed, Utils, Sequential => TSequential}\n+import com.intel.analytics.bigdl.serialization.Bigdl.{AttrValue, BigDLModule}\n+import com.intel.analytics.bigdl.tensor.Tensor\n+import com.intel.analytics.bigdl.tensor.TensorNumericMath.TensorNumeric\n+import com.intel.analytics.bigdl.utils.serializer.converters.DataConverter\n+import com.intel.analytics.bigdl.utils.serializer.{ContainerSerializable, ModuleSerializer, _}\n+import com.intel.analytics.bigdl.utils.{T, Table}\n+\n+import scala.collection.mutable.ArrayBuffer\n+import scala.reflect.ClassTag\n+import scala.reflect.runtime.universe\n+\n+/**\n+ * [[Recurrent]] module is a container of rnn cells\n+ * Different types of rnn cells can be added using add() function\n+ *\n+ * The recurrent includes some mask mechanisms\n+ * if the `maskZero` variable is set to true, the `Recurrent` module will\n+ * not consider zero vector inputs. For each time step input, if a certain row is\n+ * a zero vector (all the elements of the vector equals zero), then output of certain row\n+ * of this time step would be a zero vector, and the hidden state of the certain row of\n+ * this time step would be the same as the corresponding row of the hidden state of the\n+ * previous step.\n+ *\n+ */\n+// NB: This is a copy from BigDL. We can remove this once update to BigDL 0.7.0\n+// There are fields like outputBuffers is private, so we cannot simply override\n+// the cloneCell method just like: BigDL/pull/2585/\n+\n+private[zoo] class Recurrent[T: ClassTag](\n+    var batchNormParams: BatchNormParams[T] = null,\n+    var maskZero: Boolean = false\n+)\n+  (implicit ev: TensorNumeric[T]) extends DynamicContainer[Tensor[T], Tensor[T], T] {\n+\n+  protected var hidden: Activity = null\n+  protected var gradHidden: Activity = null\n+  protected var hiddenShape: Array[Int] = null\n+  protected var currentInput = T()\n+  protected val currentGradOutput = T()\n+  protected val gradInput2Cell = Tensor[T]()\n+  protected var input2Cell = Tensor[T]()\n+  protected var _input = T()\n+  protected val batchDim = Recurrent.batchDim\n+  protected val timeDim = Recurrent.timeDim\n+  protected val inputDim = 1\n+  protected val hidDim = 2\n+  protected var (batchSize, times) = (0, 0)\n+  protected var topology: Cell[T] = null\n+  protected val stepInput2CellBuf = Tensor[T]()\n+  protected val stepGradBuffer = Tensor[T]()\n+  protected var preTopology: AbstractModule[Activity, Activity, T] = null\n+  private val dropouts: ArrayBuffer[Array[Dropout[T]]] =\n+    new ArrayBuffer[Array[Dropout[T]]]\n+  private var layer: TensorModule[T] = null\n+  private var maskBuffer: Tensor[T] = Tensor()\n+  private var gradOutputBuff: Table = T()\n+  private var indexBuffer: Tensor[T] = Tensor()\n+  private var inputBuffer: Tensor[T] = Tensor()\n+  private var outputBuffers: ArrayBuffer[Tensor[T]] = ArrayBuffer(Tensor())\n+  private var minLength: Int = 0\n+\n+  /**\n+   *\n+   *  modules: -- preTopology\n+   *           |- BatchNormalization (optional)\n+   *           |- topology (cell)\n+   *\n+   * The topology (or cell) will be cloned for N times w.r.t the time dimension.\n+   * The preTopology will be execute only once before the recurrence.\n+   *\n+   * @param module module to be add\n+   * @return this container\n+   */\n+  override def add(module: AbstractModule[_ <: Activity, _ <: Activity, T]): this.type = {\n+    require(module.isInstanceOf[Cell[T]],\n+      \"Recurrent: added module should be Cell type!\")\n+    require(!module.isInstanceOf[MultiRNNCell[T]],\n+      \"Recurrent: added module cannot be MultiRNNCell,\" +\n+        \"use Sequential().add(Recurrent(cell)).add(Recurrent(cell))... instead!\")\n+\n+    topology = module.asInstanceOf[Cell[T]]\n+    preTopology = if (topology.preTopology != null) {","path":"zoo/src/main/scala/com/intel/analytics/zoo/pipeline/api/keras/layers/TorchRecurrent.scala","position":104,"original_position":104,"commit_id":"0708d8e0412032a6dcd79b3fc527f1921c69a13c","original_commit_id":"0708d8e0412032a6dcd79b3fc527f1921c69a13c","user":{"login":"jason-dai","id":1931082,"node_id":"MDQ6VXNlcjE5MzEwODI=","avatar_url":"https://avatars3.githubusercontent.com/u/1931082?v=4","gravatar_id":"","url":"https://api.github.com/users/jason-dai","html_url":"https://github.com/jason-dai","followers_url":"https://api.github.com/users/jason-dai/followers","following_url":"https://api.github.com/users/jason-dai/following{/other_user}","gists_url":"https://api.github.com/users/jason-dai/gists{/gist_id}","starred_url":"https://api.github.com/users/jason-dai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jason-dai/subscriptions","organizations_url":"https://api.github.com/users/jason-dai/orgs","repos_url":"https://api.github.com/users/jason-dai/repos","events_url":"https://api.github.com/users/jason-dai/events{/privacy}","received_events_url":"https://api.github.com/users/jason-dai/received_events","type":"User","site_admin":false},"body":"We can simply set `topology.preTopology` to null here? @dding3 ","created_at":"2018-07-16T05:13:43Z","updated_at":"2018-07-16T05:13:43Z","html_url":"https://github.com/intel-analytics/analytics-zoo/pull/518#discussion_r202575307","pull_request_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/comments/202575307"},"html":{"href":"https://github.com/intel-analytics/analytics-zoo/pull/518#discussion_r202575307"},"pull_request":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518"}}},"pull_request":{"url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518","id":201224706,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAxMjI0NzA2","html_url":"https://github.com/intel-analytics/analytics-zoo/pull/518","diff_url":"https://github.com/intel-analytics/analytics-zoo/pull/518.diff","patch_url":"https://github.com/intel-analytics/analytics-zoo/pull/518.patch","issue_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/518","number":518,"state":"open","locked":false,"title":"Add Recurrent Layer for Keras API","user":{"login":"zhichao-li","id":2662017,"node_id":"MDQ6VXNlcjI2NjIwMTc=","avatar_url":"https://avatars3.githubusercontent.com/u/2662017?v=4","gravatar_id":"","url":"https://api.github.com/users/zhichao-li","html_url":"https://github.com/zhichao-li","followers_url":"https://api.github.com/users/zhichao-li/followers","following_url":"https://api.github.com/users/zhichao-li/following{/other_user}","gists_url":"https://api.github.com/users/zhichao-li/gists{/gist_id}","starred_url":"https://api.github.com/users/zhichao-li/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhichao-li/subscriptions","organizations_url":"https://api.github.com/users/zhichao-li/orgs","repos_url":"https://api.github.com/users/zhichao-li/repos","events_url":"https://api.github.com/users/zhichao-li/events{/privacy}","received_events_url":"https://api.github.com/users/zhichao-li/received_events","type":"User","site_admin":false},"body":"https://github.com/intel-analytics/zoo/issues/335","created_at":"2018-07-13T08:44:20Z","updated_at":"2018-07-16T05:13:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"11b16ffe61bb414cf8ffaa737f3efddb13f69e43","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518/commits","review_comments_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518/comments","review_comment_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/518/comments","statuses_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/statuses/0708d8e0412032a6dcd79b3fc527f1921c69a13c","head":{"label":"zhichao-li:recurrent","ref":"recurrent","sha":"0708d8e0412032a6dcd79b3fc527f1921c69a13c","user":{"login":"zhichao-li","id":2662017,"node_id":"MDQ6VXNlcjI2NjIwMTc=","avatar_url":"https://avatars3.githubusercontent.com/u/2662017?v=4","gravatar_id":"","url":"https://api.github.com/users/zhichao-li","html_url":"https://github.com/zhichao-li","followers_url":"https://api.github.com/users/zhichao-li/followers","following_url":"https://api.github.com/users/zhichao-li/following{/other_user}","gists_url":"https://api.github.com/users/zhichao-li/gists{/gist_id}","starred_url":"https://api.github.com/users/zhichao-li/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhichao-li/subscriptions","organizations_url":"https://api.github.com/users/zhichao-li/orgs","repos_url":"https://api.github.com/users/zhichao-li/repos","events_url":"https://api.github.com/users/zhichao-li/events{/privacy}","received_events_url":"https://api.github.com/users/zhichao-li/received_events","type":"User","site_admin":false},"repo":{"id":132566623,"node_id":"MDEwOlJlcG9zaXRvcnkxMzI1NjY2MjM=","name":"analytics-zoo","full_name":"zhichao-li/analytics-zoo","owner":{"login":"zhichao-li","id":2662017,"node_id":"MDQ6VXNlcjI2NjIwMTc=","avatar_url":"https://avatars3.githubusercontent.com/u/2662017?v=4","gravatar_id":"","url":"https://api.github.com/users/zhichao-li","html_url":"https://github.com/zhichao-li","followers_url":"https://api.github.com/users/zhichao-li/followers","following_url":"https://api.github.com/users/zhichao-li/following{/other_user}","gists_url":"https://api.github.com/users/zhichao-li/gists{/gist_id}","starred_url":"https://api.github.com/users/zhichao-li/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhichao-li/subscriptions","organizations_url":"https://api.github.com/users/zhichao-li/orgs","repos_url":"https://api.github.com/users/zhichao-li/repos","events_url":"https://api.github.com/users/zhichao-li/events{/privacy}","received_events_url":"https://api.github.com/users/zhichao-li/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zhichao-li/analytics-zoo","description":"Analytics + AI Platform for Apache Spark and BigDL","fork":true,"url":"https://api.github.com/repos/zhichao-li/analytics-zoo","forks_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/forks","keys_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/teams","hooks_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/hooks","issue_events_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/issues/events{/number}","events_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/events","assignees_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/assignees{/user}","branches_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/branches{/branch}","tags_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/tags","blobs_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/statuses/{sha}","languages_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/languages","stargazers_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/stargazers","contributors_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/contributors","subscribers_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/subscribers","subscription_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/subscription","commits_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/contents/{+path}","compare_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/merges","archive_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/downloads","issues_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/issues{/number}","pulls_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/pulls{/number}","milestones_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/milestones{/number}","notifications_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/labels{/name}","releases_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/releases{/id}","deployments_url":"https://api.github.com/repos/zhichao-li/analytics-zoo/deployments","created_at":"2018-05-08T06:49:34Z","updated_at":"2018-05-08T06:49:37Z","pushed_at":"2018-07-13T10:18:58Z","git_url":"git://github.com/zhichao-li/analytics-zoo.git","ssh_url":"git@github.com:zhichao-li/analytics-zoo.git","clone_url":"https://github.com/zhichao-li/analytics-zoo.git","svn_url":"https://github.com/zhichao-li/analytics-zoo","homepage":"","size":108950,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"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":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"intel-analytics:master","ref":"master","sha":"13e47b91b28fe820dccb587435231883f496401f","user":{"login":"intel-analytics","id":10941215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwOTQxMjE1","avatar_url":"https://avatars3.githubusercontent.com/u/10941215?v=4","gravatar_id":"","url":"https://api.github.com/users/intel-analytics","html_url":"https://github.com/intel-analytics","followers_url":"https://api.github.com/users/intel-analytics/followers","following_url":"https://api.github.com/users/intel-analytics/following{/other_user}","gists_url":"https://api.github.com/users/intel-analytics/gists{/gist_id}","starred_url":"https://api.github.com/users/intel-analytics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/intel-analytics/subscriptions","organizations_url":"https://api.github.com/users/intel-analytics/orgs","repos_url":"https://api.github.com/users/intel-analytics/repos","events_url":"https://api.github.com/users/intel-analytics/events{/privacy}","received_events_url":"https://api.github.com/users/intel-analytics/received_events","type":"Organization","site_admin":false},"repo":{"id":90328920,"node_id":"MDEwOlJlcG9zaXRvcnk5MDMyODkyMA==","name":"analytics-zoo","full_name":"intel-analytics/analytics-zoo","owner":{"login":"intel-analytics","id":10941215,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwOTQxMjE1","avatar_url":"https://avatars3.githubusercontent.com/u/10941215?v=4","gravatar_id":"","url":"https://api.github.com/users/intel-analytics","html_url":"https://github.com/intel-analytics","followers_url":"https://api.github.com/users/intel-analytics/followers","following_url":"https://api.github.com/users/intel-analytics/following{/other_user}","gists_url":"https://api.github.com/users/intel-analytics/gists{/gist_id}","starred_url":"https://api.github.com/users/intel-analytics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/intel-analytics/subscriptions","organizations_url":"https://api.github.com/users/intel-analytics/orgs","repos_url":"https://api.github.com/users/intel-analytics/repos","events_url":"https://api.github.com/users/intel-analytics/events{/privacy}","received_events_url":"https://api.github.com/users/intel-analytics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/intel-analytics/analytics-zoo","description":"Analytics + AI Platform for Apache Spark and BigDL","fork":false,"url":"https://api.github.com/repos/intel-analytics/analytics-zoo","forks_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/forks","keys_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/teams","hooks_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/hooks","issue_events_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/events{/number}","events_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/events","assignees_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/assignees{/user}","branches_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/branches{/branch}","tags_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/tags","blobs_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/statuses/{sha}","languages_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/languages","stargazers_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/stargazers","contributors_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/contributors","subscribers_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/subscribers","subscription_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/subscription","commits_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/contents/{+path}","compare_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/merges","archive_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/downloads","issues_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues{/number}","pulls_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls{/number}","milestones_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/milestones{/number}","notifications_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/labels{/name}","releases_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/releases{/id}","deployments_url":"https://api.github.com/repos/intel-analytics/analytics-zoo/deployments","created_at":"2017-05-05T02:27:30Z","updated_at":"2018-07-16T03:31:16Z","pushed_at":"2018-07-16T05:11:28Z","git_url":"git://github.com/intel-analytics/analytics-zoo.git","ssh_url":"git@github.com:intel-analytics/analytics-zoo.git","clone_url":"https://github.com/intel-analytics/analytics-zoo.git","svn_url":"https://github.com/intel-analytics/analytics-zoo","homepage":"https://analytics-zoo.github.io","size":108874,"stargazers_count":72,"watchers_count":72,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":61,"mirror_url":null,"archived":false,"open_issues_count":49,"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":61,"open_issues":49,"watchers":72,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518"},"html":{"href":"https://github.com/intel-analytics/analytics-zoo/pull/518"},"issue":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/518"},"comments":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/issues/518/comments"},"review_comments":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518/comments"},"review_comment":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/pulls/518/commits"},"statuses":{"href":"https://api.github.com/repos/intel-analytics/analytics-zoo/statuses/0708d8e0412032a6dcd79b3fc527f1921c69a13c"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jason-dai"}}