提交 f2275a4d 编写于 作者: Z zhenghuanhuan

rename noise_update to decay_policy and update version 0.6.0

上级 16b4bcbc
...@@ -116,7 +116,7 @@ if __name__ == "__main__": ...@@ -116,7 +116,7 @@ if __name__ == "__main__":
noise_mech = NoiseMechanismsFactory().create(cfg.noise_mechanisms, noise_mech = NoiseMechanismsFactory().create(cfg.noise_mechanisms,
norm_bound=cfg.norm_bound, norm_bound=cfg.norm_bound,
initial_noise_multiplier=cfg.initial_noise_multiplier, initial_noise_multiplier=cfg.initial_noise_multiplier,
noise_update=None) decay_policy=None)
# Create a factory class of clip mechanisms, this method is to adaptive clip # Create a factory class of clip mechanisms, this method is to adaptive clip
# gradients while training, decay_policy support 'Linear' and 'Geometric', # gradients while training, decay_policy support 'Linear' and 'Geometric',
# learning_rate is the learning rate to update clip_norm, # learning_rate is the learning rate to update clip_norm,
......
...@@ -115,7 +115,7 @@ if __name__ == "__main__": ...@@ -115,7 +115,7 @@ if __name__ == "__main__":
noise_mech = NoiseMechanismsFactory().create(cfg.noise_mechanisms, noise_mech = NoiseMechanismsFactory().create(cfg.noise_mechanisms,
norm_bound=cfg.norm_bound, norm_bound=cfg.norm_bound,
initial_noise_multiplier=cfg.initial_noise_multiplier, initial_noise_multiplier=cfg.initial_noise_multiplier,
noise_update='Exp') decay_policy='Exp')
net_opt = nn.Momentum(params=network.trainable_params(), net_opt = nn.Momentum(params=network.trainable_params(),
learning_rate=cfg.lr, momentum=cfg.momentum) learning_rate=cfg.lr, momentum=cfg.momentum)
......
...@@ -111,7 +111,7 @@ if __name__ == "__main__": ...@@ -111,7 +111,7 @@ if __name__ == "__main__":
dp_opt.set_mechanisms(cfg.noise_mechanisms, dp_opt.set_mechanisms(cfg.noise_mechanisms,
norm_bound=cfg.norm_bound, norm_bound=cfg.norm_bound,
initial_noise_multiplier=cfg.initial_noise_multiplier, initial_noise_multiplier=cfg.initial_noise_multiplier,
noise_update='Exp') decay_policy='Exp')
# Create a factory class of clip mechanisms, this method is to adaptive clip # Create a factory class of clip mechanisms, this method is to adaptive clip
# gradients while training, decay_policy support 'Linear' and 'Geometric', # gradients while training, decay_policy support 'Linear' and 'Geometric',
# learning_rate is the learning rate to update clip_norm, # learning_rate is the learning rate to update clip_norm,
......
...@@ -83,7 +83,7 @@ class NoiseMechanismsFactory: ...@@ -83,7 +83,7 @@ class NoiseMechanismsFactory:
@staticmethod @staticmethod
def create(mech_name='Gaussian', norm_bound=0.5, initial_noise_multiplier=1.5, seed=0, noise_decay_rate=6e-6, def create(mech_name='Gaussian', norm_bound=0.5, initial_noise_multiplier=1.5, seed=0, noise_decay_rate=6e-6,
noise_update=None): decay_policy=None):
""" """
Args: Args:
mech_name(str): Noise generated strategy, could be 'Gaussian' or mech_name(str): Noise generated strategy, could be 'Gaussian' or
...@@ -97,7 +97,7 @@ class NoiseMechanismsFactory: ...@@ -97,7 +97,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. given seed.
noise_decay_rate(float): Hyper parameter for controlling the noise decay. noise_decay_rate(float): Hyper parameter for controlling the noise decay.
noise_update(str): Mechanisms parameters update policy. Default: None, no decay_policy(str): Mechanisms parameters update policy. Default: None, no
parameters need update. parameters need update.
Raises: Raises:
...@@ -141,13 +141,13 @@ class NoiseMechanismsFactory: ...@@ -141,13 +141,13 @@ class NoiseMechanismsFactory:
return NoiseGaussianRandom(norm_bound=norm_bound, return NoiseGaussianRandom(norm_bound=norm_bound,
initial_noise_multiplier=initial_noise_multiplier, initial_noise_multiplier=initial_noise_multiplier,
seed=seed, seed=seed,
noise_update=noise_update) decay_policy=decay_policy)
if mech_name == 'AdaGaussian': if mech_name == 'AdaGaussian':
return NoiseAdaGaussianRandom(norm_bound=norm_bound, return NoiseAdaGaussianRandom(norm_bound=norm_bound,
initial_noise_multiplier=initial_noise_multiplier, initial_noise_multiplier=initial_noise_multiplier,
seed=seed, seed=seed,
noise_decay_rate=noise_decay_rate, noise_decay_rate=noise_decay_rate,
noise_update=noise_update) decay_policy=decay_policy)
raise NameError("The {} is not implement, please choose " raise NameError("The {} is not implement, please choose "
"['Gaussian', 'AdaGaussian']".format(mech_name)) "['Gaussian', 'AdaGaussian']".format(mech_name))
...@@ -176,7 +176,7 @@ class NoiseGaussianRandom(_Mechanisms): ...@@ -176,7 +176,7 @@ class NoiseGaussianRandom(_Mechanisms):
seed(int): Original random seed, if seed=0 random normal will use secure seed(int): Original random seed, if seed=0 random normal will use secure
random number. IF seed!=0 random normal will generate values using random number. IF seed!=0 random normal will generate values using
given seed. given seed.
noise_update(str): Mechanisms parameters update policy. Default: None. decay_policy(str): Mechanisms parameters update policy. Default: None.
Returns: Returns:
Tensor, generated noise with shape like given gradients. Tensor, generated noise with shape like given gradients.
...@@ -186,13 +186,13 @@ class NoiseGaussianRandom(_Mechanisms): ...@@ -186,13 +186,13 @@ class NoiseGaussianRandom(_Mechanisms):
>>> norm_bound = 0.5 >>> norm_bound = 0.5
>>> initial_noise_multiplier = 1.5 >>> initial_noise_multiplier = 1.5
>>> seed = 0 >>> seed = 0
>>> noise_update = None >>> decay_policy = None
>>> net = NoiseGaussianRandom(norm_bound, initial_noise_multiplier, seed, noise_update) >>> net = NoiseGaussianRandom(norm_bound, initial_noise_multiplier, seed, decay_policy)
>>> res = net(gradients) >>> res = net(gradients)
>>> print(res) >>> print(res)
""" """
def __init__(self, norm_bound, initial_noise_multiplier, seed, noise_update=None): def __init__(self, norm_bound, initial_noise_multiplier, seed, decay_policy=None):
super(NoiseGaussianRandom, self).__init__() super(NoiseGaussianRandom, self).__init__()
self._norm_bound = check_value_positive('norm_bound', norm_bound) self._norm_bound = check_value_positive('norm_bound', norm_bound)
self._norm_bound = Tensor(norm_bound, mstype.float32) self._norm_bound = Tensor(norm_bound, mstype.float32)
...@@ -200,9 +200,9 @@ class NoiseGaussianRandom(_Mechanisms): ...@@ -200,9 +200,9 @@ class NoiseGaussianRandom(_Mechanisms):
initial_noise_multiplier) initial_noise_multiplier)
self._initial_noise_multiplier = Tensor(initial_noise_multiplier, mstype.float32) self._initial_noise_multiplier = Tensor(initial_noise_multiplier, mstype.float32)
self._mean = Tensor(0, mstype.float32) self._mean = Tensor(0, mstype.float32)
if noise_update is not None: if decay_policy is not None:
raise ValueError('noise_update must be None in GaussianRandom class, but got {}.'.format(noise_update)) raise ValueError('decay_policy must be None in GaussianRandom class, but got {}.'.format(decay_policy))
self._noise_update = noise_update self._decay_policy = decay_policy
self._seed = seed self._seed = seed
def construct(self, gradients): def construct(self, gradients):
...@@ -237,7 +237,7 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom): ...@@ -237,7 +237,7 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom):
random number. IF seed!=0 random normal will generate values using random number. IF seed!=0 random normal will generate values using
given seed. given seed.
noise_decay_rate(float): Hyper parameter for controlling the noise decay. noise_decay_rate(float): Hyper parameter for controlling the noise decay.
noise_update(str): Noise decay strategy include 'Step', 'Time', 'Exp'. decay_policy(str): Noise decay strategy include 'Step', 'Time', 'Exp'.
Returns: Returns:
Tensor, generated noise with shape like given gradients. Tensor, generated noise with shape like given gradients.
...@@ -248,13 +248,13 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom): ...@@ -248,13 +248,13 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom):
>>> initial_noise_multiplier = 1.5 >>> initial_noise_multiplier = 1.5
>>> seed = 0 >>> seed = 0
>>> noise_decay_rate = 6e-4 >>> noise_decay_rate = 6e-4
>>> noise_update = "Time" >>> decay_policy = "Time"
>>> net = NoiseAdaGaussianRandom(norm_bound, initial_noise_multiplier, seed, noise_decay_rate, noise_update) >>> net = NoiseAdaGaussianRandom(norm_bound, initial_noise_multiplier, seed, noise_decay_rate, decay_policy)
>>> res = net(gradients) >>> res = net(gradients)
>>> print(res) >>> print(res)
""" """
def __init__(self, norm_bound, initial_noise_multiplier, seed, noise_decay_rate, noise_update): def __init__(self, norm_bound, initial_noise_multiplier, seed, noise_decay_rate, decay_policy):
super(NoiseAdaGaussianRandom, self).__init__(norm_bound=norm_bound, super(NoiseAdaGaussianRandom, self).__init__(norm_bound=norm_bound,
initial_noise_multiplier=initial_noise_multiplier, initial_noise_multiplier=initial_noise_multiplier,
seed=seed) seed=seed)
...@@ -263,10 +263,10 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom): ...@@ -263,10 +263,10 @@ class NoiseAdaGaussianRandom(NoiseGaussianRandom):
noise_decay_rate = check_param_type('noise_decay_rate', noise_decay_rate, float) noise_decay_rate = check_param_type('noise_decay_rate', noise_decay_rate, float)
check_param_in_range('noise_decay_rate', noise_decay_rate, 0.0, 1.0) check_param_in_range('noise_decay_rate', noise_decay_rate, 0.0, 1.0)
self._noise_decay_rate = Tensor(noise_decay_rate, mstype.float32) self._noise_decay_rate = Tensor(noise_decay_rate, mstype.float32)
if noise_update not in ['Time', 'Step', 'Exp']: if decay_policy not in ['Time', 'Step', 'Exp']:
raise NameError("The noise_update must be in ['Time', 'Step', 'Exp'], but " raise NameError("The decay_policy must be in ['Time', 'Step', 'Exp'], but "
"get {}".format(noise_update)) "get {}".format(decay_policy))
self._noise_update = noise_update self._decay_policy = decay_policy
class _MechanismsParamsUpdater(Cell): class _MechanismsParamsUpdater(Cell):
...@@ -274,7 +274,7 @@ class _MechanismsParamsUpdater(Cell): ...@@ -274,7 +274,7 @@ class _MechanismsParamsUpdater(Cell):
Update mechanisms parameters, the parameters will refresh in train period. Update mechanisms parameters, the parameters will refresh in train period.
Args: Args:
noise_update(str): Pass in by the mechanisms class, mechanisms parameters decay_policy(str): Pass in by the mechanisms class, mechanisms parameters
update policy. update policy.
decay_rate(Tensor): Pass in by the mechanisms class, hyper parameter for decay_rate(Tensor): Pass in by the mechanisms class, hyper parameter for
controlling the decay size. controlling the decay size.
...@@ -286,9 +286,9 @@ class _MechanismsParamsUpdater(Cell): ...@@ -286,9 +286,9 @@ class _MechanismsParamsUpdater(Cell):
Returns: Returns:
Tuple, next params value. Tuple, next params value.
""" """
def __init__(self, noise_update, decay_rate, cur_noise_multiplier, init_noise_multiplier): def __init__(self, decay_policy, decay_rate, cur_noise_multiplier, init_noise_multiplier):
super(_MechanismsParamsUpdater, self).__init__() super(_MechanismsParamsUpdater, self).__init__()
self._noise_update = noise_update self._decay_policy = decay_policy
self._decay_rate = decay_rate self._decay_rate = decay_rate
self._cur_noise_multiplier = cur_noise_multiplier self._cur_noise_multiplier = cur_noise_multiplier
self._init_noise_multiplier = init_noise_multiplier self._init_noise_multiplier = init_noise_multiplier
...@@ -308,12 +308,12 @@ class _MechanismsParamsUpdater(Cell): ...@@ -308,12 +308,12 @@ class _MechanismsParamsUpdater(Cell):
Returns: Returns:
Tuple, next step parameters value. Tuple, next step parameters value.
""" """
if self._noise_update == 'Time': if self._decay_policy == 'Time':
temp = self._div(self._init_noise_multiplier, self._cur_noise_multiplier) temp = self._div(self._init_noise_multiplier, self._cur_noise_multiplier)
temp = self._add(temp, self._decay_rate) temp = self._add(temp, self._decay_rate)
next_noise_multiplier = self._assign(self._cur_noise_multiplier, next_noise_multiplier = self._assign(self._cur_noise_multiplier,
self._div(self._init_noise_multiplier, temp)) self._div(self._init_noise_multiplier, temp))
elif self._noise_update == 'Step': elif self._decay_policy == 'Step':
temp = self._sub(self._one, self._decay_rate) temp = self._sub(self._one, self._decay_rate)
next_noise_multiplier = self._assign(self._cur_noise_multiplier, next_noise_multiplier = self._assign(self._cur_noise_multiplier,
self._mul(temp, self._cur_noise_multiplier)) self._mul(temp, self._cur_noise_multiplier))
......
...@@ -127,8 +127,8 @@ class DPOptimizerClassFactory: ...@@ -127,8 +127,8 @@ class DPOptimizerClassFactory:
self._micro_float = Tensor(micro_batches, mstype.float32) self._micro_float = Tensor(micro_batches, mstype.float32)
self._mech_param_updater = None self._mech_param_updater = None
if self._mech is not None and self._mech._noise_update is not None: if self._mech is not None and self._mech._decay_policy is not None:
self._mech_param_updater = _MechanismsParamsUpdater(noise_update=self._mech._noise_update, self._mech_param_updater = _MechanismsParamsUpdater(decay_policy=self._mech._decay_policy,
decay_rate=self._mech._noise_decay_rate, decay_rate=self._mech._noise_decay_rate,
cur_noise_multiplier= cur_noise_multiplier=
self._mech._noise_multiplier, self._mech._noise_multiplier,
......
...@@ -432,9 +432,9 @@ class _TrainOneStepWithLossScaleCell(Cell): ...@@ -432,9 +432,9 @@ class _TrainOneStepWithLossScaleCell(Cell):
self._cast = P.Cast() self._cast = P.Cast()
self._noise_mech_param_updater = None self._noise_mech_param_updater = None
if self._noise_mech is not None and self._noise_mech._noise_update is not None: if self._noise_mech is not None and self._noise_mech._decay_policy is not None:
self._noise_mech_param_updater = _MechanismsParamsUpdater( self._noise_mech_param_updater = _MechanismsParamsUpdater(
noise_update=self._noise_mech._noise_update, decay_policy=self._noise_mech._decay_policy,
decay_rate=self._noise_mech._noise_decay_rate, decay_rate=self._noise_mech._noise_decay_rate,
cur_noise_multiplier= cur_noise_multiplier=
self._noise_mech._noise_multiplier, self._noise_mech._noise_multiplier,
...@@ -636,9 +636,9 @@ class _TrainOneStepCell(Cell): ...@@ -636,9 +636,9 @@ class _TrainOneStepCell(Cell):
self._micro_float = Tensor(micro_batches, mstype.float32) self._micro_float = Tensor(micro_batches, mstype.float32)
self._noise_mech_param_updater = None self._noise_mech_param_updater = None
if self._noise_mech is not None and self._noise_mech._noise_update is not None: if self._noise_mech is not None and self._noise_mech._decay_policy is not None:
self._noise_mech_param_updater = _MechanismsParamsUpdater( self._noise_mech_param_updater = _MechanismsParamsUpdater(
noise_update=self._noise_mech._noise_update, decay_policy=self._noise_mech._decay_policy,
decay_rate=self._noise_mech._noise_decay_rate, decay_rate=self._noise_mech._noise_decay_rate,
cur_noise_multiplier= cur_noise_multiplier=
self._noise_mech._noise_multiplier, self._noise_mech._noise_multiplier,
......
...@@ -18,7 +18,7 @@ from setuptools import setup ...@@ -18,7 +18,7 @@ from setuptools import setup
from setuptools.command.egg_info import egg_info from setuptools.command.egg_info import egg_info
from setuptools.command.build_py import build_py from setuptools.command.build_py import build_py
version = '0.5.0' version = '0.6.0'
cur_dir = os.path.dirname(os.path.realpath(__file__)) cur_dir = os.path.dirname(os.path.realpath(__file__))
pkg_dir = os.path.join(cur_dir, 'build') pkg_dir = os.path.join(cur_dir, 'build')
......
...@@ -35,7 +35,7 @@ def test_graph_factory(): ...@@ -35,7 +35,7 @@ def test_graph_factory():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
alpha = 0.5 alpha = 0.5
noise_update = 'Step' decay_policy = 'Step'
factory = NoiseMechanismsFactory() factory = NoiseMechanismsFactory()
noise_mech = factory.create('Gaussian', noise_mech = factory.create('Gaussian',
norm_bound, norm_bound,
...@@ -46,7 +46,7 @@ def test_graph_factory(): ...@@ -46,7 +46,7 @@ def test_graph_factory():
norm_bound, norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update=noise_update) decay_policy=decay_policy)
ada_noise = ada_noise_mech(grad) ada_noise = ada_noise_mech(grad)
print('ada noise: ', ada_noise) print('ada noise: ', ada_noise)
...@@ -61,7 +61,7 @@ def test_pynative_factory(): ...@@ -61,7 +61,7 @@ def test_pynative_factory():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
alpha = 0.5 alpha = 0.5
noise_update = 'Step' decay_policy = 'Step'
factory = NoiseMechanismsFactory() factory = NoiseMechanismsFactory()
noise_mech = factory.create('Gaussian', noise_mech = factory.create('Gaussian',
norm_bound, norm_bound,
...@@ -72,7 +72,7 @@ def test_pynative_factory(): ...@@ -72,7 +72,7 @@ def test_pynative_factory():
norm_bound, norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update=noise_update) decay_policy=decay_policy)
ada_noise = ada_noise_mech(grad) ada_noise = ada_noise_mech(grad)
print('ada noise: ', ada_noise) print('ada noise: ', ada_noise)
...@@ -87,7 +87,7 @@ def test_pynative_gaussian(): ...@@ -87,7 +87,7 @@ def test_pynative_gaussian():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
alpha = 0.5 alpha = 0.5
noise_update = 'Step' decay_policy = 'Step'
factory = NoiseMechanismsFactory() factory = NoiseMechanismsFactory()
noise_mech = factory.create('Gaussian', noise_mech = factory.create('Gaussian',
norm_bound, norm_bound,
...@@ -98,7 +98,7 @@ def test_pynative_gaussian(): ...@@ -98,7 +98,7 @@ def test_pynative_gaussian():
norm_bound, norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update=noise_update) decay_policy=decay_policy)
ada_noise = ada_noise_mech(grad) ada_noise = ada_noise_mech(grad)
print('ada noise: ', ada_noise) print('ada noise: ', ada_noise)
...@@ -113,12 +113,12 @@ def test_graph_ada_gaussian(): ...@@ -113,12 +113,12 @@ def test_graph_ada_gaussian():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
noise_decay_rate = 0.5 noise_decay_rate = 0.5
noise_update = 'Step' decay_policy = 'Step'
ada_noise_mech = NoiseAdaGaussianRandom(norm_bound, ada_noise_mech = NoiseAdaGaussianRandom(norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
seed=0, seed=0,
noise_decay_rate=noise_decay_rate, noise_decay_rate=noise_decay_rate,
noise_update=noise_update) decay_policy=decay_policy)
res = ada_noise_mech(grad) res = ada_noise_mech(grad)
print(res) print(res)
...@@ -133,12 +133,12 @@ def test_pynative_ada_gaussian(): ...@@ -133,12 +133,12 @@ def test_pynative_ada_gaussian():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
noise_decay_rate = 0.5 noise_decay_rate = 0.5
noise_update = 'Step' decay_policy = 'Step'
ada_noise_mech = NoiseAdaGaussianRandom(norm_bound, ada_noise_mech = NoiseAdaGaussianRandom(norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
seed=0, seed=0,
noise_decay_rate=noise_decay_rate, noise_decay_rate=noise_decay_rate,
noise_update=noise_update) decay_policy=decay_policy)
res = ada_noise_mech(grad) res = ada_noise_mech(grad)
print(res) print(res)
...@@ -153,13 +153,13 @@ def test_graph_exponential(): ...@@ -153,13 +153,13 @@ def test_graph_exponential():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
alpha = 0.5 alpha = 0.5
noise_update = 'Exp' decay_policy = 'Exp'
factory = NoiseMechanismsFactory() factory = NoiseMechanismsFactory()
ada_noise = factory.create('AdaGaussian', ada_noise = factory.create('AdaGaussian',
norm_bound, norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update=noise_update) decay_policy=decay_policy)
ada_noise = ada_noise(grad) ada_noise = ada_noise(grad)
print('ada noise: ', ada_noise) print('ada noise: ', ada_noise)
...@@ -174,13 +174,13 @@ def test_pynative_exponential(): ...@@ -174,13 +174,13 @@ def test_pynative_exponential():
norm_bound = 1.0 norm_bound = 1.0
initial_noise_multiplier = 0.1 initial_noise_multiplier = 0.1
alpha = 0.5 alpha = 0.5
noise_update = 'Exp' decay_policy = 'Exp'
factory = NoiseMechanismsFactory() factory = NoiseMechanismsFactory()
ada_noise = factory.create('AdaGaussian', ada_noise = factory.create('AdaGaussian',
norm_bound, norm_bound,
initial_noise_multiplier, initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update=noise_update) decay_policy=decay_policy)
ada_noise = ada_noise(grad) ada_noise = ada_noise(grad)
print('ada noise: ', ada_noise) print('ada noise: ', ada_noise)
......
...@@ -136,7 +136,7 @@ def test_dp_model_with_graph_mode_ada_gaussian(): ...@@ -136,7 +136,7 @@ def test_dp_model_with_graph_mode_ada_gaussian():
norm_bound=norm_bound, norm_bound=norm_bound,
initial_noise_multiplier=initial_noise_multiplier, initial_noise_multiplier=initial_noise_multiplier,
noise_decay_rate=alpha, noise_decay_rate=alpha,
noise_update='Exp') decay_policy='Exp')
clip_mech = None clip_mech = None
net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.1, net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.1,
momentum=0.9) momentum=0.9)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册