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.

¿Por qué mi modelo neuronal de multiclasificación no se entrena (la precisión y la pérdida se mantienen iguales)?

Estoy aprendiendo redes neuronales. Obtengo una precisión del 98% con métodos de ML clásicos, así que creo que cometí un error de codificación. El modelo de redes neuronales no está aprendiendo.
Cosas que intenté:
– Cambiar X e y a float64 o float32
– Normalizar los datos
– Cambiar la activación a “lineal” o “relu”
– Quitar Flatten()
– Agregar capas ocultas
– Usar descenso de gradiente estocástico como optimizador, en lugar de “adam”.
– Cambiar la etiqueta y con otra etiqueta

Hay 9 etiquetas en X_train y 8 clases diferentes en y_train.

X_train:

X_train

y_train:

y_train

Código:

model = keras.models.Sequential()
model.add(keras.layers.Input(shape=(9,)))
model.add(keras.layers.Dense(8, activation='softmax'))
model.add(layers.Flatten())
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

Ajuste:

Ajuste

Intenté estas líneas cambiando la etiqueta objetivo. Ninguna de ellas ayuda a entrenar el modelo. Algunas dan una pérdida “nan”, algunas suben y bajan ligeramente, pero todas están por debajo de una precisión del 0,1%:

model = tf.keras.Sequential()
model.add(layers.Input(shape=(9,)))
model.add(layers.Dense(1, name='dense1'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=20, batch_size=24)

o esto:

model = tf.keras.Sequential()
model.add(layers.Input(shape=(9,)))
model.add(layers.Dense(3, activation='relu', name='relu1'))
model.add(layers.Dense(16, activation='relu', name='relu2'))
model.add(layers.Dense(16, activation='relu', name='relu3'))
model.add(layers.Dense(1, name='dense1'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
history = model.fit(x=X_train, y=y_train, epochs=20)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándonos en la información proporcionada, parece que el problema podría no estar en el código, sino más bien en los datos mismos. Es importante asegurarse de que el conjunto de datos esté equilibrado correctamente y que haya suficientes muestras para cada clase. Además, podría ser útil visualizar los datos y ver si hay algún patrón o correlación entre las características y la variable objetivo. También podría ser útil probar diferentes arquitecturas de redes neuronales, como agregar más capas o cambiar el número de neuronas en cada capa. Por último, podría ser útil probar diferentes funciones de pérdida y optimizadores para ver si mejoran el rendimiento del modelo.

Comments are closed.