我觉得我从根本上误解了一些东西。我浏览了 Keras 文档,但无济于事。我正在尝试为我的神经网络实现 ctc_batch_cost 损失。我的神经网络以 LSTM 层结束,该层将序列返回到具有 4+1 个符号 softmax 输出的密集层中。输出形状有 20 个时间步长,如下所示:
(. . .)
_________________________________________________________________
lstm_1 (LSTM) (None, 20, 32) 8320
_________________________________________________________________
dense_1 (Dense) (None, 20, 5) 165
=================================================================
我的标签只是应该输出的可变长度的字符串。
这是我对 CTC 功能的尝试:
def ctc_custom(prediction_batch, label_batch):
pred_batch_size = prediction_batch.get_shape().as_list() # returns (?,?,?) at compile time
label_batch_size = label_batch.get_shape().as_list()
samples = pred_batch_size[0]
input_length = tf.placeholder([[20] for x in range(samples)])
label_length = tf.placeholder([[len(l)] for l in label_batch_size])
return ctc_batch_cost(label_batch, prediction_batch, input_length, label_length)
现在,当然,Tensorflow 当前出现以下错误:
TypeError: 'NoneType' object cannot be interpreted as an integer
这是可以理解的,因为在编译时变量,例如samples
will be None
。但我不知道如何使用它。任何提示表示赞赏。我想了解正在发生的事情,而不仅仅是简单地解决问题。我尝试测试None
并返回一个占位符,但这也不起作用,一开始感觉就像一个黑客。
谢谢