Después de analizar esta pregunta: Intentando emular la regresión lineal usando Keras , he intentado dar mi propio ejemplo, solo para estudiar y desarrollar mi intuición.
Descargué un conjunto de datos simple y usé una columna para predecir otra. Los datos se ven así:
Ahora acabo de crear un modelo de keras simple con una sola capa lineal de un nodo y procedí a ejecutar un descenso de gradiente en ella:
from keras.layers import Input, Dense
from keras.models import Model
inputs = Input(shape=(1,))
preds = Dense(1,activation='linear')(inputs)
model = Model(inputs=inputs,outputs=preds)
sgd=keras.optimizers.SGD()
model.compile(optimizer=sgd ,loss='mse',metrics=['mse'])
model.fit(x,y, batch_size=1, epochs=30, shuffle=False)
Ejecutar el modelo así me da nan
pérdidas en cada época.
Así que decidí comenzar a probar cosas y solo obtengo un modelo decente si uso una tasa de aprendizaje ridículamente pequeña sgd=keras.optimizers.SGD(lr=0.0000001)
:
Ahora, ¿por qué está pasando esto? ¿Tendré que ajustar manualmente la tasa de aprendizaje de esta manera para cada problema que enfrento? ¿Estoy haciendo algo mal aquí? Se supone que este es el problema más simple posible, ¿verdad?
¡Gracias!