class_docstr: The layer that concatenates several blobs into one
  along the Channels dimension.
  
  :param input_layers: 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_layers: list of object, tuple(object, int)
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  The layer accepts an arbitrary number of inputs.
  The dimensions:
  
  - **BatchLength**, **BatchWidth**, **ListSize**, 
    **Height**, **Width**, **Depth** equal for all inputs
  - **Channels** dimension may vary
  
  .. rubric:: Layer outputs:
  
  (1) a blob with the result of concatenation.
      The dimensions:
  
  - **BatchLength**, **BatchWidth**, **ListSize**, 
    **Height**, **Width**, **Depth** equal to the inputs' dimensions
  - **Channels** equal to the sum of all inputs' **Channels**
class_docstr_tok: ["The","layer","that","concatenates","several","blobs","into","one","along","the","Channels","dimension",".",":","param","input_layers",":","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_layers",":","list","of","object",",","tuple","(","object",",","int",")",":","param","name",":","The","layer","name",".",":","type","name",":","str",",","default=None","..","rubric",":",":","Layer","inputs",":","The","layer","accepts","an","arbitrary","number","of","inputs",".","The","dimensions",":","-","*","*","BatchLength","*","*",",","*","*","BatchWidth","*","*",",","*","*","ListSize","*","*",",","*","*","Height","*","*",",","*","*","Width","*","*",",","*","*","Depth","*","*","equal","for","all","inputs","-","*","*","Channels","*","*","dimension","may","vary","..","rubric",":",":","Layer","outputs",":","(","1",")","a","blob","with","the","result","of","concatenation",".","The","dimensions",":","-","*","*","BatchLength","*","*",",","*","*","BatchWidth","*","*",",","*","*","ListSize","*","*",",","*","*","Height","*","*",",","*","*","Width","*","*",",","*","*","Depth","*","*","equal","to","the","inputs","'","dimensions","-","*","*","Channels","*","*","equal","to","the","sum","of","all","inputs","'","*","*","Channels","*","*"]
code: def __init__(self, input_layers, name=None):
      if type(input_layers) is PythonWrapper.ConcatChannels:
          super().__init__(input_layers)
          return
  
      if len(input_layers) > 32:
          raise ValueError(
              "The `ConcatChannels` can merge no more than 32 blobs."
          )
  
      layers, outputs = check_input_layers(input_layers, 0)
  
      internal = PythonWrapper.ConcatChannels(
          str(name), layers, outputs
      )
      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 ConcatChannels object from inherited base classes: Layer with example: obj = ConcatChannels(input_layers, name)