message: 1. Add sensible defaults for ncf_main.py.
  2. Add flag to allow switch between Adam and lazy Adam in TPUEmbedding.
  3. Make README more user-friendly.
diff: @@ -158,6 +158,8 @@ class AdamParameters(_OptimizationParameters):
  beta1=0.9,
  beta2=0.999,
  epsilon=1e-08,
  + lazy_adam=True,
  + sum_inside_sqrt=True,
  use_gradient_accumulation=False,
  pipeline_execution_with_tensor_core=True):
  """Optimization parameters for Adam.
  @@ -169,6 +171,10 @@ class AdamParameters(_OptimizationParameters):
  beta2: A float value.
  The exponential decay rate for the 2nd moment estimates.
  epsilon: A small constant for numerical stability.
  + lazy_adam: Use lazy Adam instead of Adam. Lazy Adam trains faster.
  + Please see `optimization_parameters.proto` for details.
  + sum_inside_sqrt: This improves training speed. Please see
  + `optimization_parameters.proto` for details.
  use_gradient_accumulation: setting this to `True` makes embedding
  gradients calculation more accurate but slower. Please see
  `optimization_parameters.proto` for details.
  @@ -184,6 +190,8 @@ class AdamParameters(_OptimizationParameters):
  self.beta1 = beta1
  self.beta2 = beta2
  self.epsilon = epsilon
  + self.lazy_adam = lazy_adam
  + self.sum_inside_sqrt = sum_inside_sqrt
  class StochasticGradientDescentParameters(_OptimizationParameters):
  @@ -884,6 +892,10 @@ class _AdamHandler(_OptimizerHandler):
  self._optimization_parameters.beta2)
  table_descriptor.optimization_parameters.adam.epsilon = (
  self._optimization_parameters.epsilon)
  + table_descriptor.optimization_parameters.adam.use_non_lazy_adam = (
  + not self._optimization_parameters.lazy_adam)
  + table_descriptor.optimization_parameters.adam.use_sum_inside_sqrt = (
  + self._optimization_parameters.sum_inside_sqrt)
  def create_variables_and_ops(self, table, variable_name, num_hosts,
  table_config, table_variables,
  