code: def __post_init__(self):
      assert (
          self.model_propensities_eval.shape
          == self.model_rewards_eval.shape
          == self.action_mask_eval.shape
      ) and len(self.model_propensities_eval.shape) == 2, (
          f"{self.model_propensities_eval.shape} "
          f"{self.model_rewards_eval.shape} "
          f"{self.action_mask_eval.shape}"
      )
      assert (
          (
              self.logged_rewards_eval.shape
              == self.model_rewards_for_logged_action_eval.shape
              == self.logged_propensities_eval.shape
          )
          and len(self.logged_rewards_eval.shape) == 2
          and self.logged_rewards_eval.shape[1] == 1
      ), (
          f"{self.logged_rewards_eval.shape} "
          f"{self.model_rewards_for_logged_action_eval.shape} "
          f"{self.logged_propensities_eval.shape}"
      )
  
imports: import logging
  from dataclasses import dataclass
  from typing import Dict, NamedTuple, Optional, Tuple, Union
  import numpy
  import torch
  from reagent.evaluation.cpe import bootstrapped_std_error_of_mean, CpeEstimate
  from reagent.evaluation.evaluation_data_page import EvaluationDataPage
  from torch import Tensor
label_desc: Use image node_id 1 for calling the EstimationData obj's underlying member method code with example usage: obj.__post_init__() without return types