pythonのkerasで用いる評価関数の自作について
pythonのkerasのコーディングについて教えてください。
kerasのmetricsにない関数を自作しようとしているのですがエラーが出るので分かる方に聞きたいです。
以下がコードです。
def average_precision(y_true, y_pred):
class_count = {}
AP = 0
#辞書式、keyをクラス、valueに出現回数
for i in y_true:
if i not in class_count:
class_count[i] = 0
class_count[i] += 1
#y_trueとy_predが一致した時だけ式をAPの値に加算する
true_count = 0
count = 1
for i ,k in zip(y_true, y_pred):
if i == k:
true_count += 1
AP+=(true_count/count)*(1/class_count[i].values())
count += 1
エラー内容です。
TypeError: Tensor objects are only iterable when eager execution is enabled. To iterate over this tensor use tf.map_fn.
エラーが起こる理由として、バックエンドでtensorflowを用いて計算しているのでtensorflowが処理できる形で書く必要があると認識しています。
しかし、ネットで自作関数に関してあまり詳しく書いている記事を見つけることが出来ず、どう実装すればよいのか途方に暮れています。
お手数ですがコードの実装化を通してでも、分かりやすいサイトを教えてくださることでもいいので手を貸してください。