class_docstr: Layer defines network's input.
  
  Parameters
  ----------
  shape : int or tuple
      Shape of the input features per sample. Batch
      dimension has to be excluded from the shape.
  
  {BaseLayer.name}
  
  Methods
  -------
  {BaseLayer.Methods}
  
  Attributes
  ----------
  {BaseLayer.Attributes}
  
  Examples
  --------
  Feedforward Neural Network (FNN)
  
  In the example, input layer defines network that expects
  2D inputs (matrices). In other words, input to the network
  should be set of samples combined into matrix where each sample
  has 10 dimensional vector associated with it.
  
  >>> from neupy.layers import *
  >>> network = Input(10) >> Relu(5) >> Softmax(3)
  
  Convolutional Neural Network (CNN)
  
  In the example, input layer specified that we expect multiple
  28x28 image as an input and each image should have single
  channel (images with no color).
  
  >>> from neupy.layers import *
  >>> network = join(
  ...     Input((28, 28, 1)),
  ...     Convolution((3, 3, 16)) >> Relu(),
  ...     Convolution((3, 3, 16)) >> Relu(),
  ...     Reshape()
  ...     Softmax(10),
  ... )
class_docstr_tok: ["Layer","defines","network","'s","input",".","Parameters","--","--","--","--","--","shape",":","int","or","tuple","Shape","of","the","input","features","per","sample",".","Batch","dimension","has","to","be","excluded","from","the","shape",".","{","BaseLayer.name","}","Methods","--","--","--","-","{","BaseLayer.Methods","}","Attributes","--","--","--","--","--","{","BaseLayer.Attributes","}","Examples","--","--","--","--","Feedforward","Neural","Network","(","FNN",")","In","the","example",",","input","layer","defines","network","that","expects","2D","inputs","(","matrices",")",".","In","other","words",",","input","to","the","network","should","be","set","of","samples","combined","into","matrix","where","each","sample","has","10","dimensional","vector","associated","with","it",".",">",">",">","from","neupy.layers","import","*",">",">",">","network","=","Input","(","10",")",">",">","Relu","(","5",")",">",">","Softmax","(","3",")","Convolutional","Neural","Network","(","CNN",")","In","the","example",",","input","layer","specified","that","we","expect","multiple","28x28","image","as","an","input","and","each","image","should","have","single","channel","(","images","with","no","color",")",".",">",">",">","from","neupy.layers","import","*",">",">",">","network","=","join","(","...","Input","(","(","28",",","28",",","1",")",")",",","...","Convolution","(","(","3",",","3",",","16",")",")",">",">","Relu","(",")",",","...","Convolution","(","(","3",",","3",",","16",")",")",">",">","Relu","(",")",",","...","Reshape","(",")","...","Softmax","(","10",")",",","...",")"]
code: def input_shape(self):
      batch_shape = tf.TensorShape([None])
      return batch_shape.concatenate(self.shape)
  
imports: import re
  import copy
  import types
  import string
  import inspect
  from functools import partial
  from collections import OrderedDict, defaultdict
  import six
  import numpy
  import tensorflow
  from neupy.exceptions import LayerConnectionError
  from neupy.core.properties import Property, TypedListProperty
  from neupy.utils import as_tuple, tf_utils
  from neupy.layers.graph import BaseGraph, make_one_if_possible
label_desc: Use image node_id 2 for calling the Input obj's underlying member method code with example usage: obj.input_shape() and returns: batch_shape