【发布时间】:2025-11-26 02:30:01
【问题描述】:
我无法使用 Keras 将我的数据分类为 RNN 的正确格式。 我有一个包含 22 列、1344 行的 csv 文件。 我的数据是数周内每隔 30 分钟记录一次的连续变量。
我了解 keras 需要输入格式(样本数、时间步长、nfeatures) 因此,对于我的数据,我将其视为 (1344,48,22) (因为我的数据在 24 小时内有 48 个读数)。
从 csv 导入时,x 数据的形状为 (1344,22)。
这是我的代码:
model=Sequential()
model.add(LSTM(21, input_shape=(1344,22),kernel_initializer='normal',activation='relu',return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(19, activation='relu')) #hidden layer 2
model.add(Dropout(0.2))
model.add(Dense(8, activation='relu')) #output layer
model.compile(loss='mean_squared_error', optimizer=optimiser,metrics=['accuracy','mse'])
导致错误 检查输入时出错:预期 lstm_1_input 为 3 维,但得到的数组形状为 (1344, 22)
我尝试通过添加嵌入层将 x 数据转换为正确的数据。 我的代码现在是:
model=Sequential()
model.add(Embedding(input_dim=22,input_length=1344,output_dim=48))
model.add(LSTM(21, input_shape=(1344,22), kernel_initializer='normal',activation='relu',return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(19, activation='relu')) #hidden layer 2
model.add(Dropout(0.2))
model.add(Dense(8, activation='relu')) #output layer
model.compile(loss='mean_squared_error', optimizer=optimiser,metrics=['accuracy','mse'])
history=model.fit(x,y, verbose=0,epochs=150, batch_size=70, validation_split=0.2)
导致错误: 检查输入时出错:预期 embedding_1_input 的形状为 (1344,),但数组的形状为 (22,)。
我不确定我是否完全理解了嵌入层或(num samples. timesteps, nfeatures)的含义。 有人可以参考我的数据解释 input_dim、input_length 和 output_dim 的含义吗?我阅读了有关此问题的许多其他帖子,但似乎无法解决将问题应用于我的数据类型的问题!
非常感谢您的帮助。
【问题讨论】:
标签: python keras recurrent-neural-network