def _run_single_set()

in tcav/tcav.py [0:0]


  def _run_single_set(self, param, overwrite=False, run_parallel=False):
    """Run TCAV with provided for one set of (target, concepts).

    Args:
      param: parameters to run
      overwrite: if True, overwrite any saved CAV files.
      run_parallel: run this parallel.

    Returns:
      a dictionary of results (panda frame)
    """
    bottleneck = param.bottleneck
    concepts = param.concepts
    target_class = param.target_class
    activation_generator = param.activation_generator
    alpha = param.alpha
    mymodel = param.model
    cav_dir = param.cav_dir
    # first check if target class is in model.

    tf.compat.v1.logging.info('running %s %s' % (target_class, concepts))

    # Get acts
    acts = activation_generator.process_and_load_activations(
        [bottleneck], concepts + [target_class])
    # Get CAVs
    cav_hparams = CAV.default_hparams()
    cav_hparams['alpha'] = alpha
    cav_instance = get_or_train_cav(
        concepts,
        bottleneck,
        acts,
        cav_dir=cav_dir,
        cav_hparams=cav_hparams,
        overwrite=overwrite)

    # clean up
    for c in concepts:
      del acts[c]

    # Hypo testing
    a_cav_key = CAV.cav_key(concepts, bottleneck, cav_hparams['model_type'],
                            cav_hparams['alpha'])
    target_class_for_compute_tcav_score = target_class

    cav_concept = concepts[0]

    i_up = self.compute_tcav_score(
        mymodel, target_class_for_compute_tcav_score, cav_concept,
        cav_instance, acts[target_class][cav_instance.bottleneck],
        activation_generator.get_examples_for_concept(target_class),
        run_parallel=run_parallel)
    val_directional_dirs = self.get_directional_dir(
        mymodel, target_class_for_compute_tcav_score, cav_concept,
        cav_instance, acts[target_class][cav_instance.bottleneck],
        activation_generator.get_examples_for_concept(target_class))
    result = {
        'cav_key':
            a_cav_key,
        'cav_concept':
            cav_concept,
        'negative_concept':
            concepts[1],
        'target_class':
            target_class,
        'cav_accuracies':
            cav_instance.accuracies,
        'i_up':
            i_up,
        'val_directional_dirs_abs_mean':
            np.mean(np.abs(val_directional_dirs)),
        'val_directional_dirs_mean':
            np.mean(val_directional_dirs),
        'val_directional_dirs_std':
            np.std(val_directional_dirs),
        'val_directional_dirs':
            val_directional_dirs,
        'note':
            'alpha_%s ' % (alpha),
        'alpha':
            alpha,
        'bottleneck':
            bottleneck
    }
    del acts
    return result