Eigen库学习笔记(十四)Eigen实现复杂计算

Eigen库学习笔记(十四)Eigen实现复杂计算

    if covariance_type == 'full':
        log_prob = np.empty((n_samples, n_components))
        for k, (mu, prec_chol) in enumerate(zip(means, precisions_chol)):
            y = np.dot(X, prec_chol) - np.dot(mu, prec_chol)
            log_prob[:, k] = np.sum(np.square(y), axis=1)

下面测试程序只是为了测试实现:log_prob[:, k] = np.sum(np.square(y), axis=1)

#include<Eigen/Core>
#include<iostream>
#include <fstream>
#include <vector>
using namespace std;
using namespace Eigen;

int main()
{
    
    
	MatrixXf input(2, 4);

	input << -1, -2, -3, -4,
		- 1, -2, -3, -4;
	MatrixXf X(4, 1);
	X << -1, -2, -3, -4;
	MatrixXf den(2, 1);
	den << 2, 1;
	MatrixXf log_prob(input.rows(), input.cols());
	for (int k = 0; k < input.cols(); k++)
	{
    
    
		log_prob.col(k) = input.col(k).array().square().rowwise().sum();
	}
	cout << "log_prob: \n" << log_prob << endl;

	return 0;
}

执行结果:

log_prob:
 1  4  9 16
 1  4  9 16

猜你喜欢

转载自blog.csdn.net/juluwangriyue/article/details/123351886