Open jsxie9 opened 3 weeks ago
1.将Step 1中的测试数据改为了训练数据 2.修改了aush.py中的重构损失计算
g_loss_rec = mse_loss(
fake_profiles * selects_mask * ZR_mask,
# selects_mask * input_template * ZR_mask, #之前的代码,一直为0
selects_mask * real_profiles * ZR_mask, #修改过的
)
3.使用如下readme提供的如下配置运行代码
from recad import dataset, model, workflow
dataset_name = "ml1m"
config = {
"victim_data": dataset.from_config("implicit", dataset_name, need_graph=True),
"attack_data": dataset.from_config("explicit", dataset_name).partial_sample(
user_ratio=0.2
),
"victim": model.from_config("victim", "lightgcn"),
"attacker": model.from_config("attacker", "aush"),
"rec_epoch": 20,
}
workflow_inst = workflow.from_config("no defense", **config)
workflow_inst.execute()
得到的结果和论文相差很大,如图
但是,如果不进行1和2步骤的修改,攻击是无效的
感谢提供这么好的代码库,有几个疑问 1.提供的示例运行代码
dataset_name = "ml1m" config = { "victim_data": dataset.from_config("implicit", dataset_name, need_graph=True), "attack_data": dataset.from_config("explicit", dataset_name).partial_sample( user_ratio=0.2 ), }
这里的victim_data使用隐式(implicit)加载方式,而攻击数据attack_data用的显式(explicit),两者是不一致的,如何理解?