code: def weight_decay_and_noise(loss, hparams, learning_rate, var_list=None):
    
    if var_list is None:
      var_list = tf.trainable_variables()
  
    decay_vars = [v for v in var_list]
    noise_vars = [v for v in var_list if "/body/" in v.name]
  
    weight_decay_loss = weight_decay(hparams.weight_decay, decay_vars)
    if hparams.weight_decay and common_layers.should_generate_summaries():
      tf.summary.scalar("losses/weight_decay", weight_decay_loss)
    weight_noise_ops = weight_noise(hparams.weight_noise, learning_rate,
                                    noise_vars)
  
    with tf.control_dependencies(weight_noise_ops):
      loss = tf.identity(loss)
  
    loss += weight_decay_loss
    return loss
docs: Apply weight decay and weight noise.