首页 > 解决方案 > 如何将 sklearn.metrics.classification_report 与生成器一起使用?

问题描述

我想使用 sklearn.metrics.classification_report 但我不能直接使用它,因为我的测试数据是由 python 生成器提供的。python生成器如下所示。

让我给你上下文。我正在做语音识别,我正在使用生成器来处理内存问题。基本上,生成器会加载一些批次,其中包含一些对应于一些频谱图的 numpy 数组。每个批次都有一个唯一的 id,因此获取输入和输出批次非常简单。

我正在使用 tensorflow.keras 来构建我的神经网络。因此,直到现在,我可以使用 Model.fit(因为给定版本,不推荐使用 fit_generator)来训练我的模型,并使用 Model.evaluate_generator 来估计具有常见数值指标的泛化误差(由 keras.backend 制作的宏 f1 分数, 准确性 ...)。但是,我不知道如何在编译模型时使用 keras.backend 对分类报告和它在我的指标列表中进行编码。

有人有想法吗?任何帮助,将不胜感激 !随时询问更多详细信息并评论我的代码。我很想阅读您的技巧、方法等。

非常感谢 !

class Pipeline:

    # some code ...

    def generator(self, set_name):
        # set_name : 'training', 'validation', or 'testing'
        input_paths = glob.glob('{}/{}/batch_input__*.npz'.format(self.path, set_name))
        random.shuffle(input_paths)
        num_inputs = len(input_paths)
        while True:
            for i in range(num_inputs):
                input_filepath = input_paths[i]
                batch_id = input_filepath.split('__')[-1].split('.')[0]
                output_filepath = '{}/{}/batch_output__{}.npz'.format(self.path, set_name, batch_id)
                features = np.load(input_filepath)['arr_0']
                labels = np.load(output_filepath)['arr_0']
                yield features, labels

标签: python-3.xscikit-learngeneratorspeech-recognitiontf.keras

解决方案


推荐阅读