Гиперпараметры поиска сетки в модели RNN-LSTM - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь сгенерировать подписи к изображениям, поэтому использую для этого модель RNN-LSTM. Я хочу оптимизировать его производительность путем настройки гиперпараматора. Я попытался использовать GridSearchCV для этого. Но невозможно передать 2 списка в качестве входного параметра в методе fit. X1_train - содержит функции изображения. X2_train - содержит последовательность слов y_train - содержит следующее слово. Итак, мои X - X1_train & X2_train, а y (target) - y_train.

Я искал настройки в Google, но не смог найти ресурс для Это. Я пытаюсь избежать, несколько циклов для создания списка параметров для поиска.

Мой код:

def define_model(vocab_size, max_length,layer_one_dropout=0.2,layer_two_dropout=0.2):

    # feature extractor model
    inputs1 = Input(shape=(2048,))
    fe1 = Dropout(layer_one_dropout)(inputs1)
    #fe1 = Dropout(0.5)(inputs1)
    fe2 = Dense(256, activation='relu')(fe1)

    # sequence model
    inputs2 = Input(shape=(maximum_length,))
    se1 = Embedding(vocab_size, 256, mask_zero=True)(inputs2)
    se2 = Dropout(layer_two_dropout)(se1)
    #se2 = Dropout(0.5)(se1)
    se3 = LSTM(256)(se2)

    # decoder model
    decoder1 = add([fe2, se3])
    decoder2 = Dense(256, activation='relu')(decoder1)
    outputs = Dense(vocab_size, activation='softmax')(decoder2)

    #model = Model(inputs=[inputs1, inputs2], outputs=outputs)
    model = Model(inputs=[inputs1, inputs2], outputs=outputs)

    model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'])

    return model

rnn = KerasClassifier(build_fn=define_model(vocab_size, maximum_length),
                      epochs=10 ,batch_size=256, verbose=1)

params={
    'nn__layer_one_dropout':  [0.3,0.5],
    'nn__layer_two_dropout': [0.3,0.5]
}

gs = GridSearchCV(rnn, param_grid=params,  n_jobs = -1, verbose=1, scoring='accuracy')

print(X1train.shape, X2train.shape,ytrain.shape)

gs.fit([X1train, X2train], ytrain)```



**Error is:**

```(306374, 2048) (306374, 34) (306374, 7581)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-819-68774369151e> in <module>
     39 print(X1train.shape, X2train.shape,ytrain.shape)
     40 
---> 41 gs.fit([X1train, X2train], ytrain)

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/model_selection/_search.py in fit(self, X, y, groups, **fit_params)
    648             refit_metric = 'score'
    649 
--> 650         X, y, groups = indexable(X, y, groups)
    651         fit_params = _check_fit_params(X, fit_params)
    652 

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in indexable(*iterables)
    246     """
    247     result = [_make_indexable(X) for X in iterables]
--> 248     check_consistent_length(*result)
    249     return result
    250 

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
    210     if len(uniques) > 1:
    211         raise ValueError("Found input variables with inconsistent numbers of"
--> 212                          " samples: %r" % [int(l) for l in lengths])
    213 
    214 

ValueError: Found input variables with inconsistent numbers of samples: [2, 306374]``` 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...