这个代码有DP,fedavg,fednfl,fedRPF,barre算法,fedRPF,barre是我加的,你可以帮我看下逻辑有没有问题。
python main.py --nfl "warm_up_rounds=100" --dataset cifar10 --use_rp False
python main.py --use_rp True --nfl "eps=0.1,privacy=rpf,distort=rpf," --out_dir "./runs_RPF" --global_epoch 100 --noise_type 2python main.py --use_rp True --nfl "eps=1,privacy=rpf,distort=rpf" --out_dir "./runs_RPF&noise2" --global_epoch 100 --noise_type 2 --rp_op_nums 5 --rp_ratio 0.3 --rp_eps 1代码中的fedRPF0.sh是跑仅随机投影滤波器的实验,fedRPF1是跑随机投影滤波器+随机噪声的实验,fedRPF2是随机投影滤波器+优化噪声的实验。
python main.py --nfl "eps=0.1,privacy=barre,distort=barre,barre_noise_type=4" --out_dir "./runs_barre2" --local_epoch 1 --global_epoch 100 --use_rp False代码中的fedbarre1.sh是跑多分类器(3个分类器)+随机噪声的实验,fedbarre4_2.sh是跑多分类器(5个分类器)+优化噪声的实验,fedbarre4_3.sh是跑多分类器(9个分类器)+随机噪声的实验的实验。fedbarre4_2.sh是跑多分类器(3个分类器)+优化噪声的实验
python main.py --nfl "eps=0.3,privacy=dp,distort=dp-laplace,clipDP=1.0" --out_dir "./runs_dp" --local_epoch 1 --global_epoch 100 --use_rp FalseDP.sh是DP算法的代码
python main.py --nfl "eps=0.1, privacy=nfl, distort=nfl" --out_dir "./runs_nfl" --local_epoch 1 --global_epoch 100 --use_rp Falsefednfl.sh是fednfl的代码。
python main.py --nfl "warm_up_rounds=100,dlg_attack_epochs=0-1-2,dlg_iter=1600,dlg_lr=0.01, " --dataset cifar10 --use_rp False --out_dir "./runs_dlg" main.py的fed_init函数是用来初始化数据集和客户端的,然后根据不同的数据集选择不不同的模型,模型在这里更换。inversefed/nn/models.py里面有不同的模型,比如LeNetZhuMNIST,ResNet56等,注意MNIST和Cifar10的数据集不通用。