51 template <
typename T,
typename Scalar>
54 size_t max_iter = 1000,
double eps = 1e-50) {
57 const auto x =
static_cast<size_t>(X.rows());
58 const auto y =
static_cast<size_t>(X.cols());
71 Eigen::Map<const vector_t<Scalar>> beta(model_params.
beta.
data(), 1,
80 vector_t<T> beta_row = (U_pjk.row(j) + beta).array();
81 vector_t<T> sum_alpha_row = U_ppk.array() + sum_alpha;
82 prob = alpha_row.array() * beta_row.array() /
83 (sum_alpha_row.array() + eps);
96 static_cast<unsigned long>(U_ppk.cols()));
103 for (
long k = 0; k < U.dimension(2); ++k) {
104 prob(k) = U(i, j, k);
107 gsl_ran_multinomial(rnd_gen.
get(),
static_cast<size_t>(prob.cols()), 1,
108 prob.data(), multinomial_sample.
data());
111 multinomial_sample.
end()));
120 vector_t<T> beta_row = (U_pjk.row(j) + beta).array();
121 vector_t<T> sum_alpha_row = U_ppk.array() + sum_alpha;
122 prob = alpha_row.array() * beta_row.array() /
123 (sum_alpha_row.array() + eps);
Structure to hold the parameters for the Allocation Model .
Definition: alloc_model_params.hpp:25
util::Generator< std::pair< int, int >, details::SampleOnesNoReplaceComputer< T > > sample_ones_noreplace(const matrix_t< T > &X)
Return a bnmf_algs::util::Generator that will generate a sequence of samples from the given matrix wi...
Definition: sampling.hpp:526
Eigen::Tensor< Scalar, N, Eigen::RowMajor > tensor_t
Tensor type used in the computations.
Definition: defs.hpp:52
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > matrix_t
Matrix type used in the computations.
Definition: defs.hpp:41
util::Generator< std::pair< int, int >, details::SampleOnesReplaceComputer< T > > sample_ones_replace(const matrix_t< T > &X, size_t num_samples)
Return a bnmf_algs::util::Generator that will generate a sequence of samples from the given matrix wi...
Definition: sampling.hpp:567
std::vector< Scalar > alpha
Parameter vector of Dirichlet prior for matrix of size .
Definition: alloc_model_params.hpp:37
void check_bld_params(const matrix_t< T > &X, size_t z, const alloc_model::Params< Scalar > &model_params)
Do parameter checks on BLD computing function parameters and throw an assertion error if the paramete...
Definition: util_details.hpp:20
tensor_t< T, 3 > collapsed_icm(const matrix_t< T > &X, size_t z, const alloc_model::Params< Scalar > &model_params, size_t max_iter=1000, double eps=1e-50)
Compute tensor , the solution of BLD problem , from matrix using collapsed iterated conditional mode...
Definition: collapsed_icm.hpp:52
std::vector< Scalar > beta
Parameter vector of Dirichlet prior for matrix of size .
Definition: alloc_model_params.hpp:42
Eigen::Matrix< Scalar, 1, Eigen::Dynamic, Eigen::RowMajor > vector_t
Vector type used in the computations.
Definition: defs.hpp:27
Main namespace for bnmf-algs library.
Definition: alloc_model_funcs.hpp:12