2017-02-19 10 views
1

imagenet2012データセットでtop5を計算したいのですが、ケラスでどのように行うのか分かりません。 フィット関数は、上位1の精度を計算することができます。kerasのtop5精度を計算するには?

答えて

8

あなたがtopKの直後にいる場合は、テンソルフローを直接呼び出すことができます(使用しているバックエンドについては言わないでください)。

from keras import backend as K 
import tensorflow as tf 

top_values, top_indices = K.get_session().run(tf.nn.top_k(_pred_test, k=5)) 

精度メトリックが必要な場合は、モデル'top_k_categorical_accuracy'に追加できます。

model.compile('adam', 'categorical_crossentropy', ['accuracy', 'top_k_categorical_accuracy']) 

history = model.fit(X_train, y_train, nb_epoch=3, validation_split=0.2) 

Train on 31367 samples, validate on 7842 samples 
Epoch 1/3 
31367/31367 [==============================] - 6s - loss: 0.0818 - acc: 0.9765 - top_k_categorical_accuracy: 0.9996 - 
... 

このメトリックのデフォルトkは5ですが、あなたは3を言うためにそれを変更したい場合は、このようなあなたのモデルを設定します:

top3_acc = functools.partial(keras.metrics.top_k_categorical_accuracy, k=3) 

top3_acc.__name__ = 'top3_acc' 

model.compile('adam', 'categorical_crossentropy', ['accuracy', top3_acc]) 
1

あなたが探しているものは以下です: top_k_categorical_crossentropy

メトリックを選択することもできますが、簡単に自分自身を作成することもできます。custom metric

関連する問題