Создание RNN с помощью Python Keras

1

Я новичок в машинном обучении и Keras. Я сделал Neural Network с Keras для регрессии, выглядящей так:

model = Sequential()
model.add(Dense(57, input_dim=44, kernel_initializer='normal', 
activation='relu'))
model.add(Dense(45, activation='relu'))
model.add(Dense(35, activation='relu'))
model.add(Dense(20, activation='relu'))
model.add(Dense(18, activation='relu'))
model.add(Dense(15, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(1, activation='linear'))

Мои данные имеют 44 измерения, так что, пожалуйста, дайте мне пример, как я могу сделать RNN. Я пробую вот так:

model = Sequential()
model.add(LSTM(44, input_shape=(6900, 44), ))
model.add(Dense(1))
model.compile(loss='mape', optimizer='adam', metrics=['mse', 'mae', 'mape'])
model.fit(X_train, y_train, epochs=100, batch_size=10, verbose=1)

Но я получаю эту ошибку: Ошибка при проверке ввода: ожидаемый lstm_13_input имеет 3 измерения, но получил массив с формой (6900, 44)

  • 2
    RNN используются для обработки данных, похожих на последовательности, таких как слова в предложениях, временные ряды температуры, последовательности геномов, музыкальные ноты и т. Д. Все это примеры последовательностей. Итак, сначала вы должны иметь данные, подобные последовательности. На каких данных вы работаете?
  • 0
    мои данные выглядят так: scontent.fskp1-1.fna.fbcdn.net/v/t1.0-9/…
Теги:
keras
rnn

1 ответ

1
Лучший ответ

Насколько я понял вас, ваши данные являются 44 мерными, а не временными рядами. RNN представляет собой вычислительные операции над последовательностью данных, т. 2D а не 1D тензор. Но вы все равно можете использовать RNN для 1D векторов, интерпретируя их не как один вектор n -dimensional, а как временной ряд из n шагов, каждый из которых содержит 1D вектор.

model = Sequential()
model.add(Reshape((-1, 1)
model.add(LSTM(44, input_shape=(6900, 44), ))
model.add(Dense(1))
model.compile(loss='mape', optimizer='adam', metrics=['mse', 'mae', 'mape'])
model.fit(X_train, y_train, epochs=100, batch_size=10, verbose=1)
  • 0
    Это работает потрясающе, большое спасибо. Мои данные перед предварительной обработкой выглядят так: scontent.fskp1-1.fna.fbcdn.net/v/t1.0-9/… Итак, я предполагаю, что это временной ряд, должен ли я продолжить с моделью, которую вы мне дали, или внести некоторые изменения к этому?
  • 1
    Поскольку ваши данные действительно являются правильным временным рядом, вы должны внести изменения. Ваши входные данные - это последовательность 14-мерных данных, а целевая серия - одномерная. Поэтому мой ответ выше не очень помогает вам ... Посмотрите здесь , может быть, это поможет вам.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню