RMSE/ RMSLE-Verlust-Funktion im Keras
Ich versuche, an meinem ersten Kaggle-Wettbewerb, wo RMSLE
ist gegeben, da die geforderte-Verlust-Funktion. Denn ich habe nichts gefunden, wie zum implementieren dieser loss function
ich habe versucht, dich für RMSE
. Ich weiß, das war Teil Keras
in der Vergangenheit, gibt es eine Möglichkeit, es zu benutzen in der neuesten version, vielleicht mit einer benutzerdefinierten Funktion, die über backend
?
Dies ist der NN, die ich entworfen:
from keras.models import Sequential
from keras.layers.core import Dense , Dropout
from keras import regularizers
model = Sequential()
model.add(Dense(units = 128, kernel_initializer = "uniform", activation = "relu", input_dim = 28,activity_regularizer = regularizers.l2(0.01)))
model.add(Dropout(rate = 0.2))
model.add(Dense(units = 128, kernel_initializer = "uniform", activation = "relu"))
model.add(Dropout(rate = 0.2))
model.add(Dense(units = 1, kernel_initializer = "uniform", activation = "relu"))
model.compile(optimizer = "rmsprop", loss = "root_mean_squared_error")#, metrics =["accuracy"])
model.fit(train_set, label_log, batch_size = 32, epochs = 50, validation_split = 0.15)
Habe ich versucht, eine benutzerdefinierte root_mean_squared_error
Funktion fand ich auf GitHub, aber ich weiß die syntax ist nicht das, was erforderlich ist. Ich denke, die y_true
und die y_pred
müssten definiert werden, bevor Sie an die zurückgeben, aber ich habe keine Ahnung wie genau, ich habe gerade angefangen mit der Programmierung in python, und ich bin wirklich nicht gut in Mathe...
from keras import backend as K
def root_mean_squared_error(y_true, y_pred):
return K.sqrt(K.mean(K.square(y_pred - y_true), axis=-1))
Erhalte ich den folgenden Fehler mit dieser Funktion:
ValueError: ('Unknown loss function', ':root_mean_squared_error')
Vielen Dank für Eure Ideen, ich Schätze jede Hilfe!
- Die root_mean_squared_error Sie definiert, scheint gleichbedeutend mit 'mse'(mean squared error) in keras. Nur zur info.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine benutzerdefinierte Verlust, die Sie brauchen, um es ohne Anführungszeichen, wie Sie übergeben der Funktion Objekt, kein string:
metrics=['mse']
?Akzeptierte Antwort enthält einen Fehler, was dazu führt, dass RMSE tatsächlich MAE, als pro das folgende Problem:
https://github.com/keras-team/keras/issues/10706
Die richtige definition sollte
Wenn Sie mit neuesten tensorflow der Nacht, obwohl es keine RMSE in der Dokumentation, es ist ein
tf.keras.metrics.RootMeanSquaredError()
im source code.Beispiel für die Nutzung: