{"action":"created","comment":{"url":"https://api.github.com/repos/apple/turicreate/pulls/comments/237719919","pull_request_review_id":180091162,"id":237719919,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNzcxOTkxOQ==","diff_hunk":"@@ -0,0 +1,171 @@\n+/* Copyright © 2017 Apple Inc. All rights reserved.\n+ *\n+ * Use of this source code is governed by a BSD-3-clause license that can\n+ * be found in the LICENSE.txt file or at https://opensource.org/licenses/BSD-3-Clause\n+ */\n+#ifndef TURI_LBFGS_2_H_\n+#define TURI_LBFGS_2_H_\n+\n+#include <optimization/optimization_interface.hpp>\n+#include <flexible_type/flexible_type.hpp>\n+#include <numerics/armadillo.hpp>\n+#include <sframe/sframe.hpp>\n+\n+#include <optimization/utils.hpp>\n+#include <optimization/optimization_interface.hpp>\n+#include <optimization/regularizer_interface.hpp>\n+#include <optimization/line_search-inl.hpp>\n+#include <numerics/armadillo.hpp>\n+\n+typedef arma::vec DenseVector;\n+typedef arma::mat DenseMatrix;\n+\n+namespace turi {\n+  \n+namespace optimization {\n+\n+/**\n+ * Solver status.\n+ * \\note The number of passes over the data need not be the same thing \n+ * as the number of iterations. Each iteration could require multiple passes\n+ * over the data (Eg. for line search).\n+*/\n+struct solver_status {\n+  size_t iteration = -1;                        /*!< Iterations taken */\n+  double solver_time = -1;                      /*!< Wall clock time (s) */\n+  DenseVector solution;                         /*!< Current Solution */\n+  DenseVector gradient;                         /*!< Current gradient */\n+  DenseMatrix hessian;                          /*!< Current hessian */\n+  double residual = NAN;                        /*!< Residual norm */\n+  double function_value = NAN;                  /*!< Function value */\n+  size_t num_function_evaluations = 0;          /*!< Function evals */\n+  size_t num_gradient_evaluations = 0;          /*!< Gradient evals */\n+  double step_size = 0;                         /*!< Current step size */\n+\n+  OPTIMIZATION_STATUS status = OPTIMIZATION_STATUS::OPT_UNSET;  /*!< Status */\n+};\n+\n+\n+/**\n+ * \\ingroup group_optimization\n+ * \\addtogroup LBFGS LBFGS\n+ * \\{\n+ */\n+\n+/**\n+ *\n+ * Solve a first_order_optimization_iterface model with an LBFGS\n+ * implementation.\n+ *\n+ * The implementation is based on Algorithm 7.4 (pg 178) of [1].\n+ *\n+ *  This subroutine solves an unconstrained minimization problem\n+ *  using the limited memory BFGS method. The routine is especially\n+ *  effective on problems involving a large number of variables. In\n+ *  a typical iteration of this method an approximation Hk to the\n+ *  inverse of the Hessian is obtained by applying M BFGS updates to\n+ *  a diagonal matrix Hk0, using information from the previous M steps.\n+ *  The user specifies the number M, which determines the amount of\n+ *  storage required by the routine. The user may also provide the\n+ *  diagonal matrices Hk0 if not satisfied with the default choice.\n+ *  The algorithm is described in [2].\n+ *\n+ *  The user is required to calculate the function value and its\n+ *  gradient.\n+ *\n+ *  The steplength is determined at each iteration by means of the\n+ *  line search routine MCVSRCH, which is a slight modification of\n+ *  the routine CSRCH written by More' and Thuente.\n+ *\n+ *\n+ * References:\n+ *\n+ * (1) Wright S.J  and J. Nocedal. Numerical optimization. Vol. 2.\n+ *                         New York: Springer, 1999.\n+ *\n+ * (2) \"On the limited memory BFGS method for large scale optimization\", by D.\n+ * Liu and J. Nocedal, Mathematical Programming B 45 (1989) 503-528.\n+ *\n+ * \\param[in,out] model  Model with first order optimization interface.\n+ * \\param[in] init_point Starting point for the solver.\n+ * \\param[in,out] opts   Solver options.\n+ * \\param[in]      reg   Shared ptr to an interface to a smooth regularizer.\n+ * \\returns stats        Solver return stats.\n+ * \\tparam Vector        Sparse or dense gradient representation.\n+ *\n+ */\n+class lbfgs_solver {\n+ public:\n+  lbfgs_solver(std::shared_ptr<first_order_opt_interface> _model)\n+      : model(_model) {}\n+\n+  /** Sets up (or resets) the solver with the initial conditions.  \n+   *\n+   *\n+   */\n+  void setup(const DenseVector& init_point,\n+             const std::map<std::string, flexible_type>& opts,\n+             const std::shared_ptr<smooth_regularizer_interface>& reg = nullptr);\n+\n+  /** Call this method repeatedly, with each HERE","path":"src/optimization/lbfgs.hpp","position":110,"original_position":110,"commit_id":"36223ffe7bea84921fb1f13de87ca54a39e6a447","original_commit_id":"36223ffe7bea84921fb1f13de87ca54a39e6a447","user":{"login":"TobyRoseman","id":5420744,"node_id":"MDQ6VXNlcjU0MjA3NDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/5420744?v=4","gravatar_id":"","url":"https://api.github.com/users/TobyRoseman","html_url":"https://github.com/TobyRoseman","followers_url":"https://api.github.com/users/TobyRoseman/followers","following_url":"https://api.github.com/users/TobyRoseman/following{/other_user}","gists_url":"https://api.github.com/users/TobyRoseman/gists{/gist_id}","starred_url":"https://api.github.com/users/TobyRoseman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TobyRoseman/subscriptions","organizations_url":"https://api.github.com/users/TobyRoseman/orgs","repos_url":"https://api.github.com/users/TobyRoseman/repos","events_url":"https://api.github.com/users/TobyRoseman/events{/privacy}","received_events_url":"https://api.github.com/users/TobyRoseman/received_events","type":"User","site_admin":false},"body":"I'm not understanding this comment.","created_at":"2018-11-30T01:30:13Z","updated_at":"2018-11-30T01:30:13Z","html_url":"https://github.com/apple/turicreate/pull/1229#discussion_r237719919","pull_request_url":"https://api.github.com/repos/apple/turicreate/pulls/1229","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/apple/turicreate/pulls/comments/237719919"},"html":{"href":"https://github.com/apple/turicreate/pull/1229#discussion_r237719919"},"pull_request":{"href":"https://api.github.com/repos/apple/turicreate/pulls/1229"}}},"pull_request":{"url":"https://api.github.com/repos/apple/turicreate/pulls/1229","id":234834481,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0ODM0NDgx","html_url":"https://github.com/apple/turicreate/pull/1229","diff_url":"https://github.com/apple/turicreate/pull/1229.diff","patch_url":"https://github.com/apple/turicreate/pull/1229.patch","issue_url":"https://api.github.com/repos/apple/turicreate/issues/1229","number":1229,"state":"open","locked":false,"title":"11 28 lbfgs update","user":{"login":"hoytak","id":56061,"node_id":"MDQ6VXNlcjU2MDYx","avatar_url":"https://avatars3.githubusercontent.com/u/56061?v=4","gravatar_id":"","url":"https://api.github.com/users/hoytak","html_url":"https://github.com/hoytak","followers_url":"https://api.github.com/users/hoytak/followers","following_url":"https://api.github.com/users/hoytak/following{/other_user}","gists_url":"https://api.github.com/users/hoytak/gists{/gist_id}","starred_url":"https://api.github.com/users/hoytak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoytak/subscriptions","organizations_url":"https://api.github.com/users/hoytak/orgs","repos_url":"https://api.github.com/users/hoytak/repos","events_url":"https://api.github.com/users/hoytak/events{/privacy}","received_events_url":"https://api.github.com/users/hoytak/received_events","type":"User","site_admin":false},"body":"    Updated the LBFGS solver for iterative solving and checkpointing.\r\n\r\n    This is one isolatable step on the road to revamping the supervised\r\n    learning process to support checkpointing and incremental updates.\r\n    with this change, the LBFGS solver is implemented as a class with a\r\n    setup and a next_iteration() method on it.  Each time the\r\n    next_iteration method is called, the solver performs one step of\r\n    optimization, returning true on error.\r\n\r\n    In addition, three bugs were fixed in the lbfgs solver that will hopefully\r\n    improve optimization performance.  There was an indexing error in how the previous\r\n    gradients were stored resulting in the solver performing something like\r\n    gradient descent until the lbfgs memory was full.  Second, the order in\r\n    which these previous gradients were accumulated was done in the wrong\r\n    order.  Third, the initial step size calculated by more_thuente was\r\n    never actually stored beyond its initial use.\r\n\r\n    A compatibility function that performs comparable progress printing to\r\n    the previous implementation is provided until supervised learning adopts\r\n    the new interface.","created_at":"2018-11-30T00:36:15Z","updated_at":"2018-11-30T01:30:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2ec933861e7b65ecf1b6498b54ee000405f65bde","assignee":null,"assignees":[],"requested_reviewers":[{"login":"srikris","id":1875987,"node_id":"MDQ6VXNlcjE4NzU5ODc=","avatar_url":"https://avatars0.githubusercontent.com/u/1875987?v=4","gravatar_id":"","url":"https://api.github.com/users/srikris","html_url":"https://github.com/srikris","followers_url":"https://api.github.com/users/srikris/followers","following_url":"https://api.github.com/users/srikris/following{/other_user}","gists_url":"https://api.github.com/users/srikris/gists{/gist_id}","starred_url":"https://api.github.com/users/srikris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/srikris/subscriptions","organizations_url":"https://api.github.com/users/srikris/orgs","repos_url":"https://api.github.com/users/srikris/repos","events_url":"https://api.github.com/users/srikris/events{/privacy}","received_events_url":"https://api.github.com/users/srikris/received_events","type":"User","site_admin":false},{"login":"znation","id":5673251,"node_id":"MDQ6VXNlcjU2NzMyNTE=","avatar_url":"https://avatars2.githubusercontent.com/u/5673251?v=4","gravatar_id":"","url":"https://api.github.com/users/znation","html_url":"https://github.com/znation","followers_url":"https://api.github.com/users/znation/followers","following_url":"https://api.github.com/users/znation/following{/other_user}","gists_url":"https://api.github.com/users/znation/gists{/gist_id}","starred_url":"https://api.github.com/users/znation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/znation/subscriptions","organizations_url":"https://api.github.com/users/znation/orgs","repos_url":"https://api.github.com/users/znation/repos","events_url":"https://api.github.com/users/znation/events{/privacy}","received_events_url":"https://api.github.com/users/znation/received_events","type":"User","site_admin":false},{"login":"nickjong","id":17018249,"node_id":"MDQ6VXNlcjE3MDE4MjQ5","avatar_url":"https://avatars0.githubusercontent.com/u/17018249?v=4","gravatar_id":"","url":"https://api.github.com/users/nickjong","html_url":"https://github.com/nickjong","followers_url":"https://api.github.com/users/nickjong/followers","following_url":"https://api.github.com/users/nickjong/following{/other_user}","gists_url":"https://api.github.com/users/nickjong/gists{/gist_id}","starred_url":"https://api.github.com/users/nickjong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nickjong/subscriptions","organizations_url":"https://api.github.com/users/nickjong/orgs","repos_url":"https://api.github.com/users/nickjong/repos","events_url":"https://api.github.com/users/nickjong/events{/privacy}","received_events_url":"https://api.github.com/users/nickjong/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apple/turicreate/pulls/1229/commits","review_comments_url":"https://api.github.com/repos/apple/turicreate/pulls/1229/comments","review_comment_url":"https://api.github.com/repos/apple/turicreate/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/turicreate/issues/1229/comments","statuses_url":"https://api.github.com/repos/apple/turicreate/statuses/36223ffe7bea84921fb1f13de87ca54a39e6a447","head":{"label":"hoytak:11-28-lbfgs-update","ref":"11-28-lbfgs-update","sha":"36223ffe7bea84921fb1f13de87ca54a39e6a447","user":{"login":"hoytak","id":56061,"node_id":"MDQ6VXNlcjU2MDYx","avatar_url":"https://avatars3.githubusercontent.com/u/56061?v=4","gravatar_id":"","url":"https://api.github.com/users/hoytak","html_url":"https://github.com/hoytak","followers_url":"https://api.github.com/users/hoytak/followers","following_url":"https://api.github.com/users/hoytak/following{/other_user}","gists_url":"https://api.github.com/users/hoytak/gists{/gist_id}","starred_url":"https://api.github.com/users/hoytak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoytak/subscriptions","organizations_url":"https://api.github.com/users/hoytak/orgs","repos_url":"https://api.github.com/users/hoytak/repos","events_url":"https://api.github.com/users/hoytak/events{/privacy}","received_events_url":"https://api.github.com/users/hoytak/received_events","type":"User","site_admin":false},"repo":{"id":113900732,"node_id":"MDEwOlJlcG9zaXRvcnkxMTM5MDA3MzI=","name":"turicreate","full_name":"hoytak/turicreate","private":false,"owner":{"login":"hoytak","id":56061,"node_id":"MDQ6VXNlcjU2MDYx","avatar_url":"https://avatars3.githubusercontent.com/u/56061?v=4","gravatar_id":"","url":"https://api.github.com/users/hoytak","html_url":"https://github.com/hoytak","followers_url":"https://api.github.com/users/hoytak/followers","following_url":"https://api.github.com/users/hoytak/following{/other_user}","gists_url":"https://api.github.com/users/hoytak/gists{/gist_id}","starred_url":"https://api.github.com/users/hoytak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoytak/subscriptions","organizations_url":"https://api.github.com/users/hoytak/orgs","repos_url":"https://api.github.com/users/hoytak/repos","events_url":"https://api.github.com/users/hoytak/events{/privacy}","received_events_url":"https://api.github.com/users/hoytak/received_events","type":"User","site_admin":false},"html_url":"https://github.com/hoytak/turicreate","description":"Turi Create simplifies the development of custom machine learning models.","fork":true,"url":"https://api.github.com/repos/hoytak/turicreate","forks_url":"https://api.github.com/repos/hoytak/turicreate/forks","keys_url":"https://api.github.com/repos/hoytak/turicreate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hoytak/turicreate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hoytak/turicreate/teams","hooks_url":"https://api.github.com/repos/hoytak/turicreate/hooks","issue_events_url":"https://api.github.com/repos/hoytak/turicreate/issues/events{/number}","events_url":"https://api.github.com/repos/hoytak/turicreate/events","assignees_url":"https://api.github.com/repos/hoytak/turicreate/assignees{/user}","branches_url":"https://api.github.com/repos/hoytak/turicreate/branches{/branch}","tags_url":"https://api.github.com/repos/hoytak/turicreate/tags","blobs_url":"https://api.github.com/repos/hoytak/turicreate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hoytak/turicreate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hoytak/turicreate/git/refs{/sha}","trees_url":"https://api.github.com/repos/hoytak/turicreate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hoytak/turicreate/statuses/{sha}","languages_url":"https://api.github.com/repos/hoytak/turicreate/languages","stargazers_url":"https://api.github.com/repos/hoytak/turicreate/stargazers","contributors_url":"https://api.github.com/repos/hoytak/turicreate/contributors","subscribers_url":"https://api.github.com/repos/hoytak/turicreate/subscribers","subscription_url":"https://api.github.com/repos/hoytak/turicreate/subscription","commits_url":"https://api.github.com/repos/hoytak/turicreate/commits{/sha}","git_commits_url":"https://api.github.com/repos/hoytak/turicreate/git/commits{/sha}","comments_url":"https://api.github.com/repos/hoytak/turicreate/comments{/number}","issue_comment_url":"https://api.github.com/repos/hoytak/turicreate/issues/comments{/number}","contents_url":"https://api.github.com/repos/hoytak/turicreate/contents/{+path}","compare_url":"https://api.github.com/repos/hoytak/turicreate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hoytak/turicreate/merges","archive_url":"https://api.github.com/repos/hoytak/turicreate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hoytak/turicreate/downloads","issues_url":"https://api.github.com/repos/hoytak/turicreate/issues{/number}","pulls_url":"https://api.github.com/repos/hoytak/turicreate/pulls{/number}","milestones_url":"https://api.github.com/repos/hoytak/turicreate/milestones{/number}","notifications_url":"https://api.github.com/repos/hoytak/turicreate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hoytak/turicreate/labels{/name}","releases_url":"https://api.github.com/repos/hoytak/turicreate/releases{/id}","deployments_url":"https://api.github.com/repos/hoytak/turicreate/deployments","created_at":"2017-12-11T19:40:38Z","updated_at":"2018-03-28T20:49:52Z","pushed_at":"2018-11-30T00:38:12Z","git_url":"git://github.com/hoytak/turicreate.git","ssh_url":"git@github.com:hoytak/turicreate.git","clone_url":"https://github.com/hoytak/turicreate.git","svn_url":"https://github.com/hoytak/turicreate","homepage":"","size":109379,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"apple:master","ref":"master","sha":"b965990eadb9f1118f813d5d8034d31d0aa82857","user":{"login":"apple","id":10639145,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNjM5MTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":112676803,"node_id":"MDEwOlJlcG9zaXRvcnkxMTI2NzY4MDM=","name":"turicreate","full_name":"apple/turicreate","private":false,"owner":{"login":"apple","id":10639145,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNjM5MTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/apple/turicreate","description":"Turi Create simplifies the development of custom machine learning models.","fork":false,"url":"https://api.github.com/repos/apple/turicreate","forks_url":"https://api.github.com/repos/apple/turicreate/forks","keys_url":"https://api.github.com/repos/apple/turicreate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/turicreate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/turicreate/teams","hooks_url":"https://api.github.com/repos/apple/turicreate/hooks","issue_events_url":"https://api.github.com/repos/apple/turicreate/issues/events{/number}","events_url":"https://api.github.com/repos/apple/turicreate/events","assignees_url":"https://api.github.com/repos/apple/turicreate/assignees{/user}","branches_url":"https://api.github.com/repos/apple/turicreate/branches{/branch}","tags_url":"https://api.github.com/repos/apple/turicreate/tags","blobs_url":"https://api.github.com/repos/apple/turicreate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/turicreate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/turicreate/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/turicreate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/turicreate/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/turicreate/languages","stargazers_url":"https://api.github.com/repos/apple/turicreate/stargazers","contributors_url":"https://api.github.com/repos/apple/turicreate/contributors","subscribers_url":"https://api.github.com/repos/apple/turicreate/subscribers","subscription_url":"https://api.github.com/repos/apple/turicreate/subscription","commits_url":"https://api.github.com/repos/apple/turicreate/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/turicreate/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/turicreate/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/turicreate/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/turicreate/contents/{+path}","compare_url":"https://api.github.com/repos/apple/turicreate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/turicreate/merges","archive_url":"https://api.github.com/repos/apple/turicreate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/turicreate/downloads","issues_url":"https://api.github.com/repos/apple/turicreate/issues{/number}","pulls_url":"https://api.github.com/repos/apple/turicreate/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/turicreate/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/turicreate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/turicreate/labels{/name}","releases_url":"https://api.github.com/repos/apple/turicreate/releases{/id}","deployments_url":"https://api.github.com/repos/apple/turicreate/deployments","created_at":"2017-12-01T00:42:04Z","updated_at":"2018-11-29T23:51:26Z","pushed_at":"2018-11-30T00:38:13Z","git_url":"git://github.com/apple/turicreate.git","ssh_url":"git@github.com:apple/turicreate.git","clone_url":"https://github.com/apple/turicreate.git","svn_url":"https://github.com/apple/turicreate","homepage":"","size":131366,"stargazers_count":7817,"watchers_count":7817,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":728,"mirror_url":null,"archived":false,"open_issues_count":246,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":728,"open_issues":246,"watchers":7817,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/turicreate/pulls/1229"},"html":{"href":"https://github.com/apple/turicreate/pull/1229"},"issue":{"href":"https://api.github.com/repos/apple/turicreate/issues/1229"},"comments":{"href":"https://api.github.com/repos/apple/turicreate/issues/1229/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/turicreate/pulls/1229/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/turicreate/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/turicreate/pulls/1229/commits"},"statuses":{"href":"https://api.github.com/repos/apple/turicreate/statuses/36223ffe7bea84921fb1f13de87ca54a39e6a447"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"TobyRoseman"}}