Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #if !defined(ALIZE_StatServer_h)
00056 #define ALIZE_StatServer_h
00057
00058 #if defined(_WIN32)
00059 #if defined(ALIZE_EXPORTS)
00060 #define ALIZE_API __declspec(dllexport)
00061 #else
00062 #define ALIZE_API __declspec(dllimport)
00063 #endif
00064 #else
00065 #define ALIZE_API
00066 #endif
00067
00068 #include "Object.h"
00069 #include "alizeString.h"
00070 #include "LKVector.h"
00071 #include "ViterbiAccum.h"
00072 #include "MixtureStat.h"
00073
00074 #if defined(__GNUC__)
00075 #define DEPRECATED(func) func __attribute__ ((deprecated))
00076 #elif defined(_MSC_VER)
00077 #define DEPRECATED(func) __declspec(deprecated) func
00078 #else
00079 #pragma message("WARNING: You need to implement DEPRECATED for this compiler")
00080 #define DEPRECATED(func) func
00081 #endif
00082
00083 namespace alize
00084 {
00085 class Config;
00086 class FrameAcc;
00087 class FrameAccGD;
00088 class FrameAccGF;
00089 class MixtureGDStat;
00090 class MixtureGFStat;
00091 class MixtureServer;
00092 class Mixture;
00093 class MixtureGF;
00094 class MixtureGD;
00095 class MixtureStat;
00096
00103
00104 class ALIZE_API StatServer : public Object
00105 {
00106 friend class TestStatServer;
00107 friend class TestMixtureGDStat;
00108
00109 public :
00110
00115 explicit StatServer(const Config& c);
00116
00122 explicit StatServer(const Config& c, MixtureServer& ms);
00123
00124 virtual ~StatServer();
00125
00128 void reset();
00129
00135 lk_t computeLLK(const Mixture& m, const Feature& f) const;
00136
00144 lk_t computeLLK(const Mixture& m, const Feature& f, unsigned long idx) const;
00145
00152 void computeAllDistribLK(const Feature& f);
00153
00158 const LKVector& getTopDistribIndexVector() const;
00159
00165 void setTopDistribIndexVector(const ULongVector& indexVect,
00166 real_t sumNonTopDistribWeights,
00167 real_t sumNonTopDistribLK);
00168
00175 DEPRECATED(real_t getAccumulatedOccFeatureCount(const Mixture& m));
00176
00186 void resetLLK(const Mixture& m);
00187
00195 DEPRECATED(lk_t getLLK(const Mixture& m));
00196
00209 lk_t computeAndAccumulateLLK(const Mixture& m, const Feature& f,
00210 const TopDistribsAction& a = TOP_DISTRIBS_NO_ACTION);
00211
00224 lk_t computeAndAccumulateLLK(const Mixture& m, const Feature& f,
00225 double w, const TopDistribsAction& a = TOP_DISTRIBS_NO_ACTION);
00226
00235 DEPRECATED(void accumulateLLK(const Mixture& m, double l, double w = 1.0));
00236
00247 lk_t getMeanLLK(const Mixture& m);
00248
00258 DEPRECATED(lk_t computeAndAccumulateLLK(const Mixture& m));
00259
00269 DEPRECATED(void resetOcc(const Mixture& m));
00270
00278 DEPRECATED(real_t computeAndAccumulateOcc(const Mixture& m, const Feature& f));
00279
00287 DEPRECATED(occ_t* getMeanOccVect(const Mixture& m));
00288
00296 DEPRECATED(occ_t* getAccumulatedOccVect(const Mixture& m));
00297
00303 DEPRECATED(occ_t getAccumulatedOcc(const Mixture& m));
00304
00310 DEPRECATED(void resetEM(const Mixture& m));
00311
00319 DEPRECATED(occ_t computeAndAccumulateEM(const Mixture& m, const Feature&));
00320
00328 DEPRECATED(const Mixture& getEM(const Mixture& m));
00329
00330
00331
00337 MixtureStat& createAndStoreMixtureStat(const Mixture& m);
00338
00344 MixtureGDStat& createAndStoreMixtureStat(MixtureGD& m);
00345
00351 MixtureGFStat& createAndStoreMixtureStat(MixtureGF& m);
00352
00359 MixtureGDStat& createAndStoreMixtureGDStat(Mixture& m);
00360
00367 MixtureGFStat& createAndStoreMixtureGFStat(Mixture& m);
00368
00372 unsigned long getMixtureStatCount() const;
00373
00378 MixtureStat& getMixtureStat(unsigned long idx);
00379
00384 MixtureGDStat& getMixtureGDStat(unsigned long idx);
00385
00390 MixtureGFStat& getMixtureGFStat(unsigned long idx);
00391
00395 void deleteMixtureStat(MixtureStat& m);
00396
00401 void deleteMixtureStat(unsigned long begin, unsigned long end);
00402
00405 void deleteAllMixtureStat();
00406
00412 unsigned long getMixtureStatIndex(MixtureStat& m) const;
00413
00414
00415
00419 ViterbiAccum& createViterbiAccum();
00420
00421
00422
00425 static FrameAccGD createFrameAccGD();
00426
00429 static FrameAccGF createFrameAccGF();
00430
00431
00432
00433 const String& getServerName() const;
00434
00435 void setServerName(const String& s);
00436
00437 virtual String getClassName() const;
00438
00439 virtual String toString() const;
00440
00441
00442
00443 const DoubleVector& getDistribLKVector(const K&) const;
00444 LKVector& getTopDistribIndexVector(const K&);
00445 lk_t computeLLK(const K&, const Mixture&) const;
00446 lk_t computeLLK(const K&, const Mixture& m, const Feature& f,
00447 const TopDistribsAction& a);
00448
00449 lk_t computeLLK(const K&, const Mixture& m, const Feature& f,
00450 const LKVector & lkVect);
00451 private :
00452
00453 String _serverName;
00454 const Config& _config;
00455 DoubleVector _distribLKVect;
00456 MixtureServer* _pMixtureServer;
00457 RefVector<MixtureStat> _mixtureStatVect;
00458 RefVector<ViterbiAccum> _viterbiAccumVect;
00459 const Mixture* _pLastMixture;
00460 MixtureStat* _pLastMixtureStat;
00461 LKVector _topDistribsVect;
00462 const lk_t _minLLK;
00463 const lk_t _maxLLK;
00464
00465 lk_t computeLLK(lk_t lk) const;
00466
00469 MixtureStat& getMixtureStat(const Mixture& m);
00470 StatServer(const StatServer&);
00471 const StatServer& operator=(const StatServer&);
00472 bool operator==(const StatServer&) const;
00473 bool operator!=(const StatServer&) const;
00474 };
00475
00476 }
00477
00478 #endif // !defined(ALIZE_StatServer_h)