docstr: EIIE (ensemble of identical independent evaluators) policy network
  initializer.
  
  Args:
      initial_features: Number of input features.
      k_size: Size of first convolutional kernel.
      conv_mid_features: Size of intermediate convolutional channels.
      conv_final_features: Size of final convolutional channels.
      time_window: Size of time window used as agent's state.
      device: Device in which the neural network will be run.
  
  Note:
      Reference article: https://doi.org/10.48550/arXiv.1706.10059.
docstr_tok: ["EIIE","(","ensemble","of","identical","independent","evaluators",")","policy","network","initializer",".","Args",":","initial_features",":","Number","of","input","features",".","k_size",":","Size","of","first","convolutional","kernel",".","conv_mid_features",":","Size","of","intermediate","convolutional","channels",".","conv_final_features",":","Size","of","final","convolutional","channels",".","time_window",":","Size","of","time","window","used","as","agent","'s","state",".","device",":","Device","in","which","the","neural","network","will","be","run",".","Note",":","Reference","article",":","https",":","\/\/doi.org\/10.48550\/arXiv.1706.10059","."]
code: def __init__(
      self,
      initial_features=3,
      k_size=3,
      conv_mid_features=2,
      conv_final_features=20,
      time_window=50,
      device="cpu",
  ):
      """EIIE (ensemble of identical independent evaluators) policy network
      initializer.
  
      Args:
          initial_features: Number of input features.
          k_size: Size of first convolutional kernel.
          conv_mid_features: Size of intermediate convolutional channels.
          conv_final_features: Size of final convolutional channels.
          time_window: Size of time window used as agent's state.
          device: Device in which the neural network will be run.
  
      Note:
          Reference article: https://doi.org/10.48550/arXiv.1706.10059.
      """
      super().__init__()
      self.device = device
  
      n_size = time_window - k_size + 1
  
      self.sequential = nn.Sequential(
          nn.Conv2d(
              in_channels=initial_features,
              out_channels=conv_mid_features,
              kernel_size=(1, k_size),
          ),
          nn.ReLU(),
          nn.Conv2d(
              in_channels=conv_mid_features,
              out_channels=conv_final_features,
              kernel_size=(1, n_size),
          ),
          nn.ReLU(),
      )
  
      self.final_convolution = nn.Conv2d(
          in_channels=conv_final_features + 1,
          out_channels=1,
          kernel_size=(1, 1),
      )
  
      self.softmax = nn.Sequential(nn.Softmax(dim=-1))
  
file_path: FinRL/finrl/agents/portfolio_optimization/architectures.py
imports: from __future__ import annotations
  import numpy
  import torch
  from torch import nn
label_desc: Use image node_id 1 to create a new EIIE object from inherited base classes: nn with example: obj = EIIE(initial_features, k_size, conv_mid_features, conv_final_features, time_window, device)