void Toolbox::calculateGlobalMeanAndStd(DataSet &X,dVector& mean,dVector& stdDev) { calculateGlobalMean(X,mean); int nbElements = 0; //Calculate standard deviation stdDev.set(0); for(int i = 0;i < (int)X.size() ;i++) { double* pData = X.at(i)->getPrecomputedFeatures()->get(); int Width = X.at(i)->getPrecomputedFeatures()->getWidth(); int Height = X.at(i)->getPrecomputedFeatures()->getHeight(); for(int col=0; col < Width; col++) { double* pStdDev = stdDev.get(); double* pMean = mean.get(); for(int row = 0; row < Height;row++) { *pStdDev += (*pData-*pMean) * (*pData-*pMean); pStdDev++; pData++; pMean++; } } nbElements+=Width; } stdDev.multiply(1.0/(double)nbElements); stdDev.eltSqrt(); }
double GradientDD::computeGradient(dVector& vecGradrient, Model* m,DataSequence*) { dVector tmpVec; vecGradrient = *(m->getWeights()); vecGradrient.add(mu); tmpVec = vecGradrient; tmpVec.transpose(); tmpVec.multiply(vecGradrient); double f = exp(-0.5*tmpVec[0]); vecGradrient.multiply(f); return f; }
void Toolbox::calculateGlobalMean(DataSet &X,dVector& mean) { dVector seqSum; int nbElements = 0; //Calculate mean for(int i = 0;i < (int)X.size() ;i++) { X.at(i)->getPrecomputedFeatures()->rowSum(seqSum); mean.add(seqSum); nbElements+=X.at(i)->getPrecomputedFeatures()->getWidth(); } mean.multiply(1.0/(double)nbElements); }