Я пытаюсь создать функцию для оптимизации потерь, я использую оптимизатор Adam с уровнем обучения, который я прохожу в самом классе. Тем не менее, мне посоветовали применить отсечение, чтобы устранить взрывной градиент с помощью функции clip_by_norm.
def perform_optimization(self):
"""Specifies the optimizer and train_op for the model."""
# Create an optimizer (tf.train.AdamOptimizer)
self.optimizer = tf.train.AdamOptimizer(learning_rate= self.learning_rate_ph)
self.grads_and_vars = self.optimizer.compute_gradients(self.loss)
clip_norm = tf.cast(1.0, tf.float32)
self.grads_and_vars = tf.clip_by_norm(t=self.grads_and_vars,clip_norm=clip_norm)
self.train_op = self.optimizer.apply_gradients(self.grads_and_vars)
Я получил ошибку, показанную в заголовке, и проследил все свои функции в классе, и ошибка произошла из-за этого line
self.grads_and_vars = tf.clip_by_norm(t=self.grads_and_vars,clip_norm=clip_norm)
Я не совсем уверен, что я сделал неправильно, так как я впервые использую clip_by_norm
. есть идеи?