HelenGuohx / logbert

log anomaly detection via BERT
MIT License
240 stars 102 forks source link

请教问题 #27

Closed heyd7fc closed 2 years ago

heyd7fc commented 2 years ago

你好,

在对测试数据进行预测的时候,我如何才能直接输出预测的日志? image

感谢

HelenGuohx commented 2 years ago

Hi,

请查看下面的代码。 异常判定的规则是如果被mask的token的实际值没有被模型预测到(前n个candidates),那么就认定为异常 具体是这个代码if token not in torch.argsort(-masked_output[i])[:self.num_candidates]:

    def detect_logkey_anomaly(self, masked_output, masked_label):
        num_undetected_tokens = 0
        output_maskes = []
        for i, token in enumerate(masked_label):
            # output_maskes.append(torch.argsort(-masked_output[i])[:30].cpu().numpy()) # extract top 30 candidates for mask labels

            if token not in torch.argsort(-masked_output[i])[:self.num_candidates]:
                num_undetected_tokens += 1

        return num_undetected_tokens, [output_maskes, masked_label.cpu().numpy()]
heyd7fc commented 2 years ago

你好, 抱歉这么久回复你,如果我想输出原始的异常日志应该怎么做呢?现在的输出是mask掉的日志键,可能不太直观。