| 64 | self.info(message) |
| 65 | |
| 66 | def log_model_summary(self, model): |
| 67 | total_params = sum(p.numel() for p in model.parameters()) |
| 68 | trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad) |
| 69 | |
| 70 | self.info("=" * 50) |
| 71 | self.info("Model Summary") |
| 72 | self.info("=" * 50) |
| 73 | self.info(f"Total parameters: {total_params:,}") |
| 74 | self.info(f"Trainable parameters: {trainable_params:,}") |
| 75 | self.info(f"Non-trainable parameters: {total_params - trainable_params:,}") |
| 76 | self.info("=" * 50) |
| 77 | |
| 78 | def separator(self, char: str = "=", length: int = 80): |
| 79 | self.info(char * length) |