class_docstr: Convolutional flow module.
class_docstr_tok: ["Convolutional","flow","module","."]
docstr: Initialize ConvFlow module.
  
  Args:
      in_channels (int): Number of input channels.
      hidden_channels (int): Number of hidden channels.
      kernel_size (int): Kernel size.
      layers (int): Number of layers.
      bins (int): Number of bins.
      tail_bound (float): Tail bound value.
docstr_tok: ["Initialize","ConvFlow","module",".","Args",":","in_channels","(","int",")",":","Number","of","input","channels",".","hidden_channels","(","int",")",":","Number","of","hidden","channels",".","kernel_size","(","int",")",":","Kernel","size",".","layers","(","int",")",":","Number","of","layers",".","bins","(","int",")",":","Number","of","bins",".","tail_bound","(","float",")",":","Tail","bound","value","."]
code: def __init__(
      self,
      in_channels: int,
      hidden_channels: int,
      kernel_size: int,
      layers: int,
      bins: int = 10,
      tail_bound: float = 5.0,
  ):
      """Initialize ConvFlow module.
  
      Args:
          in_channels (int): Number of input channels.
          hidden_channels (int): Number of hidden channels.
          kernel_size (int): Kernel size.
          layers (int): Number of layers.
          bins (int): Number of bins.
          tail_bound (float): Tail bound value.
  
      """
      super().__init__()
      self.half_channels = in_channels // 2
      self.hidden_channels = hidden_channels
      self.bins = bins
      self.tail_bound = tail_bound
  
      self.input_conv = torch.nn.Conv1d(
          self.half_channels,
          hidden_channels,
          1,
      )
      self.dds_conv = DilatedDepthSeparableConv(
          hidden_channels,
          kernel_size,
          layers,
          dropout_rate=0.0,
      )
      self.proj = torch.nn.Conv1d(
          hidden_channels,
          self.half_channels * (bins * 3 - 1),
          1,
      )
      self.proj.weight.data.zero_()
      self.proj.bias.data.zero_()
  
imports: import math
  from typing import Optional, Tuple, Union
  import torch
  from espnet2.gan_tts.vits.transform import piecewise_rational_quadratic_transform
label_desc: Use image node_id 1 to create a new ConvFlow object from inherited base classes: torch.nn with example: obj = ConvFlow(in_channels, hidden_channels, kernel_size, layers, bins, tail_bound)