Before calling the standard compile function, check to see if the size
        of the data has changed and add variational parameters appropriately.

        This is necessary because the shape of the parameters depends on the
        shape of the data.

def compile(self, session=None):
        """
        Before calling the standard compile function, check to see if the size
        of the data has changed and add variational parameters appropriately.

        This is necessary because the shape of the parameters depends on the
        shape of the data.
        """
        if not self.num_data == self.X.shape[0]:
            self.num_data = self.X.shape[0]
            self.q_alpha = Parameter(np.zeros((self.num_data, self.num_latent)))
            self.q_lambda = Parameter(np.ones((self.num_data, self.num_latent)),
                                      transforms.positive)
        return super(VGP_opper_archambeau, self).compile(session=session)