Browse Source

Rectify the api description of Diff-privacy

tags/v1.3.0
jin-xiulang 4 years ago
parent
commit
d9a36e8d1b
3 changed files with 14 additions and 12 deletions
  1. +11
    -11
      mindarmour/privacy/diff_privacy/mechanisms/mechanisms.py
  2. +1
    -1
      mindarmour/privacy/diff_privacy/monitor/monitor.py
  3. +2
    -0
      mindarmour/privacy/diff_privacy/train/model.py

+ 11
- 11
mindarmour/privacy/diff_privacy/mechanisms/mechanisms.py View File

@@ -66,9 +66,9 @@ class ClipMechanismsFactory:
>>> decay_policy = 'Linear' >>> decay_policy = 'Linear'
>>> beta = Tensor(0.5, mstype.float32) >>> beta = Tensor(0.5, mstype.float32)
>>> norm_bound = Tensor(1.0, mstype.float32) >>> norm_bound = Tensor(1.0, mstype.float32)
>>> beta_stddev = 0.1
>>> learning_rate = 0.1
>>> target_unclipped_quantile = 0.3
>>> beta_stddev = 0.01
>>> learning_rate = 0.001
>>> target_unclipped_quantile = 0.9
>>> clip_mechanism = ClipMechanismsFactory() >>> clip_mechanism = ClipMechanismsFactory()
>>> ada_clip = clip_mechanism.create('Gaussian', >>> ada_clip = clip_mechanism.create('Gaussian',
>>> decay_policy=decay_policy, >>> decay_policy=decay_policy,
@@ -107,7 +107,7 @@ class NoiseMechanismsFactory:
random number. IF seed!=0 random normal will generate values using random number. IF seed!=0 random normal will generate values using
given seed. Default: 0. given seed. Default: 0.
noise_decay_rate(float): Hyper parameter for controlling the noise decay. Default: 6e-6. noise_decay_rate(float): Hyper parameter for controlling the noise decay. Default: 6e-6.
decay_policy(str): Mechanisms parameters update policy. Default: None, no
decay_policy(str): Mechanisms parameters update policy. If decay_policy is None, no
parameters need update. Default: None. parameters need update. Default: None.


Raises: Raises:
@@ -118,7 +118,7 @@ class NoiseMechanismsFactory:


Examples: Examples:
>>> norm_bound = 1.0 >>> norm_bound = 1.0
>>> initial_noise_multiplier = 0.01
>>> initial_noise_multiplier = 1.0
>>> network = LeNet5() >>> network = LeNet5()
>>> batch_size = 32 >>> batch_size = 32
>>> batches = 128 >>> batches = 128
@@ -129,7 +129,7 @@ class NoiseMechanismsFactory:
>>> initial_noise_multiplier=initial_noise_multiplier) >>> initial_noise_multiplier=initial_noise_multiplier)
>>> clip_mech = ClipMechanismsFactory().create('Gaussian', >>> clip_mech = ClipMechanismsFactory().create('Gaussian',
>>> decay_policy='Linear', >>> decay_policy='Linear',
>>> learning_rate=0.01,
>>> learning_rate=0.001,
>>> target_unclipped_quantile=0.9, >>> target_unclipped_quantile=0.9,
>>> fraction_stddev=0.01) >>> fraction_stddev=0.01)
>>> net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.1, >>> net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.1,
@@ -193,8 +193,8 @@ class NoiseGaussianRandom(_Mechanisms):


Examples: Examples:
>>> gradients = Tensor([0.2, 0.9], mstype.float32) >>> gradients = Tensor([0.2, 0.9], mstype.float32)
>>> norm_bound = 0.5
>>> initial_noise_multiplier = 1.5
>>> norm_bound = 0.1
>>> initial_noise_multiplier = 1.0
>>> seed = 0 >>> seed = 0
>>> decay_policy = None >>> decay_policy = None
>>> net = NoiseGaussianRandom(norm_bound, initial_noise_multiplier, seed, decay_policy) >>> net = NoiseGaussianRandom(norm_bound, initial_noise_multiplier, seed, decay_policy)
@@ -261,9 +261,9 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom):
Examples: Examples:
>>> gradients = Tensor([0.2, 0.9], mstype.float32) >>> gradients = Tensor([0.2, 0.9], mstype.float32)
>>> norm_bound = 1.0 >>> norm_bound = 1.0
>>> initial_noise_multiplier = 1.5
>>> initial_noise_multiplier = 1.0
>>> seed = 0 >>> seed = 0
>>> noise_decay_rate = 6e-4
>>> noise_decay_rate = 6e-6
>>> decay_policy = "Exp" >>> decay_policy = "Exp"
>>> net = NoiseAdaGaussianRandom(norm_bound, initial_noise_multiplier, seed, noise_decay_rate, decay_policy) >>> net = NoiseAdaGaussianRandom(norm_bound, initial_noise_multiplier, seed, noise_decay_rate, decay_policy)
>>> res = net(gradients) >>> res = net(gradients)
@@ -365,7 +365,7 @@ class AdaClippingWithGaussianRandom(Cell):


Args: Args:
decay_policy(str): Decay policy of adaptive clipping, decay_policy must decay_policy(str): Decay policy of adaptive clipping, decay_policy must
be in ['Linear', 'Geometric']. Default: Linear.
be in ['Linear', 'Geometric']. Default: 'Linear'.
learning_rate(float): Learning rate of update norm clip. Default: 0.001. learning_rate(float): Learning rate of update norm clip. Default: 0.001.
target_unclipped_quantile(float): Target quantile of norm clip. Default: 0.9. target_unclipped_quantile(float): Target quantile of norm clip. Default: 0.9.
fraction_stddev(float): The stddev of Gaussian normal which used in fraction_stddev(float): The stddev of Gaussian normal which used in


+ 1
- 1
mindarmour/privacy/diff_privacy/monitor/monitor.py View File

@@ -45,7 +45,7 @@ class PrivacyMonitorFactory:
privacy theory; If policy is 'zcdp', the monitor will compute privacy theory; If policy is 'zcdp', the monitor will compute
the privacy budget of DP training based on zero-concentrated the privacy budget of DP training based on zero-concentrated
differential privacy theory. It's worth noting that 'zcdp' differential privacy theory. It's worth noting that 'zcdp'
is not suitable for subsampling nosie mechanism.
is not suitable for subsampling noise mechanism.
args (Union[int, float, numpy.ndarray, list, str]): Parameters args (Union[int, float, numpy.ndarray, list, str]): Parameters
used for creating a privacy monitor. used for creating a privacy monitor.
kwargs (Union[int, float, numpy.ndarray, list, str]): Keyword kwargs (Union[int, float, numpy.ndarray, list, str]): Keyword


+ 2
- 0
mindarmour/privacy/diff_privacy/train/model.py View File

@@ -579,6 +579,8 @@ class _TrainOneStepCell(Cell):
original data. Default: 1.0. original data. Default: 1.0.
noise_mech (Mechanisms): The object can generate the different type noise_mech (Mechanisms): The object can generate the different type
of noise. Default: None. of noise. Default: None.
clip_mech (Mechanisms): The object is used to update the adaptive clip.
Default: None.


Inputs: Inputs:
- **data** (Tensor) - Tensor of shape :math:`(N, \ldots)`. - **data** (Tensor) - Tensor of shape :math:`(N, \ldots)`.


Loading…
Cancel
Save