使用Tensorflow后端的CTC Beam Seach

时间:2017-05-31 07:08:48

标签: python tensorflow speech-recognition keras beam-search

我是这个主题的初学者,对不起,如果怀疑似乎很愚蠢。

keras文档和张量流提供了一个函数ctc_decode,它对网络输出进行ctc波束搜索解码。该文档未提供解码器的示例用法。 https://github.com/igormq/ctc_tensorflow_example/blob/master/ctc_tensorflow_example.py提供了一个示例用法,但我无法检索已解码的文本脚本。

对于打印输出张量的stackoverflow存在一些问题,但是我没有得到任何输出,因为我的张量的输出是形状的(?,?)。

>>> pred.shape
(1, 489, 29)
>>> dec, logp = K.ctc_decode(K.variable(pred, dtype='float32'), 
K.variable([489],dtype='int32'),greedy=False)
>>> dec
[<tf.Tensor 'SparseToDense:0' shape=(?, ?) dtype=int64>]
>>> dec[0]
<tf.Tensor 'SparseToDense:0' shape=(?, ?) dtype=int64>
>>> s = tf.Session()
>>> s.run(tf.global_variables_initializer())
>>> print dec[0].eval(session=s)
[[0]]

pred是神经网络的输出。请帮助我理解出现了什么问题,因为我认为我应该为预测解码的字符获取数值,但我得到的是[[0]]。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用的是Keras,请尝试K.get_value(dec[0])

答案 1 :(得分:0)

dec_tf, logp_tf = K.ctc_decode(K.variable(pred, dtype='float32'), K.variable([489],dtype='int32'),greedy=False)
dec = K.eval(dec_tf)
logp = K.eval(logp_tf)