得到预训练模型的预测/输出;模型对卷积图像的每一帧(列)预测一个符号,需要对logits (RNN的输出)进行后处理,以发出预测符号的实际序列。模型构建的代码可以在这里找到。
logits = graph.get_tensor_by_name("fully_connected/BiasAdd:0")
decoded, _ = tf.nn.ctc_greedy_decoder(logits, seq_len)
prediction = sess.run(decoded,
feed_dict={
input: image,
seq_len: seq_lengths,
rnn_keep_prob: 1.0,
})
Prediction
是一个包含所有预测符号的SparseTensorValue。Decoded
是一个非空张量的稀疏张量。最后,我解析得到的SparseTensorValue,找到我需要的字符串。
我想通过tensorflow服务或tflite使用这个训练好的模型进行推理,但是为了继续进行,我需要指示模型的输出节点。鉴于稀疏张量的性质,我不能用名字来表示它。有没有一种方法可以让我使用这个模型来进行正确的推理?
我已经看到了许多使用ctc解码器的例子,比如以类似的方式进行预测,但是,没有使用这些模型进行推理的例子,而不密切依赖于tensorflow api,我不确定如何进行。
您可以将您的模型保存为tf
saved_model格式。之后,您可以使用包tensorflow- service -api的CLI工具saved_model_cli
来检查所有模型签名:saved_model_cli show --dir . --all
。有了它,您将看到输入和输出形状的所有信息。默认签名为default_serving
。