Creating a DBN with the Keras Model API
You have now seen how to create a single-layer RBM to generate images; this is the building block required to create a full-fledged DBN. Usually, for a model in TensorFlow 2, we only need to extend tf.keras.Model
and define an initialization (where the layers are defined) and a call
function (for the forward pass). For our DBN model, we also need a few more custom functions to define its behavior.
First, in the initialization, we need to pass a list of dictionaries that contain the parameters for our RBM layers (number_hidden_units
, number_visible_units
, learning_rate
, cd_steps
):
class DBN(tf.keras.Model):
def __init__(self, rbm_params=None, name='deep_belief_network',
num_epochs=100, tolerance=1e-3, batch_size=32, shuffle_buffer=1024, **kwargs):
super().__init__(name=name, **kwargs)
self._rbm_params = rbm_params
self._rbm_layers = list()
self._dense_layers = list()
...