class_docstr: Conversion class for Linear.
code: def from_observed(cls, observed_module: _nn.Module):
      cls.do_attribute_assertions(observed_module)
      finalized_weights = cls.get_finalized_weights(observed_module)
      return_module = _nn.Linear(
          in_features=observed_module.in_features,
          out_features=observed_module.out_features,
          bias=observed_module.bias is not None,
          device=observed_module.device
          if hasattr(observed_module, "device")
          else None,
          dtype=observed_module.dtype
          if hasattr(observed_module, "dtype")
          else None,
      )
      return_module.weight = _nn.Parameter(finalized_weights)
      if observed_module.bias is not None:
          return_module.bias = _nn.Parameter(
              observed_module.bias.detach()
          )
      return_module.activation_post_process = (
          observed_module.activation_post_process
      )
      return return_module
  
imports: import torch.nn
  import torch.nn.qat
  from ._supported_modules import Conv1d, Embedding, LayerNorm, MultiheadAttention
label_desc: Use image node_id 2 for calling the LinearPalettizationConversion obj's underlying member method code with example usage: obj.from_observed(cls, observed_module) and returns: return_module