From 3d3ead1d44e6d5cc2c0470cdcd93f69c6e9362c0 Mon Sep 17 00:00:00 2001 From: YChienHung Date: Thu, 26 Jun 2025 11:25:34 +0800 Subject: [PATCH 1/3] update ModelSummary --- .../utilities/model_summary/model_summary.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lightning/pytorch/utilities/model_summary/model_summary.py b/src/lightning/pytorch/utilities/model_summary/model_summary.py index 98d74ff63ea5f..6c40d3859d21d 100644 --- a/src/lightning/pytorch/utilities/model_summary/model_summary.py +++ b/src/lightning/pytorch/utilities/model_summary/model_summary.py @@ -144,7 +144,14 @@ def num_parameters(self) -> int: def training(self) -> bool: """Returns whether the module is in training mode.""" return self._module.training - + + @property + def requires_grad(self) -> bool: + """Returns whether the module is requires grad.""" + if self.num_parameters > 0: + return any([param.requires_grad for name, param in self._module.named_parameters()]) + else: + return True class ModelSummary: """Generates a summary of all layers in a :class:`~lightning.pytorch.core.LightningModule`. @@ -266,7 +273,7 @@ def param_nums(self) -> list[int]: @property def training_modes(self) -> list[bool]: - return [layer.training for layer in self._layer_summary.values()] + return [(2 if layer.training else 1) if layer.requires_grad else 0 for layer in self._layer_summary.values()] @property def total_training_modes(self) -> dict[str, int]: @@ -361,12 +368,13 @@ def _get_summary_data(self) -> list[tuple[str, list[str]]]: Layer Name, Layer Type, Number of Parameters, Input Sizes, Output Sizes, Model Size """ + param_mode = {0: "freeze", 1: "eval", 2: "train"} arrays = [ (" ", list(map(str, range(len(self._layer_summary))))), ("Name", self.layer_names), ("Type", self.layer_types), ("Params", list(map(get_human_readable_count, self.param_nums))), - ("Mode", ["train" if mode else "eval" for mode in self.training_modes]), + ("Mode", [param_mode[mode] for mode in self.training_modes]), ("FLOPs", list(map(get_human_readable_count, (sum(x.values()) for x in self.flop_counts.values())))), ] if self._model.example_input_array is not None: From b8a452c8b6e26933407953575e425e77594e48b8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 03:32:16 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../pytorch/utilities/model_summary/model_summary.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lightning/pytorch/utilities/model_summary/model_summary.py b/src/lightning/pytorch/utilities/model_summary/model_summary.py index 6c40d3859d21d..3bc9a33b937be 100644 --- a/src/lightning/pytorch/utilities/model_summary/model_summary.py +++ b/src/lightning/pytorch/utilities/model_summary/model_summary.py @@ -144,14 +144,14 @@ def num_parameters(self) -> int: def training(self) -> bool: """Returns whether the module is in training mode.""" return self._module.training - + @property def requires_grad(self) -> bool: """Returns whether the module is requires grad.""" if self.num_parameters > 0: - return any([param.requires_grad for name, param in self._module.named_parameters()]) - else: - return True + return any(param.requires_grad for name, param in self._module.named_parameters()) + return True + class ModelSummary: """Generates a summary of all layers in a :class:`~lightning.pytorch.core.LightningModule`. From e462627e3be88c1d2fca16a63971ef96bf9c7c4d Mon Sep 17 00:00:00 2001 From: YChienHung Date: Thu, 26 Jun 2025 17:13:36 +0800 Subject: [PATCH 3/3] type from bool to int --- src/lightning/pytorch/utilities/model_summary/model_summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lightning/pytorch/utilities/model_summary/model_summary.py b/src/lightning/pytorch/utilities/model_summary/model_summary.py index 3bc9a33b937be..bf4ea2af21cec 100644 --- a/src/lightning/pytorch/utilities/model_summary/model_summary.py +++ b/src/lightning/pytorch/utilities/model_summary/model_summary.py @@ -272,7 +272,7 @@ def param_nums(self) -> list[int]: return [layer.num_parameters for layer in self._layer_summary.values()] @property - def training_modes(self) -> list[bool]: + def training_modes(self) -> list[int]: return [(2 if layer.training else 1) if layer.requires_grad else 0 for layer in self._layer_summary.values()] @property