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.

¿Qué se debe utilizar en lugar de predict_classes() en un cuaderno Jupyter con Tensorflow? (Generación de texto NLP)

Estoy tratando de seguir un tutorial de tensorflow NLP para entrenar una red neural para generar salidas de poesía/letras-like usando mis propias fuentes compiladas. Solo conozco Python básico, así que definitivamente esto está fuera de mi nivel de competencia. Parece que el tutorial está un poco desactualizado, ya que estoy recibiendo este código de error:

AttributeError: El objeto 'Sequential' no tiene el atributo 'predict_classes'

Entiendo que el atributo ‘predict_classes’ está obsoleto y ya no se utiliza en las versiones actuales de tensorflow.

Esta fue una línea de código sugerida en una respuesta, pero no entiendo cómo incluirla en mi código:

= np.argmax(model.predict(x_test), axis=-1)

Cualquier ayuda será apreciada. Aquí está la sección del código que me está dando problemas, junto con el código de error. También incluí un enlace al cuaderno de Jupyter completo.

seed_text = "Luz de primavera"
next_words = 100

for _ in range(next_words):
    token_list = tokenizer.texts_to_sequences([seed_text])[0]
    token_list = pad_sequences([token_list], maxlen=max_sequence_len-1, padding='pre')
    predicted = model.predict_classes(token_list, verbose=0)
    output_word = ""
    for word, index in tokenizer.word_index.items():
        if index == predicted:
            output_word = word
            break
    seed_text += " " + output_word

print(seed_text)

Aquí está el enlace al video que estaba siguiendo: aquí

Y aquí está la copia del cuaderno de Jupyter: aquí

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el tutorial que estás siguiendo está utilizando una versión más antigua de TensorFlow. El atributo “predict_classes” está obsoleto y ya no se utiliza en las versiones más nuevas de TensorFlow.

    La línea de código sugerida np.argmax(model.predict(x_test), axis=-1) puede reemplazar la línea problemática predicted = model.predict_classes(token_list, verbose=0). Esta línea de código devuelve los índices de los valores máximos a lo largo de un eje (en este caso, “-1” se refiere al último eje). Básicamente, está encontrando el índice del valor de probabilidad más alto y utilizando ese índice como la clase predicha.

    Para implementar esto, puedes reemplazar la línea problemática con el siguiente código:

    predicted = np.argmax(model.predict(token_list), axis=-1)

    Esto debería resolver el error de atributo y permitirte continuar con el tutorial.

Comments are closed.