Skip to content

Commit 9b89e76

Browse files
committed
[Jenkins] auto-formatting by clang-format version 6.0.0-1ubuntu2~16.04.1 (tags/RELEASE_600/final)
1 parent f2b1207 commit 9b89e76

File tree

8 files changed

+156
-179
lines changed

8 files changed

+156
-179
lines changed

src/stan/services/experimental/advi/lowrank.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ int lowrank(Model& model, const stan::io::var_context& init,
5454
double tol_rel_obj, int rank, double eta, bool adapt_engaged,
5555
int adapt_iterations, int eval_elbo, int output_samples,
5656
callbacks::interrupt& interrupt, callbacks::logger& logger,
57-
callbacks::writer& init_writer,
58-
callbacks::writer& parameter_writer,
57+
callbacks::writer& init_writer, callbacks::writer& parameter_writer,
5958
callbacks::writer& diagnostic_writer) {
6059
util::experimental_message(logger);
6160

@@ -75,9 +74,9 @@ int lowrank(Model& model, const stan::io::var_context& init,
7574
Eigen::VectorXd cont_params
7675
= Eigen::Map<Eigen::VectorXd>(&cont_vector[0], cont_vector.size(), 1);
7776

78-
stan::variational::advi_lowrank<Model, boost::ecuyer1988>
79-
cmd_advi(model, cont_params, rng, rank, grad_samples, elbo_samples,
80-
eval_elbo, output_samples);
77+
stan::variational::advi_lowrank<Model, boost::ecuyer1988> cmd_advi(
78+
model, cont_params, rng, rank, grad_samples, elbo_samples, eval_elbo,
79+
output_samples);
8180
cmd_advi.run(eta, adapt_engaged, adapt_iterations, tol_rel_obj,
8281
max_iterations, logger, parameter_writer, diagnostic_writer);
8382

src/stan/variational/advi.hpp

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -569,53 +569,50 @@ class advi_base {
569569
virtual Q init_variational(size_t dimension) const = 0;
570570
};
571571

572-
template<class Model, class Q, class BaseRNG>
572+
template <class Model, class Q, class BaseRNG>
573573
class advi : public advi_base<Model, Q, BaseRNG> {
574574
public:
575575
advi(Model& m, Eigen::VectorXd& cont_params, BaseRNG& rng,
576-
int n_monte_carlo_grad, int n_monte_carlo_elbo, int eval_elbo,
577-
int n_posterior_samples)
578-
: advi_base<Model, Q, BaseRNG>(m, cont_params, rng, n_monte_carlo_grad,
579-
n_monte_carlo_elbo, eval_elbo,
580-
n_posterior_samples) {}
576+
int n_monte_carlo_grad, int n_monte_carlo_elbo, int eval_elbo,
577+
int n_posterior_samples)
578+
: advi_base<Model, Q, BaseRNG>(m, cont_params, rng, n_monte_carlo_grad,
579+
n_monte_carlo_elbo, eval_elbo,
580+
n_posterior_samples) {}
581581

582582
private:
583583
Q init_variational(Eigen::VectorXd& cont_params) const {
584584
return Q(cont_params);
585585
}
586586

587-
Q init_variational(size_t dimension) const {
588-
return Q(dimension);
589-
}
587+
Q init_variational(size_t dimension) const { return Q(dimension); }
590588
};
591589

592-
template<class Model, class BaseRNG>
593-
class advi_lowrank : public advi_base
594-
<Model, stan::variational::normal_lowrank, BaseRNG> {
590+
template <class Model, class BaseRNG>
591+
class advi_lowrank
592+
: public advi_base<Model, stan::variational::normal_lowrank, BaseRNG> {
595593
public:
596594
/**
597-
* Constructor
598-
*
599-
* @param[in] m stan model
600-
* @param[in] cont_params initialization of continuous parameters
601-
* @param[in,out] rng random number generator
602-
* @param[in] rank rank of approximation
603-
* @param[in] n_monte_carlo_grad number of samples for gradient computation
604-
* @param[in] n_monte_carlo_elbo number of samples for ELBO computation
605-
* @param[in] eval_elbo evaluate ELBO at every "eval_elbo" iters
606-
* @param[in] n_posterior_samples number of samples to draw from posterior
607-
* @throw std::runtime_error if n_monte_carlo_grad is not positive
608-
* @throw std::runtime_error if n_monte_carlo_elbo is not positive
609-
* @throw std::runtime_error if eval_elbo is not positive
610-
* @throw std::runtime_error if n_posterior_samples is not positive
611-
*/
595+
* Constructor
596+
*
597+
* @param[in] m stan model
598+
* @param[in] cont_params initialization of continuous parameters
599+
* @param[in,out] rng random number generator
600+
* @param[in] rank rank of approximation
601+
* @param[in] n_monte_carlo_grad number of samples for gradient computation
602+
* @param[in] n_monte_carlo_elbo number of samples for ELBO computation
603+
* @param[in] eval_elbo evaluate ELBO at every "eval_elbo" iters
604+
* @param[in] n_posterior_samples number of samples to draw from posterior
605+
* @throw std::runtime_error if n_monte_carlo_grad is not positive
606+
* @throw std::runtime_error if n_monte_carlo_elbo is not positive
607+
* @throw std::runtime_error if eval_elbo is not positive
608+
* @throw std::runtime_error if n_posterior_samples is not positive
609+
*/
612610
advi_lowrank(Model& m, Eigen::VectorXd& cont_params, BaseRNG& rng,
613611
size_t rank, int n_monte_carlo_grad, int n_monte_carlo_elbo,
614612
int eval_elbo, int n_posterior_samples)
615-
: advi_base<Model, stan::variational::normal_lowrank, BaseRNG>(m,
616-
cont_params,
617-
rng, n_monte_carlo_grad, n_monte_carlo_elbo,
618-
eval_elbo, n_posterior_samples),
613+
: advi_base<Model, stan::variational::normal_lowrank, BaseRNG>(
614+
m, cont_params, rng, n_monte_carlo_grad, n_monte_carlo_elbo,
615+
eval_elbo, n_posterior_samples),
619616
rank_(rank) {
620617
static const char* function = "stan::variational::advi_lowrank";
621618
math::check_positive(function, "Approximation rank", rank_);
@@ -626,7 +623,7 @@ class advi_lowrank : public advi_base
626623

627624
private:
628625
stan::variational::normal_lowrank init_variational(
629-
Eigen::VectorXd& cont_params) const {
626+
Eigen::VectorXd& cont_params) const {
630627
return stan::variational::normal_lowrank(cont_params, rank_);
631628
}
632629

src/stan/variational/base_family.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ class base_family {
2525
template <class BaseRNG>
2626
Eigen::VectorXd sample(BaseRNG& rng, Eigen::VectorXd& eta) const;
2727
template <class BaseRNG>
28-
Eigen::VectorXd sample_log_g(BaseRNG& rng,
29-
Eigen::VectorXd& eta,
28+
Eigen::VectorXd sample_log_g(BaseRNG& rng, Eigen::VectorXd& eta,
3029
double& log_g) const;
3130
double calc_log_g(Eigen::VectorXd& eta) const;
3231
template <class M, class BaseRNG>

src/stan/variational/families/normal_lowrank.hpp

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -20,54 +20,47 @@ class normal_lowrank : public base_family {
2020
const int dimension_;
2121
const int rank_;
2222

23-
void validate_mean(const char* function,
24-
const Eigen::VectorXd& mu) {
23+
void validate_mean(const char* function, const Eigen::VectorXd& mu) {
2524
stan::math::check_not_nan(function, "Mean vector", mu);
26-
stan::math::check_size_match(function,
27-
"Dimension of input vector", mu.size(),
28-
"Dimension of current vector", dimension());
25+
stan::math::check_size_match(function, "Dimension of input vector",
26+
mu.size(), "Dimension of current vector",
27+
dimension());
2928
}
3029

31-
void validate_factor(const char* function,
32-
const Eigen::MatrixXd& B) {
30+
void validate_factor(const char* function, const Eigen::MatrixXd& B) {
3331
stan::math::check_not_nan(function, "Low rank factor", B);
34-
stan::math::check_size_match(function,
35-
"Dimension of mean vector", dimension(),
36-
"Dimension of low-rank factor", B.rows());
37-
stan::math::check_size_match(function,
38-
"Rank of factor", B.cols(),
32+
stan::math::check_size_match(function, "Dimension of mean vector",
33+
dimension(), "Dimension of low-rank factor",
34+
B.rows());
35+
stan::math::check_size_match(function, "Rank of factor", B.cols(),
3936
"Rank of approximation", rank());
4037
}
4138

42-
void validate_noise(const char *function,
43-
const Eigen::VectorXd& log_d) {
39+
void validate_noise(const char* function, const Eigen::VectorXd& log_d) {
4440
stan::math::check_not_nan(function, "log std vector", log_d);
45-
stan::math::check_size_match(function,
46-
"Dimension of mean vector", dimension(),
47-
"Dimension of log std vector", log_d.size());
41+
stan::math::check_size_match(function, "Dimension of mean vector",
42+
dimension(), "Dimension of log std vector",
43+
log_d.size());
4844
}
4945

5046
public:
5147
explicit normal_lowrank(const Eigen::VectorXd& mu, size_t rank)
52-
: mu_(mu),
53-
B_(Eigen::MatrixXd::Zero(mu.size(), rank)),
54-
log_d_(Eigen::VectorXd::Zero(mu.size())),
55-
dimension_(mu.size()),
56-
rank_(rank) {
57-
}
48+
: mu_(mu),
49+
B_(Eigen::MatrixXd::Zero(mu.size(), rank)),
50+
log_d_(Eigen::VectorXd::Zero(mu.size())),
51+
dimension_(mu.size()),
52+
rank_(rank) {}
5853

5954
explicit normal_lowrank(size_t dimension, size_t rank)
60-
: mu_(Eigen::VectorXd::Zero(dimension)),
61-
B_(Eigen::MatrixXd::Zero(dimension, rank)),
62-
log_d_(Eigen::VectorXd::Zero(dimension)),
63-
dimension_(dimension),
64-
rank_(rank) {
65-
}
55+
: mu_(Eigen::VectorXd::Zero(dimension)),
56+
B_(Eigen::MatrixXd::Zero(dimension, rank)),
57+
log_d_(Eigen::VectorXd::Zero(dimension)),
58+
dimension_(dimension),
59+
rank_(rank) {}
6660

67-
explicit normal_lowrank(const Eigen::VectorXd& mu,
68-
const Eigen::MatrixXd& B,
61+
explicit normal_lowrank(const Eigen::VectorXd& mu, const Eigen::MatrixXd& B,
6962
const Eigen::VectorXd& log_d)
70-
: mu_(mu), B_(B), log_d_(log_d), dimension_(mu.size()), rank_(B.cols()) {
63+
: mu_(mu), B_(B), log_d_(log_d), dimension_(mu.size()), rank_(B.cols()) {
7164
static const char* function = "stan::variational::normal_lowrank";
7265
validate_mean(function, mu);
7366
validate_factor(function, B);
@@ -123,8 +116,8 @@ class normal_lowrank : public base_family {
123116
= "stan::variational::normal_lowrank::operator=";
124117
stan::math::check_size_match(function, "Dimension of lhs", dimension(),
125118
"Dimension of rhs", rhs.dimension());
126-
stan::math::check_size_match(function, "Rank of lhs", rank(),
127-
"Rank of rhs", rhs.rank());
119+
stan::math::check_size_match(function, "Rank of lhs", rank(), "Rank of rhs",
120+
rhs.rank());
128121
mu_ = rhs.mu();
129122
B_ = rhs.B();
130123
log_d_ = rhs.log_d();
@@ -136,8 +129,8 @@ class normal_lowrank : public base_family {
136129
= "stan::variational::normal_lowrank::operator+=";
137130
stan::math::check_size_match(function, "Dimension of lhs", dimension(),
138131
"Dimension of rhs", rhs.dimension());
139-
stan::math::check_size_match(function, "Rank of lhs", rank(),
140-
"Rank of rhs", rhs.rank());
132+
stan::math::check_size_match(function, "Rank of lhs", rank(), "Rank of rhs",
133+
rhs.rank());
141134
mu_ += rhs.mu();
142135
B_ += rhs.B();
143136
log_d_ += rhs.log_d();
@@ -150,8 +143,8 @@ class normal_lowrank : public base_family {
150143

151144
stan::math::check_size_match(function, "Dimension of lhs", dimension(),
152145
"Dimension of rhs", rhs.dimension());
153-
stan::math::check_size_match(function, "Rank of lhs", rank(),
154-
"Rank of rhs", rhs.rank());
146+
stan::math::check_size_match(function, "Rank of lhs", rank(), "Rank of rhs",
147+
rhs.rank());
155148
mu_.array() /= rhs.mu().array();
156149
B_.array() /= rhs.B().array();
157150
log_d_.array() /= rhs.log_d().array();
@@ -179,24 +172,29 @@ class normal_lowrank : public base_family {
179172
// Determinant by the matrix determinant lemma
180173
// det(D^2 + B.B^T) = det(I + B^T.D^-2.B) * det(D^2)
181174
// where D^2 is diagonal and so can be computed accordingly
182-
result
183-
+= 0.5 * log(
184-
(Eigen::MatrixXd::Identity(r, r) +
185-
B_.transpose() *
186-
log_d_.array().exp().square().matrix().asDiagonal().inverse() *
187-
B_).determinant());
175+
result += 0.5
176+
* log((Eigen::MatrixXd::Identity(r, r)
177+
+ B_.transpose()
178+
* log_d_.array()
179+
.exp()
180+
.square()
181+
.matrix()
182+
.asDiagonal()
183+
.inverse()
184+
* B_)
185+
.determinant());
188186
for (int d = 0; d < dimension(); ++d) {
189187
result += log_d_(d);
190188
}
191189
return result;
192190
}
193191

194192
Eigen::VectorXd transform(const Eigen::VectorXd& eta) const {
195-
static const char* function =
196-
"stan::variational::normal_lowrank::transform";
197-
stan::math::check_size_match(function,
198-
"Dimension of input vector", eta.size(),
199-
"Sum of dimension and rank", dimension() + rank());
193+
static const char* function
194+
= "stan::variational::normal_lowrank::transform";
195+
stan::math::check_size_match(function, "Dimension of input vector",
196+
eta.size(), "Sum of dimension and rank",
197+
dimension() + rank());
200198
stan::math::check_not_nan(function, "Input vector", eta);
201199
Eigen::VectorXd z = eta.head(rank());
202200
Eigen::VectorXd eps = eta.tail(dimension());
@@ -238,14 +236,11 @@ class normal_lowrank : public base_family {
238236
}
239237

240238
template <class M, class BaseRNG>
241-
void calc_grad(normal_lowrank& elbo_grad,
242-
M& m,
243-
Eigen::VectorXd& cont_params,
244-
int n_monte_carlo_grad,
245-
BaseRNG& rng,
239+
void calc_grad(normal_lowrank& elbo_grad, M& m, Eigen::VectorXd& cont_params,
240+
int n_monte_carlo_grad, BaseRNG& rng,
246241
callbacks::logger& logger) const {
247-
static const char* function =
248-
"stan::variational::normal_lowrank::calc_grad";
242+
static const char* function
243+
= "stan::variational::normal_lowrank::calc_grad";
249244

250245
stan::math::check_size_match(function, "Dimension of elbo_grad",
251246
elbo_grad.dimension(),
@@ -255,8 +250,8 @@ class normal_lowrank : public base_family {
255250
cont_params.size());
256251

257252
stan::math::check_size_match(function, "Rank of elbo_grad",
258-
elbo_grad.rank(),
259-
"Rank of variational q", rank());
253+
elbo_grad.rank(), "Rank of variational q",
254+
rank());
260255

261256
Eigen::VectorXd mu_grad = Eigen::VectorXd::Zero(dimension());
262257
Eigen::MatrixXd B_grad = Eigen::MatrixXd::Zero(dimension(), rank());
@@ -279,7 +274,7 @@ class normal_lowrank : public base_family {
279274

280275
// Naive Monte Carlo integration
281276
static const int n_retries = 10;
282-
for (int i = 0, n_monte_carlo_drop = 0; i < n_monte_carlo_grad; ) {
277+
for (int i = 0, n_monte_carlo_drop = 0; i < n_monte_carlo_grad;) {
283278
// Draw from standard normal and transform to real-coordinate space
284279
for (int d = 0; d < dimension() + rank(); ++d) {
285280
eta(d) = stan::math::normal_rng(0, 1, rng);
@@ -313,8 +308,9 @@ class normal_lowrank : public base_family {
313308
const char* name = "The number of dropped evaluations";
314309
const char* msg1 = "has reached its maximum amount (";
315310
int y = n_retries * n_monte_carlo_grad;
316-
const char* msg2 = "). Your model may be either severely "
317-
"ill-conditioned or misspecified.";
311+
const char* msg2
312+
= "). Your model may be either severely "
313+
"ill-conditioned or misspecified.";
318314
stan::math::domain_error(function, name, y, msg1, msg2);
319315
}
320316
}
@@ -337,8 +333,7 @@ class normal_lowrank : public base_family {
337333
}
338334
};
339335

340-
inline normal_lowrank operator+(normal_lowrank lhs,
341-
const normal_lowrank& rhs) {
336+
inline normal_lowrank operator+(normal_lowrank lhs, const normal_lowrank& rhs) {
342337
return lhs += rhs;
343338
}
344339

@@ -351,8 +346,7 @@ inline normal_lowrank operator+(normal_lowrank lhs,
351346
* @return Elementwise division of the specified approximations.
352347
* @throw std::domain_error If the dimensionalities do not match.
353348
*/
354-
inline normal_lowrank operator/(normal_lowrank lhs,
355-
const normal_lowrank& rhs) {
349+
inline normal_lowrank operator/(normal_lowrank lhs, const normal_lowrank& rhs) {
356350
return lhs /= rhs;
357351
}
358352

src/test/unit/variational/advi_messages_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ TEST_F(advi_test, prev_elbo_larger_fullrank) {
116116
}
117117

118118
TEST_F(advi_test, prev_elbo_larger_lowrank) {
119-
EXPECT_EQ(0, advi_lowrank_->run(10, 0, 50, 0.2, 100, logger,
120-
parameter_writer, diagnostic_writer));
119+
EXPECT_EQ(0, advi_lowrank_->run(10, 0, 50, 0.2, 100, logger, parameter_writer,
120+
diagnostic_writer));
121121
EXPECT_TRUE(log_stream_.str().find(err_msg2) != std::string::npos)
122122
<< "The message should have err_msg2 inside it.";
123123
}

0 commit comments

Comments
 (0)