Après avoir regardé cette question: en essayant d'émuler la régression linéaire en utilisant Keras , j'ai essayé de rouler mon propre exemple, juste à des fins d'étude et pour développer mon intuition.
J'ai téléchargé un simple ensemble de données et utilisé une colonne pour en prédire une autre. Les données ressemblent à ceci:
Maintenant, je viens de créer un modèle de kéros simple avec une seule couche linéaire à un nœud et j'ai procédé à une descente en gradient sur celui-ci:
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)
Faire tourner le modèle comme ça me fait nan
perdre à chaque époque.
J'ai donc décidé de commencer à essayer des trucs et je n'obtiens un modèle décent que si j'utilise un taux d'apprentissage ridiculement petit sgd=keras.optimizers.SGD(lr=0.0000001)
:
Maintenant, pourquoi cela se produit-il? Dois-je régler manuellement le taux d'apprentissage comme celui-ci pour chaque problème que je rencontre? Est-ce que je fais quelque chose de mal ici? C'est censé être le problème le plus simple possible, non?
Merci!