我如何为 keras 模型正确塑造我的输入数据?

How do i correctly shape my input data for a keras model?

我目前正在研究 Keras 神经网络,只是为了好玩。我只是在学习基础知识,但无法解决这个维度问题:

所以我的输入数据 (X) 应该是一个 12x6 矩阵,每个时间戳有 12 个时间戳和 6 个不同的数据值:

X = np.zeros([2867, 12, 6])
Y = np.zeros([2867, 3])

我的输出 (Y) 应该是单热编码的 3x1 向量。

现在我想通过以下 LSTM 模型提供这些数据。

model = Sequential()
model.add(LSTM(30, activation="softsign", return_sequences=True, input_shape=(12, 6)))
model.add(Dense(3))
model.summary()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x=X, y=Y, batch_size=100, epochs=1000, verbose=2, validation_split=0.2)

摘要如下所示:

模型:“顺序”


Layer (type)                 Output Shape              Param #   
=================================================================
lstm (LSTM)                  (None, 12, 30)            4440      
_________________________________________________________________
dense (Dense)                (None, 12, 3)             93        
=================================================================
Total params: 4,533
Trainable params: 4,533
Non-trainable params: 0
_________________________________________________________________

当我 运行 这个程序时,我得到这个错误: ValueError:形状 (None, 3) 和 (None, 12, 3) 不兼容。

我已经尝试将我的数据重塑为 72x1 向量,但这也不起作用。

也许有人可以帮助我如何正确调整输入数据:)。

您可能需要按如下方式定义您的模型,因为您使用了 categorical_crossentropy 损失函数。

model.add(LSTM(30, activation="softsign", 
           return_sequences=False, input_shape=(12, 6)))
model.add(Dense(3, activations='softmax'))