{"action":"created","comment":{"url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/comments/140920755","pull_request_review_id":65060778,"id":140920755,"diff_hunk":"@@ -0,0 +1,230 @@\n+package org.deeplearning4j.clustering.lsh;\n+\n+import lombok.Getter;\n+import org.nd4j.linalg.api.ndarray.INDArray;\n+import org.nd4j.linalg.api.ops.impl.broadcast.BroadcastDivOp;\n+import org.nd4j.linalg.api.ops.impl.broadcast.BroadcastEqualTo;\n+import org.nd4j.linalg.api.ops.impl.transforms.Sign;\n+\n+import org.nd4j.linalg.api.ops.random.impl.GaussianDistribution;\n+import org.nd4j.linalg.api.ops.random.impl.UniformDistribution;\n+import org.nd4j.linalg.api.rng.Random;\n+import org.nd4j.linalg.exception.ND4JIllegalStateException;\n+import org.nd4j.linalg.factory.Nd4j;\n+import org.nd4j.linalg.indexing.BooleanIndexing;\n+import org.nd4j.linalg.indexing.conditions.Conditions;\n+import org.nd4j.linalg.ops.transforms.Transforms;\n+\n+import java.util.Arrays;\n+\n+\n+/**\n+ * This class implements Entropy LSH for the cosine distance, in order to preserve memory for large datasets.\n+ *\n+ * Entropy SLH is the LSH scheme of\n+ *\n+ * _Entropy based nearest neighbor search in high dimensions_\n+ * R Panigrahy - SIAM 2006\n+ * https://arxiv.org/pdf/cs/0510019.pdf\n+ *\n+ * To read more about LSH, in particular for the Cosine distance, see\n+ * chapter 3 of :\n+ * _Mining Massive Datasets_, Anand Rajaraman and Jeffrey Ullman\n+ * http://www.mmds.org/\n+ *\n+ * The original development of LSH for the cosine distance is from\n+ * Similarity estimation techniques from rounding algorithms\n+ * MS Charikar - STOCS, 2002\n+ *\n+ * Note for high-precision or distributed settings, you should not\n+ * use this and rather extend this to layered LSH ( https://arxiv.org/abs/1210.7057 )\n+ *\n+ */\n+public class RandomProjectionLSH implements LSH {\n+\n+    @Override\n+    public String getDistanceMeasure(){\n+        return \"cosinedistance\";\n+    }\n+\n+    @Getter int hashLength;\n+\n+    @Getter int numTables;\n+\n+    @Getter int inDimension;\n+\n+\n+    @Getter double radius;\n+\n+    INDArray randomProjection;\n+\n+    INDArray index;\n+\n+    INDArray indexData;\n+\n+\n+    private INDArray gaussianRandomMatrix(int[] shape, Random rng){\n+        INDArray res = Nd4j.create(shape);\n+\n+        GaussianDistribution op1 = new GaussianDistribution(res, 0.0, 1.0 / Math.sqrt(shape[0]));\n+\n+        Nd4j.getExecutioner().exec(op1, rng);\n+        return res;\n+    }\n+\n+    public RandomProjectionLSH(int hashLength, int numTables, int inDimension, double radius){\n+        this(hashLength, numTables, inDimension, radius, Nd4j.getRandom());\n+    }","path":"deeplearning4j-nearestneighbors-parent/nearestneighbor-core/src/main/java/org/deeplearning4j/clustering/lsh/RandomProjectionLSH.java","position":77,"original_position":77,"commit_id":"764cf70d62991d21ce0c5d2e5d58c575a67131c9","original_commit_id":"764cf70d62991d21ce0c5d2e5d58c575a67131c9","user":{"login":"agibsonccc","id":1144306,"avatar_url":"https://avatars2.githubusercontent.com/u/1144306?v=4","gravatar_id":"","url":"https://api.github.com/users/agibsonccc","html_url":"https://github.com/agibsonccc","followers_url":"https://api.github.com/users/agibsonccc/followers","following_url":"https://api.github.com/users/agibsonccc/following{/other_user}","gists_url":"https://api.github.com/users/agibsonccc/gists{/gist_id}","starred_url":"https://api.github.com/users/agibsonccc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agibsonccc/subscriptions","organizations_url":"https://api.github.com/users/agibsonccc/orgs","repos_url":"https://api.github.com/users/agibsonccc/repos","events_url":"https://api.github.com/users/agibsonccc/events{/privacy}","received_events_url":"https://api.github.com/users/agibsonccc/received_events","type":"User","site_admin":false},"body":"Builder maybe?","created_at":"2017-09-25T22:58:08Z","updated_at":"2017-09-25T22:59:06Z","html_url":"https://github.com/deeplearning4j/deeplearning4j/pull/3878#discussion_r140920755","pull_request_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/comments/140920755"},"html":{"href":"https://github.com/deeplearning4j/deeplearning4j/pull/3878#discussion_r140920755"},"pull_request":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878"}}},"pull_request":{"url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878","id":136366268,"html_url":"https://github.com/deeplearning4j/deeplearning4j/pull/3878","diff_url":"https://github.com/deeplearning4j/deeplearning4j/pull/3878.diff","patch_url":"https://github.com/deeplearning4j/deeplearning4j/pull/3878.patch","issue_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/3878","number":3878,"state":"open","locked":false,"title":"An implementation of multi-probe LSH for the cosine distance.","user":{"login":"huitseeker","id":4142,"avatar_url":"https://avatars1.githubusercontent.com/u/4142?v=4","gravatar_id":"","url":"https://api.github.com/users/huitseeker","html_url":"https://github.com/huitseeker","followers_url":"https://api.github.com/users/huitseeker/followers","following_url":"https://api.github.com/users/huitseeker/following{/other_user}","gists_url":"https://api.github.com/users/huitseeker/gists{/gist_id}","starred_url":"https://api.github.com/users/huitseeker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huitseeker/subscriptions","organizations_url":"https://api.github.com/users/huitseeker/orgs","repos_url":"https://api.github.com/users/huitseeker/repos","events_url":"https://api.github.com/users/huitseeker/events{/privacy}","received_events_url":"https://api.github.com/users/huitseeker/received_events","type":"User","site_admin":false},"body":"This can be used as guidelines for a poor man's ANN if the distribution of\nthe data is well-known enough to be able to predict an average distance\n between ANNs (the radius parameter of Panigraphi's entropy LSH).\n\nHowever, because if uses a single hash table (as opposed to the several of the\nvanilla LSH impelementation), it is relatively reasonable in its memory usage.\n\nIn the case of a very large index that would have to be split on several machins\nthe flavor of LSH that should be used is Layered LSH ( https://arxiv.org/abs/1210.7057 )\n\nWIP, in particular the index creation does not use workspaces for now.\n\nOpened as a request for comments (hi @turambar!) and perhaps an inspiration\nto upgrade this to another implementation (hi @turambar!).\n\nFrom the discard pile of high-performance ANN experiments.\n\nreview by @turambar for the math, @agibsonccc and @raver119 for the perf opts","created_at":"2017-08-17T22:22:16Z","updated_at":"2017-09-25T22:59:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"09967e688008aec413c53bdca02177edf0e79458","assignee":null,"assignees":[],"requested_reviewers":[{"login":"turambar","id":209542,"avatar_url":"https://avatars0.githubusercontent.com/u/209542?v=4","gravatar_id":"","url":"https://api.github.com/users/turambar","html_url":"https://github.com/turambar","followers_url":"https://api.github.com/users/turambar/followers","following_url":"https://api.github.com/users/turambar/following{/other_user}","gists_url":"https://api.github.com/users/turambar/gists{/gist_id}","starred_url":"https://api.github.com/users/turambar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/turambar/subscriptions","organizations_url":"https://api.github.com/users/turambar/orgs","repos_url":"https://api.github.com/users/turambar/repos","events_url":"https://api.github.com/users/turambar/events{/privacy}","received_events_url":"https://api.github.com/users/turambar/received_events","type":"User","site_admin":false},{"login":"AlexDBlack","id":2360237,"avatar_url":"https://avatars0.githubusercontent.com/u/2360237?v=4","gravatar_id":"","url":"https://api.github.com/users/AlexDBlack","html_url":"https://github.com/AlexDBlack","followers_url":"https://api.github.com/users/AlexDBlack/followers","following_url":"https://api.github.com/users/AlexDBlack/following{/other_user}","gists_url":"https://api.github.com/users/AlexDBlack/gists{/gist_id}","starred_url":"https://api.github.com/users/AlexDBlack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexDBlack/subscriptions","organizations_url":"https://api.github.com/users/AlexDBlack/orgs","repos_url":"https://api.github.com/users/AlexDBlack/repos","events_url":"https://api.github.com/users/AlexDBlack/events{/privacy}","received_events_url":"https://api.github.com/users/AlexDBlack/received_events","type":"User","site_admin":false},{"login":"raver119","id":12250879,"avatar_url":"https://avatars2.githubusercontent.com/u/12250879?v=4","gravatar_id":"","url":"https://api.github.com/users/raver119","html_url":"https://github.com/raver119","followers_url":"https://api.github.com/users/raver119/followers","following_url":"https://api.github.com/users/raver119/following{/other_user}","gists_url":"https://api.github.com/users/raver119/gists{/gist_id}","starred_url":"https://api.github.com/users/raver119/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raver119/subscriptions","organizations_url":"https://api.github.com/users/raver119/orgs","repos_url":"https://api.github.com/users/raver119/repos","events_url":"https://api.github.com/users/raver119/events{/privacy}","received_events_url":"https://api.github.com/users/raver119/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878/commits","review_comments_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878/comments","review_comment_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/comments{/number}","comments_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/3878/comments","statuses_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/statuses/764cf70d62991d21ce0c5d2e5d58c575a67131c9","head":{"label":"huitseeker:randProj","ref":"randProj","sha":"764cf70d62991d21ce0c5d2e5d58c575a67131c9","user":{"login":"huitseeker","id":4142,"avatar_url":"https://avatars1.githubusercontent.com/u/4142?v=4","gravatar_id":"","url":"https://api.github.com/users/huitseeker","html_url":"https://github.com/huitseeker","followers_url":"https://api.github.com/users/huitseeker/followers","following_url":"https://api.github.com/users/huitseeker/following{/other_user}","gists_url":"https://api.github.com/users/huitseeker/gists{/gist_id}","starred_url":"https://api.github.com/users/huitseeker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huitseeker/subscriptions","organizations_url":"https://api.github.com/users/huitseeker/orgs","repos_url":"https://api.github.com/users/huitseeker/repos","events_url":"https://api.github.com/users/huitseeker/events{/privacy}","received_events_url":"https://api.github.com/users/huitseeker/received_events","type":"User","site_admin":false},"repo":{"id":71340349,"name":"deeplearning4j","full_name":"huitseeker/deeplearning4j","owner":{"login":"huitseeker","id":4142,"avatar_url":"https://avatars1.githubusercontent.com/u/4142?v=4","gravatar_id":"","url":"https://api.github.com/users/huitseeker","html_url":"https://github.com/huitseeker","followers_url":"https://api.github.com/users/huitseeker/followers","following_url":"https://api.github.com/users/huitseeker/following{/other_user}","gists_url":"https://api.github.com/users/huitseeker/gists{/gist_id}","starred_url":"https://api.github.com/users/huitseeker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huitseeker/subscriptions","organizations_url":"https://api.github.com/users/huitseeker/orgs","repos_url":"https://api.github.com/users/huitseeker/repos","events_url":"https://api.github.com/users/huitseeker/events{/privacy}","received_events_url":"https://api.github.com/users/huitseeker/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/huitseeker/deeplearning4j","description":"Deep Learning for Java, Scala & Clojure on Hadoop & Spark With GPUs - From Skymind","fork":true,"url":"https://api.github.com/repos/huitseeker/deeplearning4j","forks_url":"https://api.github.com/repos/huitseeker/deeplearning4j/forks","keys_url":"https://api.github.com/repos/huitseeker/deeplearning4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/huitseeker/deeplearning4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/huitseeker/deeplearning4j/teams","hooks_url":"https://api.github.com/repos/huitseeker/deeplearning4j/hooks","issue_events_url":"https://api.github.com/repos/huitseeker/deeplearning4j/issues/events{/number}","events_url":"https://api.github.com/repos/huitseeker/deeplearning4j/events","assignees_url":"https://api.github.com/repos/huitseeker/deeplearning4j/assignees{/user}","branches_url":"https://api.github.com/repos/huitseeker/deeplearning4j/branches{/branch}","tags_url":"https://api.github.com/repos/huitseeker/deeplearning4j/tags","blobs_url":"https://api.github.com/repos/huitseeker/deeplearning4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/huitseeker/deeplearning4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/huitseeker/deeplearning4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/huitseeker/deeplearning4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/huitseeker/deeplearning4j/statuses/{sha}","languages_url":"https://api.github.com/repos/huitseeker/deeplearning4j/languages","stargazers_url":"https://api.github.com/repos/huitseeker/deeplearning4j/stargazers","contributors_url":"https://api.github.com/repos/huitseeker/deeplearning4j/contributors","subscribers_url":"https://api.github.com/repos/huitseeker/deeplearning4j/subscribers","subscription_url":"https://api.github.com/repos/huitseeker/deeplearning4j/subscription","commits_url":"https://api.github.com/repos/huitseeker/deeplearning4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/huitseeker/deeplearning4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/huitseeker/deeplearning4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/huitseeker/deeplearning4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/huitseeker/deeplearning4j/contents/{+path}","compare_url":"https://api.github.com/repos/huitseeker/deeplearning4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/huitseeker/deeplearning4j/merges","archive_url":"https://api.github.com/repos/huitseeker/deeplearning4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/huitseeker/deeplearning4j/downloads","issues_url":"https://api.github.com/repos/huitseeker/deeplearning4j/issues{/number}","pulls_url":"https://api.github.com/repos/huitseeker/deeplearning4j/pulls{/number}","milestones_url":"https://api.github.com/repos/huitseeker/deeplearning4j/milestones{/number}","notifications_url":"https://api.github.com/repos/huitseeker/deeplearning4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/huitseeker/deeplearning4j/labels{/name}","releases_url":"https://api.github.com/repos/huitseeker/deeplearning4j/releases{/id}","deployments_url":"https://api.github.com/repos/huitseeker/deeplearning4j/deployments","created_at":"2016-10-19T09:22:17Z","updated_at":"2016-10-19T09:22:23Z","pushed_at":"2017-09-19T00:54:48Z","git_url":"git://github.com/huitseeker/deeplearning4j.git","ssh_url":"git@github.com:huitseeker/deeplearning4j.git","clone_url":"https://github.com/huitseeker/deeplearning4j.git","svn_url":"https://github.com/huitseeker/deeplearning4j","homepage":"http://deeplearning4j.org","size":1413527,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"deeplearning4j:master","ref":"master","sha":"b8c7d05ef250e207c19b517eac67b4f82bf16c2a","user":{"login":"deeplearning4j","id":10988606,"avatar_url":"https://avatars2.githubusercontent.com/u/10988606?v=4","gravatar_id":"","url":"https://api.github.com/users/deeplearning4j","html_url":"https://github.com/deeplearning4j","followers_url":"https://api.github.com/users/deeplearning4j/followers","following_url":"https://api.github.com/users/deeplearning4j/following{/other_user}","gists_url":"https://api.github.com/users/deeplearning4j/gists{/gist_id}","starred_url":"https://api.github.com/users/deeplearning4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deeplearning4j/subscriptions","organizations_url":"https://api.github.com/users/deeplearning4j/orgs","repos_url":"https://api.github.com/users/deeplearning4j/repos","events_url":"https://api.github.com/users/deeplearning4j/events{/privacy}","received_events_url":"https://api.github.com/users/deeplearning4j/received_events","type":"Organization","site_admin":false},"repo":{"id":14734876,"name":"deeplearning4j","full_name":"deeplearning4j/deeplearning4j","owner":{"login":"deeplearning4j","id":10988606,"avatar_url":"https://avatars2.githubusercontent.com/u/10988606?v=4","gravatar_id":"","url":"https://api.github.com/users/deeplearning4j","html_url":"https://github.com/deeplearning4j","followers_url":"https://api.github.com/users/deeplearning4j/followers","following_url":"https://api.github.com/users/deeplearning4j/following{/other_user}","gists_url":"https://api.github.com/users/deeplearning4j/gists{/gist_id}","starred_url":"https://api.github.com/users/deeplearning4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deeplearning4j/subscriptions","organizations_url":"https://api.github.com/users/deeplearning4j/orgs","repos_url":"https://api.github.com/users/deeplearning4j/repos","events_url":"https://api.github.com/users/deeplearning4j/events{/privacy}","received_events_url":"https://api.github.com/users/deeplearning4j/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/deeplearning4j/deeplearning4j","description":"Deep Learning for Java, Scala & Clojure on Hadoop & Spark With GPUs - From Skymind","fork":false,"url":"https://api.github.com/repos/deeplearning4j/deeplearning4j","forks_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/forks","keys_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/teams","hooks_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/hooks","issue_events_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/events{/number}","events_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/events","assignees_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/assignees{/user}","branches_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/branches{/branch}","tags_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/tags","blobs_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/statuses/{sha}","languages_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/languages","stargazers_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/stargazers","contributors_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/contributors","subscribers_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/subscribers","subscription_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/subscription","commits_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/contents/{+path}","compare_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/merges","archive_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/downloads","issues_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues{/number}","pulls_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls{/number}","milestones_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/milestones{/number}","notifications_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/labels{/name}","releases_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/releases{/id}","deployments_url":"https://api.github.com/repos/deeplearning4j/deeplearning4j/deployments","created_at":"2013-11-27T02:03:28Z","updated_at":"2017-09-25T16:53:26Z","pushed_at":"2017-09-25T15:57:03Z","git_url":"git://github.com/deeplearning4j/deeplearning4j.git","ssh_url":"git@github.com:deeplearning4j/deeplearning4j.git","clone_url":"https://github.com/deeplearning4j/deeplearning4j.git","svn_url":"https://github.com/deeplearning4j/deeplearning4j","homepage":"http://deeplearning4j.org","size":178634,"stargazers_count":7253,"watchers_count":7253,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3636,"mirror_url":null,"open_issues_count":537,"forks":3636,"open_issues":537,"watchers":7253,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878"},"html":{"href":"https://github.com/deeplearning4j/deeplearning4j/pull/3878"},"issue":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/3878"},"comments":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/issues/3878/comments"},"review_comments":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878/comments"},"review_comment":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/pulls/3878/commits"},"statuses":{"href":"https://api.github.com/repos/deeplearning4j/deeplearning4j/statuses/764cf70d62991d21ce0c5d2e5d58c575a67131c9"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"agibsonccc"}}