Попытка классифицировать несколько тренировочных сигналов на каждом временном шаге с несколькими функциями, используя BiLSTM, борясь с входными измерениями - PullRequest
0 голосов
/ 27 сентября 2019

Я очень плохо знаком с машинным обучением, и это первая RNN, которую я пытаюсь обучать, поэтому будьте терпеливы со мной, если я допустил какие-либо очевидные ошибки.Я беру немного аудио и выполняю некоторую обработку звука в librosa.

Затем концентрирую мои значения в матрице, где с размерами измерений = (n_timesteps, n_features).

Затем я добавляю к этому ось, чтобы иметь форму моего ввода в виде X.shape = (1, n_timesteps, n_features).

Для моих целевых векторов у меня есть классификация повременной шаг, равный 0 или 1, таким образом, создавая мою целевую векторную форму (n_timesteps, 1) с каждым значением класса

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

Я борюсь со следующими вещами:

  1. Я не уверен, как организовать свои данные для обучения каждый разшаг для 0 или 1,
  2. Все мои учебные примеры имеют разную длину, и я знаю, что могу решить эту проблему с помощью различных методов, таких как заполнение и маскирование, или установив размер ввода как (None, n_features) иbatch_size = 1, как я сделал ниже, но я не уверен, какой метод лучше всего использовать, или правильно ли я делаю этот метод.
  3. Я не уверен, как передать модель с несколькими траВ приведенных ниже примерах у меня есть X_train как список из 10 матриц (3D) и Y_train как еще один список из 10 матриц (2D).Первоначально я передавал модели оба списка, но вместо этого я попытался использовать цикл for (как вы можете видеть ниже), но я не уверен, удаляет ли это какие-либо из предыдущих данных и учитывает только последний обучающий пример.

Вот мой текущий код для моей модели:

model.add(Bidirectional(LSTM(units=10,input_shape=(None,768),return_sequences=True)))
model.add(Bidirectional(LSTM(units=10)))


model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='Adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])


for i in range(13):
        train=X_train[i]
        labels=Y_train[i]
        model.fit(train,labels,epochs=100)
        model.reset_states()

, и это ошибка, которую я получаю в данный момент:

InvalidArgumentError: data[0].shape = [3] does not start with indices[0].shape = [2]
     [[{{node Adam_3/gradients/loss_4/output_1_loss/Mean_grad/DynamicStitch}}]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...