'Computes the simple muprop gradient.
This muprop control variate does not include the linear term.'

def get_simple_muprop_gradient(self):

    (logQHard, hardSamples) = self._recognition_network()
    (hardELBO, reinforce_model_grad) = self._generator_network(hardSamples, logQHard)
    (logQ, muSamples) = self._recognition_network(sampler=self._mean_sample)
    (muELBO, _) = self._generator_network(muSamples, logQ)
    scaling_baseline = self._create_eta(collection='BASELINE')
    learning_signal = ((hardELBO - (scaling_baseline * muELBO)) - self._create_baseline())
    self.baseline_loss.append(tf.square(learning_signal))
    optimizerLoss = (- ((tf.stop_gradient(learning_signal) * tf.add_n(logQHard)) + reinforce_model_grad))
    optimizerLoss = tf.reduce_mean(optimizerLoss)
    simple_muprop_gradient = self.optimizer_class.compute_gradients(optimizerLoss)
    debug = {'ELBO': hardELBO, 'muELBO': muELBO, 'RMS': U.rms(learning_signal)}
    return (simple_muprop_gradient, debug)
