def optimizer(self) -> tf.Operation:
"""
Creates the optimization operation used for training the autoencoder.
Gradient clipping of values outside [-2;2] is automatically applied to prevent exploding gradients.
Returns
-------
tf.Operation
The optimization operation used for training the autoencoder
"""
optimizer = tf.train.AdamOptimizer(learning_rate=self.learning_rate)
gvs = optimizer.compute_gradients(self.loss)
with tf.variable_scope("clip_gradients"):
capped_gvs = [(grad, var) if grad is None else (tf.clip_by_value(grad, -2., 2.), var) for grad, var in
gvs]
train_op = optimizer.apply_gradients(capped_gvs)
tf.add_to_collection("train_op", train_op)
return train_op
评论列表
文章目录