import tensorflow as tf

                                                            epsilon=epsilon, is_training=False)
            else:
                (X, _, _) =  tf.nn.fused_batch_norm(X, scale, offset, epsilon=epsilon, is_training=True)

            return X

    def _mark_for_monitoring(self, name, value):
        tf.add_to_collection(TF_COLLECTION_MONITORED, tf.identity(value, name))

    def _add_monitoring_of_values(self):
        monitored_values = tf.get_collection(TF_COLLECTION_MONITORED)
        monitored_values = {
            value.name.split(':')[0]: value # Get rid of ':0' from name
            for value in monitored_values
