From 5e4aee86363eb718b8689499de7431de6c4dd8f1 Mon Sep 17 00:00:00 2001 From: SandroMartens Date: Thu, 22 Feb 2024 20:52:09 +0100 Subject: [PATCH] update self.weights_ after deleting neurons --- dbgsom/BaseSom.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dbgsom/BaseSom.py b/dbgsom/BaseSom.py index 05457dc..f15acf6 100644 --- a/dbgsom/BaseSom.py +++ b/dbgsom/BaseSom.py @@ -214,12 +214,15 @@ def _write_node_statistics(self, X: npt.ArrayLike) -> None: def _remove_dead_neurons(self, X: npt.ArrayLike) -> None: """Delete all neurons which represent zero samples from the training set.""" som_copy = copy.deepcopy(self.som_) - for node in self.som_.nodes: - if self.som_.nodes[node]["hit_count"] == 0: - som_copy.remove_node(node) + dead_neurons = [ + node for node in self.som_.nodes if self.som_.nodes[node]["hit_count"] == 0 + ] + for node in dead_neurons: + som_copy.remove_node(node) self.som_ = som_copy self.neurons_ = list(self.som_.nodes) + self.weights_ = self._extract_values_from_graph("weight") def _extract_values_from_graph(self, attribute: str) -> np.ndarray: """Return an array of shape (n_nodes, 1) with some given attribute of the