Kerastuner Randomsearch: TypeError: («Аргумент ключевого слова не понят:», «активация») - PullRequest
1 голос
/ 28 апреля 2020

Используя Google Colab, я пытался использовать Randomsearch от Kerastuner, чтобы найти лучший CNN для моего варианта использования.

На мой взгляд, все должно быть настроено правильно, но по некоторым причинам я всегда получаю

TypeError: ('Keyword argument not understood:', 'activation')

всякий раз, когда объявляется мой RandomSearch.

Функция объявления моей модели:

from tensorflow.keras import datasets, layers, models

def model_declaration(hp):
  cnn = models.Sequential([
    # Filtering & Pooling Layers
    layers.Conv2D(
        filters=hp.Int('filter1', min_value = 16, max_value = 128, step = 16), # Optimizing with filters from 16 to 128 in steps of 16 
        kernel_size = hp.Choice('kernel1', values=[3,6]), # Optimizing kernel size from 3 to 6
        activation ='relu',
        input_shape = (48,48,1) # always the same
        ),
    layers.MaxPooling2D(pool_size=hp.Int('max_pooling_1', min_value = 2, max_value = 4, step = 16), activation = 'relu'),
    layers.Conv2D( 
        filters=hp.Int('filter2', min_value = 16, max_value = 128, step = 16 ), # Optimizing with filters from 16 to 128 in steps of 16 
        kernel_size = hp.Choice('kernel2', values=[3,6]), # Optimizing kernel size from 3 to 6
        activation = 'relu'),
    layers.Conv2D( 
        filters=hp.Int('filter3', min_value = 8, max_value = 256, step = 16 ), # Optimizing with filters from 16 to 128 in steps of 16 
        kernel_size = hp.Choice('kernel3', values=[3,6]), # Optimizing kernel size from 3 to 6
        activation = 'relu'
        ),
    layers.Flatten(), # Flattening
  ])

  for i in range(hp.Int('dense_layers', 2, 10)): 
      cnn.add(layers.Dense(units=hp.Int('dense_parameters'), min_value = 16, max_value = 128, step = 16), activation=hp.Choice(['relu', 'tanh', 'sigmoid']))

  model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', values=[1e-1, 1e-2, 1e-3, 1e-4])),
                loss = 'sparse_categorical_crossentropy',
                metrics = ['accuracy'])
  return model

И это мое объявление о моем произвольном поиске:

import kerastuner
from kerastuner import RandomSearch
from kerastuner.engine.hyperparameters import HyperParameter
random_search = RandomSearch(model_declaration, objective='val_accuracy', max_trials=5, directory='output', project_name='CNN best output')

Версия Tensorflow - 2.2.0-rc3 Kerastuner версия это 1.0.1 Keras версия 2.3.0-tf

Заранее спасибо за вашу помощь, я действительно борюсь с этим, так как я довольно плохо знаком с предметом.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

MaxPooling2D не имеет активации. Так как MaxPooling - это слой, который минимизирует ваши данные. У него нет активации, потому что он следует определенному алгоритму, который принимает размер пула и принимает самые большие значения для каждой выбранной вами области.

0 голосов
/ 28 апреля 2020
Слой

MaxPooling2D не имеет параметра activation. Проверьте Документация Keras См. Также спецификацию слоев.

...