8000 Merge pull request #5699 from bhargav/mlp-test-warning · kernc/scikit-learn@1d50534 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1d50534

Browse files
committed
Merge pull request scikit-learn#5699 from bhargav/mlp-test-warning
[MRG + 1] Fix MLP batch_size test warning for default value
2 parents 03a1d45 + 3d001f3 commit 1d50534

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

doc/modules/neural_networks_supervised.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ training samples::
8989
>>> clf = MLPClassifier(algorithm='l-bfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
9090
>>> clf.fit(X, y) # doctest: +NORMALIZE_WHITESPACE
9191
MLPClassifier(activation='relu', algorithm='l-bfgs', alpha=1e-05,
92-
batch_size=200, beta_1=0.9, beta_2=0.999, early_stopping=False,
92+
batch_size='auto', beta_1=0.9, beta_2=0.999, early_stopping=False,
9393
epsilon=1e-08, hidden_layer_sizes=(5, 2), learning_rate='constant',
9494
learning_rate_init=0.001, max_iter=200, momentum=0.9,
9595
nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
@@ -144,7 +144,7 @@ value is `1` represents the assigned classes of that sample::
144144
>>> clf = MLPClassifier(algorithm='l-bfgs', alpha=1e-5, hidden_layer_sizes=(15,), random_state=1)
145145
>>> clf.fit(X, y)
146146
MLPClassifier(activation='relu', algorithm='l-bfgs', alpha=1e-05,
147-
batch_size=200, beta_1=0.9, beta_2=0.999, early_stopping=False,
147+
batch_size='auto', beta_1=0.9, beta_2=0.999, early_stopping=False,
148148
epsilon=1e-08, hidden_layer_sizes=(15,), learning_rate='constant',
149149
learning_rate_init=0.001, max_iter=200, momentum=0.9,
150150
nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,

sklearn/neural_network/multilayer_perceptron.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,8 @@ def _fit(self, X, y, incremental=False):
348348
# l-bfgs does not support mini-batches
349349
if self.algorithm == 'l-bfgs':
350350
batch_size = n_samples
351+
elif self.batch_size == 'auto':
352+
batch_size = min(200, n_samples)
351353
else:
352354
if self.batch_size < 1 or self.batch_size > n_samples:
353355
warnings.warn("Got `batch_size` less than 1 or larger than "
@@ -493,7 +495,11 @@ def _fit_stochastic(self, X, y, activations, deltas, coef_grads,
493495
y_val = None
494496

495497
n_samples = X.shape[0]
496-
batch_size = np.clip(self.batch_size, 1, n_samples)
498+
499+
if self.batch_size == 'auto':
500+
batch_size = min(200, n_samples)
501+
else:
502+
batch_size = np.clip(self.batch_size, 1, n_samples)
497503

498504
try:
499505
for it in range(self.max_iter):
@@ -714,9 +720,10 @@ class MLPClassifier(BaseMultilayerPerceptron, ClassifierMixin):
714720
alpha : float, optional, default 0.0001
715721
L2 penalty (regularization term) parameter.
716722
717-
batch_size : int, optional, default 200
723+
batch_size : int, optional, default 'auto'
718724
Size of minibatches for stochastic optimizers.
719725
If the algorithm is 'l-bfgs', the classifier will not use minibatch.
726+
When set to "auto", `batch_size=min(200, n_samples)`
720727
721728
learning_rate : {'constant', 'invscaling', 'adaptive'}, default 'constant'
722729
Learning rate schedule for weight updates.
@@ -864,7 +871,7 @@ class MLPClassifier(BaseMultilayerPerceptron, ClassifierMixin):
864871
"""
865872
def __init__(self, hidden_layer_sizes=(100,), activation="relu",
866873
algorithm='adam', alpha=0.0001,
867-
batch_size=200, learning_rate="constant",
874+
batch_size='auto', learning_rate="constant",
868875
learning_rate_init=0.001, power_t=0.5, max_iter=200,
869876
shuffle=True, random_state=None, tol=1e-4,
870877
verbose=False, warm_start=False, momentum=0.9,
@@ -1067,9 +1074,10 @@ class MLPRegressor(BaseMultilayerPerceptron, RegressorMixin):
10671074
alpha : float, optional, default 0.0001
10681075
L2 penalty (regularization term) parameter.
10691076
1070-
batch_size : int, optional, default 200
1077+
batch_size : int, optional, default 'auto'
10711078
Size of minibatches for stochastic optimizers.
10721079
If the algorithm is 'l-bfgs', the classifier will not use minibatch.
1080+
When set to "auto", `batch_size=min(200, n_samples)`
10731081
10741082
learning_rate : {'constant', 'invscaling', 'adaptive'}, default 'constant'
10751083
Learning rate schedule for weight updates.
@@ -1211,7 +1219,7 @@ class MLPRegressor(BaseMultilayerPerceptron, RegressorMixin):
12111219
"""
12121220
def __init__(self, hidden_layer_sizes=(100,), activation="relu",
12131221
algorithm='adam', alpha=0.0001,
1214-
batch_size=200, learning_rate="constant",
1222+
batch_size='auto', learning_rate="constant",
12151223
learning_rate_init=0.001,
12161224
power_t=0.5, max_iter=200, shuffle=True,
12171225
random_state=None, tol=1e-4,

0 commit comments

Comments
 (0)
0