taller_CNN / utils /logger.py
NICOMOSHE's picture
Upload 74 files
b4b8733 verified
import os
import json
from datetime import datetime
class ExperimentLogger:
def __init__(self, log_dir='./logs', experiment_name=None):
self.log_dir = log_dir
os.makedirs(log_dir, exist_ok=True)
self.experiment_name = experiment_name or datetime.now().strftime('%Y%m%d_%H%M%S')
self.experiment_dir = os.path.join(log_dir, self.experiment_name)
os.makedirs(self.experiment_dir, exist_ok=True)
self.metrics_history = []
self.config = {}
def log_config(self, config):
self.config = config
with open(os.path.join(self.experiment_dir, 'config.json'), 'w') as f:
json.dump(config, f, indent=2)
def log_metrics(self, epoch, metrics):
metrics['epoch'] = epoch
metrics['timestamp'] = datetime.now().isoformat()
self.metrics_history.append(metrics)
with open(os.path.join(self.experiment_dir, 'metrics.jsonl'), 'a') as f:
f.write(json.dumps(metrics) + '\n')
def log_message(self, message):
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open(os.path.join(self.experiment_dir, 'log.txt'), 'a') as f:
f.write(f'[{timestamp}] {message}\n')
print(f'[{timestamp}] {message}')
def finalize(self):
with open(os.path.join(self.experiment_dir, 'metrics_history.json'), 'w') as f:
json.dump(self.metrics_history, f, indent=2)
print(f'Experimento finalizado: {self.experiment_dir}')