【问题标题】:How to load a saved Tensorflow model and evaluate it如何加载保存的 TensorFlow 模型并对其进行评估
【发布时间】:2020-11-21 15:51:46
【问题描述】:

这就是我保存模型的方式。


# First created serving_input func
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(tf.feature_column.make_parse_example_spec(my_feature_columns))

# Save Estimator as a tf model
classifier.export_saved_model("location", serving_input_fn)

这产生了一个文件夹,其中包含“saved_model.pb”文件和一个文件夹“variable”

问题是我尝试加载和运行模型


imported_model = tf.saved_model.load("/folderLocation")

imported_model_res = imported_model.evaluate(input_fn=lambda: input_fn(x_test, y_test, training=False))

但我收到一个错误提示

AttributeError: 'AutoTrackable' 对象没有属性 'evaluate'

非常感谢任何帮助。谢谢

【问题讨论】:

    标签: python tensorflow machine-learning tensorflow2.0


    【解决方案1】:

    您首先需要将模型转换为 keras。

    尝试以下方法:

    loaded = tf.saved_model.load(path)
    
    class LayerFromSavedModel(tf.keras.layers.Layer):
        def __init__(self):
            super(LayerFromSavedModel, self).__init__()
            self.vars = loaded.variables
        def call(self, inputs):
            return loaded.signatures['serving_default'](inputs)
    
    input = tf.keras.Input(...)
    model = tf.keras.Model(input, LayerFromSavedModel()(input))
    model.save('saved_model')
    

    【讨论】:

    • 嗨,谢谢你的回答,你能澄清一下 tf.eras.Input(....) 中的内容吗?谢谢
    • 我发布的代码取自以下issue。考虑阅读它以了解此代码的作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多