Я очень плохо знаком с машинным обучением, и это первая RNN, которую я пытаюсь обучать, поэтому будьте терпеливы со мной, если я допустил какие-либо очевидные ошибки.Я беру немного аудио и выполняю некоторую обработку звука в librosa.
Затем концентрирую мои значения в матрице, где с размерами измерений = (n_timesteps, n_features).
Затем я добавляю к этому ось, чтобы иметь форму моего ввода в виде X.shape = (1, n_timesteps, n_features).
Для моих целевых векторов у меня есть классификация повременной шаг, равный 0 или 1, таким образом, создавая мою целевую векторную форму (n_timesteps, 1) с каждым значением класса
Я пытаюсь затем обучить двунаправленный LSTM с 10 примерами обучения (аудиосэмплами) и 10 соответствующими целямивекторы с классом 0 или 1 на каждом временном шаге.
Я борюсь со следующими вещами:
- Я не уверен, как организовать свои данные для обучения каждый разшаг для 0 или 1,
- Все мои учебные примеры имеют разную длину, и я знаю, что могу решить эту проблему с помощью различных методов, таких как заполнение и маскирование, или установив размер ввода как (None, n_features) иbatch_size = 1, как я сделал ниже, но я не уверен, какой метод лучше всего использовать, или правильно ли я делаю этот метод.
- Я не уверен, как передать модель с несколькими траВ приведенных ниже примерах у меня есть 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}}]]