code: def save_parameters(path, params=None):
      
      _, ext = os.path.splitext(path)
      params = get_parameters(grad_only=False) if params is None else params
      if ext == '.h5':
          # TODO temporary work around to suppress FutureWarning message.
          import warnings
          warnings.simplefilter('ignore', category=FutureWarning)
          import h5py
          with h5py.File(path, 'w') as hd:
              for i, (k, v) in enumerate(iteritems(params)):
                  hd[k] = v.d
                  hd[k].attrs['need_grad'] = v.need_grad
                  # To preserve order of parameters
                  hd[k].attrs['index'] = i
      elif ext == '.protobuf':
          proto = nnabla_pb2.NNablaProtoBuf()
          for variable_name, variable in params.items():
              parameter = proto.parameter.add()
              parameter.variable_name = variable_name
              parameter.shape.dim.extend(variable.shape)
              parameter.data.extend(numpy.array(variable.d).flatten().tolist())
              parameter.need_grad = variable.need_grad
  
          with open(path, "wb") as f:
              f.write(proto.SerializeToString())
      else:
          logger.critical('Only supported hdf5 or protobuf.')
          assert False
      logger.info("Parameter save ({}): {}".format(ext, path))
docs: Save all parameters into a file with the specified format.
  
      Currently hdf5 and protobuf formats are supported.
  
      Args:
        path : path or file object
        params (dict, optional): Parameters to be saved. Dictionary is of a parameter name (:obj:`str`) to :obj:`~nnabla.Variable`.