intel / intel-xai-tools

Explainable AI Tooling (XAI). XAI is used to discover and explain a model's prediction in a way that is interpretable to the user. Relevant information in the dataset, feature-set, and model's algorithms are exposed.
Apache License 2.0
37 stars 6 forks source link

TypeError: ModelAnalyzer requres eval_config argument of type tfma.EvalConfig or str. #2

Open PasalaJanardhan opened 8 months ago

PasalaJanardhan commented 8 months ago

Team, Getting the error "ModelAnalyzer requres eval_config argument of type tfma.EvalConfig or str." at the function check_eval_config from model_card_gen/analyze/analyzer.py. And I found the root cause at the function get_analyzers from the model_card_gen/analyze/analyzer_factory.py file. For the same, I had done the code update(replaced DFAnalyzer(dataset, eval_config) with DFAnalyzer(eval_config, dataset)) and was able to generate the model card. Please find the highlighted code below and get me an update upon reviewing. Thank You. **elif all(isinstance(ds, pd.DataFrame) for ds in datasets.values()):

code update

    # existing code
    # analyzers = (DFAnalyzer(dataset, eval_config) 
    #              for dataset in datasets.values()) 
    # updated code
    analyzers = (DFAnalyzer(eval_config, dataset) 
                 for dataset in datasets.values())**
def get_analyzers(model_path: Optional[Text] = '',
                eval_config: Union[tfma.EvalConfig, Text] = None,
                datasets:  DatasetType = None):
    """Helper function to to get colleciton of analyzer objects
    Args:
        model_path (str) : path to model
        eval_config (tfma.EvalConfig or str): representing proto file path
        data (str or pd.DataFrame): string ot tfrecord or raw dataframe containing
            prediction values and  ground truth

    Raises:
        TypeError: when eval_config is not of type tfma.EvalConfig or str
        TypeError: when data argument is not of type pd.DataFrame or str

    Returns:
        tfma.EvalResults()

    Example:
        >>> from model_card_gen.analyze import get_analyzers
        >>> get_analyzers(model_path='compas/model',
                         data='compas/eval.tfrecord',
                         eval_config='compas/eval_config.proto')
    """
    if all(isinstance(ds, TensorflowDataset) for ds in datasets.values()):
        analyzers = (TFAnalyzer(model_path, dataset, eval_config)
                     for dataset in datasets.values())
    elif all(isinstance(ds, pd.DataFrame) for ds in datasets.values()):
        # code update
        # existing code
        # analyzers = (DFAnalyzer(dataset, eval_config) 
        #              for dataset in datasets.values()) 
        # updated code
        analyzers = (DFAnalyzer(eval_config, dataset) 
                     for dataset in datasets.values())