class_docstr: The layer that calculates the dot product of its two inputs: 
  each object in the first input is multiplied by the object
  with the same index in the second input.
  
  :param input_layer: The input layers to be connected. 
      The integer in each tuple specifies the number of the output.
      If not set, the first output will be used.
  :type input_layer: list of object, tuple(object, int)
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  The layer has two inputs, which must contain blobs of the same dimensions.
  
  .. rubric:: Layer outputs:
  
  (1) a blob with the dot product.
      The dimensions:
  
      - **BatchLength**, **BatchWidth**, **ListSize** equal to the inputs' dimensions
      - **Height**, **Width**, **Depth**, **Channels** equal to 1
class_docstr_tok: ["The","layer","that","calculates","the","dot","product","of","its","two","inputs",":","each","object","in","the","first","input","is","multiplied","by","the","object","with","the","same","index","in","the","second","input",".",":","param","input_layer",":","The","input","layers","to","be","connected",".","The","integer","in","each","tuple","specifies","the","number","of","the","output",".","If","not","set",",","the","first","output","will","be","used",".",":","type","input_layer",":","list","of","object",",","tuple","(","object",",","int",")",":","param","name",":","The","layer","name",".",":","type","name",":","str",",","default=None","..","rubric",":",":","Layer","inputs",":","The","layer","has","two","inputs",",","which","must","contain","blobs","of","the","same","dimensions",".","..","rubric",":",":","Layer","outputs",":","(","1",")","a","blob","with","the","dot","product",".","The","dimensions",":","-","*","*","BatchLength","*","*",",","*","*","BatchWidth","*","*",",","*","*","ListSize","*","*","equal","to","the","inputs","'","dimensions","-","*","*","Height","*","*",",","*","*","Width","*","*",",","*","*","Depth","*","*",",","*","*","Channels","*","*","equal","to","1"]
code: def __init__(self, input_layers, name=None):
      if type(input_layers) is PythonWrapper.DotProduct:
          super().__init__(input_layers)
          return
  
      layers, outputs = check_input_layers(input_layers, 2)
  
      internal = PythonWrapper.DotProduct(
          str(name),
          layers[0],
          layers[1],
          int(outputs[0]),
          int(outputs[1]),
      )
      super().__init__(internal)
  
imports: import neoml.PythonWrapper
  from .Dnn import Layer
  from neoml.Utils import check_input_layers
label_desc: Use image node_id 1 to create a new DotProduct object from inherited base classes: Layer with example: obj = DotProduct(input_layers, name)