Оптимизация скрытого слоя классификатора Sklearn MLP (RandomizedSearchCV)

1

У меня установлены следующие параметры:

parameter_space = {
    'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(100,600,1),), (sp_randint.rvs(100,600,1),)],
    'activation': ['tanh', 'relu', 'logistic'],
    'solver': ['sgd', 'adam', 'lbfgs'],
    'alpha': stats.uniform(0.0001, 0.9),
    'learning_rate': ['constant','adaptive']}

Все параметры, кроме hidden_layer_sizes, работают так, как ожидалось.

В настоящее время random значения hidden_layer_sizes предварительно вычисляются и остаются неизменными во всех итерациях.

Есть ли способ получить 1 или 2 слоя MLP со скрытыми слоями нейронов между 100 и 600, выбранными случайным образом для каждой итерации RandomizedSearchCV.

Любые идеи/другие связанные советы?

  • 0
    Можете ли вы указать больше, что такое структура «hidden_layer_sizes» это кортеж из 3 целых чисел или только одно число?
Теги:
machine-learning
scikit-learn
hyperparameters

1 ответ

0

RandomizedSearchCV использует ParameterSampler, который ожидает, что будет выбран случайный rvs() или объект с атрибутом rvs(). Вы можете имитировать этот объект

class RandIntMatrix(object):
    def __init__(self, low, high, shape=(1)):
        self.low = low
        self.high = high
        self.shape = shape

    def rvs(self, random_state=None):
        np.random.seed(random_state)
        return np.random.randint(self.low, self.high, self.shape)

print (RandIntMatrix(100, 600, 3).rvs())  # [ 506 124 310]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню