2017-05-08 9 views
6

私は最初のKaggleコンテストに参加しようとしています。ここでは、必要な損失関数としてRMSLEが与えられています。私はこれを実装する方法が何も見つかりませんでしたloss function私はRMSEのために解決しようとしました。私はこれが過去にKerasの一部であったことを知っています。最新バージョンでそれを使用する方法はありますか?おそらくbackendを介してカスタマイズされた機能を使っていますか?KerasのRMSE/RMSLE損失関数

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) 

を私はGitHubのではなく、私は構文が必要とされるものではありません知っているすべてが見つかりカスタマイズroot_mean_squared_error機能を試してみました:

これは私が設計しNNです。私は

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)) 
... y_truey_predはリターンに渡す前に定義しなければならないであろうが、私は、私はちょうどPythonでプログラミングを始めた方法を正確に、見当がつかないと私は本当に数学では良いことではないと思います

私はこの機能では、次のエラーが表示さ:あなたのアイデアのための

ValueError: ('Unknown loss function', ':root_mean_squared_error') 

おかげで、私はすべての助けに感謝します!

答えて

13

カスタム損失を使用するときは、関数オブジェクトではなく、文字列を渡すと、あなたは、引用符なしでそれを配置する必要があります:

def root_mean_squared_error(y_true, y_pred): 
     return K.sqrt(K.mean(K.square(y_pred - y_true), axis=-1)) 

model.compile(optimizer = "rmsprop", loss = root_mean_squared_error, 
       metrics =["accuracy"]) 
完全に罰金作品
+1

、その間違いを指摘いただき、誠にありがとうございます。私はまったく新しいことを考えていませんでした。このカスタム関数を編集して平方根平方根を計算する方法を知りませんでしたLOGARITHMICエラーですか? – dennis

+0

それは私に不明な損失関数を与える:root_mean_squared_error – Jitesh

+0

@Jiteshこのようなコメントをしないでください、ソースコードであなた自身の質問をしてください。 –

関連する問題