mindspore.train.OcclusionSensitivity
- class mindspore.train.OcclusionSensitivity(pad_val=0.0, margin=2, n_batch=128, b_box=None)[源代码]
用于计算神经网络对给定图像的遮挡灵敏度(Occlusion Sensitivity),表示了图像的哪些部分对神经网络的分类决策最重要。
遮挡敏感度是指神经网络对图像的类别预测概率如何随着图像被遮挡部分的变化而变化。遮挡敏感度值越高,意味着模型对类别预测的概率值下降越大,说明遮挡区域在神经网络的分类决策过程中越重要。
- 参数:
pad_val (float) - 图像中被遮挡部分的填充值。默认值:0.0。
margin (Union[int, Sequence]) - 在要遮挡的像素点周围设置的长方体/立方体。默认值:2。
n_batch (int) - 一个batch中样本的数量。默认值:128。
b_box (Sequence) - 执行分析的目标区域的边界框(Bounding box),其大小与输出图像的大小相匹配。如果没有设置此入参,Bounding box将与输入图像的大小相同;如果设置了此入参,输入图像将被裁剪为此大小,此设置值应形如:
[min1, max1, min2, max2,...]
,分别对应除batch size外各维度的最大最小值。默认值:None。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import nn, Tensor >>> from mindspore.train import OcclusionSensitivity >>> >>> class DenseNet(nn.Cell): ... def __init__(self): ... super(DenseNet, self).__init__() ... w = np.array([[0.1, 0.8, 0.1, 0.1],[1, 1, 1, 1]]).astype(np.float32) ... b = np.array([0.3, 0.6]).astype(np.float32) ... self.dense = nn.Dense(4, 2, weight_init=Tensor(w), bias_init=Tensor(b)) ... ... def construct(self, x): ... return self.dense(x) >>> >>> model = DenseNet() >>> test_data = np.array([[0.1, 0.2, 0.3, 0.4]]).astype(np.float32) >>> label = np.array(1).astype(np.int32) >>> metric = OcclusionSensitivity() >>> metric.clear() >>> metric.update(model, test_data, label) >>> score = metric.eval() >>> print(score) [0.29999995 0.6 1. 0.9]