发布于 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)。见下文:
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 #####https://stackoverflow.com/questions/43469146
复制相似问题