class_docstr: Generalized extension of the FakeQuantize module in fake_quantize.py.
  
  This is an extension of the FakeQuantize module in fake_quantize.py, which
  supports more generalized lower-bit quantization and support learning of the scale
  and zero point parameters through backpropagation. For literature references,
  please see the class _LearnableFakeQuantizePerTensorOp.
  
  In addition to the attributes in the original FakeQuantize module, the _LearnableFakeQuantize
  module also includes the following attributes to support quantization parameter learning.
  
  * :attr:`channel_len` defines the length of the channel when initializing scale and zero point
    for the per channel case.
  
  * :attr:`use_grad_scaling` defines the flag for whether the gradients for scale and zero point are
    normalized by the constant, which is proportional to the square root of the number of
    elements in the tensor. The related literature justifying the use of this particular constant
    can be found here: https://openreview.net/pdf?id=rkgO66VKDS.
  
  * :attr:`fake_quant_enabled` defines the flag for enabling fake quantization on the output.
  
  * :attr:`static_enabled` defines the flag for using observer's static estimation for
    scale and zero point.
  
  * :attr:`learning_enabled` defines the flag for enabling backpropagation for scale and zero point.
code: def toggle_qparam_learning(self, enabled=True):
      self.learning_enabled[0] = int(enabled)  # type: ignore[operator]
      self.scale.requires_grad = enabled
      self.zero_point.requires_grad = enabled
      return self
  
file_path: pytorch/torch/ao/quantization/_learnable_fake_quantize.py
imports: import torch
  from torch.nn.parameter import Parameter
  from typing import List
label_desc: Use image node_id 7 for calling the _LearnableFakeQuantize obj's underlying member method code with example usage: obj.toggle_qparam_learning(enabled) and returns: self