亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? htrain.c

?? 隱馬爾科夫模型工具箱
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   SPEECH                    *//*                       | | | | \   RECOGNITION               *//*                       =========   SOFTWARE                  */ /*                                                             *//*                                                             *//* ----------------------------------------------------------- *//* developed at:                                               *//*                                                             *//*      Speech Vision and Robotics group                       *//*      Cambridge University Engineering Department            *//*      http://svr-www.eng.cam.ac.uk/                          *//*                                                             *//*      Entropic Cambridge Research Laboratory                 *//*      (now part of Microsoft)                                *//*                                                             *//* ----------------------------------------------------------- *//*         Copyright: Microsoft Corporation                    *//*          1995-2000 Redmond, Washington USA                  *//*                    http://www.microsoft.com                 *//*                                                             *//*              2002  Cambridge University                     *//*                    Engineering Department                   *//*                                                             *//*   Use of this software is governed by a License Agreement   *//*    ** See the file License for the Conditions of Use  **    *//*    **     This banner notice must not be removed      **    *//*                                                             *//* ----------------------------------------------------------- *//*         File: HTrain.c   HMM Training Support Routines      *//* ----------------------------------------------------------- */char *htrain_version = "!HVER!HTrain:   3.2 [CUED 09/12/02]";char *htrain_vc_id = "$Id: HTrain.c,v 1.8 2002/12/19 16:37:11 ge204 Exp $";#include "HShell.h"#include "HMem.h"#include "HMath.h"#include "HSigP.h"#include "HAudio.h"#include "HWave.h"#include "HVQ.h"#include "HParm.h"#include "HLabel.h"#include "HModel.h"#include "HUtil.h"#include "HTrain.h"/* --------------------------- Trace Flags ------------------------- */#define T_TOP  00001       /* Top Level tracing */#define T_SEQ  00002       /* Trace sequence operations */#define T_CGE  00004       /* General cluster tracing */#define T_CLC  00010       /* Trace cluster convergence */#define T_DCM  00020       /* Dump cluster map after each cycle */#define T_CAL  00040       /* Trace item to cluster allocation */#define T_CDI  00100       /* Trace cluster distance calc */#define T_NAC  00200       /* Count accs created */#define T_ALD  00400       /* Trace acc load/dump */static int trace = 0;/* --------------------------- Initialisation ---------------------- */static ConfParam *cParm[MAXGLOBS];      /* config parameters */static int nParm = 0;static int maxIter = 10;               /* max num cluster iterations */static int minClustSize = 3;           /* min num vectors in cluster */static Boolean ldBinary = TRUE;        /* load/dump in binary */#define DoPreComps(hsKind) (hsKind==SHAREDHS||hsKind==PLAINHS)/* EXPORT->InitTrain: initialise configuration parameters */void InitTrain(void){   int i;   Boolean b;   Register(htrain_version,htrain_vc_id);   nParm = GetConfig("HTRAIN", TRUE, cParm, MAXGLOBS);   if (nParm>0){      if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i;      if (GetConfInt(cParm,nParm,"MAXCLUSTITER",&i)) maxIter = i;      if (GetConfInt(cParm,nParm,"MINCLUSTSIZE",&i)) minClustSize = i;      if (GetConfBool(cParm,nParm,"BINARYACCFORMAT",&b)) ldBinary = b;   }}/* -------------------- Generic Sequence Type ------------------- *//*  Items are stored within chained lists of blocks.  Items are   normally added to the end of the last block.  If the last  block is full, then the item is inserted into the first block  with a free item slot.  If all blocks are full, then a new  block is created and chained to the end of the list.*/   /* NewItemBlock: create and return an emptry ItemBlock */static IBLink NewItemBlock(MemHeap *x, int blkSize){   IBLink b;      if (trace&T_SEQ)      printf("HTrain: creating item block, %d items on stack %s\n",             blkSize,x->name);   b = (IBLink)New(x,sizeof(ItemBlock));   b->used = 0; b->next = NULL;   b->items = (Ptr *)New(x,sizeof(Ptr)*blkSize);   return b;}/* EXPORT->CreateSequence: create and return an empty sequence */Sequence CreateSequence(MemHeap *x, int blkSize){   Sequence s;      s = (Sequence)New(x,sizeof(SequenceInfo));   s->mem = x;    s->nItems = 0;   s->nFree = s->blkSize = blkSize;   s->hd = s->tl = NewItemBlock(x,blkSize);   return s;}/* EXPORT->StoreItem: store item in seq, extend if needed */void StoreItem(Sequence seq, Ptr item){   IBLink b;   if (seq->nFree==0){     /* add a block */      b = NewItemBlock(seq->mem,seq->blkSize);      seq->tl->next = b; seq->tl = b;      seq->nFree = seq->blkSize;   }   if (seq->tl->used < seq->blkSize) { /* try last block first */      b = seq->tl;      b->items[b->used++] = item;   }else{   /* otherwise search blocks for empty slot */      for (b = seq->hd; b->used == seq->blkSize; b = b->next)         if (b==NULL)            HError(7190,"StoreItem: free slot missing");      b->items[b->used++] = item;   }   --seq->nFree; ++seq->nItems;}/* FindItemBlock: find block containing i'th item, j is index in block */static IBLink FindItemBlock(Sequence seq, int i, int *j){   IBLink b;      if (i > seq->nItems)      HError(7171,"FindItemBlock: %d'th item from %d requested",             i,seq->nItems);   b = seq->hd;   while (i>b->used){      i -= b->used; b = b->next;   }   *j = i-1;   return b;}/* EXPORT->DeleteItem: delete i'th item */void DeleteItem(Sequence seq, int i){   IBLink b;   int j,k;      b = FindItemBlock(seq,i,&j);   --b->used;   for (k=j; k<b->used; k++)      b->items[k] = b->items[k+1];   ++seq->nFree; --seq->nItems;}/* EXPORT->GetItem: return ptr to the i'th item in sequence */Ptr GetItem(Sequence seq, int i){   IBLink b;   int j;      b = FindItemBlock(seq,i,&j);   return b->items[j];  }/* ------------ Segment (Observation Sequence) Storage ------------ *//* EXPORT->CreateSegStore: Create and return an empty segment store   suitable for observations of form obs. */SegStore CreateSegStore(MemHeap *x, Observation obs, int segLen){   SegStore ss;      ss = (SegStore)New(x,sizeof(SegStoreRec));   ss->mem = x;   ss->o = obs; ss->segLen = segLen;   ss->hasfv = (obs.pk&BASEMASK) != DISCRETE;   ss->hasvq = (obs.pk&HASVQ)  || (obs.pk&BASEMASK) == DISCRETE;   if (ss->hasfv) ss->fvSegs = CreateSequence(x,100);   if (ss->hasvq) ss->vqSegs = CreateSequence(x,100);   return ss;}/* EXPORT->LoadSegment: of obs in pbuf from start to end */void LoadSegment(SegStore ss, HTime start, HTime end, ParmBuf pbuf){   Sequence vq;   Sequence fv;   BufferInfo info;   long i,st,en,len;   int s,S = ss->o.swidth[0];   short *vqItem;   Vector *fvItem;      GetBufferInfo(pbuf,&info);   st = (long)(start/info.tgtSampRate);   en = (long)(end/info.tgtSampRate);   len = ObsInBuffer(pbuf);   if (en >= len) en = len-1;   if (st > en) {      HError(-7173,"LoadSegment: empty segment");      return;   }   if (ss->hasvq) vq = CreateSequence(ss->mem,ss->segLen);   if (ss->hasfv) fv = CreateSequence(ss->mem,ss->segLen);   for (i=st; i<=en; i++) {      if (ss->hasfv) { /* put new vectors in ss->o */         for (s=1; s<=S; s++)             ss->o.fv[s] = CreateVector(ss->mem,ss->o.swidth[s]);              }      ReadAsTable(pbuf,i,&(ss->o));      if (ss->hasvq) {         vqItem = (short *)New(ss->mem,sizeof(short)*(S+1));         for (s=1; s<=S; s++)             vqItem[s] = ss->o.vq[s];         StoreItem(vq, (Ptr) vqItem);      }      if (ss->hasfv) {         fvItem = (Vector *)New(ss->mem,sizeof(Vector)*(S+1));         for (s=1; s<=S; s++)             fvItem[s] = ss->o.fv[s];         StoreItem(fv, (Ptr) fvItem);      }   }   if (ss->hasvq) StoreItem(ss->vqSegs, (Ptr)vq);   if (ss->hasfv) StoreItem(ss->fvSegs, (Ptr)fv);}/* EXPORT->SegLength: Return num obs in i'th segment */int SegLength(SegStore ss, int i){   Sequence s;      if (ss->hasfv)       s = (Sequence) GetItem(ss->fvSegs,i);   else if (ss->hasvq)      s = (Sequence) GetItem(ss->vqSegs,i);   else      HError(7191,"SegLength: no fv or vq seg stored");   return s->nItems;}/* EXPORT->NumSegs: Return num segments in ss */int NumSegs(SegStore ss){   if (ss->hasfv)       return ss->fvSegs->nItems;   else if (ss->hasvq)      return ss->vqSegs->nItems;   else      HError(7191,"NumSegs: no fv or vq segs stored");   return 0;  /* to keep compiler happy */}/* EXPORT->GetSegObs: Return j'th observation from i'th segment */Observation GetSegObs(SegStore ss, int i, int j){   Sequence vq;   Sequence fv;   int s,S = ss->o.swidth[0];   short *vqItem;   Vector *fvItem;      if (ss->hasvq) {      vq = (Sequence) GetItem(ss->vqSegs,i);      vqItem = (short *) GetItem(vq,j);      for (s=1; s<=S; s++)          ss->o.vq[s] = vqItem[s];   }        if (ss->hasfv) {      fv = (Sequence) GetItem(ss->fvSegs,i);      fvItem = (Vector *) GetItem(fv,j);      for (s=1; s<=S; s++)          ss->o.fv[s] = fvItem[s];   }        return ss->o;}/* EXPORT->SequenceMean: compute mean of vectors in ss */void SequenceMean(Sequence ss, Vector mean){   Vector v;   int i,j,size;   double n;   DVector sum;   size = VectorSize(mean);   sum = CreateDVector(&gstack,size);   ZeroDVector(sum);   n = ss->nItems;   for (i=1; i<=ss->nItems; i++) {      v = (Vector) GetItem(ss,i);      for (j=1; j<=size; j++)         sum[j] += v[j];   }   for (j=1; j<=size; j++)      mean[j] = sum[j]/n;   FreeDVector(&gstack,sum);}/* EXPORT->SequenceCov: compute covariance of vectors in ss */void SequenceCov(Sequence ss, CovKind ck, Covariance cov, Vector mean){   Vector v;   int i,j,k,size;   double n,x,y;   DVector sqsum;   DMatrix xsum;      switch(ck){   case DIAGC:       /* diagonal covariance matrix */   case INVDIAGC:    /* inverse diag covariance matrix */      size = VectorSize(cov.var);      sqsum = CreateDVector(&gstack,size);      ZeroDVector(sqsum);      n = ss->nItems;      for (i=1; i<=ss->nItems; i++) {         v = (Vector) GetItem(ss,i);         for (j=1; j<=size; j++){            x = v[j]-mean[j];            sqsum[j] += x*x;         }      }      for (j=1; j<=size; j++)         cov.var[j] = (ck==DIAGC)?sqsum[j]/n:n/sqsum[j];      FreeDVector(&gstack,sqsum);      break;   case FULLC:    /* inverse full covariance matrix */      size = TriMatSize(cov.inv);      xsum = CreateDMatrix(&gstack,size,size);      ZeroDMatrix(xsum);      n = ss->nItems;      for (i=1; i<=ss->nItems; i++) {         v = (Vector) GetItem(ss,i);         for (j=1; j<=size; j++)            for (k=1; k<=j; k++){               x = v[j]-mean[j];               y = v[k]-mean[k];               xsum[j][k] += x*y;            }      }      for (j=1; j<=size; j++)         for (k=1; k<=j; k++)            cov.inv[j][k] = xsum[j][k]/n;      CovInvert(cov.inv,cov.inv);      FreeDMatrix(&gstack,xsum);      break;   default:      HError(7170,"SequenceCov: unsupported cov kind [%d]",ck);   }}/* --------------------- Vector Clustering -------------------- *//*    The routines in this section implement a top-down clustering   algorithm.  There are two clustering modes: linear and tree   based.  Both are top-down and start from a single cluster.      In the default linear mode, the largest cluster is   successively split until the required number of clusters are   formed.  Each cluster centre is the average of all vectors in the   cluster.  Splitting is performed by perturbing the cluster centre to   form two cluster centres.  The largest cluster is defined as that   which has the largest average construction cost.      In tree clustering mode, the current leaves are split regardless   of their size.      Linear mode is best for clustering small data sets (eg as in HInit).   Either mode can be used for large data sets (eg as in HQuant).*/static int curNumCl;    /* num clust currently created */static int nItems;      /* num items in pool */static ClusterSet *ccs; /* current cluster set */static Sequence cvp;    /* current vector pool being clustered */static ShortVec cmap;   /* array[1..cvp->nItems]of cluster index */static CovKind dck;     /* defines type of distance calc */static Covariance dcov; /* covariance to use in distance calc */static int vSize;       /* size of vectors */static Vector vTmp;     /* temp vector *//* DumpClusterMap: dump the vector pool -> cluster map */static void DumpClusterMap(void){   int i,lc=0;      for (i=1; i<=nItems; i++) {      printf("%3d",cmap[i]);      if (++lc == 20) { printf("\n"); lc = 0; }   }   if (lc != 0) printf("\n");   fflush(stdout);}/* Distance: compute distance between v1 and v2 */static float Distance(Vector v1, Vector v2){   Vector iv,crow;   TriMat ic;   double sum,x;   int i,j;   switch(dck){   case NULLC:      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x;      }      break;   case DIAGC:      iv = dcov.var;  /* covkind == DIAGC */      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x/iv[i];      }      break;   case INVDIAGC:      iv = dcov.var;  /* covkind == INVDIAGC */      sum = 0.0;      for (i=1; i<=vSize; i++){         x = v1[i]-v2[i]; sum += x*x*iv[i];      }      break;   case FULLC:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片另类小说| 色一情一乱一乱一91av| 99久久精品99国产精品| 欧美人体做爰大胆视频| 日本一区二区三区高清不卡 | 亚洲专区一二三| 韩国午夜理伦三级不卡影院| 欧美系列一区二区| 最新中文字幕一区二区三区 | 丁香激情综合五月| 日韩三级视频在线观看| 一区二区高清免费观看影视大全 | 一本大道综合伊人精品热热| 久久久亚洲高清| 麻豆精品精品国产自在97香蕉| 99精品欧美一区二区三区小说| 久久久久久久综合日本| 另类调教123区| 欧美一区二区三区精品| 五月天激情综合网| 欧美日韩黄色一区二区| 亚洲一区二区在线播放相泽| 色婷婷香蕉在线一区二区| 中文字幕在线播放不卡一区| 国产福利91精品一区| 国产亚洲精品免费| 国产一区999| 久久久精品日韩欧美| 国产馆精品极品| 中文av一区二区| 成人av在线电影| 国产精品久久久久久久久免费桃花| 国产主播一区二区| 国产欧美综合在线| youjizz久久| 亚洲精品视频在线观看网站| 菠萝蜜视频在线观看一区| 国产精品超碰97尤物18| 成人免费视频免费观看| 亚洲日本va午夜在线影院| 一本一本大道香蕉久在线精品| 亚洲欧洲综合另类| 欧美色男人天堂| 日韩va亚洲va欧美va久久| 欧美一卡在线观看| 国产精品亚洲一区二区三区在线| 国产色综合久久| 一本一道综合狠狠老| 婷婷一区二区三区| 精品国产欧美一区二区| 国产成人精品综合在线观看 | 91豆麻精品91久久久久久| 亚洲福利一区二区| 精品国产污污免费网站入口| 国产不卡免费视频| 亚洲最新视频在线观看| 91精品免费观看| 成人免费va视频| 午夜激情综合网| 国产午夜精品久久久久久免费视| 99久久综合色| 日韩国产一二三区| 国产女主播在线一区二区| 欧洲日韩一区二区三区| 久久国产综合精品| 亚洲免费成人av| 欧美电影精品一区二区| 91原创在线视频| 美女一区二区久久| 国产精品夫妻自拍| 日韩区在线观看| 日本黄色一区二区| 国产一区二区电影| 五月激情六月综合| 中文字幕日韩一区二区| 欧美精品久久99久久在免费线| 国产成人av一区二区三区在线| 亚洲免费大片在线观看| 久久久久久电影| 欧美日韩国产另类一区| 暴力调教一区二区三区| 看电视剧不卡顿的网站| 亚洲小说欧美激情另类| 国产精品妹子av| 久久亚洲精精品中文字幕早川悠里 | 麻豆精品国产91久久久久久 | 久久久久国产免费免费| 欧美视频一区二| av日韩在线网站| 国产成人福利片| 久久er99热精品一区二区| 亚洲国产精品久久艾草纯爱| 中文字幕亚洲不卡| 国产欧美日韩亚州综合| 久久综合久久综合久久综合| 欧美精品xxxxbbbb| 欧美网站一区二区| 在线免费观看日韩欧美| 92精品国产成人观看免费| 成人av综合在线| 成人一区二区三区中文字幕| 激情综合色综合久久| 蜜臀久久久久久久| 日产欧产美韩系列久久99| 亚洲成av人**亚洲成av**| 亚洲综合激情另类小说区| 亚洲同性gay激情无套| 国产欧美精品一区二区色综合| 精品乱人伦小说| 欧美xxxx老人做受| 精品区一区二区| 欧美xxxxxxxx| 欧美成人三级电影在线| 欧美不卡一区二区三区四区| 91精品婷婷国产综合久久性色| 欧美一区二区三区公司| 日韩欧美中文字幕一区| 日韩精品一区二| 久久久精品中文字幕麻豆发布| 国产日韩成人精品| 中文字幕一区二区日韩精品绯色| 国产精品女人毛片| 亚洲女性喷水在线观看一区| 亚洲精品国产一区二区精华液 | 欧美视频在线一区二区三区 | 丝袜亚洲精品中文字幕一区| 午夜欧美大尺度福利影院在线看| 五月婷婷激情综合网| 久久成人免费日本黄色| 国产精品自拍av| 99精品久久久久久| 欧美图片一区二区三区| 91.麻豆视频| 国产日韩av一区| 亚洲夂夂婷婷色拍ww47| 奇米综合一区二区三区精品视频| 久久99国产精品久久99| 成人三级伦理片| 欧美性高清videossexo| 欧美一区二区大片| 国产精品免费视频观看| 午夜精品一区二区三区三上悠亚| 久久成人免费电影| 91亚洲精华国产精华精华液| 欧美日韩免费观看一区二区三区| 日韩欧美二区三区| 国产精品毛片高清在线完整版 | 国产揄拍国内精品对白| 99久久夜色精品国产网站| 欧美日韩中文字幕一区| 国产亚洲精品精华液| 亚洲国产日韩精品| 精品制服美女丁香| 本田岬高潮一区二区三区| 91精品国产免费| 亚洲女厕所小便bbb| 精品一区二区三区视频在线观看| 99国产精品视频免费观看| 日韩一二在线观看| 一区二区三区日韩精品| 国产精品乡下勾搭老头1| 欧美日韩免费高清一区色橹橹| 中文字幕第一区| 久久av资源站| 欧美日韩三级一区二区| 国产精品久久精品日日| 蜜桃视频一区二区三区| 欧美在线一区二区三区| 亚洲国产精华液网站w| 免播放器亚洲一区| 欧美日韩精品一区二区天天拍小说| 久久久综合视频| 日本亚洲天堂网| 欧美体内she精视频| 亚洲欧洲av色图| 国产成人免费视频网站 | 欧美三区在线观看| 国产精品久久久久久久浪潮网站| 久久精品国产精品亚洲红杏| 欧美日产国产精品| 一区二区三区加勒比av| 成人国产视频在线观看| 国产日韩精品一区| 国产成人精品一区二| 日韩欧美的一区| 五月天久久比比资源色| 欧美午夜精品久久久久久超碰| 中文字幕在线观看一区| 国产成人免费视频一区| 精品电影一区二区| 久久se精品一区精品二区| 日韩一区二区免费在线观看| 亚洲成人黄色影院| 欧美私模裸体表演在线观看| 亚洲综合成人在线| 欧美日韩精品欧美日韩精品一 | 欧美高清在线视频| 国产精品白丝jk白祙喷水网站 | 久久久久国产精品人| 久久99蜜桃精品|