in src/model_def.py [0:0]
def compute_apply_gradients(encoder_mean, encoder_lgvar, vae, x, optimizer):
"""Compute the gradient and apply gradient to optimizer
PARAMETERS
----------
encoder_mean: model part to output means in the hidden layer
encoder_lgvar: model part to output vars in the hidden layer
vae: Variational Autoencoders
x : tensors
optimizer : tensorflow optimizer object
RETURNS
-------
None, but weights are updated
"""
with tf.GradientTape() as tape:
recon_loss, loss = compute_vae_loss(encoder_mean, encoder_lgvar, vae, x)
gradients = tape.gradient(loss, vae.trainable_variables)
optimizer.apply_gradients(zip(gradients, vae.trainable_variables))