NAN输出将预估计的张力流模型转换为TF-Lite



我们在转换验证的张量流模型时有问题,我们将其作为以下文件

snapshot_140.ckpt.index

snapshot_140.ckpt.meta

snapshot_140.ckpt.data-00000 of-00001

tensorflow Lite当我们使用转换后的tflie文件做出预测时,所有预测在加载时正常张量型模型时,NAN给出了正确的回归预测

我们在上面获取了这些文件,从ckpt文件转换为tensorflow .pb图是通过tensorflow.python.tools.freeze_graph工具

进行的。

然后tflite_converter工具转换为tflite

.pb在制造成张量的模型时运行良好。但是Tflite模型会产生所有NAN输出

一个(潜在的解决方案(受到此问题的启发:https://github.com/tensorflow/tensorflow/issues/22803?fbclid=iwar0x25cezjhaq0dufbvwa1v3lvccvipt4q7lbuugs9t59w9w2axqncnvtncbhi #47711111170170170170170170170170170170170170170170197019701970197019704747474747474747474704.70147474747474747017017017

那么,如何将batch_norm iS_training标志设置为仅给定的ckpt文件而无法访问模型架构?

如果这确实是解决问题的解决方案

或我们该怎么做才能修复TensorFlow Lite模型,以提供与Tensorflow模型相同的输出

此代码用于获取提供NANS

的TensorFlow Lite模型
    import tensorflow as tf
    with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, 
    log_device_placement=True)) as sess:
        saver = tf.train.import_meta_graph('snapshot_140.ckpt.meta')
        saver.restore(sess, "snapshot_140.ckpt")
        inp = tf.get_default_graph().get_tensor_by_name("tower_0/Placeholder:0")
        out = tf.get_default_graph().get_tensor_by_name("tower_0/out/BiasAdd:0")
        print(out)
        converter = tf.contrib.lite.TFLiteConverter.from_session(sess, [inp], [out])
        tflite_model = converter.convert()
        open("converted_model.tflite", "wb").write(tflite_model)

基本上没有访问代码/体系结构,我不确定如何运行推理!如果您不能运行推断,那么检查点是什么好处:)。

  • 恢复了经过训练的检查点,并运行了一个时代,在此期间,我确保将训练标志设置为false(请注意,一个时期太短,无法在运行足够的时期后设置的变量来介入以创建基线检查点。。
  • 一旦时代完成后,我只是使用simple_save保存了模型,然后生成了一个PB文件
  • 使用常规TFLITE转换器,在我的推理文件中遵循从TensorFlow页面中的简单代码设置输入张量,调用和从输出张量提取值
  • 推论与我通过恢复模型和推断的其他模式一样好。
  • 如果我可以将CKPT文件直接转换为PB(使用Bazel和Freeze Graph(,那么我可以更简单的唯一方法就是将我带到同一位置,因为训练标志将保持不变

如果此解决方案没有帮助

,则道歉

最新更新