ALYYAN's picture
Backend + Frontend done
eacd6a2
from cnnClassifier.constants import *
from cnnClassifier.utils.common import read_yaml, create_directories
from cnnClassifier.entity.config_entity import (
DataIngestionConfig,
DataPreparationConfig,
MultiTaskModelTrainerConfig # <-- Import the new one
)
class ConfigurationManager:
def __init__(
self,
config_filepath = CONFIG_FILE_PATH,
params_filepath = PARAMS_FILE_PATH):
self.config = read_yaml(config_filepath)
self.params = read_yaml(params_filepath)
create_directories([self.config.artifacts_root])
def get_data_ingestion_config(self) -> DataIngestionConfig:
config = self.config.data_ingestion
create_directories([config.root_dir])
data_ingestion_config = DataIngestionConfig(
root_dir=config.root_dir,
dataset_name=config.dataset_name,
dataset_config=config.dataset_config,
local_data_dir=config.local_data_dir
)
return data_ingestion_config
def get_data_preparation_config(self) -> DataPreparationConfig: # <<< NEW METHOD
config = self.config.data_preparation
create_directories([config.root_dir])
data_preparation_config = DataPreparationConfig(
root_dir=config.root_dir,
raw_data_path=config.raw_data_path,
cleaned_data_path=config.cleaned_data_path
)
return data_preparation_config
def get_multi_task_model_trainer_config(self) -> MultiTaskModelTrainerConfig:
config = self.config.multi_task_model_trainer
params = self.params
create_directories([config.root_dir])
multi_task_model_trainer_config = MultiTaskModelTrainerConfig(
root_dir=Path(config.root_dir),
data_path=config.data_path,
trained_model_path=Path(config.trained_model_path),
model_name=config.model_name,
image_size=int(params.IMAGE_SIZE),
learning_rate=float(params.LEARNING_RATE),
batch_size=int(params.BATCH_SIZE),
num_train_epochs=int(params.NUM_TRAIN_EPOCHS),
weight_decay=float(params.WEIGHT_DECAY),
warmup_steps=int(params.WARMUP_STEPS),
test_split_size=float(params.TEST_SPLIT_SIZE),
random_state=int(params.RANDOM_STATE)
)
return multi_task_model_trainer_config