将TF1通用语句编码器加载到TF2中-集线器

时间:2019-10-29 14:35:30

标签: python tensorflow

我正在尝试使用集线器并遵循this指南来加载TF1模型。

此模型附带一个句子模型:

spm_path = m.signatures['spm_path']
<tensorflow.python.eager.wrap_function.WrappedFunction at 0x1341129e8>

如果我执行此功能:

spm_path()
{'default': <tf.Tensor: id=5905, shape=(), dtype=string, numpy=b'SAVEDMODEL-ASSET'>}

但是,如果我使用b'SAVEDMODEL-ASSET'的输出来加载我的sentencepiece模型,则会出现以下错误:

sp.Load(b'SAVEDMODEL-ASSET')
OSError: Not found: "SAVEDMODEL-ASSET": No such file or directory Error #2

问题是我不确定该资产位于何处-集线器在哪里存储下载的模块?

我可以找到以下内容:os.environ['TFHUB_CACHE_DIR'] = '/tmp/tfhub',但这不足以让我在计算机上找到实际文件并传递正确的文件。

2 个答案:

答案 0 :(得分:1)

这有点笨拙,但这是一种实现方法:

uselite = hub.load("https://tfhub.dev/google/universal-sentence-encoder-lite/2")

sp = sentencepiece.SentencePieceProcessor()
sp.load(uselite.asset_paths[0].asset_path.numpy())

asset_paths仅包含一项,它是spm模型的路径。

答案 1 :(得分:0)

我也遇到了同样的问题,试图为ALBERT模型加载令牌化所需的资产。我发现m.asset_paths中有一个资产列表。有Asset对象,您可以使用.asset_path属性访问路径。问题是您需要检查资产的路径,以找到所需的路径。也许有更好的方法,但是我不知道。