我想使用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