Добрый день!
Пытаюсь использовать предобученную модель RuBERT отсюда (более точнее - вот эту) в своей кастомной модели, решающей задачу классификации.
В первой ссылке указано, что
The
TensorFlow
models can be run with the original BERT repo code
Однако насколько понимаю, код тут, куда указывает ссылка из документации, для Tensorflow 1. Я же хотел бы использовать вторю версию. Поэтому пробую код отсюда. А именно вот такой:
max_seq_length = 128 # Your choice here.
input_word_ids = tf.keras.layers.Input(shape=(max_seq_length,), dtype=tf.int32,
name="input_word_ids")
input_mask = tf.keras.layers.Input(shape=(max_seq_length,), dtype=tf.int32,
name="input_mask")
segment_ids = tf.keras.layers.Input(shape=(max_seq_length,), dtype=tf.int32,
name="segment_ids")
bert_layer = hub.KerasLayer("rubert_cased_L-12_H-768_A-12_v2.tar.gz",
trainable=True)
pooled_output, sequence_output = bert_layer([input_word_ids, input_mask, segment_ids])
model = Model(inputs=[input_word_ids, input_mask, segment_ids], outputs=[pooled_output, sequence_output])
Однако он выдает ошибку:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-5-90cb212c403d> in <module>
7 name="segment_ids")
8 bert_layer = hub.KerasLayer("rubert_cased_L-12_H-768_A-12_v2.tar.gz",
----> 9 trainable=True)
10 pooled_output, sequence_output = bert_layer([input_word_ids, input_mask, segment_ids])
11
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow_hub\keras_layer.py in __init__(self, handle, trainable, arguments, _sentinel, tags, signature, signature_outputs_as_dict, output_key, output_shape, load_options, **kwargs)
158
159 self._load_options = load_options
--> 160 self._func = load_module(handle, tags, self._load_options)
161 self._has_training_argument = func_has_training_argument(self._func)
162 self._is_hub_module_v1 = getattr(self._func, "_is_hub_module_v1", False)
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow_hub\keras_layer.py in load_module(handle, tags, load_options)
427 except ImportError:
428 set_load_options = load_options
--> 429 return module_v2.load(handle, tags=tags, options=set_load_options)
430
431
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow_hub\module_v2.py in load(handle, tags, options)
112 module_path, tags=tags, options=options)
113 else:
--> 114 obj = tf_v1.saved_model.load_v2(module_path, tags=tags)
115 obj._is_hub_module_v1 = is_hub_module_v1 # pylint: disable=protected-access
116 return obj
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow\python\saved_model\load.py in load(export_dir, tags, options)
601 ValueError: If `tags` don't match a MetaGraph in the SavedModel.
602 """
--> 603 return load_internal(export_dir, tags, options)
604
605
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow\python\saved_model\load.py in load_internal(export_dir, tags, options, loader_cls)
612 tags = nest.flatten(tags)
613 saved_model_proto, debug_info = (
--> 614 loader_impl.parse_saved_model_with_debug_info(export_dir))
615
616 if (len(saved_model_proto.meta_graphs) == 1 and
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow\python\saved_model\loader_impl.py in parse_saved_model_with_debug_info(export_dir)
54 parsed. Missing graph debug info file is fine.
55 """
---> 56 saved_model = _parse_saved_model(export_dir)
57
58 debug_info_path = os.path.join(
C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\tensorflow\python\saved_model\loader_impl.py in parse_saved_model(export_dir)
111 (export_dir,
112 constants.SAVED_MODEL_FILENAME_PBTXT,
--> 113 constants.SAVED_MODEL_FILENAME_PB))
114
115
OSError: SavedModel file does not exist at: rubert_cased_L-12_H-768_A-12_v2.tar.gz/{saved_model.pbtxt|saved_model.pb}
Могли бы подсказать, как мне правильно использовать RuBERT под Tensorflow 2?