【问题标题】:Creating an RNN with Keras Python使用 Keras Python 创建 RNN
【发布时间】:2018-08-26 09:33:25
【问题描述】:

我是机器学习和 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)

【问题讨论】:

  • RNN 用于处理类似序列的数据,如句子中的单词、天气温度的时间序列、基因组序列、音符等。所有这些都是序列的示例。所以首先你应该有一个类似序列的数据。您正在处理的数据是什么?
  • 我的数据如下所示:scontent.fskp1-1.fna.fbcdn.net/v/t1.0-9/…

标签: python keras rnn


【解决方案1】:

据我了解,您的数据是 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)

【讨论】:

  • 这非常棒,非常感谢。我在预处理之前的数据是这样的:scontent.fskp1-1.fna.fbcdn.net/v/t1.0-9/…所以我猜是一个时间序列,我应该继续使用你给我的模型还是对其进行一些更改?
  • 由于您的数据确实是一个适当的时间序列,您应该进行更改。您的输入数据是一个 14 维数据序列,而您的目标系列是一维数据。因此,我上面的回答并不能真正帮助你......看看here,也许这对你有帮助。
  • 是的,我看到了这个例子,但我不明白我应该如何更改我的数据,因为这里它显示了 2 维的 X,而我在预处理数据后有 49 个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2021-06-24
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 2018-10-31
相关资源
最近更新 更多