Я пытаюсь использовать точность совпадения / подмножества в качестве метрики для моей модели Keras.Я в основном понимаю, как это должно работать, но мне тяжело работать с тензорными манипуляциями.
Я работаю над задачей многоуровневой классификации с 55 возможными метками.Я считаю, что вывод> 0.5 будет положительным для этого ярлыка.Мне нужна метрика, которая описывает, как часто выходные данные точно соответствуют истинным меткам.
Мой подход заключается в преобразовании y_true
в tf.bool
и y_pred > 0.5
в tf.bool
, а затем возвращении тензора, содержащегоTrue
, если они точно совпадают, и False
в противном случае.Похоже, что он работает, когда я делаю базовые тесты, но когда я тренирую модель, она остается на 0.0000
без каких-либо изменений.
def subset_accuracy(y_true, y_pred):
y_pred_bin = tf.cast(y_pred > 0.5, tf.bool)
equality = tf.equal(tf.cast(y_true, tf.bool), y_pred_bin)
return tf.equal(
tf.cast(tf.math.count_nonzero(equality), tf.int32),
tf.size(y_true)
)
Я ожидаю, что метрика будет медленно подниматься, даже если онатолько доходит до 50% или что-то.Но он остается на уровне 0.0.