Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

380
Vistas
Keras AttributeError: el objeto 'secuencial' no tiene atributo 'predict_classes'

Estoy tratando de encontrar métricas de rendimiento del modelo (puntaje F1, precisión, recuperación) siguiendo esta guía https://machinelearningmastery.com/how-to-calculate-precision-recall-f1-and-more-for-deep-learning-models/

Este código exacto funcionaba hace unos meses pero ahora devuelve todo tipo de errores, muy confuso ya que no he cambiado un carácter de este código. ¿Quizás una actualización de paquete ha cambiado las cosas?

Ajusté el modelo secuencial con model.fit, luego usé model.evaluate para encontrar la precisión de la prueba. Ahora estoy intentando usar model.predict_classes para hacer predicciones de clase (el modelo es un clasificador de varias clases). Código que se muestra a continuación:

 model = Sequential() model.add(Dense(24, input_dim=13, activation='relu')) model.add(Dense(18, activation='relu')) model.add(Dense(6, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) - history = model.fit(X_train, y_train, batch_size = 256, epochs = 10, verbose = 2, validation_split = 0.2) - score, acc = model.evaluate(X_test, y_test,verbose=2, batch_size= 256) print('test accuracy:', acc) - yhat_classes = model.predict_classes(X_test)

la última línea devuelve el error "AttributeError: el objeto 'secuencial' no tiene el atributo 'predict_classes'"

Este código exacto funcionaba no hace mucho, así que tuve problemas, gracias por cualquier ayuda.

over 4 years ago · Santiago Trujillo
7 Respuestas
Responde la pregunta

0

Esta función se eliminó en TensorFlow versión 2.6. Según la referencia de keras en rstudio

actualización para

 predict_x=model.predict(X_test) classes_x=np.argmax(predict_x,axis=1)

O use TensorFlow 2.5 o posterior.

Si está utilizando la versión 2.5 de TensorFlow, recibirá la siguiente advertencia:

tensorflow\python\keras\engine\secuential.py:455: UserWarning: model.predict_classes() está en desuso y se eliminará después del 01-01-2021. Utilice en su lugar:* np.argmax(model.predict(x), axis=-1) , si su modelo realiza una clasificación multiclase (por ejemplo, si utiliza una activación de última capa softmax ).* (model.predict(x) > 0.5).astype("int32") , si su modelo hace una clasificación binaria (por ejemplo, si usa una activación de la última capa sigmoid ).

over 4 years ago · Santiago Trujillo Denunciar

0

Usé el siguiente código para las predicciones.

 y_pred = model.predict(X_test) y_pred = np.round(y_pred).astype(int)
over 4 years ago · Santiago Trujillo Denunciar

0

Experimenté el mismo error, utilizo el siguiente código y lo conseguí.

Sustituido:

 predictions = model.predict_classess(x_test)

Con este:

 predictions = (model.predict(x_test) > 0.5).astype("int32")

Tipo de paquetes de python: Tensorflow 2.6.0

esto funciona bien

over 4 years ago · Santiago Trujillo Denunciar

0

Podemos reemplazar la línea de código problemática con lo siguiente:

 y_predict = np.argmax(model.predict(x_test), axis=-1)
over 4 years ago · Santiago Trujillo Denunciar

0

la versión más nueva de Tensorflow, han obsoleto la función predict_classes (había una advertencia en versiones anteriores sobre esto)

predicciones = np.argmax(modelo.predecir(x_test),eje=1)

over 4 years ago · Santiago Trujillo Denunciar

0

En Tensorflow 2.7, las clases predichas se pueden obtener con el siguiente código:

 predicted = np.argmax(model.predict(token_list),axis=1)
over 4 years ago · Santiago Trujillo Denunciar

0

Use esto ya que las clases predict_classes se eliminan con la última versión de tensorflow

 predictions = (model.predict(X_test) > 0.5)*1

Como se trata de un problema binario (0 o 1), la clase de salida se determina si la probabilidad es mayor que 0,5. Por lo tanto, el código de arriba

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda