Ошибка атрибута: модуль «keras.engine» не имеет атрибута «InputSpec»

#python #tensorflow #keras #bert-language-model

#питон #тензорный поток #keras #берт-язык-модель

Вопрос:

Я пытаюсь загрузить модель языка берта:

 import numpy as np from tensorflow import keras from keras_bert import load_trained_model_from_checkpoint import tokenization  folder = "multi_cased_L-12_H-768_A-12"  config_path = folder '/bert_config.json' checkpoint_path = folder '/bert_model.ckpt' vocab_path = folder '/vocab.txt'  tokenizer = tokenization.FullTokenizer(vocab_file=vocab_path, do_lower_case=False) model = load_trained_model_from_checkpoint(config_path, checkpoint_path, training=True) model.summary()  

и я получил ошибку:

 ----gt; 4 model = load_trained_model_from_checkpoint(config_path, checkpoint_path, training=True)  

в layer_normalization.py из пакетов Anaconda:

 ---gt; 70 self.input_spec = keras.engine.InputSpec(shape=input_shape)  AttributeError: module 'keras.engine' has no attribute 'InputSpec'   

Установленный:

 Tensorflow version Version: 2.7.0 Keras Version Version: 2.7.0  

Пожалуйста, помогите мне разобраться

Ответ №1:

Tensorflow 2.7 имеет API tensorflow.keras.layers.InputSpec

Заменять

 keras.engine.InputSpec(shape=input_shape)  

с

 tf.keras.layers.InputSpec(shape=input_shape)