Изменить форму ввода модели LSTM - PullRequest
0 голосов
/ 30 апреля 2020

Привет всем, я пытаюсь построить модель для предсказания эмоций в речи. Поскольку аудио имеет разную длину, матрицы функций также имеют разную длину, и поэтому у меня есть переменный временной шаг. На других ответах я прочел, что могу оставить форму ввода LSTM следующим образом: model.add(LSTM(1, input_shape=(None, 31)))

Затем мне нужно изменить форму входных данных тренировки, это список двумерных массивов переменной длины временного шага (Tx, Возможности ) в список трехмерных массивов длины (1, Tx, Features) для Model.fit()

Я надеюсь, логика c, стоящая за тем, что я делаю, верна, но в любом случае я получаю ошибку при изменении формы. Я убедился, что типы были правильными, я не знаю, в чем может быть проблема, вот код:

def rnn(x_train, x_test, y_train, y_test):

    for e in x_train:
        print(type(e))
        print(type(e.shape[0]))
        print(type(e.shape[1]))
        x_train[e]=np.reshape(e,(1,e.shape[0],e.shape[1]))

    model = Sequential()

    model.add(LSTM(1, input_shape=(None, 31)))
    model.add(Dropout(0.2))

    model.add(Dense(32, activation='relu'))
    model.add(Dropout(0.2))

    model.add(Dense(5, activation='softmax'))

    opt = tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5)

    model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

    model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1434, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/mp95/PycharmProjects/Thesis/Main.py", line 16, in <module>
    rnn(x_train, x_test, y_train, y_test)
  File "C:\Users\mp95\PycharmProjects\Thesis\models.py", line 15, in rnn
    x_train[e]=np.reshape(e,(1,e.shape[0],e.shape[1]))
TypeError: only integer scalar arrays can be converted to a scalar index
<class 'numpy.ndarray'>
<class 'int'>
<class 'int'>

Большое спасибо, мой набор данных небольшой (450 примеров) также любые другие советы о том, что мне делать с моделью, очень приветствуются, так как я новичок в этом деле!

1 Ответ

0 голосов
/ 01 мая 2020

Я также новичок в этом, но из того, что я нашел: Вход в LSTM является 3-D [образцы, временные шаги, функции]. Для получения дополнительной информации, пожалуйста, посетите эту ссылку: https://stats.stackexchange.com/questions/264546/difference-between-samples-time-steps-and-features-in-neural-network Также Я думаю, что ваша проблема в этой строке x_train [e] = np.reshape (e, (1, e.shape [0], e.shape [1])) Возможно, размеры неверны

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