Tensorflow как сменить hub.Module () на локальную папку - PullRequest
0 голосов
/ 22 марта 2020

как я могу изменить:

BERT_MODEL = "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1"

def create_tokenizer_from_hub_module():
  """Get the vocab file and casing info from the Hub module."""
  with tf.Graph().as_default():
    bert_module = hub.Module(BERT_MODEL)
    tokenization_info = bert_module(signature="tokenization_info", as_dict=True)
    with tf.Session() as sess:
      vocab_file, do_lower_case = sess.run([tokenization_info["vocab_file"],
                                            tokenization_info["do_lower_case"]])

  return bert.tokenization.FullTokenizer(
      vocab_file=vocab_file, do_lower_case=do_lower_case)

tokenizer = create_tokenizer_from_hub_module()

Чтобы я мог загрузить локальную модель BERT без вызова hub.Module(), поскольку она не работает с локальным путем.

I скачал другую предварительно обученную модель TF1 с другого веб-сайта, разархивировал ее и сохранил в папке /test/module/.

Если я изменился выше BERT_MODEL = "/test/module", как мне нужно изменить остальные? Теперь я получаю строковые ошибки, поскольку tokenization_info = bert_module(signature="tokenization_info", as_dict=True) не работает.

Помогите, пожалуйста, я новичок в TF - обратите внимание, мне нужно использовать TF1, а не TF2.

Примечание: по предложению ниже I получить:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-11-a98e44536f87> in <module>()
      9   return vocab_file, do_lower_case
     10 
---> 11 print(get_bert_tokenizer_info("/tmp/local_copy"))
     12 # Will print: (b'/tmp/local_copy/assets/vocab.txt', False)

4 frames
/usr/local/lib/python3.6/dist-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(*('/tmp/local_copy',), **{})

1 Ответ

0 голосов
/ 23 марта 2020

hub.Module работает с локальными несжатыми путями, поэтому вы можете изменить BERT_MODEL на другой путь и повторно использовать тот же код.

Пример:

Создать локальную копию модуля:

mkdir /tmp/local_copy
wget "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1?tf-hub-format=compressed" -O "module.tar.gz"
tar -C /tmp/local_copy -xzvf module.tar.gz

Использовать локальную копию модуля:

import tensorflow as tf
import tensorflow_hub as hub

def get_bert_tokenizer_info(bert_module):
  """Get the vocab file and casing info from the Hub module."""
  with tf.Graph().as_default():
    bert_module = hub.Module(bert_module)
    tokenization_info = bert_module(signature="tokenization_info", as_dict=True)
    with tf.Session() as sess:
      vocab_file, do_lower_case = sess.run([tokenization_info["vocab_file"],
                                            tokenization_info["do_lower_case"]])
  return vocab_file, do_lower_case

print(get_bert_tokenizer_info("/tmp/local_copy"))
# Will print: (b'/tmp/local_copy/assets/vocab.txt', False)
...