Nachdem ich mir diese Frage angesehen habe: Beim Versuch, die lineare Regression mit Keras zu emulieren , habe ich versucht, mein eigenes Beispiel nur zu Studienzwecken zu erstellen und meine Intuition zu entwickeln.
Ich habe einen einfachen Datensatz heruntergeladen und eine Spalte verwendet, um eine andere vorherzusagen. Die Daten sehen folgendermaßen aus:
Jetzt habe ich gerade ein einfaches Keras-Modell mit einer einzelnen linearen Ebene mit einem Knoten erstellt und darauf einen Gradientenabstieg ausgeführt:
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)
Wenn ich das Modell so laufen lasse, verliere ich nan
in jeder Epoche.
Also habe ich beschlossen, Dinge auszuprobieren und bekomme nur dann ein anständiges Modell, wenn ich eine lächerlich kleine Lernrate verwende sgd=keras.optimizers.SGD(lr=0.0000001)
:
Warum passiert das jetzt? Muss ich die Lernrate für jedes Problem, mit dem ich konfrontiert bin, manuell so einstellen? Mache ich hier etwas falsch Das soll das einfachste Problem sein, oder?
Vielen Dank!