tf_privacy.DPKerasAdamOptimizer
bookmark_borderbookmark
Stay organized with collections
Save and categorize content based on your preferences.
Returns a DPOptimizerClass
cls
using the GaussianSumQuery
.
tf_privacy.DPKerasAdamOptimizer(
l2_norm_clip: float,
noise_multiplier: float,
num_microbatches: Optional[int] = None,
gradient_accumulation_steps: int = 1,
*args,
**kwargs
)
This function is a thin wrapper around
make_keras_optimizer_class.<locals>.DPOptimizerClass
which can be used to
apply a GaussianSumQuery
to any DPOptimizerClass
.
When combined with stochastic gradient descent, this creates the canonical
DP-SGD algorithm of "Deep Learning with Differential Privacy"
(see https://arxiv.org/abs/1607.00133).
When instantiating this optimizer, you need to supply several
DP-related arguments followed by the standard arguments for
{short_base_class}
.
As an example, see the below or the documentation of the DPOptimizerClass.
# Create optimizer.
opt = {dp_keras_class}(l2_norm_clip=1.0, noise_multiplier=0.5,
num_microbatches=1, <standard arguments>)
Args |
l2_norm_clip
|
Clipping norm (max L2 norm of per microbatch gradients).
|
noise_multiplier
|
Ratio of the standard deviation to the clipping norm.
|
num_microbatches
|
Number of microbatches into which each minibatch is
split. Default is None which means that number of microbatches is
equal to batch size (i.e. each microbatch contains exactly one example).
If gradient_accumulation_steps is greater than 1 and
num_microbatches is not None then the effective number of
microbatches is equal to num_microbatches *
gradient_accumulation_steps .
|
gradient_accumulation_steps
|
If greater than 1 then optimizer will be
accumulating gradients for this number of optimizer steps before
applying them to update model weights. If this argument is set to 1 then
updates will be applied on each optimizer step.
|
*args
|
These will be passed on to the base class __init__ method.
|
**kwargs
|
These will be passed on to the base class __init__ method.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-02-16 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-02-16 UTC."],[],[]]