Я новичок в машинном обучении и 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)
Насколько я понял вас, ваши данные являются 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)