class_docstr: Perform  ``x * weight.T + bias`` where ``weight`` and ``bias`` are constant at
  compile time.
  
  Parameters
  ----------
  x: tensor<[\*D,D_in], T> (Required)
      * ``1 <= rank <= 3``.
      * ``0 <= rank(*D) <= 2``.
  weight: const tensor<[D_out,D_in], T> (Required)
  bias: const tensor<[D_out],T> (Optional)
      * Default to ``0``.
  
  Returns
  -------
  tensor<[\*D,D_out], T>
      * Same rank as the input ``x``.
  
  Attributes
  ----------
  T: fp16, fp32, i32
class_docstr_tok: ["Perform","``","x","*","weight.T","+","bias","``","where","``","weight","``","and","``","bias","``","are","constant","at","compile","time",".","Parameters","--","--","--","--","--","x",":","tensor","<","[","\\","*","D",",","D_in","]",",","T",">","(","Required",")","*","``","1","<","=","rank","<","=","3","``",".","*","``","0","<","=","rank","(","*","D",")","<","=","2","``",".","weight",":","const","tensor","<","[","D_out",",","D_in","]",",","T",">","(","Required",")","bias",":","const","tensor","<","[","D_out","]",",","T",">","(","Optional",")","*","Default","to","``","0","``",".","Returns","--","--","--","-","tensor","<","[","\\","*","D",",","D_out","]",",","T",">","*","Same","rank","as","the","input","``","x","``",".","Attributes","--","--","--","--","--","T",":","fp16",",","fp32",",","i32"]
code: def value_inference(self):
      res = np.matmul(self.x.val, np.transpose(self.weight.val))
      if self.bias is not None:
          res += self.bias.val
      return res
  
imports: import numpy
  from coremltools.converters.mil.mil import DefaultInputs, InputSpec, Operation, TensorInputType, TupleInputType, precondition, types
  from coremltools.converters.mil.mil.operation import VALUE
  from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
  from coremltools.converters.mil.mil.ops.defs._utils import broadcast_shapes, parse_einsum_equation
  from coremltools.converters.mil.mil.types import nptype_from_builtin
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
label_desc: Use image node_id 3 for calling the linear obj's underlying member method code with example usage: obj.value_inference() and returns: res