⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gaussianprior.h

📁 Amis - A maximum entropy estimator 一个最大熵模型统计工具
💻 H
字号:
#ifndef Amis_GaussianPrior_h_#define Amis_GaussianPrior_h_#include <amis/EmpiricalExpect.h>#include <string>#include <vector>#include <memory>AMIS_NAMESPACE_BEGINclass GaussianPrior : public std::vector< Real >{public:  GaussianPrior() {}  virtual ~GaussianPrior() {}  Real sigma( int i ) const {    return sqrt( variance( i ) );  }  Real variance( int i ) const {    return 1.0 / (*this)[ i ];  }  Real invVariance( int i ) const {    return (*this)[ i ];  }  void setSigma( int i, Real s ) {    (*this)[ i ] = 1.0 / ( s * s );  }  void setVariance( int i, Real s ) {    (*this)[ i ] = 1.0 / s;  }  void setInvVariance( int i, Real s ) {    (*this)[ i ] = s;  }public:  virtual void initialize( const EmpiricalExpectBase& empirical_expect ) = 0;  virtual std::string getName() const = 0;};typedef std::auto_ptr< GaussianPrior > GaussianPriorPtr;//////////////////////////////////////////////////////////////////////class GaussianPriorSingle : public GaussianPrior {private:  Real default_sigma;public:  GaussianPriorSingle( Real s ) : GaussianPrior() {    default_sigma = s;  }  virtual ~GaussianPriorSingle() {}  Real defaultSigma() const { return default_sigma; }  void setDefaultSigma( Real s ) { default_sigma = s; }public:  void initialize( const EmpiricalExpectBase& empirical_expect ) {    //std::cerr << "size=" << empirical_expect.size() << std::endl;    resize( empirical_expect.size() );    //std::cerr << size() << std::endl;    Real inv_variance = 1.0 / ( default_sigma * default_sigma );    for ( iterator it = begin(); it != end(); ++it ) {      *it = inv_variance;    }  }  std::string getName() const { return "GaussianPriorSingle"; }};//////////////////////////////////////////////////////////////////////class GaussianPriorInvEmp : public GaussianPrior {private:  Real default_sigma;public:  GaussianPriorInvEmp( Real s ) : GaussianPrior() {    default_sigma = s;  }  virtual ~GaussianPriorInvEmp() {}  Real defaultSigma() const { return default_sigma; }  void setDefaultSigma( Real s ) { default_sigma = s; }public:  void initialize( const EmpiricalExpectBase& empirical_expect ) {    resize( empirical_expect.size() );    Real inv_variance = 1.0 / ( default_sigma * default_sigma );    for ( size_t i = 0; i < size(); ++i ) {      (*this)[ i ] = inv_variance * empirical_expect[ i ] * empirical_expect[ i ];    }  }  std::string getName() const { return "GaussianPriorInvEmp"; }};/*		std::string getVarianceString() const {		OStringStream ss;		ss << "[sigma=" << sigma << ",";		if ( variance_type == SINGLE ) {			ss << "vtype=SINGLE]";		}		else if ( variance_type == INV_EMP ) {			ss << "vtype=INV_EMP]";		}		else if ( variance_type == BAYES_BIN ) {			ss << "vtype=BAYES_BIN]";		}		else if ( variance_type == BAYES_BIN_RAW_SIGMA ) {			ss << "vtype=BAYES_BIN_RAW_SIGMA]";		}		else if ( variance_type == BAYES_BIN_HIST ) {			ss << "vtype=BAYES_BIN_HIST]";		}		else if ( variance_type == BAYES_BIN_HIST_RAW_SIGMA ) {			ss << "vtype=BAYES_BIN_HIST_RAW_SIGMA]";		}		return ss.str();	}*/AMIS_NAMESPACE_END#endif // Amis_GaussianPrior_h_// end of GaussianPrior.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -