이것은 부분적으로 분산 된 데이터에서 심층 네트워크에 대한 의사 소통 효율적인 학습 논문의 재생산입니다.
MNIST 및 CIFAR10 (IID 및 비 IID)에 대한 실험만이 멀리 생산됩니다.
참고 : 병렬 컴퓨팅의 구현 없이는 스크립트가 느려집니다.
파이썬> = 3.6
Pytorch> = 0.4
MLP 및 CNN 모델은 다음과 같이 제작됩니다.
Python main_nn.py
MLP 및 CNN을 통한 연합 학습은 다음과 같이 제작됩니다.
Python main_fed.py
Options.py의 인수를 참조하십시오.
예를 들어:
python main_fed.py -dataset mnist --iid -num_channels 1 - -model cnn -epochs 50 -gpu 0
모든 클라이언트 모델에 대한 평균을위한 --all_clients
NB : CIFAR-10의 경우 num_channels 3이어야합니다.
결과는 매개 변수 c = 0.1, b = 10, e = 5와 함께 표 1 및 표 2에 나와 있습니다.
표 1. 학습 속도 0.01을 가진 10 개의 에포크 훈련 결과
| 모델 | acc. IID의 | acc. 비 IID의 |
|---|---|---|
| Fedavg-MLP | 94.57% | 70.44% |
| Fedavg-CNN | 96.59% | 77.72% |
표 2. 학습 속도 0.01로 50 개의 에포크 훈련 결과
| 모델 | acc. IID의 | acc. 비 IID의 |
|---|---|---|
| Fedavg-MLP | 97.21% | 93.03% |
| Fedavg-CNN | 98.60% | 93.81% |
감사의 말은 Youkaichao에게 제공합니다.
McMahan, Brendan, Eider Moore, Daniel Ramage, Seth Hampson 및 Blaise Aguera y Arcas. 분산 된 데이터의 심층 네트워크에 대한 커뮤니케이션 효율적인 학습. 인공 지능 및 통계 (AISTATS), 2017.
Shaoxiong ji. (2018 년 3 월 30 일). 연합 학습의 Pytorch 구현. 제노도. http://doi.org/10.5281/zenodo.4321561