Browse Source

add a construct of clip_mech and noise_mech, when noise_mech is adaptive clip_mech must be none

tags/v0.6.0-beta
ZhidanLiu 5 years ago
parent
commit
7d47844566
2 changed files with 8 additions and 6 deletions
  1. +7
    -1
      mindarmour/diff_privacy/train/model.py
  2. +1
    -5
      tests/ut/python/diff_privacy/test_model_train.py

+ 7
- 1
mindarmour/diff_privacy/train/model.py View File

@@ -143,7 +143,13 @@ class DPModel(Model):
LOGGER.error(TAG, msg)
raise ValueError(msg)
self._noise_mech = noise_mech
if clip_mech is not None:
if noise_mech is not None:
if 'Ada' in noise_mech.__class__.__name__ and clip_mech is not None:
msg = 'When noise_mech is Adaptive, clip_mech must be None.'
LOGGER.error(TAG, msg)
raise ValueError(msg)

if clip_mech is None or isinstance(clip_mech, Cell):
self._clip_mech = clip_mech
super(DPModel, self).__init__(**kwargs)



+ 1
- 5
tests/ut/python/diff_privacy/test_model_train.py View File

@@ -134,11 +134,7 @@ def test_dp_model_with_graph_mode_ada_gaussian():
noise_mech = NoiseMechanismsFactory().create('AdaGaussian',
norm_bound=norm_clip,
initial_noise_multiplier=initial_noise_multiplier)
clip_mech = ClipMechanismsFactory().create('Gaussian',
decay_policy='Linear',
learning_rate=0.01,
target_unclipped_quantile=0.9,
fraction_stddev=0.01)
clip_mech = None
net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.1,
momentum=0.9)
model = DPModel(micro_batches=2,


Loading…
Cancel
Save