code: def map_inner_product(cls, node):
      # TODO: Axis
      assert node.parameters.axis == 1
      # TODO: Unbiased
      shape = TensorShape()
      dim = shape.dim.add()
      dim.size = -1
      dim = shape.dim.add()
      dim.size = 1
      for i in node.output_shape[1:]:
          dim.size *= i
      kwargs = {
          "use_bias": node.parameters.bias_term,
          "units": node.parameters.num_output,
          "_output_shapes": [shape],
      }
  
      # check if need the Flatten layer
      parent, _ = node.get_only_parent()
      ret = []
  
      # if parent.output_shape.height > 1 or parent.output_shape.width > 1:
      ret.append(cls._add_flatten_layer(parent))
      ret.append(Node.create("FullyConnected", **kwargs))
      return ret
  
imports: from __future__ import absolute_import
  from __future__ import division
  import numpy
  from mmdnn.conversion.caffe.errors import ConversionError
  from mmdnn.conversion.caffe.common_graph import Node
  from mmdnn.conversion.caffe.network import DEFAULT_PADDING
  from mmdnn.conversion.caffe.utils import get_lower_case
  from mmdnn.conversion.common.IR.graph_pb2 import TensorShape
label_desc: Use image node_id 14 for calling the NodeMapper obj's underlying member method code with example usage: obj.map_inner_product(cls, node) and returns: ret