Commit 95220449 authored by guptapriya's avatar guptapriya
Browse files

refactor metrics code

parent 9511801a
...@@ -45,6 +45,17 @@ from official.utils.misc import model_helpers ...@@ -45,6 +45,17 @@ from official.utils.misc import model_helpers
FLAGS = flags.FLAGS FLAGS = flags.FLAGS
def metric_fn(logits, dup_mask, params):
dup_mask = tf.cast(dup_mask, tf.float32)
logits = tf.slice(logits, [0, 0, 1], [-1, -1, -1])
in_top_k, _, metric_weights, _ = neumf_model.compute_top_k_and_ndcg(
logits,
dup_mask,
self.params["match_mlperf"])
metric_weights = tf.cast(metric_weights, tf.float32)
return in_top_k, metric_weights
class MetricLayer(tf.keras.layers.Layer): class MetricLayer(tf.keras.layers.Layer):
"""Custom layer of metrics for NCF model.""" """Custom layer of metrics for NCF model."""
...@@ -57,15 +68,9 @@ class MetricLayer(tf.keras.layers.Layer): ...@@ -57,15 +68,9 @@ class MetricLayer(tf.keras.layers.Layer):
def call(self, inputs): def call(self, inputs):
logits, dup_mask = inputs logits, dup_mask = inputs
dup_mask = tf.cast(dup_mask, tf.float32) in_top_k, metric_weights = metric_fn(logits, dup_mask, self.params)
logits = tf.slice(logits, [0, 0, 1], [-1, -1, -1])
in_top_k, _, metric_weights, _ = neumf_model.compute_top_k_and_ndcg(
logits,
dup_mask,
self.params["match_mlperf"])
metric_weights = tf.cast(metric_weights, tf.float32)
self.add_metric(self.metric(in_top_k, metric_weights)) self.add_metric(self.metric(in_top_k, metric_weights))
return inputs[0] return logits
def _get_train_and_eval_data(producer, params): def _get_train_and_eval_data(producer, params):
...@@ -336,13 +341,8 @@ def run_ncf(_): ...@@ -336,13 +341,8 @@ def run_ncf(_):
"""Computes eval metrics per replica.""" """Computes eval metrics per replica."""
features, _ = inputs features, _ = inputs
softmax_logits = keras_model(features) softmax_logits = keras_model(features)
logits = tf.slice(softmax_logits, [0, 0, 1], [-1, -1, -1]) in_top_k, metric_weights = metric_fn(
dup_mask = features[rconst.DUPLICATE_MASK] logits, features[rconst.DUPLICATE_MASK], params)
in_top_k, _, metric_weights, _ = neumf_model.compute_top_k_and_ndcg(
logits,
dup_mask,
params["match_mlperf"])
metric_weights = tf.cast(metric_weights, tf.float32)
hr_sum = tf.reduce_sum(in_top_k*metric_weights) hr_sum = tf.reduce_sum(in_top_k*metric_weights)
hr_count = tf.reduce_sum(metric_weights) hr_count = tf.reduce_sum(metric_weights)
return hr_sum, hr_count return hr_sum, hr_count
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment