Как подготовить данные для двоичной классификации LSTM? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть набор данных временного ряда для 38 000 различных пациентов, который включает их 48-часовые физиологические данные с 30 характеристиками, поэтому у каждого пациента есть 48 рядов (для каждого часа) и двоичный результат (0/1) в конце 48-го.только час, общий обучающий набор составляет (38,000*48 = 1,824,000) строк.

Насколько я понимаю, это Many-to-one LSTM binary classification, поэтому моя форма ввода должна быть (38,000,48,30) (sample_size, time_steps, features), а return_sequence должна быть установлена ​​в False для возврата результататолько последний скрытый нейрон?

Может кто-нибудь пересмотреть мое понимание по этому вопросу?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Да, в основном вы на правильном пути.Для лучшего понимания см. Приведенный ниже код.

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Bidirectional
from keras.metrics import binary_crossentropy

# vocab size
total_features = 30
no_of_pateints = 38,000
time_steps = 48


model = Sequential()

# you can also use Bidirectional layer to speed up the learning and reduce 
# training time and here you can keep return_sequence as true
# model.add(
    Bidirectional(LSTM(
        units=100, 
        input_shape=(no_of_patients, time_steps, total_features), 
        return_sequences=True
    )))
# return_sequence should be False if there is only one LSTM layer. Otherwise in case of multiple layers, 
the last layers should have return_sequence as False
model.add(LSTM(
    units=100, 
    input_shape=(no_of_patients, time_steps, total_features), 
    return_sequences=False 
    ))
model.add(Dense(2, activation='softmax'))
model.compile(
    loss=binary_crossentropy,
    optimizer='rmsprop',
    metrics=['accuracy']
)

Дайте мне знать, если у вас есть путаница в приведенном выше коде или вам нужно больше объяснений

0 голосов
/ 13 февраля 2019

Да, вы в основном правы:

  • форма входов = (patients, 48, 30)
  • форма целей = (patients, 1)

Выследует использовать return_sequences=False в вашем последнем LSTM-слое.(Если у вас есть больше повторяющихся слоев до последнего LSTM, оставьте в них return_sequences=True)

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