首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras CTC损失输入

Keras CTC损失输入
EN

Stack Overflow用户
提问于 2017-04-18 10:02:55
回答 1查看 5.5K关注 0票数 10

我正在尝试使用CTC进行语音识别,使用keras,并尝试了CTC示例这里。在该示例中,CTC Lambda层的输入是softmax层(y_pred)的输出。Lambda层调用内部调用Tensorflow的ctc_lossctc_batch_cost,但是文档ctc_loss函数在内部执行softmax,所以您不需要首先使用softmax。我认为正确的用法是将inner传递给Lambda层,所以您只在ctc_loss函数内部应用一次softmax。我已经试过这个例子了,效果很好。我应该学习这个例子还是Tensorflow文档?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 00:21:24

在您发布的代码中使用的丢失与您所链接的代码不同。代码中使用的损失是在这里发现的

在调用ctc_loss之前,keras代码会进行一些预处理,从而使其适合所需的格式。除了要求输入不是软最大版之外,tensorflow的ctc_loss还期望dims是NUM_TIME, BATCHSIZE, FEATURES。Keras的ctc_batch_cost做了这两件事-- 在这一行里。

它确实是log(),它消除了softmax缩放,它还对dims进行了调整,使其形状正确。当我说摆脱softmax缩放时,它显然不是恢复原来的张量,而是softmax(log(softmax(x))) = softmax(x)。见下文:

代码语言:javascript
复制
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum()


x = [1,2,3]
y = softmax(x)
z = np.log(y) # z =/= x (obviously) BUT
yp = softmax(z) # yp = y #####
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43469146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档