我得到 "Requested tensor connection from unknown node: "keras_layer_input:0""。加载keras模型时出错

I am getting "Requested tensor connection from unknown node: "keras_layer_input:0"". error while loading keras model

我使用

保存了模型
tf.keras.experimental.export_saved_model(model, export_path)

这个模型有自定义层和损失函数。

正在使用

加载模型
import tensorflow as tf
import tensorflow_hub as hub
import keras
class training_model:
    def __init__(self):
        path_bce="D:\nsfw\training_model\models\bce_20210120_153631"
        path2="D:\nsfw\training_model\models\soft-f1_20210120_153631"
        self.graph = tf.Graph()
        with self.graph.as_default():
            self.session = tf.Session()
            with self.session.as_default() :
                self.reloaded =tf.keras.experimental.load_from_saved_model(path2, custom_objects={'KerasLayer':hub.KerasLayer})
                 
training_model=training_model()
img = keras.preprocessing.image.load_img(
    "0drqz7883ox51.jpg", target_size=(224, 224)
)

img_array = keras.preprocessing.image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create a batch
with training_model.graph.as_default():
    with training_model.session.as_default():
        print(training_model.reloaded.predict(img_array,steps=1))

如果我删除 Graph 和 Session,它工作正常,但我想用 API 为这个模型提供服务。

hub.KerasLayer 是 TF2 API。可以尝试的一件事是将预测部分从 TF1 样式(图形 + 会话)切换到 TF2。或者,您可以尝试 TensorFlow Serving 作为自定义推理逻辑的替代方法。