GradientTape cannot compute the gredients for the model. How can I debug this code?
class Training(keras.Model):

  def __init__(self, model):

    super(Training, self).__init__()

    self.model = model

  def compute_loss(self, texts, labels):

    texts = tf.math.l2_normalize(texts, axis=0)
    losses = tf.Variable(tf.zeros_like(labels, dtype=tf.float32), trainable=True, dtype=tf.float32)

    for index, label in enumerate(labels):

      pos_pairs = texts[labels == label]

      neg_pairs = texts[labels != label]

      if len(pos_pairs) > 1:

        p_list = tf.Variable( tf.zeros(pos_pairs.shape[0], dtype=tf.float32), trainable=True, dtype=tf.float32 )

        i = 0

        for pos_pair in pos_pairs:

          p_list[i].assign( keras.losses.cosine_similarity(texts[index], pos_pair) )

          i += 1

        p_list = tf.exp( p_list )

        p_list = p_list / tf.reduce_sum(p_list)

        p_loss = tf.reduce_sum( - tf.math.log( p_list ) )

      else:

        p_loss = 0.0

      if len(neg_pairs) > 1:

        n_list = tf.Variable( tf.zeros(neg_pairs.shape[0], dtype=tf.float32), trainable=True, dtype=tf.float32 )

        i = 0

        for neg_pair in neg_pairs:

          n_list[i].assign( keras.losses.cosine_similarity(texts[index], neg_pair) )

          i += 1

        n_list = tf.exp( n_list )

        n_list = n_list / tf.reduce_sum(n_list)

        n_loss = tf.reduce_sum( tf.math.log( n_list ) )

      else:

        n_loss = 0.0

        

      loss_on_sentence = p_loss + n_loss

      losses[index].assign( loss_on_sentence )

   

    loss = tf.reduce_mean(losses)

    return loss

  def train_step(self, data):

    texts = data[0]

    labels = data[1]

    #print(labels, texts)

    with tf.GradientTape() as tape:

      texts = self.model(texts)

      loss = self.compute_loss(texts, labels)

      print(loss)

    trainable_vars = self.trainable_variables

    #print(trainable_vars)

    gradients = tape.gradient(loss, trainable_vars)

    print(gradients)

    self.optimizer.apply_gradients(zip(gradients, trainable_vars))

    loss_tracker.update_state(loss)

    return {"loss": loss_tracker.result()}

  @property

  def metrics(self):

    return [loss_tracker]

trainer = Training(model)

trainer.compile(optimizer='adam',  run_eagerly=True)

trainer.fit(train_dataset, callbacks=[tensorboard_callback])

Error:
ValueError: No gradients provided for any variable: ['dense1/kernel:0', 'dense1/bias:0', 'dense2/kernel:0', 'dense2/bias:0', 'bn1/gamma:0', 'bn1/beta:0', 'dense3/kernel:0', 'dense3/bias:0', 'dense4/kernel:0', 'dense4/bias:0', 'bn2/gamma:0', 'bn2/beta:0', 'dense5/kernel:0', 'dense5/bias:0', 'dense6/kernel:0', 'dense6/bias:0', 'bn3/gamma:0', 'bn3/beta:0', 'dense7/kernel:0', 'dense7/bias:0', 'dense8/kernel:0', 'dense8/bias:0', 'bn4/gamma:0', 'bn4/beta:0', 'dense9/kernel:0', 'dense9/bias:0', 'bn5/gamma:0', 'bn5/beta:0'].
Can anyone help to debug this error!!
Thanking you in advance.