Saltar al contenido

¿Por qué la precisión de mi modelo Keras siempre es 0 cuando entreno?

Luego de de nuestra larga selección de datos dimos con la respuesta esta duda que pueden tener algunos de nuestros usuarios. Te compartimos la respuesta y nuestro objetivo es serte de mucha apoyo.

Solución:

Su modelo parece corresponder a un modelo de regresión por las siguientes razones:

  • Tu estas usando linear (el predeterminado) como una función de activación en la capa de salida (y relu en la capa anterior).

  • tu pérdida es loss='mean_squared_error'.

Sin embargo, la métrica que usas- metrics=['accuracy'] corresponde a un problema de clasificación. Si quieres hacer una regresión, elimina metrics=['accuracy']. es decir, usar

model.compile(optimizer='adam',loss='mean_squared_error')

Aquí hay una lista de métricas de keras para regresión y clasificación (tomada de esta publicación de blog):

Métricas de regresión de Keras

•Error cuadrático medio: mean_squared_error, MSE o mse

•Error absoluto medio: error_absoluto_medio, MAE, mae

•Error porcentual absoluto medio: mean_absolute_percentage_error, MAPE, mape

•Proximidad del coseno: coseno_proximidad, coseno

Métricas de clasificación de Keras

• Precisión binaria: binary_accuracy, acc

• Precisión categórica: categorical_accuracy, acc

• Precisión categórica escasa: sparse_categorical_accuracy

•Precisión categórica Top k: top_k_categorical_accuracy (requiere que especifique el parámetro ak)

• Precisión categórica de Sparse Top k: sparse_top_k_categorical_accuracy (requiere que especifique el parámetro ak)

Agregue lo siguiente para obtener métricas:

   history = model.compile(optimizer='adam', loss='mean_squared_error', metrics=['mean_squared_error'])
   # OR
   history = model.compile(optimizer='adam', loss='mean_absolute_error', metrics=['mean_absolute_error'])
   history.history.keys()
   history.history

Prueba este.

mientras intentaba resolver el problema del Titanic de kaggle, olvidé completar los datos faltantes del marco de datos, por lo que los datos faltantes se llenaron con “nan”.

El modelo arrojó una salida similar.

#------------------------------------------------------

Epoch 1/50

891/891 [==============================] - 3s 3ms/step - loss: 9.8239 - acc: 0.0000e+00

Epoch 2/50

891/891 [==============================] - 1s 2ms/step - loss: 9.8231 - acc: 0.0000e+00

Epoch 3/50

891/891 [==============================] - 1s 1ms/step - loss: 9.8231 - acc: 0.0000e+00

Epoch 4/50

891/891 [==============================] - 1s 1ms/step - loss: 9.8231 - acc: 0.0000e+00

Epoch 5/50

891/891 [==============================] - 1s 1ms/step - loss: 9.8231 - acc: 0.0000e+00

#------------------------------------------------------

Asegúrese de preparar sus datos antes de enviarlos al modelo.

En mi caso tuve que hacer los siguientes cambios

+++++++++++++++++++++++++++++++++++

dataset[['Age']] = dataset[['Age']].fillna(value=dataset[['Age']].mean())

dataset[['Fare']] = dataset[['Fare']].fillna(value=dataset[['Fare']].mean())

dataset[['Embarked']] = dataset[['Embarked']].fillna(value=dataset['Embarked'].value_counts().idxmax())

Sección de Reseñas y Valoraciones

Al final de todo puedes encontrar las reseñas de otros usuarios, tú incluso puedes insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *