class_docstr: Associates parameters loaded from a .caffemodel file with their corresponding nodes.
class_docstr_tok: ["Associates","parameters","loaded","from","a",".caffemodel","file","with","their","corresponding","nodes","."]
code: def adjust_parameters(self, node, data):
      if not self.did_use_pb:
          return data
      # When using the protobuf-backend, each parameter initially has four dimensions.
      # In certain cases (like FC layers), we want to eliminate the singleton dimensions.
      # This implementation takes care of the common cases. However, it does leave the
      # potential for future issues.
      # The Caffe-backend does not suffer from this problem.
      data = list(data)
      squeeze_indices = [1]  # Squeeze biases.
      if node.kind == NodeKind.InnerProduct:
          squeeze_indices.append(0)  # Squeeze FC.
      if len(data) == 1:
          squeeze_indices = [0]
      if node.kind == "Convolution":
          return data
      for idx in squeeze_indices:
          data[idx] = np.squeeze(data[idx])
      return data
  
imports: from __future__ import unicode_literals
  from google.protobuf import text_format
  import numpy
  from mmdnn.conversion.caffe.graph import GraphBuilder, NodeKind, LAYER_IN_TRAIN_PROTO
  from mmdnn.conversion.caffe.mapper import NodeMapper, get_handler_name
  from mmdnn.conversion.caffe.resolver import get_caffe_resolver, has_pycaffe
  from mmdnn.conversion.caffe.errors import print_stderr, ConversionError
  from mmdnn.conversion.caffe.common_graph import Graph
  from mmdnn.conversion.caffe.utils import get_lower_case, get_upper_case
label_desc: Use image node_id 5 for calling the DataInjector obj's underlying member method code with example usage: obj.adjust_parameters(node, data) and returns: data, data, data