有人设法在自己的 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'
。看来我无论如何也无法让它开心。
我尝试寻找包中的其他功能,但没有成功。
有人成功实现了吗?
代码中有一个小拼写错误。正确调用Dice模型的方法如下:
exp = dice_ml.Dice(d, m)
当您编辑最后一行时,其余代码应该可以正常工作。