options.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Python version: 3.6
  4. import argparse
  5. def args_parser():
  6. #parser = argparse.ArgumentParser()
  7. parser = argparse.ArgumentParser(description="Arguments for Neural Net")
  8. # federated arguments (Notation for the arguments followed from paper)
  9. parser.add_argument('--epochs', type=int, default=5,
  10. help="number of rounds of training")
  11. parser.add_argument('--num_users', type=int, default=100,
  12. help="number of users: K")
  13. parser.add_argument('--frac', type=float, default=0.1,
  14. help='the fraction of clients: C')
  15. parser.add_argument('--local_ep', type=int, default=1,
  16. help="the number of local epochs: E")
  17. parser.add_argument('--local_bs', type=int, default=10,
  18. help="local batch size: B")
  19. parser.add_argument('--lr', type=float, default=0.01,
  20. help="learning rate")
  21. parser.add_argument('--momentum', type=float, default=0.5,
  22. help="SGD momentum (default: 0.5)")
  23. # model arguments
  24. parser.add_argument('--model', type=str, default='mlp', help="model name")
  25. parser.add_argument('--kernel_num', type=int, default=9,
  26. help="number of each kind of kernel")
  27. parser.add_argument('--kernel_sizes', type=str, default='3,4,5',
  28. help="comma-separated kernel size to \
  29. use for convolution")
  30. parser.add_argument('--num_channels', type=int, default=1, help="number \
  31. of channels of imgs")
  32. parser.add_argument('--norm', type=str, default='batch_norm',
  33. help="batch_norm, layer_norm, or None")
  34. parser.add_argument('--num_filters', type=int, default=32,
  35. help="number of filters for conv nets -- 32 for \
  36. mini-imagenet, 64 for omiglot.")
  37. parser.add_argument('--max_pool', type=str, default='True',
  38. help="Whether use max pooling rather than \
  39. strided convolutions")
  40. # other arguments
  41. parser.add_argument('--dataset', type=str, default='mnist', help="name \
  42. of datasetS")
  43. parser.add_argument('--num_classes', type=int, default=10, help="number \
  44. of classes")
  45. parser.add_argument('--gpu', type=int, default=0, help="To use cuda, set \
  46. to 1. Default set to use CPU.")
  47. parser.add_argument('--optimizer', type=str, default='sgd', help="type \
  48. of optimizer")
  49. parser.add_argument('--iid', type=int, default=1,
  50. help="Default set to IID. Set to 0 for non-IID.")
  51. parser.add_argument('--unequal', type=int, default=0,
  52. help="whether to use unequal data splits for \
  53. non-i.i.d setting (use 0 for equal splits)")
  54. parser.add_argument('--stopping_rounds', type=int, default=10,
  55. help="rounds of early stopping")
  56. parser.add_argument('--verbose', type=int, default=1, help="verbose")
  57. parser.add_argument('--seed', type=int, default=1, help="random seed")
  58. # Add arguments
  59. parser.add_argument('--num_clusters', type=int, default=2, help="the number of clusters")
  60. parser.add_argument('--test_acc', type=int, default=95, help="target test accuracy")
  61. parser.add_argument('--Cepochs', type=int, default=5,help="number of rounds of training in each cluster")
  62. parser.add_argument('--mlpdim', type=int, default=200,help="MLP model hidden dimension")
  63. parser.add_argument('--gpu_id', default='cuda:0', help="To set GPU device \
  64. ID if cuda is availlable")
  65. parser.add_argument('--model_dtype', default='torch.float32', help="Dtype \
  66. for model")
  67. parser.add_argument('--loss_dtype', default='torch.float32', help="Dtype \
  68. for loss or criterion")
  69. args = parser.parse_args()
  70. return args