code: def __init__(
      self,
      input_size,
      layers=None,
      num_layers=1,
      output_size=256,
      use_bias=True,
      weights_initializer="xavier_uniform",
      bias_initializer="zeros",
      norm=None,
      norm_params=None,
      activation="relu",
      dropout=0,
      encoder_config=None,
      **kwargs,
  ):
      super().__init__()
      self.config = encoder_config
  
      logger.debug(f" {self.name}")
      self.input_size = input_size
  
      logger.debug("  FCStack")
      self.fc_stack = FCStack(
          first_layer_input_size=input_size,
          layers=layers,
          num_layers=num_layers,
          default_output_size=output_size,
          default_use_bias=use_bias,
          default_weights_initializer=weights_initializer,
          default_bias_initializer=bias_initializer,
          default_norm=norm,
          default_norm_params=norm_params,
          default_activation=activation,
          default_dropout=dropout,
      )
  
imports: import logging
  from typing import Optional, Type
  import torch
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import BINARY, ENCODER_OUTPUT, NUMBER, TEXT, TIMESERIES, VECTOR
  from ludwig.encoders.base import Encoder
  from ludwig.encoders.registry import register_encoder
  from ludwig.encoders.types import EncoderOutputDict
  from ludwig.modules.fully_connected_modules import FCStack
  from ludwig.schema.encoders.base import BaseEncoderConfig, DenseEncoderConfig, PassthroughEncoderConfig
label_desc: Use image node_id 1 to create a new DenseEncoder object from inherited base classes: Encoder with example: obj = DenseEncoder(input_size, layers, num_layers, output_size, use_bias, weights_initializer, bias_initializer, norm, norm_params, activation, dropout, encoder_config)