You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Using Differential privacy code , hypermeter (eps) value change do not effect the result.
initialize clients numbers
client_num = 10
load data
d = load_mnist(client_num)
lr = 0.01
fl_param = {
'output_size': 10, # number of units in output layer
'client_num': client_num, # number of clients
'C': 1,
'model': MLP, # model
'data': d, # dataset
'q': 0.1, # sampling rate
'tot_T': 100, # number of aggregation times
'E': 5, # number of local iterations
'batch_size': 64,
'lr': 0.01, # learning rate
'clip': 1, # clipping norm
'eps': 0.5, # privacy budget for each global communication
# 'eps': 50, # privacy budget for each global communication
'delta': 1e-5, # approximate differential privacy: (epsilon, delta)-DP
'device': device
}
import warnings
warnings.filterwarnings("ignore")
start_time = time.time()
fl_entity = FLServer(fl_param).to(device)
print('Currently performing FL with DP ---------------------------:')
print(datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p"))
print(f'CPUs: {torch.get_num_threads()}, GPUs: {torch.cuda.device_count()} on {socket.gethostname()}.')
acc = []
loss = []
for t in range(fl_param['tot_T']):
fl_entity.set_lr(lr)
''' Update the local model according to weights update '''
loss_, acc_ = fl_entity.global_update()
loss += [loss_]
acc += [acc_]
print("Round = {:d}, loss={:.4f}, acc = {:.4f}".format(t+1, loss[-1], acc[-1]))
print(f'Total time: {time.time() - start_time :.2f} s.')
The text was updated successfully, but these errors were encountered:
Can you please share more information, like the test accuracy you obtain at various epsilon levels?
Yes, first I execute code with epsilon value 0.5 with different noise added. In the next experiment, I did with the same parameter but change the epsilon value to 10, but no change after that I increase the value to 50 but the same results and epsilon in each round. No accuracy increases or decreases with the change of epsilon.
I am experiencing the same issue, partly along with this reported issue. I am using neural network for tabular data.
I have experimented with different epsilon values, but the results remain relatively consistent. Interestingly, when using TensorFlow Privacy with the same model architecture, DP-optimizer, and hyperparameters, this problem does not arise.
🐛 Bug
Using Differential privacy code , hypermeter (eps) value change do not effect the result.
initialize clients numbers
client_num = 10
load data
d = load_mnist(client_num)
lr = 0.01
fl_param = {
'output_size': 10, # number of units in output layer
'client_num': client_num, # number of clients
'C': 1,
'model': MLP, # model
'data': d, # dataset
'q': 0.1, # sampling rate
'tot_T': 100, # number of aggregation times
'E': 5, # number of local iterations
'batch_size': 64,
'lr': 0.01, # learning rate
'clip': 1, # clipping norm
'eps': 0.5, # privacy budget for each global communication
}
import warnings
warnings.filterwarnings("ignore")
start_time = time.time()
fl_entity = FLServer(fl_param).to(device)
print('Currently performing FL with DP ---------------------------:')
print(datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p"))
print(f'CPUs: {torch.get_num_threads()}, GPUs: {torch.cuda.device_count()} on {socket.gethostname()}.')
acc = []
loss = []
for t in range(fl_param['tot_T']):
fl_entity.set_lr(lr)
''' Update the local model according to weights update '''
loss_, acc_ = fl_entity.global_update()
loss += [loss_]
acc += [acc_]
print("Round = {:d}, loss={:.4f}, acc = {:.4f}".format(t+1, loss[-1], acc[-1]))
print(f'Total time: {time.time() - start_time :.2f} s.')
The text was updated successfully, but these errors were encountered: