From 3c771e436bc8f261df669357e9f9ef4c1a58bd7a Mon Sep 17 00:00:00 2001 From: flynhigher Date: Thu, 4 Jul 2024 14:08:16 -0400 Subject: [PATCH 1/3] Fix for 'Variable' object has no attribute 'read_value' --- tensorflow_recommenders/layers/factorized_top_k.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow_recommenders/layers/factorized_top_k.py b/tensorflow_recommenders/layers/factorized_top_k.py index b6a7f45..0316c3c 100644 --- a/tensorflow_recommenders/layers/factorized_top_k.py +++ b/tensorflow_recommenders/layers/factorized_top_k.py @@ -466,7 +466,7 @@ def top_k(state: Tuple[tf.Tensor, tf.Tensor], def enumerate_rows(batch: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: """Enumerates rows in each batch using a total element counter.""" - starting_counter = self._counter.read_value() + starting_counter = self._counter.value end_counter = self._counter.assign_add(tf.shape(batch)[0]) return tf.range(starting_counter, end_counter), batch From f4b43cf5d4ac72294a3ebcfa255c277fbfeb23f7 Mon Sep 17 00:00:00 2001 From: flynhigher Date: Thu, 4 Jul 2024 14:22:17 -0400 Subject: [PATCH 2/3] Fix metric.update_state() returning nonetype by replacing it with metric.result() --- tensorflow_recommenders/metrics/factorized_top_k.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tensorflow_recommenders/metrics/factorized_top_k.py b/tensorflow_recommenders/metrics/factorized_top_k.py index b9bfd7b..8d025a9 100644 --- a/tensorflow_recommenders/metrics/factorized_top_k.py +++ b/tensorflow_recommenders/metrics/factorized_top_k.py @@ -177,7 +177,8 @@ def update_state( tf.reduce_sum(ids_match[:, :k], axis=1, keepdims=True), 0.0, 1.0 ) - update_ops.append(metric.update_state(match_found, sample_weight)) + metric.update_state(match_found, sample_weight) + update_ops.append(metric.result()) else: # Score-based evaluation. y_pred = tf.concat([positive_scores, top_k_predictions], axis=1) @@ -189,7 +190,8 @@ def update_state( predictions=y_pred, k=k ) - update_ops.append(metric.update_state(top_k_accuracy, sample_weight)) + metric.update_state(top_k_accuracy, sample_weight) + update_ops.append(metric.result()) return tf.group(update_ops) \ No newline at end of file From d0fced0ffdd9d4a984d35712cc217cb3af19401d Mon Sep 17 00:00:00 2001 From: flynhigher Date: Thu, 4 Jul 2024 14:50:52 -0400 Subject: [PATCH 3/3] Fix for cannot convert 1 to dtype of string when initializing identifier --- tensorflow_recommenders/layers/factorized_top_k.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tensorflow_recommenders/layers/factorized_top_k.py b/tensorflow_recommenders/layers/factorized_top_k.py index 0316c3c..e8bd430 100644 --- a/tensorflow_recommenders/layers/factorized_top_k.py +++ b/tensorflow_recommenders/layers/factorized_top_k.py @@ -373,7 +373,7 @@ def __init__(self, self._num_parallel_calls = num_parallel_calls self._sorted = sorted_order - self._counter = self.add_weight("counter", dtype=tf.int32, trainable=False) + self._counter = self.add_weight(name="counter", dtype=tf.int32, trainable=False) def index_from_dataset( self, @@ -545,7 +545,7 @@ def index( ) # We need any value that has the correct dtype. - identifiers_initial_value = tf.zeros((), dtype=identifiers.dtype) + identifiers_initial_value = tf.zeros(identifiers.shape, dtype=identifiers.dtype) self._identifiers = self.add_weight( name="identifiers",