DiCE 对自己的 PyTorch 模型的解释

问题描述 投票:0回答:1

有人设法在自己的 PyTorch 模型上使用 DiCE 吗?示例用法仅展示如何使用预训练的用法来完成此操作,而我想定义自己的用法。
我找到了一个 Tensorflow 的示例用法,并宽松地遵循它,希望它能起作用,但它总是给我 AttributeErrors。这是我的代码:

class ClassificationModel(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(ClassificationModel, self).__init__()
        self.fc1 = nn.Linear(input_dim, 64)
        self.fc2 = nn.Linear(64, 32)
        self.fc3 = nn.Linear(32, output_dim)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x

model = ClassificationModel(input_dim, output_dim)
# training

d = dice_ml.Data(dataframe=df, continuous_features=list(df.columns)[:-1], outcome_name='species') # iris dataset
m = dice_ml.Model(model, backend = "PYT")
exp = dice_ml.Dice(d, model)

最后一行出现以下错误:

AttributeError: 'ClassificationModel' object has no attribute 'backend'
。 我尝试将其添加到模型中,希望绕过它(
self.backend = "PYT"
),但随后错误变成了
[...] has no attribute 'load_model'
。看来我无论如何也无法让它开心。

我尝试寻找包中的其他功能,但没有成功。
有人成功实现了吗?

python pytorch dice xai
1个回答
0
投票

代码中有一个小拼写错误。正确调用Dice模型的方法如下:

exp = dice_ml.Dice(d, m)

当您编辑最后一行时,其余代码应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.