Как scikit learn реализует выходной слой
- в scikit learn, сколько нейронов находится в выходном слое? Как указано здесь , Вы можете указать только размер скрытого слоя и их нейроны, но ничего о выходном слое, поэтому я не уверен, как scikit learn реализует выходной слой. Имеет ли смысл использовать функцию активации
softmax
для выходного слоя, имеющего только один нейрон?
1 ответ:
Тест:
Настройка:
In [227]: %paste clf = MLPClassifier() m = 10**3 n = 64 df = pd.DataFrame(np.random.randint(100, size=(m, n))).add_prefix('x') \ .assign(y=np.random.choice([-1,1], m)) X_train, X_test, y_train, y_test = \ train_test_split(df.drop('y',1), df['y'], test_size=0.2, random_state=33) clf.fit(X_train, y_train) ## -- End pasted text -- Out[227]: MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9, beta_2=0.999, early_stopping=False, epsilon=1e-08, hidden_layer_sizes=(100,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=None, shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False)
Количество выходов:
In [229]: clf.n_outputs_ Out[229]: 1
Количество слоев:
In [228]: clf.n_layers_ Out[228]: 3
Число итераций, выполненных решателем:
In [230]: clf.n_iter_ Out[230]: 60
Вот отрывок из исходного кода , где будет выбрана функция активации для выходного слоя:
# Output for regression if not is_classifier(self): self.out_activation_ = 'identity' # Output for multi class elif self._label_binarizer.y_type_ == 'multiclass': self.out_activation_ = 'softmax' # Output for binary class and multi-label else: self.out_activation_ = 'logistic'
if not incremental: self._label_binarizer = LabelBinarizer() self._label_binarizer.fit(y) self.classes_ = self._label_binarizer.classes_