class_docstr: Scatter ``updates`` to ``data`` at locations ``indices``.
  
  The ``indices`` is a K-dim tensor, where ``indices[i_0,...,i_{K-2}]`` defines a
  slice of ``data``, ``K = rank(indices)``, and ``data[indices[i_0, ..., i_{K-2}]]``
  has rank ``rank(data) - indices.shape[-1]``.
  
  * Example: ``mode == update``: The ``output`` is set to ``data`` initially, and
    the op updates ``output`` as follows:
  
  .. math::
     output[indices[i_0, ..., i_{K-2}]]= updates[indices[i_0, ..., i_{K-2}]]
  
  * Example: ``mode == add``. The update rule is:
  
  .. math::
     output[indices[i_0, ..., i_{K-2}]] += updates[indices[i_0, ..., i_{K-2}]]
  
  Parameters
  ----------
  data: tensor<\*D, T> (Required)
  indices: tensor<\*K, i32> (Required)
  updates: tensor<\*K, T> (Required)
      * Must be the shape as ``K[:-1]+data.shape[K[-1]:]``.
  mode: const string (Optional)
      * Default to ``add``.
      * Can be the following modes: ``update``, ``add``, ``sub``, ``mul``,
        ``div``, ``max``, ``min``.
  
  Returns
  -------
  tensor<\*D, T>
      * A tensor with the same shape and type as ``data``.
  
  Attributes
  ----------
  T: fp16, fp32, i32
class_docstr_tok: ["Scatter","``","updates","``","to","``","data","``","at","locations","``","indices","``",".","The","``","indices","``","is","a","K-dim","tensor",",","where","``","indices","[","i_0",",","...",",","i_","{","K-2","}","]","``","defines","a","slice","of","``","data","``",",","``","K","=","rank","(","indices",")","``",",","and","``","data","[","indices","[","i_0",",","...",",","i_","{","K-2","}","]","]","``","has","rank","``","rank","(","data",")","-","indices.shape","[","-1","]","``",".","*","Example",":","``","mode","==","update","``",":","The","``","output","``","is","set","to","``","data","``","initially",",","and","the","op","updates","``","output","``","as","follows",":","..","math",":",":","output","[","indices","[","i_0",",","...",",","i_","{","K-2","}","]","]","=","updates","[","indices","[","i_0",",","...",",","i_","{","K-2","}","]","]","*","Example",":","``","mode","==","add","``",".","The","update","rule","is",":","..","math",":",":","output","[","indices","[","i_0",",","...",",","i_","{","K-2","}","]","]","+=","updates","[","indices","[","i_0",",","...",",","i_","{","K-2","}","]","]","Parameters","--","--","--","--","--","data",":","tensor","<","\\","*","D",",","T",">","(","Required",")","indices",":","tensor","<","\\","*","K",",","i32",">","(","Required",")","updates",":","tensor","<","\\","*","K",",","T",">","(","Required",")","*","Must","be","the","shape","as","``","K","[",":","-1","]","+data.shape","[","K","[","-1","]",":","]","``",".","mode",":","const","string","(","Optional",")","*","Default","to","``","add","``",".","*","Can","be","the","following","modes",":","``","update","``",",","``","add","``",",","``","sub","``",",","``","mul","``",",","``","div","``",",","``","max","``",",","``","min","``",".","Returns","--","--","--","-","tensor","<","\\","*","D",",","T",">","*","A","tensor","with","the","same","shape","and","type","as","``","data","``",".","Attributes","--","--","--","--","--","T",":","fp16",",","fp32",",","i32"]
code: def default_inputs(self):
      return DefaultInputs(
          mode="add",
      )
  
imports: import numpy
  from coremltools.converters.mil.mil import Operation, types
  from coremltools.converters.mil.mil.input_type import DefaultInputs, InputSpec, TensorInputType
  from coremltools.converters.mil.mil.operation import SYMBOL, VALUE, precondition
  from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
  from coremltools.converters.mil.mil.ops.defs._utils import compute_gather
  from coremltools.converters.mil.mil.types.symbolic import is_compatible_symbolic_vector
label_desc: Use image node_id 1 for calling the scatter_nd obj's underlying member method code with example usage: obj.default_inputs() and returns: DefaultInputs