2017-01-20 13 views
0

深いニューラルネットワークモデルを構築するためにKeras(+ TensorFlow)を使用しています。モデルでは、私自身の精度関数を定義する必要があります。Kerasは予測から+/- 1の精度を計算します

たとえば、このモデルでは、作業に要した時間(分、0〜20)が予測されます。予測された出力が+/- 2以内であれば、モデルは精度をプリントアウトします。予測された出力がx分の場合、期待される出力はx + 1ですが、予測された出力x + 3、これは間違った予測だと思っています。また、両方のtensorflowとtheanoに取り組んであなたのメトリックを保証します

これは、あなたが簡単にKerasバックエンドAPIを使用してロジックを実装することができますtop_k_categorical_accuracy

+0

を使用すると、1つの実数値出力または毎分20の寸法の分類モデルと回帰モデルを構築しています。 – indraforyou

+0

@indraforyou 20次元の分類モデルです。 – Pratyush

答えて

1

若干異なる..です。テストとここ

import numpy as np 
import keras 
from keras import backend as K 

shift = 2 
def custom_metric(y_true,y_pred): 
    diff = K.abs(K.argmax(y_true, axis=-1) - K.argmax(y_pred, axis=-1)) 
    return K.mean(K.lesser_equal(diff, shift)) 


t1 = np.asarray([ [0,0,0,0,0,0,1,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
       ]) 
p1 = np.asarray([ [0,0,0,0,0,1,0,0,0,], 
        [0,0,0,0,1,0,0,0,0,], 
        [0,0,0,0,0,0,0,1,0,], 
        [0,0,0,0,0,0,0,0,1,], 
        [1,0,0,0,0,0,0,0,0,], 
        [0,0,0,0,0,0,1,0,0,], 
       ]) 


print K.eval(keras.metrics.categorical_accuracy(K.variable(t1),K.variable(p1))) 
print K.eval(custom_metric(K.variable(t1),K.variable(p1))) 

は今、あなたの compile文の中でそれを使用する: metrics=custom_metric

関連する問題