Evaluator 组件上的 TFX IndexError

我正在尝试为我的模型制作一个评估器。到目前为止,所有其他组件都很好,但是当我尝试此配置时:


eval_config = tfma.EvalConfig(

    model_specs=[

        tfma.ModelSpec(label_key='Category'),

    ],

    metrics_specs=tfma.metrics.default_multi_class_classification_specs(),

    slicing_specs=[

        tfma.SlicingSpec(),

        tfma.SlicingSpec(feature_keys=['Category'])

    ])

使这个评估者:


model_resolver = ResolverNode(

      instance_name='latest_blessed_model_resolver',

      resolver_class=latest_blessed_model_resolver.LatestBlessedModelResolver,

      model=Channel(type=Model),

      model_blessing=Channel(type=ModelBlessing))

context.run(model_resolver)


evaluator = Evaluator(

    examples=example_gen.outputs['examples'],

    model=trainer.outputs['model'],

    baseline_model=model_resolver.outputs['model'],

    eval_config=eval_config)

context.run(evaluator)


慕尼黑8549860
浏览 99回答 1
1回答

青春有我

我让它工作了。我的问题是,在数据集中,标签(文档类别)是字符串格式(例如:“sport”、“business”……)。因此,为了将其编码为整数,我使用了 Transform 组件对其进行预处理。但是,在构建评估器组件时,我传递了 ExampleGen 组件,其中没有对数据进行任何处理。所以评估者试图从 ExampleGen 转换字符串以匹配模型的整数输出。所以,为了解决这个问题,我只是这样做了:model_resolver = ResolverNode(      instance_name='latest_blessed_model_resolver',      resolver_class=latest_blessed_model_resolver.LatestBlessedModelResolver,      model=Channel(type=Model),      model_blessing=Channel(type=ModelBlessing))context.run(model_resolver)evaluator = Evaluator(    examples=transform.outputs['transformed_examples'],    model=trainer.outputs['model'],    baseline_model=model_resolver.outputs['model'],    eval_config=eval_config)context.run(evaluator)我使用了转换组件中的示例。当然,我还更改了配置中的标签键,以匹配转换组件的标签名称。我不知道是否有一种“更清洁”的方法来执行此操作(或者如果我做错了,请纠正我!)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python