Как отобразить метрики маскированной точности в keras, если выходные данные модели имеют разную длину? - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь решить проблему классификации последовательностей с помощью LSTM, где каждый образец имеет разную длину (но выходные данные имеют ту же длину, что и входные). Я не хочу обучать только один образец и хочу контролировать размер моего пакета.

Итак, для x.shape = (samples, max_timesteps, features) я добавил special_value_x, который используется для дополнения всех функций оставшиеся временные шаги.

Выходные данные y представляют собой последовательность классов на каждом временном шаге для каждой выборки, поэтому y.shape = (samples, timesteps, 1). Есть 5 классов для задачи. «Пустые» временные интервалы дополняются классом 0, но это уже один из существующих классов. Я не могу добавить к нему новое значение, потому что keras ограничивает его значением [0,5), когда у меня есть класс 5.

Затем я попытался установить маскирующий слой, чтобы игнорировать специальное значение для x:

    special_value_x = 10

    model = keras.Sequential()
    model.add(Masking(mask_value=special_value_x, input_shape=(None, 10)))
    model.add(LSTM(80, return_sequences=True))
    model.add(TimeDistributed(Dense(5, activation='softmax')))
    model.compile(loss=SparseCategoricalCrossentropy(from_logits=True),
                  optimizer=Adam(learning_rate=0.01), 
                  metrics=['accuracy'])
    
    es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=20)
    
    history = model.fit(x_train, y_train, batch_size=10, epochs=200, verbose=2,
                            validation_data=(x_test, y_test), callbacks=[es], 
                            shuffle=True)

Я получил точность и val_accuracy, которые слишком высоки, потому что метрики включают эти дополненные временные шаги. Итак, мой вопрос: как я могу отображать показатели, которые игнорируют эти дополненные временные интервалы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...