reco 发表于 2009-4-2 11:35

训练HMM(语音识别)的问题

小弟近日利用扩展编程里语音识别HMM的实例来进行HMM训练
结果总和概率输出为NaN。
源程序我没有改动,哪里出现问题了呢?
顺便问一下,源程序里那个samples.mat的cell型究竟是怎样类型的
看书上说是samples.data和samples.wave
但是这是一个1*10 的cell型,这些数据怎么放进去?
我想自己生成的samples.mat
但是不知道内部的cell结构
知情者请赐教

reco 发表于 2009-4-2 14:04

后面的samples.wave和samples.data我弄清楚了
其实就是一个1*10 的cell然后赋值给了上述的数组
然后用mfcc进行参数提取和训练的

但是原始代码和.mat用起来出错是为什么呢?
为什么都是NaN?
等待大侠们给说说

ChaChing 发表于 2009-4-2 14:47

Bioinformatics Toolbox个人没碰过, 但直觉NaN容易解决!
专业并不同, 建议楼主可以的话说简单具体些!

reco 发表于 2009-4-2 15:01

多谢chaching的回复
我在做HMM模型下的语音识别,用的源码就是matlab扩展编程上面提供的,包含train、viterbi等函数
在训练过程中,有一段程序需要求总和概率
具体的源码为
for loop = 1:3
fprintf('\n第%d遍训练\n\n',loop)
hmm = baum(hmm, samples);
%计算总输出概率
pout(loop)=0;
for k = 1:K
pout(loop) = pout(loop) + viterbi(hmm, samples(k).data);
end
fprintf('总和输出概率(log)=%d\n', pout(loop))
%比较两个HMM的距离
if loop>1
if abs((pout(loop)-pout(loop-1))/pout(loop)) < 5e-6
   fprintf('收敛!\n');
   return
end
end
end
其中的viterbi就是另外一个函数了
算出来pout全部是NaN

书上的源程序我都没有改过,怎么会出错呢?
如果您用过的话,可能一下就会明白的,我是个初学者,所以弄了半天还是不知道错在哪里
出现了分母为零?

我也正在不断尝试
感谢:handshake

ChaChing 发表于 2009-4-3 16:19

LZ的状况我无法复制, 好像缺些资料!?
NaN的问题, 建议设断点进入debug模式, 看看那一步出现NaN, 或inf...
我都是如此检查的!

reco 发表于 2009-4-8 10:52

感谢chaching。因为这个程序包含很多函数互相嵌套,而且还有训练样本,一并上传会很大。
我准备用dubug去尝试找找。
估计还是可以解决的

只是源程序莫名其妙出错让人觉得很怪。

尽信书则不如无书

感谢chaching again!!

spaceknight 发表于 2009-6-17 16:41

从研学跑到这里 还是没有人给解答啊:@Q

lailesd 发表于 2011-11-15 22:47

等把书看明白了,在看一下lz的程序

lijnoo 发表于 2011-12-6 12:02

同问,我是想用自己的数据,全部都是NAN。
页: [1]
查看完整版本: 训练HMM(语音识别)的问题