From f0c9d095565fdfb351f3bfb6239f868dc1304fa8 Mon Sep 17 00:00:00 2001 From: Ashutosh kumar Date: Sat, 17 Oct 2026 16:49:30 +0530 Subject: [PATCH 1/2] Fix scalar hidden_layer_sizes handling --- src/gfdl/model.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gfdl/model.py b/src/gfdl/model.py index 2f4f216..1806af6 100644 --- a/src/gfdl/model.py +++ b/src/gfdl/model.py @@ -49,7 +49,7 @@ def fit(self, X, Y): # Y shape: (n_samples, n_classes-1) if self.reg_alpha is not None and self.reg_alpha < 0.0: raise ValueError("Negative reg_alpha. Expected range : None or [0.0, inf).") - hidden_layer_sizes = np.asarray(self.hidden_layer_sizes) + hidden_layer_sizes = np.atleast_1d(np.asarray(self.hidden_layer_sizes)) if hidden_layer_sizes.min() < 1: raise ValueError("hidden_layer_sizes must be > 0, " f"got {hidden_layer_sizes}") @@ -144,7 +144,7 @@ def partial_fit(self, X, y): fn = resolve_activation(self.activation)[1] self._activation_fn = fn self._N = X.shape[1] - hidden_layer_sizes = np.asarray(self.hidden_layer_sizes) + hidden_layer_sizes = np.atleast_1d(np.asarray(self.hidden_layer_sizes)) self._weight_mode = resolve_weight(self.weight_scheme) # weights shape: (n_layers,) @@ -565,7 +565,7 @@ def fit(self, X, Y): if self.reg_alpha is not None and self.reg_alpha < 0.0: raise ValueError("Negative reg_alpha. Expected range : None or [0.0, inf).") - hidden_layer_sizes = np.asarray(self.hidden_layer_sizes) + hidden_layer_sizes = np.atleast_1d(np.asarray(self.hidden_layer_sizes)) if hidden_layer_sizes.min() < 1: raise ValueError("hidden_layer_sizes must be > 0, " f"got {hidden_layer_sizes}") @@ -632,7 +632,7 @@ def partial_fit(self, X, Y): fn = resolve_activation(self.activation)[1] self._activation_fn = fn self._N = X.shape[1] - hidden_layer_sizes = np.asarray(self.hidden_layer_sizes) + hidden_layer_sizes = np.atleast_1d(np.asarray(self.hidden_layer_sizes)) self._weight_mode = resolve_weight(self.weight_scheme) self.W_ = [] From 7d7836ef504e831e85eaba49a8e0063132b4a565 Mon Sep 17 00:00:00 2001 From: Ashutosh kumar Date: Sat, 17 Oct 2026 17:14:19 +0530 Subject: [PATCH 2/2] Update test_model.py --- src/gfdl/tests/test_model.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/gfdl/tests/test_model.py b/src/gfdl/tests/test_model.py index 66ce1af..6ce2897 100644 --- a/src/gfdl/tests/test_model.py +++ b/src/gfdl/tests/test_model.py @@ -822,3 +822,23 @@ def test_gh_85_classifiers(hidden_layer_sizes, classifier): clf = classifier(hidden_layer_sizes=hidden_layer_sizes, seed=0) with pytest.raises(ValueError, match="must be > 0"): clf.fit(X, y) + +@pytest.mark.parametrize( + "Classifier", + [GFDLClassifier, EnsembleGFDLClassifier], +) +def test_scalar_hidden_layer_sizes(Classifier): + X, y = make_classification( + n_samples=60, + n_features=10, + n_informative=5, + random_state=42, + ) + + model = Classifier(hidden_layer_sizes=3, seed=0) + model.fit(X, y) + + predictions = model.predict(X[:5]) + assert predictions.shape == (5,) + +