问题描述
为了好玩,我目前正在研究 Keras 神经网络。我只是在学习基础知识,但无法克服这个尺寸问题:
所以我的输入数据 (X) 应该是一个 12x6 的矩阵,每个时间戳有 12 个时间戳和 6 个不同的数据值:
X = np.zeros([2867,12,6])
Y = np.zeros([2867,3])
现在我想通过以下 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,30) 4440
_________________________________________________________________
dense (Dense) (None,3) 93
=================================================================
Total params: 4,533
Trainable params: 4,533
Non-trainable params: 0
_________________________________________________________________
当我运行这个程序时,我收到这个错误: ValueError: Shapes (None,3) 和 (None,3) 不兼容。
我已经尝试将我的数据重塑为 72x1 的向量,但这也不起作用。
也许有人可以帮助我正确调整输入数据的形状:)
解决方法
在使用 categorical_crossentropy
损失函数时,您可能需要按如下方式定义模型。
model.add(LSTM(30,activation="softsign",return_sequences=False,input_shape=(12,6)))
model.add(Dense(3,activations='softmax'))