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.

Cuando uso más datos para entrenar un modelo NN de TensorFlow, ocurre algo inesperado.

Intento realizar este ejercicio de TensorFlow, cuando doy un valor más alto a xs y ys durante el entrenamiento, la pérdida comienza a aumentar. ¿Por qué sucede esto? ¿Estoy haciendo algo mal?
Se ve bien cuando max es 19, pero no para 20.

import tensorflow as tf
import numpy as np
from tensorflow import keras

def main():
    print(tf.<strong>version</strong>)
    model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=1)])

model.compile(optimizer='sgd', loss="mean_squared_error")

min = 0
max = 20 # la pérdida aumentará si se dan más datos
xs = np.array([float(x) for x in range(min, max)], dtype=np.float32)
ys = np.array([float(3 * x + 1) for x in range(min, max)], dtype=np.float32)
print(xs, sep=',')
print(ys, sep=',')

model.fit(xs, ys, epochs=10)
print(model.predict([100]))

if name == "main":
    main()

Resultados:
Epoch 1/10
1/1 [==============================] – 0s 85ms/step – loss: 1813.5785
Epoch 2/10
1/1 [==============================] – 0s 444us/step – loss: 3997.2852
Epoch 3/10
1/1 [==============================] – 0s 392us/step – loss: 8810.5635
Epoch 4/10
1/1 [==============================] – 0s 349us/step – loss: 19419.8730
Epoch 5/10
1/1 [==============================] – 0s 315us/step – loss: 42804.6797
Epoch 6/10
1/1 [==============================] – 0s 309us/step – loss: 94348.9844
Epoch 7/10
1/1 [==============================] – 0s 365us/step – loss: 207961.6875
Epoch 8/10
1/1 [==============================] – 0s 414us/step – loss: 458384.1875
Epoch 9/10
1/1 [==============================] – 0s 494us/step – loss: 1010359.8125
Epoch 10/10
1/1 [==============================] – 0s 347us/step – loss: 2227010.5000

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Cuando incrementamos el valor de la variable max para los datos de entrenamiento, agregamos más puntos de datos al conjunto de datos. En este código en particular, el modelo se entrena utilizando valores de entrada de min a max, es decir, se entrena para predecir la salida ys dada la entrada xs. El modelo es un modelo de regresión lineal simple, que busca encontrar una relación lineal entre xs e ys.

    Cuando aumentamos el valor de max en el código, añadimos más puntos de datos para entrenar el modelo. Como podemos ver en los resultados, la pérdida comienza con un valor alto y va aumentando con cada época. Esto implica que el modelo no es capaz de aprender la relación entre la entrada y la salida con precisión.

    Esto sucede porque el modelo no es lo suficientemente complejo como para manejar un gran número de puntos de datos. Agregar más puntos de datos sin incrementar el número de capas o neuronas en el modelo puede llevar al sobreajuste o al subajuste de los datos. En este caso, el modelo lineal no es capaz de captar la relación compleja entre xs e ys.

    Para solucionar esto, podemos hacer el modelo más complejo agregando más capas o neuronas, o utilizar un modelo no lineal como una red neuronal. También podemos intentar reducir la tasa de aprendizaje o aumentar el número de épocas para ver si eso mejora la precisión del modelo.

Comments are closed.