8

我正在尝试拟合文本分类模型。因此我想使用 tensorflow-hub 提供的 text_embedding_column 函数。不幸的是我得到一个运行时错误

import tensorflow_hub as hub
embedded_text_feature_column = hub.text_embedding_column(
    key="sentence", 
    module_spec="https://tfhub.dev/google/nnlm-en-dim128/1")

我得到的错误如下:

RuntimeError                              Traceback (most recent call last)
<ipython-input-18-df9239a27166> in <module>()
      2 embedded_text_feature_column = hub.text_embedding_column(
      3     key="sentence",
----> 4     module_spec="https://tfhub.dev/google/nnlm-en-dim128/1")

/anaconda3/lib/python3.6/site-packages/tensorflow_hub/feature_column.py in text_embedding_column(key, module_spec, trainable)
     72      ValueError: if module_spec is not suitable for use in this feature column.
     73   
---> 74   module_spec = module.as_module_spec(module_spec)
     75   _check_module_is_text_embedding(module_spec)
     76   return _TextEmbeddingColumn(key=key, module_spec=module_spec,

/anaconda3/lib/python3.6/site-packages/tensorflow_hub/module.py in as_module_spec(spec)
     31     return spec
     32   elif isinstance(spec, six.string_types):
---> 33     return load_module_spec(spec)
     34   else:
     35     raise ValueError("Unknown module spec type: %r" % type(spec))

/anaconda3/lib/python3.6/site-packages/tensorflow_hub/module.py in load_module_spec(path)
     56   
     57   path = registry.resolver(path)
---> 58   return registry.loader(path)
     59 
     60 

/anaconda3/lib/python3.6/site-packages/tensorflow_hub/registry.py in __call__(self, *args, **kwargs)
     43     raise RuntimeError(
     44         "Missing implementation that supports: %s(*%r, **%r)" % (
---> 45             self._name, args, kwargs))
     46 
     47 

RuntimeError: Missing implementation that supports: loader(*('/var/folders/pc/h0fr0z2x1pjbmdb63mhn84_w0000gn/T/tfhub_modules/32f2b2259e1cc8ca58c876921748361283e73997',), **{})
4

3 回答 3

21

我遇到了同样的错误,这就是我解决它的方法;

我的错误是:

RuntimeError: Missing implementation that supports: loader(*('C:\\Users\\Alber\\AppData\\Local\\Temp\\tfhub_modules\\a7fe827a4e68369aab0fa6a65479cd37c499e0f4',), **{})

所以问题出在以下路径

C:/Users/Alber/AppData/Local/Temp/tfhub_modules/a7fe827a4e68369aab0fa6a65479cd37c499e0f4

只是用资源管理器检查了路径,发现a7fe827a4e68369aab0fa6a65479cd37c499e0f4文件夹是的。我不知道为什么,但这不应该发生。

然后我只是删除了 a7fe827a4e68369aab0fa6a65479cd37c499e0f4 文件夹甚至tf_hub文件夹(因为我没有任何其他东西但我认为没有必要删除tf_hub文件夹)。

之后我运行脚本并再次正常下载所需的模块

INFO:tensorflow:Using C:\Users\Alber\AppData\Local\Temp\tfhub_modules to cache modules.
INFO:tensorflow:Downloading TF-Hub Module 'https://tfhub.dev/google/nnlm-es-dim128-with-normalization/1'.
INFO:tensorflow:Downloading https://tfhub.dev/google/nnlm-es-dim128-with-normalization/1: 38.58MB
...
于 2019-01-07T12:42:14.323 回答
10

tensorflow 2 具有称为 KerasLayer ( https://www.tensorflow.org/hub ) 的新集线器方法。使用它解决了我的问题。

import tensorflow as tf

import tensorflow_hub as hub

module_url = "https://tfhub.dev/google/nnlm-en-dim128/2"

embed = hub.KerasLayer(module_url)

embeddings = embed(["A long sentence.", "single-word",
                      "http://example.com"])
于 2019-11-19T10:44:56.610 回答
0

看起来较新的版本没有,tfhub_modules.pb而是我们可能不得不使用hub.load(). 检查此链接

https://www.tensorflow.org/hub/tf1_hub_module

将新版本更改21

embeded_song_list=hub.text_embedding_column(
    key="Sg", 
    module_spec="https://tfhub.dev/google/nnlm-en-dim50/2",
    trainable=False)

embeded_song_list=hub.text_embedding_column(
    key="Sg", 
    module_spec="https://tfhub.dev/google/nnlm-en-dim50/1",
    trainable=False)

然后它起作用了

于 2021-08-24T01:59:10.523 回答