📄 gmminitparamset.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of gmmInitParamSet</title> <meta name="keywords" content="gmmInitParamSet"> <meta name="description" content="gmmParamSet: Set a set of initial parameters for GMM"> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">dcpr</a> > gmmInitParamSet.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for dcpr <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>gmmInitParamSet</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>gmmParamSet: Set a set of initial parameters for GMM</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function gmmParam=gmmInitParamSet(data, gaussianNum, covType, gmmTrainParam); </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> gmmParamSet: Set a set of initial parameters for GMM
Usage: gmmParam=gmmInitParamSet(data, gaussianNum, covType, gmmTrainParam);</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="gmmTrainParamSet.html" class="code" title="function gmmTrainParam=gmmTrainParamSet">gmmTrainParamSet</a> The following parameters are used for gmmTrain()</li><li><a href="vqKmeans.html" class="code" title="function [center, U, distortion, allCenter] = vqKmeans(data, clusterNum, plotOpt)">vqKmeans</a> vqKmeans: Vector quantization using K-means clustering (Forgy's batch-mode method)</li><li><a href="vqLBG.html" class="code" title="function [center, U] = vqLBG(data, codeBookSize, dispOpt, kmeansFcn)">vqLBG</a> vqLBG: Vector quantization using LBG method of center splitting</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="gmmTrain.html" class="code" title="function [gmmParam, logProb] = gmmTrain(data, gaussianNumCovType, gmmTrainParam)">gmmTrain</a> gmmTrain: Parameter training for gaussian mixture model (GMM)</li></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function gmmParam=gmmInitParamSet(data, gaussianNum, covType, gmmTrainParam);</a>0002 <span class="comment">% gmmParamSet: Set a set of initial parameters for GMM</span>0003 <span class="comment">% Usage: gmmParam=gmmInitParamSet(data, gaussianNum, covType, gmmTrainParam);</span>0004 0005 <span class="comment">% Roger Jang, 20080726</span>0006 0007 <span class="keyword">if</span> nargin<2, gaussianNum=3; <span class="keyword">end</span>0008 <span class="keyword">if</span> nargin<3, covType=1; <span class="keyword">end</span>0009 <span class="keyword">if</span> nargin<4, gmmTrainParam=<a href="gmmTrainParamSet.html" class="code" title="function gmmTrainParam=gmmTrainParamSet">gmmTrainParamSet</a>; <span class="keyword">end</span>0010 [dim, dataNum]=size(data);0011 0012 <span class="keyword">for</span> i=1:gaussianNum0013 gmmParam(i).mu = zeros(dim, 1);0014 gmmParam(i).w = 1/gaussianNum;0015 <span class="keyword">switch</span> covType0016 <span class="keyword">case</span> 10017 gmmParam(i).sigma = 1;0018 <span class="keyword">case</span> 20019 gmmParam(i).sigma = ones(dim, 1);0020 <span class="keyword">case</span> 30021 gmmParam(i).sigma = diag(ones(dim, 1));0022 <span class="keyword">otherwise</span>0023 disp(<span class="string">'Unknown covType!'</span>)0024 <span class="keyword">end</span>0025 <span class="keyword">end</span>0026 0027 <span class="comment">% === Set the mean vectors</span>0028 <span class="comment">% Here we try several methods to find the initial mean vectors</span>0029 <span class="keyword">if</span> gmmTrainParam.useKmeans0030 <span class="keyword">if</span> gmmTrainParam.dispOpt, fprintf(<span class="string">'\tStart KMEANS to find the initial mean vectors...\n'</span>); <span class="keyword">end</span>0031 <span class="comment">% muMat = vqKmeansMex(data, gaussianNum, 0); % Method 1: Fast but less robust</span>0032 muMat = <a href="vqKmeans.html" class="code" title="function [center, U, distortion, allCenter] = vqKmeans(data, clusterNum, plotOpt)">vqKmeans</a>(data, gaussianNum, 0); <span class="comment">% Method 2: Slow but more robust</span>0033 <span class="keyword">if</span> any(any(~isfinite(muMat)))0034 muMat = <a href="vqLBG.html" class="code" title="function [center, U] = vqLBG(data, codeBookSize, dispOpt, kmeansFcn)">vqLBG</a>(data, gaussianNum, 0); <span class="comment">% Try another method of vqLBG</span>0035 <span class="keyword">end</span>0036 <span class="keyword">if</span> any(any(~isfinite(muMat)))0037 muMat = data(:, 1+floor(rand(gaussianNum,1)*dataNum)); <span class="comment">% Try another method of random selection</span>0038 <span class="keyword">end</span> 0039 <span class="keyword">else</span>0040 muMat = data(:, 1+floor(rand(gaussianNum,1)*dataNum)); <span class="comment">% Randomly select several data points as the centers</span>0041 <span class="keyword">end</span>0042 <span class="comment">% Set the intitial mean vectors of gmmParam</span>0043 meanCell=mat2cell(muMat, dim, ones(1, gaussianNum));0044 [gmmParam.mu]=deal(meanCell{:});0045 0046 <span class="comment">% ====== Set the initial covariance matrix</span>0047 dataRange=max(data, [], 2)-min(data, [], 2);0048 <span class="keyword">if</span> gmmTrainParam.useKmeans0049 <span class="comment">% ====== Set the initial covariance matrix as the min squared distance between centers</span>0050 sqrDist=pairwiseSqrDistance(muMat);0051 <span class="comment">% sqrDist(1:(gaussianNum+1):gaussianNum^2)=inf; % Diagonal elements are inf</span>0052 meanSqrDist = mean(mean(sqrDist))/2*log(2);; <span class="comment">% Initial variance for each Gaussian</span>0053 meanSqrDist = max(meanSqrDist, gmmTrainParam.minVariance);0054 <span class="keyword">if</span> gaussianNum==1, meanSqrDist=(mean(dataRange)/5)^2; <span class="keyword">end</span> <span class="comment">% If there is only a single Gaussian, set it to a reasonable value</span>0055 <span class="comment">% Set the initial covariance matrix of gmmParam</span>0056 <span class="keyword">for</span> i=1:gaussianNum0057 gmmParam(i).sigma=meanSqrDist*gmmParam(i).sigma;0058 <span class="keyword">end</span>0059 <span class="keyword">else</span>0060 <span class="comment">% ====== Set the initial covariance matrix by the range of the input data</span>0061 <span class="keyword">switch</span> covType0062 <span class="keyword">case</span> 10063 <span class="keyword">for</span> i=1:gaussianNum0064 gmmParam(i).sigma = (mean(dataRange)/5)^2;0065 <span class="keyword">end</span>0066 <span class="keyword">case</span> 20067 <span class="keyword">for</span> i=1:gaussianNum0068 gmmParam(i).sigma = (dataRange/5).^2;0069 <span class="keyword">end</span>0070 <span class="keyword">case</span> 30071 <span class="keyword">for</span> i=1:gaussianNum0072 gmmParam(i).sigma = diag((dataRange/5).^2);0073 <span class="keyword">end</span>0074 <span class="keyword">otherwise</span>0075 disp(<span class="string">'Unknown covType!'</span>)0076 <span class="keyword">end</span>0077 <span class="keyword">end</span></pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -