{"action":"created","comment":{"url":"https://api.github.com/repos/mlpack/mlpack/pulls/comments/204532497","pull_request_review_id":139627721,"id":204532497,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNDUzMjQ5Nw==","diff_hunk":"@@ -0,0 +1,458 @@\n+/**\n+ * @file rbm.hpp\n+ * @author Kris Singh\n+ * @author Shikhar Jaiswal\n+ *\n+ * mlpack is free software; you may redistribute it and/or modify it under the\n+ * terms of the 3-clause BSD license. You should have received a copy of the\n+ * 3-clause BSD license along with mlpack. If not, see\n+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.\n+ */\n+#ifndef MLPACK_METHODS_ANN_RBM_RBM_HPP\n+#define MLPACK_METHODS_ANN_RBM_RBM_HPP\n+\n+#include <mlpack/core.hpp>\n+#include <mlpack/methods/ann/rbm/rbm_policies.hpp>\n+\n+namespace mlpack {\n+namespace ann /** Artificial Neural Network. */ {\n+\n+/**\n+ * The implementation of the RBM module. A Restricted Boltzmann Machines (RBM)\n+ * is a generative stochastic artificial neural network that can learn a\n+ * probability distribution over its set of inputs. RBMs have found applications\n+ * in dimensionality reduction, classification, collaborative filtering, feature\n+ * learning and topic modelling. They can be trained in either supervised or\n+ * unsupervised ways, depending on the task. They are a variant of Boltzmann\n+ * machines, with the restriction that the neurons must form a bipartite graph.\n+ *\n+ * @tparam InitializationRuleType Rule used to initialize the network.\n+ * @tparam DataType The type of matrix to be used.\n+ * @tparam PolicyType The RBM variant to be used (BinaryRBM or SpikeSlabRBM).\n+ */\n+template<\n+  typename InitializationRuleType,\n+  typename DataType = arma::mat,\n+  typename PolicyType = BinaryRBM\n+>\n+class RBM\n+{\n+ public:\n+  using NetworkType = RBM<InitializationRuleType, DataType, PolicyType>;\n+  typedef typename DataType::elem_type ElemType;\n+\n+  /**\n+   * Initialize all the parameters of the network using initializeRule.\n+   *\n+   * @param predictors Training data to be used.\n+   * @param initializeRule InitializationRule object for initializing the\n+   *        network parameter.\n+   * @param visibleSize Number of visible neurons.\n+   * @param hiddenSize Number of hidden neurons.\n+   * @param batchSize Batch size to be used for training.\n+   * @param numSteps Number of Gibbs Sampling steps.\n+   * @param negSteps Number of negative samples to average negative gradient.\n+   * @param poolSize Number of hidden neurons to pool together.\n+   * @param slabPenalty Regulariser of slab variables.\n+   * @param radius Feasible regions for visible layer samples.\n+   * @param persistence Indicates whether to use Persistent CD or not.\n+   */\n+  RBM(arma::Mat<ElemType> predictors,\n+      InitializationRuleType initializeRule,\n+      const size_t visibleSize,\n+      const size_t hiddenSize,\n+      const size_t batchSize = 1,\n+      const size_t numSteps = 1,\n+      const size_t negSteps = 1,\n+      const size_t poolSize = 2,\n+      const ElemType slabPenalty = 8,\n+      const ElemType radius = 1,\n+      const bool persistence = false);\n+\n+  // Reset the network.\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  Reset();\n+\n+  // Reset the network.\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  Reset();\n+\n+  /**\n+   * Train the RBM on the given input data.\n+   *\n+   * This will use the existing model parameters as a starting point for the\n+   * optimization. If this is not what you want, then you should access the\n+   * parameters vector directly with Parameters() and modify it as desired.\n+   *\n+   * @param optimizer Optimizer type.\n+   */\n+  template<typename OptimizerType>\n+  void Train(OptimizerType& optimizer);\n+\n+  /**\n+   * Evaluate the RBM network with the given parameters.\n+   * The function is needed for monitoring the progress of the network.\n+   *\n+   * @param parameters Matrix model parameters.\n+   * @param i Index of the data point.\n+   * @param batchSize Variable to store the present number of inputs.\n+   */\n+  double Evaluate(const arma::Mat<ElemType>& parameters,\n+                  const size_t i,\n+                  const size_t batchSize);\n+\n+  /**\n+   * This function calculates the free energy of the BinaryRBM.\n+   * The free energy is given by:\n+   * $-b^Tv - \\sum_{i=1}^M log(1 + e^{c_j+v^TW_j})$.\n+   *\n+   * @param input The visible neurons.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, double>::type\n+  FreeEnergy(arma::Mat<ElemType>&& input);\n+\n+  /**\n+   * This function calculates the free energy of the SpikeSlabRBM.\n+   * The free energy is given by:\n+   * $v^t$$\\Delta$v - $\\sum_{i=1}^N$ \n+   * $\\log{ \\sqrt{\\frac{(-2\\pi)^K}{\\prod_{m=1}^{K}(\\alpha_i)_m}}}$ -\n+   * $\\sum_{i=1}^N \\log(1+\\exp( b_i +\n+   * \\sum_{m=1}^k \\frac{(v(w_i)_m^t)^2}{2(\\alpha_i)_m})$\n+   *\n+   * @param input The visible layer neurons.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value,\n+      double>::type\n+  FreeEnergy(arma::Mat<ElemType>&& input);\n+\n+  /**\n+   * Calculates the gradient of the RBM network on the provided input.\n+   * \n+   * @param input The provided input data.\n+   * @param gradient Stores the gradient of the RBM network.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  Phase(DataType&& input, DataType&& gradient);\n+\n+  /**\n+   * Calculates the gradient of the RBM network on the provided input.\n+   * \n+   * @param input The provided input data.\n+   * @param gradient Stores the gradient of the RBM network.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  Phase(DataType&& input, DataType&& gradient);\n+\n+  /**\n+   * This function samples the hidden layer given the visible layer using\n+   * Bernoulli function.\n+   *\n+   * @param input Visible layer input.\n+   * @param output The sampled hidden layer.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  SampleHidden(arma::Mat<ElemType>&& input, arma::Mat<ElemType>&& output);\n+\n+  /**\n+   * This function samples the slab outputs from the Normal distribution with\n+   * mean given by:\n+   * $h_i*\\alpha^{-1}*W_i^T*v$\n+   * and variance:\n+   * $\\alpha&{-1}$\n+   * \n+   * @param input Consists of both visible and spike variables.\n+   * @param output Sampled slab neurons.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SampleHidden(arma::Mat<ElemType>&& input, arma::Mat<ElemType>&& output);\n+\n+  /**\n+   * This function samples the visible layer given the hidden layer using\n+   * Bernoulli function.\n+   *\n+   * @param input Hidden layer of the network.\n+   * @param output The sampled visible layer.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  SampleVisible(arma::Mat<ElemType>&& input, arma::Mat<ElemType>&& output);\n+\n+  /**\n+   * Sample Hidden function samples the slab outputs from the Normal\n+   * distribution with mean given by:\n+   * $h_i*\\alpha^{-1}*W_i^T*v$\n+   * and variance:\n+   * $\\alpha&{-1}$\n+   *\n+   * @param input Hidden layer of the network.\n+   * @param output The sampled visible layer.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SampleVisible(arma::Mat<ElemType>&& input, arma::Mat<ElemType>&& output);\n+\n+  /**\n+   * The function calculates the mean for the visible layer.\n+   *\n+   * @param input Hidden neurons from the hidden layer of the network.\n+   * @param output Visible neuron activations.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  VisibleMean(DataType&& input, DataType&& output);\n+\n+  /**\n+   * The function calculates the mean of the Normal distribution of P(v|s, h).\n+   * The mean is given by:\n+   * $\\Lambda^{-1} \\sum_{i=1}^N W_i * s_i * h_i$\n+   * \n+   * @param input Consists of both the spike and slab variables.\n+   * @param output Mean of the of the Normal distribution.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  VisibleMean(DataType&& input, DataType&& output);\n+\n+  /**\n+   * The function calculates the mean for the hidden layer.\n+   *\n+   * @param input Visible neurons.\n+   * @param output Hidden neuron activations.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, BinaryRBM>::value, void>::type\n+  HiddenMean(DataType&& input, DataType&& output);\n+\n+  /**\n+   * The function calculates the mean of the Normal distribution of P(s|v, h).\n+   * The mean is given by:\n+   * $h_i*\\alpha^{-1}*W_i^T*v$\n+   * The variance is given by:\n+   * $\\alpha^{-1}$\n+   * \n+   * @param input Visible layer neurons.\n+   * @param output Consists of both the spike samples and slab samples.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  HiddenMean(DataType&& input, DataType&& output);\n+\n+  /**\n+   * The function calculates the mean of the distribution P(h|v),\n+   * where mean is given by:\n+   * $sigm(v^T*W_i*\\alpha_i^{-1}*W_i^T*v + b_i)$\n+   *\n+   * @param visible The visible layer neurons.\n+   * @param spikeMean Indicates P(h|v).\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SpikeMean(DataType&& visible, DataType&& spikeMean);\n+\n+  /**\n+   * The function samples the spike function using Bernoulli distribution.\n+   * @param spikeMean Indicates P(h|v).\n+   * @param spike Sampled binary spike variables.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SampleSpike(DataType&& spikeMean, DataType&& spike);\n+\n+  /**\n+   * The function calculates the mean of Normal distribution of P(s|v, h),\n+   * where the mean is given by:\n+   * $h_i*\\alpha^{-1}*W_i^T*v$\n+   * \n+   * @param visible The visible layer neurons.\n+   * @param spike The spike variables from hidden layer.\n+   * @param slabMean The mean of the Normal distribution of slab neurons.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SlabMean(DataType&& visible, DataType&& spike, DataType&& slabMean);\n+\n+  /**\n+   * The function samples from the Normal distribution of P(s|v, h),\n+   * where the mean is given by:\n+   * $h_i*\\alpha^{-1}*W_i^T*v$\n+   * and variance is given by:\n+   * $\\alpha^{-1}$\n+   *\n+   * @param slabMean Mean of the Normal distribution of the slab neurons.\n+   * @param slab Sampled slab variable from the Normal distribution.\n+   */\n+  template<typename Policy = PolicyType>\n+  typename std::enable_if<std::is_same<Policy, SpikeSlabRBM>::value, void>::type\n+  SampleSlab(DataType&& slabMean, DataType&& slab);\n+\n+  /**\n+   * This function does the k-step Gibbs Sampling.\n+   *\n+   * @param input Input to the Gibbs function.\n+   * @param output Used for storing the negative sample.\n+   * @param steps Number of Gibbs Sampling steps taken.\n+   */\n+  void Gibbs(arma::Mat<ElemType>&& input,\n+             arma::Mat<ElemType>&& output,\n+             const size_t steps = SIZE_MAX);\n+\n+  /**\n+   * Calculates the gradients for the RBM network.\n+   *\n+   * @param parameters The current parameters of the network.\n+   * @param i Index of the data point.\n+   * @param gradient Variable to store the present gradient.\n+   * @param batchSize Variable to store the present number of inputs.\n+   */\n+  void Gradient(const arma::Mat<ElemType>& parameters,\n+                const size_t i,\n+                arma::Mat<ElemType>& gradient,\n+                const size_t batchSize);\n+\n+  /**\n+   * Shuffle the order of function visitation. This may be called by the\n+   * optimizer.\n+   */\n+  void Shuffle();\n+\n+  //! Return the number of separable functions (the number of predictor points).\n+  size_t NumFunctions() const { return numFunctions; }\n+\n+  //! Return the number of steps of Gibbs Sampling.\n+  size_t NumSteps() const { return numSteps; }\n+\n+  //! Return the parameters of the network.\n+  const arma::Mat<ElemType>& Parameters() const { return parameter; }\n+  //! Modify the parameters of the network.\n+  arma::Mat<ElemType>& Parameters() { return parameter; }\n+\n+  //! Return the weights of the network.\n+  const DataType& Weight() const { return weight; }\n+  //! Modify the weights of the network.\n+  DataType& Weight() { return weight; }\n+  //! Get the weight of the network.\n+  arma::cube const& WeightCube() const { return weightCube; }","path":"src/mlpack/methods/ann/rbm/rbm.hpp","position":342,"original_position":342,"commit_id":"3b1d28bc4953decb33730fd8c23b27b219b5b6ab","original_commit_id":"3c23ed00ac10fd325b44910536d4d67825f8a36a","user":{"login":"zoq","id":4209744,"node_id":"MDQ6VXNlcjQyMDk3NDQ=","avatar_url":"https://avatars3.githubusercontent.com/u/4209744?v=4","gravatar_id":"","url":"https://api.github.com/users/zoq","html_url":"https://github.com/zoq","followers_url":"https://api.github.com/users/zoq/followers","following_url":"https://api.github.com/users/zoq/following{/other_user}","gists_url":"https://api.github.com/users/zoq/gists{/gist_id}","starred_url":"https://api.github.com/users/zoq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zoq/subscriptions","organizations_url":"https://api.github.com/users/zoq/orgs","repos_url":"https://api.github.com/users/zoq/repos","events_url":"https://api.github.com/users/zoq/events{/privacy}","received_events_url":"https://api.github.com/users/zoq/received_events","type":"User","site_admin":false},"body":"Sure, but it does use the internal ``weightCube`` parameter and not the ``WeightCube()``method right?","created_at":"2018-07-23T19:50:47Z","updated_at":"2018-07-23T19:50:47Z","html_url":"https://github.com/mlpack/mlpack/pull/1208#discussion_r204532497","pull_request_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1208","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/comments/204532497"},"html":{"href":"https://github.com/mlpack/mlpack/pull/1208#discussion_r204532497"},"pull_request":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1208"}},"in_reply_to_id":204398776},"pull_request":{"url":"https://api.github.com/repos/mlpack/mlpack/pulls/1208","id":164187473,"node_id":"MDExOlB1bGxSZXF1ZXN0MTY0MTg3NDcz","html_url":"https://github.com/mlpack/mlpack/pull/1208","diff_url":"https://github.com/mlpack/mlpack/pull/1208.diff","patch_url":"https://github.com/mlpack/mlpack/pull/1208.patch","issue_url":"https://api.github.com/repos/mlpack/mlpack/issues/1208","number":1208,"state":"open","locked":false,"title":"Restricted Boltzmann Machine and Spike Slab Restricted Boltzmann Machine","user":{"login":"ShikharJ","id":19722966,"node_id":"MDQ6VXNlcjE5NzIyOTY2","avatar_url":"https://avatars2.githubusercontent.com/u/19722966?v=4","gravatar_id":"","url":"https://api.github.com/users/ShikharJ","html_url":"https://github.com/ShikharJ","followers_url":"https://api.github.com/users/ShikharJ/followers","following_url":"https://api.github.com/users/ShikharJ/following{/other_user}","gists_url":"https://api.github.com/users/ShikharJ/gists{/gist_id}","starred_url":"https://api.github.com/users/ShikharJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShikharJ/subscriptions","organizations_url":"https://api.github.com/users/ShikharJ/orgs","repos_url":"https://api.github.com/users/ShikharJ/repos","events_url":"https://api.github.com/users/ShikharJ/events{/privacy}","received_events_url":"https://api.github.com/users/ShikharJ/received_events","type":"User","site_admin":false},"body":"Another rebase to master of the [original PR](https://github.com/mlpack/mlpack/pull/1046) with some minor changes.\r\nRelevant: #1207\r\nTODOs:\r\n\r\n- [x] Fix build errors\r\n- [ ] Add tests\r\n- [x] Add support for mini-batches","created_at":"2018-01-21T18:18:24Z","updated_at":"2018-07-23T19:50:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"37d947dfb3e5d650dfe06d746d43307c70707a34","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1208/commits","review_comments_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1208/comments","review_comment_url":"https://api.github.com/repos/mlpack/mlpack/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mlpack/mlpack/issues/1208/comments","statuses_url":"https://api.github.com/repos/mlpack/mlpack/statuses/3b1d28bc4953decb33730fd8c23b27b219b5b6ab","head":{"label":"ShikharJ:RBM","ref":"RBM","sha":"3b1d28bc4953decb33730fd8c23b27b219b5b6ab","user":{"login":"ShikharJ","id":19722966,"node_id":"MDQ6VXNlcjE5NzIyOTY2","avatar_url":"https://avatars2.githubusercontent.com/u/19722966?v=4","gravatar_id":"","url":"https://api.github.com/users/ShikharJ","html_url":"https://github.com/ShikharJ","followers_url":"https://api.github.com/users/ShikharJ/followers","following_url":"https://api.github.com/users/ShikharJ/following{/other_user}","gists_url":"https://api.github.com/users/ShikharJ/gists{/gist_id}","starred_url":"https://api.github.com/users/ShikharJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShikharJ/subscriptions","organizations_url":"https://api.github.com/users/ShikharJ/orgs","repos_url":"https://api.github.com/users/ShikharJ/repos","events_url":"https://api.github.com/users/ShikharJ/events{/privacy}","received_events_url":"https://api.github.com/users/ShikharJ/received_events","type":"User","site_admin":false},"repo":{"id":104371656,"node_id":"MDEwOlJlcG9zaXRvcnkxMDQzNzE2NTY=","name":"mlpack","full_name":"ShikharJ/mlpack","owner":{"login":"ShikharJ","id":19722966,"node_id":"MDQ6VXNlcjE5NzIyOTY2","avatar_url":"https://avatars2.githubusercontent.com/u/19722966?v=4","gravatar_id":"","url":"https://api.github.com/users/ShikharJ","html_url":"https://github.com/ShikharJ","followers_url":"https://api.github.com/users/ShikharJ/followers","following_url":"https://api.github.com/users/ShikharJ/following{/other_user}","gists_url":"https://api.github.com/users/ShikharJ/gists{/gist_id}","starred_url":"https://api.github.com/users/ShikharJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShikharJ/subscriptions","organizations_url":"https://api.github.com/users/ShikharJ/orgs","repos_url":"https://api.github.com/users/ShikharJ/repos","events_url":"https://api.github.com/users/ShikharJ/events{/privacy}","received_events_url":"https://api.github.com/users/ShikharJ/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ShikharJ/mlpack","description":"mlpack: a scalable C++ machine learning library -- ","fork":true,"url":"https://api.github.com/repos/ShikharJ/mlpack","forks_url":"https://api.github.com/repos/ShikharJ/mlpack/forks","keys_url":"https://api.github.com/repos/ShikharJ/mlpack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ShikharJ/mlpack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ShikharJ/mlpack/teams","hooks_url":"https://api.github.com/repos/ShikharJ/mlpack/hooks","issue_events_url":"https://api.github.com/repos/ShikharJ/mlpack/issues/events{/number}","events_url":"https://api.github.com/repos/ShikharJ/mlpack/events","assignees_url":"https://api.github.com/repos/ShikharJ/mlpack/assignees{/user}","branches_url":"https://api.github.com/repos/ShikharJ/mlpack/branches{/branch}","tags_url":"https://api.github.com/repos/ShikharJ/mlpack/tags","blobs_url":"https://api.github.com/repos/ShikharJ/mlpack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ShikharJ/mlpack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ShikharJ/mlpack/git/refs{/sha}","trees_url":"https://api.github.com/repos/ShikharJ/mlpack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ShikharJ/mlpack/statuses/{sha}","languages_url":"https://api.github.com/repos/ShikharJ/mlpack/languages","stargazers_url":"https://api.github.com/repos/ShikharJ/mlpack/stargazers","contributors_url":"https://api.github.com/repos/ShikharJ/mlpack/contributors","subscribers_url":"https://api.github.com/repos/ShikharJ/mlpack/subscribers","subscription_url":"https://api.github.com/repos/ShikharJ/mlpack/subscription","commits_url":"https://api.github.com/repos/ShikharJ/mlpack/commits{/sha}","git_commits_url":"https://api.github.com/repos/ShikharJ/mlpack/git/commits{/sha}","comments_url":"https://api.github.com/repos/ShikharJ/mlpack/comments{/number}","issue_comment_url":"https://api.github.com/repos/ShikharJ/mlpack/issues/comments{/number}","contents_url":"https://api.github.com/repos/ShikharJ/mlpack/contents/{+path}","compare_url":"https://api.github.com/repos/ShikharJ/mlpack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ShikharJ/mlpack/merges","archive_url":"https://api.github.com/repos/ShikharJ/mlpack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ShikharJ/mlpack/downloads","issues_url":"https://api.github.com/repos/ShikharJ/mlpack/issues{/number}","pulls_url":"https://api.github.com/repos/ShikharJ/mlpack/pulls{/number}","milestones_url":"https://api.github.com/repos/ShikharJ/mlpack/milestones{/number}","notifications_url":"https://api.github.com/repos/ShikharJ/mlpack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ShikharJ/mlpack/labels{/name}","releases_url":"https://api.github.com/repos/ShikharJ/mlpack/releases{/id}","deployments_url":"https://api.github.com/repos/ShikharJ/mlpack/deployments","created_at":"2017-09-21T16:22:48Z","updated_at":"2018-07-11T13:22:41Z","pushed_at":"2018-07-23T15:33:19Z","git_url":"git://github.com/ShikharJ/mlpack.git","ssh_url":"git@github.com:ShikharJ/mlpack.git","clone_url":"https://github.com/ShikharJ/mlpack.git","svn_url":"https://github.com/ShikharJ/mlpack","homepage":"http://www.mlpack.org/","size":245074,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mlpack:master","ref":"master","sha":"3b7bbf0f14172cdb00fd16cbf12918b07c888b96","user":{"login":"mlpack","id":10216045,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwMjE2MDQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10216045?v=4","gravatar_id":"","url":"https://api.github.com/users/mlpack","html_url":"https://github.com/mlpack","followers_url":"https://api.github.com/users/mlpack/followers","following_url":"https://api.github.com/users/mlpack/following{/other_user}","gists_url":"https://api.github.com/users/mlpack/gists{/gist_id}","starred_url":"https://api.github.com/users/mlpack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlpack/subscriptions","organizations_url":"https://api.github.com/users/mlpack/orgs","repos_url":"https://api.github.com/users/mlpack/repos","events_url":"https://api.github.com/users/mlpack/events{/privacy}","received_events_url":"https://api.github.com/users/mlpack/received_events","type":"Organization","site_admin":false},"repo":{"id":28149409,"node_id":"MDEwOlJlcG9zaXRvcnkyODE0OTQwOQ==","name":"mlpack","full_name":"mlpack/mlpack","owner":{"login":"mlpack","id":10216045,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwMjE2MDQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10216045?v=4","gravatar_id":"","url":"https://api.github.com/users/mlpack","html_url":"https://github.com/mlpack","followers_url":"https://api.github.com/users/mlpack/followers","following_url":"https://api.github.com/users/mlpack/following{/other_user}","gists_url":"https://api.github.com/users/mlpack/gists{/gist_id}","starred_url":"https://api.github.com/users/mlpack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlpack/subscriptions","organizations_url":"https://api.github.com/users/mlpack/orgs","repos_url":"https://api.github.com/users/mlpack/repos","events_url":"https://api.github.com/users/mlpack/events{/privacy}","received_events_url":"https://api.github.com/users/mlpack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mlpack/mlpack","description":"mlpack: a scalable C++ machine learning library -- ","fork":false,"url":"https://api.github.com/repos/mlpack/mlpack","forks_url":"https://api.github.com/repos/mlpack/mlpack/forks","keys_url":"https://api.github.com/repos/mlpack/mlpack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mlpack/mlpack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mlpack/mlpack/teams","hooks_url":"https://api.github.com/repos/mlpack/mlpack/hooks","issue_events_url":"https://api.github.com/repos/mlpack/mlpack/issues/events{/number}","events_url":"https://api.github.com/repos/mlpack/mlpack/events","assignees_url":"https://api.github.com/repos/mlpack/mlpack/assignees{/user}","branches_url":"https://api.github.com/repos/mlpack/mlpack/branches{/branch}","tags_url":"https://api.github.com/repos/mlpack/mlpack/tags","blobs_url":"https://api.github.com/repos/mlpack/mlpack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mlpack/mlpack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mlpack/mlpack/git/refs{/sha}","trees_url":"https://api.github.com/repos/mlpack/mlpack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mlpack/mlpack/statuses/{sha}","languages_url":"https://api.github.com/repos/mlpack/mlpack/languages","stargazers_url":"https://api.github.com/repos/mlpack/mlpack/stargazers","contributors_url":"https://api.github.com/repos/mlpack/mlpack/contributors","subscribers_url":"https://api.github.com/repos/mlpack/mlpack/subscribers","subscription_url":"https://api.github.com/repos/mlpack/mlpack/subscription","commits_url":"https://api.github.com/repos/mlpack/mlpack/commits{/sha}","git_commits_url":"https://api.github.com/repos/mlpack/mlpack/git/commits{/sha}","comments_url":"https://api.github.com/repos/mlpack/mlpack/comments{/number}","issue_comment_url":"https://api.github.com/repos/mlpack/mlpack/issues/comments{/number}","contents_url":"https://api.github.com/repos/mlpack/mlpack/contents/{+path}","compare_url":"https://api.github.com/repos/mlpack/mlpack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mlpack/mlpack/merges","archive_url":"https://api.github.com/repos/mlpack/mlpack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mlpack/mlpack/downloads","issues_url":"https://api.github.com/repos/mlpack/mlpack/issues{/number}","pulls_url":"https://api.github.com/repos/mlpack/mlpack/pulls{/number}","milestones_url":"https://api.github.com/repos/mlpack/mlpack/milestones{/number}","notifications_url":"https://api.github.com/repos/mlpack/mlpack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mlpack/mlpack/labels{/name}","releases_url":"https://api.github.com/repos/mlpack/mlpack/releases{/id}","deployments_url":"https://api.github.com/repos/mlpack/mlpack/deployments","created_at":"2014-12-17T18:16:59Z","updated_at":"2018-07-23T16:40:15Z","pushed_at":"2018-07-23T16:26:25Z","git_url":"git://github.com/mlpack/mlpack.git","ssh_url":"git@github.com:mlpack/mlpack.git","clone_url":"https://github.com/mlpack/mlpack.git","svn_url":"https://github.com/mlpack/mlpack","homepage":"http://www.mlpack.org/","size":244436,"stargazers_count":2288,"watchers_count":2288,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":822,"mirror_url":null,"archived":false,"open_issues_count":113,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":822,"open_issues":113,"watchers":2288,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1208"},"html":{"href":"https://github.com/mlpack/mlpack/pull/1208"},"issue":{"href":"https://api.github.com/repos/mlpack/mlpack/issues/1208"},"comments":{"href":"https://api.github.com/repos/mlpack/mlpack/issues/1208/comments"},"review_comments":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1208/comments"},"review_comment":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1208/commits"},"statuses":{"href":"https://api.github.com/repos/mlpack/mlpack/statuses/3b1d28bc4953decb33730fd8c23b27b219b5b6ab"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"zoq"}}