code: def qforward(self, input: torch.Tensor) -> torch.Tensor:
      if self.activations is not None and not isinstance(
          input, QTensor
      ):
          # Quantize tensor to be able to take advantage of accelerated matmul
          input = QTensor.quantize(
              input, self.activations, self.input_scale
          )
      # We always use quantized weights
      qweight = self.qweight()
      return torch.nn.functional.linear(input, qweight, bias=self.bias)
  
file_path: quanto/quanto/nn/qlinear.py
imports: from typing import Optional
  import torch
  from ..tensor import QBitsTensor, QTensor, absmax_scale, qbitsdtype
  from .qmodule import QModuleMixin, register_qmodule
label_desc: Use image node_id 4 for calling the QLinear obj's underlying member method code with example usage: obj.qforward(input) and returns: torch