如何离线加载 hub.KerasLayer?

How can I load the hub.KerasLayer offline?

我已经通过 tensorflow hub 构建了一个模型并保存了它。 但是当我加载它时,我必须添加custom_objects={'KerasLayer':hub.KerasLayer}。 它将连接网络。

model = tf.keras.models.load_model('my_model.h5',custom_objects={'KerasLayer':hub.KerasLayer})

如何下载 hub.KerasLayer 并离线加载?

其中一些取决于您是否有正确保存的模型。在那种情况下你可以

import tensorflow as tf
import tensorflow_hub as hub


k_layer = hub.KerasLayer("some/file/path")

有关详细信息,请参阅 https://www.tensorflow.org/hub/tf2_saved_model

您也可以使用 TFHUB_CACHE_DIR 自动执行此操作

import tensorflow_hub as hub
import os

os.environ["TFHUB_CACHE_DIR"] = "/tmp/model"
hub.KerasLayer("https://tfhub.dev/google/nnlm-id-dim50-with-normalization/2")

模型资产将下载到 /tmp/model/ 以后对 hub.KerasLayer("https://tfhub.dev/google/nnlm-id-dim50-with-normalization/2") 的调用将使用本地副本

如果您有从 TFHub 页面下载的模型,

例如,

import tensorflow as tf
import tensorflow_hub as hub

model_path = "path/to/tfhubmodel/"
hub_layer = hub.KerasLayer(hub.load(model_path))