class_docstr: Feature Response Normalization layer from 'Filter Response Normalization Layer: Eliminating Batch Dependence
  in the Training of Deep Neural Networks', see :cite:`FRN2019` for more details.
  
  .. math::
      y =  \gamma \times \frac{x}{\sqrt{\mathrm{E}[x^2]} + |\epsilon|} + \beta
  
  
  Args:
      num_features: number of channels
      eps: normalization constant
      is_bias: use bias
      is_scale: use scale
      drop_rate: dropout rate,
      is_eps_leanable: if eps is learnable
  
  Returns:
      torch.Tensor: Normalized features
  
  Shape:
      - Input: :math:`(B, \text{num_features}, H, W)`
      - Output: :math:`(B, \text{num_features}, H, W)`
class_docstr_tok: ["Feature","Response","Normalization","layer","from","'Filter","Response","Normalization","Layer",":","Eliminating","Batch","Dependence","in","the","Training","of","Deep","Neural","Networks","'",",","see",":","cite",":","`","FRN2019","`","for","more","details",".","..","math",":",":","y","=","\\gamma","\\times","\\frac","{","x","}","{","\\sqrt","{","\\mathrm","{","E","}","[","x^2","]","}","+","|\\epsilon|","}","+","\\beta","Args",":","num_features",":","number","of","channels","eps",":","normalization","constant","is_bias",":","use","bias","is_scale",":","use","scale","drop_rate",":","dropout","rate",",","is_eps_leanable",":","if","eps","is","learnable","Returns",":","torch.Tensor",":","Normalized","features","Shape",":","-","Input",":",":","math",":","`","(","B",",","\\text","{","num_features","}",",","H",",","W",")","`","-","Output",":",":","math",":","`","(","B",",","\\text","{","num_features","}",",","H",",","W",")","`"]
code: def __init__(
      self,
      num_features: int,
      eps: float = 1e-6,
      is_bias: bool = True,
      is_scale: bool = True,
      is_eps_leanable: bool = False,
  ) -> None:
      super().__init__()
  
      self.num_features = num_features
      self.init_eps = eps
      self.is_eps_leanable = is_eps_leanable
      self.is_bias = is_bias
      self.is_scale = is_scale
  
      self.weight = Parameter(
          torch.ones(1, num_features, 1, 1), requires_grad=True
      )
      self.bias = Parameter(
          zeros(1, num_features, 1, 1), requires_grad=True
      )
      if is_eps_leanable:
          self.eps = Parameter(tensor(1), requires_grad=True)
      else:
          self.register_buffer("eps", tensor([eps]))
      self.reset_parameters()
  
imports: from typing import Dict
  import torch
  from torch import nn
  from kornia.core import Module, Parameter, Tensor, tensor, zeros
  from kornia.utils.helpers import map_location_to_cpu
label_desc: Use image node_id 1 to create a new FilterResponseNorm2d object from inherited base classes: Module with example: obj = FilterResponseNorm2d(num_features, eps, is_bias, is_scale, is_eps_leanable)