es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AttributeError: el módulo ‘keras.engine’ no tiene el atributo ‘InputSpec’

Estoy tratando de cargar el modelo de lenguaje bert:

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()

y obtuve el siguiente error:
—-> 4 model = load_trained_model_from_checkpoint(config_path, checkpoint_path, training=True)
— > 70 self.input_spec = keras.engine.InputSpec(shape=input_shape)

AttributeError: el módulo ‘keras.engine’ no tiene el atributo ‘InputSpec’

Instalado:

Versión de Tensorflow: 2.7.0
Versión de Keras: 2.7.0

Por favor, ayúdame a resolver este problema.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe a una incompatibilidad de versión entre TensorFlow y Keras. La función load_trained_model_from_checkpoint() de keras_bert está utilizando una clase InputSpec del módulo keras.engine, pero parece que la versión de Keras que estás utilizando no tiene esta clase.

    Una posible solución es reducir la versión de Keras a 2.2.4 o anterior, ya que se sabe que esa versión funciona con keras_bert. Puedes hacer esto ejecutando el siguiente comando:

    !pip install keras==2.2.4
    

    Otra solución es modificar el archivo layer_normalization.py, reemplazando la línea:

    self.input_spec = keras.engine.InputSpec(shape=input_shape)
    

    con:

    self.input_spec = keras.layers.InputSpec(shape=input_shape)
    

    Esto debería funcionar con las versiones más recientes de Keras.

    Después de resolver el problema, deberías poder cargar el modelo BERT correctamente.

Comments are closed.