class_docstr: Add random noise to the embedding and include a corresponding loss.
code: def __init__(
      self,
      embedding_dimension,
      annealing_start_step,
      annealing_final_step,
      **kwargs,
  ):
      super(VariationalRandomizer, self).__init__(**kwargs)
      self._embedding_dimension = embedding_dimension
      self._annealing_final_step = annealing_final_step
      self._annealing_start_step = annealing_start_step
      self.dense_mean = Dense(embedding_dimension)
      self.dense_stddev = Dense(embedding_dimension)
      self.combine = layers.CombineMeanStd(training_only=True)
  
imports: from deepchem.models import KerasModel, layers
  from heapq import heappush, heappushpop
  import numpy
  import tensorflow
  from tensorflow.keras.layers import Input, Layer, Dense, Dropout, GRU, Lambda, Conv1D, Flatten, BatchNormalization
label_desc: Use image node_id 1 to create a new VariationalRandomizer object from inherited base classes: Layer with example: obj = VariationalRandomizer(embedding_dimension, annealing_start_step, annealing_final_step)