import tensorflow as tf

        self.model_W = tf.get_variable("{}_W".format(name), initializer=kernel_initializer([n_in, n_out])) # variational parameters
        self.model_b = tf.get_variable("{}_b".format(name), initializer=tf.zeros([n_out]))

        self.model_DMW = tf.einsum('pij,jk->pik', self.DM, self.model_W) # Masked weight: p_s * i_s * o_s
        self.model_tiled_b = tf.tile(tf.reshape(self.model_b, [1, n_out]), [self.p_s, 1])

        if activation is None:
            self.activation = tf.identity
