我是机器学习和Keras的新手。我用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维向量,而是解释为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)

关于python - 使用Keras Python创建RNN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52024954/

10-12 21:22