class_docstr: RWKV module.
  
  Args:
      size: Input/Output size.
      linear_size: Feed-forward hidden size.
      attention_size: SelfAttention hidden size.
      context_size: Context size for WKV computation.
      block_id: Block index.
      num_blocks: Number of blocks in the architecture.
      normalization_class: Normalization layer class.
      normalization_args: Normalization layer arguments.
      att_dropout_rate: Dropout rate for the attention module.
      ffn_dropout_rate: Dropout rate for the feed-forward module.
docstr: Construct a RWKV object.
docstr_tok: ["Construct","a","RWKV","object","."]
code: def __init__(
      self,
      size: int,
      linear_size: int,
      attention_size: int,
      context_size: int,
      block_id: int,
      num_blocks: int,
      normalization_class: torch.nn.Module = torch.nn.LayerNorm,
      normalization_args: Dict = {},
      att_dropout_rate: float = 0.0,
      ffn_dropout_rate: float = 0.0,
  ) -> None:
      """Construct a RWKV object."""
      super().__init__()
  
      self.layer_norm_att = normalization_class(
          size, **normalization_args
      )
      self.layer_norm_ffn = normalization_class(
          size, **normalization_args
      )
  
      self.att = SelfAttention(
          size, attention_size, context_size, block_id, num_blocks
      )
      self.dropout_att = torch.nn.Dropout(p=att_dropout_rate)
  
      self.ffn = FeedForward(size, linear_size, block_id, num_blocks)
      self.dropout_ffn = torch.nn.Dropout(p=ffn_dropout_rate)
  
imports: from typing import Dict, Optional, Tuple
  import torch
  from espnet2.asr_transducer.decoder.modules.rwkv.attention import SelfAttention
  from espnet2.asr_transducer.decoder.modules.rwkv.feed_forward import FeedForward
label_desc: Use image node_id 1 to create a new RWKV object from inherited base classes: torch.nn with example: obj = RWKV(size, linear_size, attention_size, context_size, block_id, num_blocks, normalization_class, normalization_args, att_dropout_rate, ffn_dropout_rate)