When I ran the EMNIST experiment after generation of emnist dataset I got:
(pt) wangshu@ubuntu:~/projects/FedGen$ CUDA_VISIBLE_DEVICES=3 python main.py --dataset EMnist-alpha0.1-ratio0.1 --algorithm FedGen --batch_size 32 --local_epochs 20 --num_users 10 --lamda 1 --model cnn --learning_rate 0.01 --personal_learning_rate 0.01 --num_glob_iters 200 --times 3
================================================================================
Summary of training process:
Algorithm: FedGen
Batch size: 32
Learing rate : 0.01
Ensemble learing rate : 0.0001
Average Moving : 1.0
Subset of users : 10
Number of global rounds : 200
Number of local rounds : 20
Dataset : EMnist-alpha0.1-ratio0.1
Local Model : cnn
Device : cpu
================================================================================
[ Start training iteration 0 ]
Creating model for emnist
Network configs: [6, 16, 'F']
Dataset emnist
/home/wangshu/miniconda3/envs/pt/lib/python3.9/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.
warnings.warn(warning.format(ret))
Build layer 57 X 256
Build last layer 256 X 32
ensemble_lr: 0.0001
ensemble_batch_size: 128
unique_labels: 25
latent_layer_idx: -1
label embedding 0
ensemeble learning rate: 0.0001
ensemeble alpha = 1, beta = 0, eta = 1
generator alpha = 10, beta = 1
Number of Train/Test samples: 12480 8120
Data from 20 users in total.
Finished creating FedAvg server.
-------------Round number: 0 -------------
Traceback (most recent call last):
File "/home/wangshu/projects/FedGen/main.py", line 85, in <module>
main(args)
File "/home/wangshu/projects/FedGen/main.py", line 42, in main
run_job(args, i)
File "/home/wangshu/projects/FedGen/main.py", line 37, in run_job
server.train(args)
File "/home/wangshu/projects/FedGen/FLAlgorithms/servers/serverpFedGen.py", line 78, in train
self.evaluate()
File "/home/wangshu/projects/FedGen/FLAlgorithms/servers/serverbase.py", line 226, in evaluate
test_ids, test_samples, test_accs, test_losses = self.test(selected=selected)
File "/home/wangshu/projects/FedGen/FLAlgorithms/servers/serverbase.py", line 165, in test
ct, c_loss, ns = c.test()
File "/home/wangshu/projects/FedGen/FLAlgorithms/users/userbase.py", line 137, in test
loss += self.loss(output, y)
File "/home/wangshu/miniconda3/envs/pt/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wangshu/miniconda3/envs/pt/lib/python3.9/site-packages/torch/nn/modules/loss.py", line 216, in forward
return F.nll_loss(input, target, weight=self.weight, ignore_index=self.ignore_index, reduction=self.reduction)
File "/home/wangshu/miniconda3/envs/pt/lib/python3.9/site-packages/torch/nn/functional.py", line 2388, in nll_loss
ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
IndexError: Target 25 is out of bounds.
(pt) wangshu@ubuntu:~/projects/FedGen$
When I ran the EMNIST experiment after generation of emnist dataset I got:
Pythorch 1.8.1, python 3.9.4.