2017-03-29 4 views
2

Ich möchte Werte schneiden, wie könnte ich das tun?Keras Regression Clip Werte

Ich habe versucht, mit diesem:

from keras.backend.tensorflow_backend import clip 
from keras.layers.core import Lambda 

... 
model.add(Dense(1)) 
model.add(Activation('linear')) 
model.add(Lambda(lambda x: clip(x, min_value=200, max_value=1000))) 

Aber es spielt keine Rolle, wo ich meine Lambda + clip setzen, macht es nichts aus?

+0

Können Sie 'model.summary()' ausdrucken? Und - durch den Clip wirkt sich nichts auf Sie aus, dass die Werte nicht abgeschnitten werden, ja? –

Antwort

2

Es muss tatsächlich als Verlust implementiert werden, im Schritt model.compile.

from keras import backend as K 

def clipped_mse(y_true, y_pred): 
    return K.mean(K.square(K.clip(y_pred, 0., 1900.) - K.clip(y_true, 0., 1900.)), axis=-1) 

model.compile(loss=clipped_mse)