ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))

ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))

我正在使用 LSTMS 来预测我们(机器人)是否应该根据 2 个因素购买东西。所以我的 X 由一个 numpy 数组组成,每个数组由单独的 numpy 数组组成,每个数组都有一个 2 的 numpy 数组。因为这令人困惑,它看起来像 np.array(np.array(np.array([item,item ]),np.array([item,item])),np.array(np.array([item,item]),np.array([item,item])))

我的 y 值是一个 0 和 1 列表的 numpy 数组。一个例子是

[[1]
 [0]
 [0]
 ...
 [0]]

这是我的模型


model = Sequential()
model.add(LSTM(128,input_shape=(30,2),return_sequences=True))
model.add(Dropout(0.1))

model.add(LSTM(128,return_sequences=True))
model.add(Dropout(0.2))

model.add(LSTM(128))
model.add(Dropout(0.1))

model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(64,activation='relu'))
model.add(Dense(2,activation='softmax'))
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
model.fit(seqs,buy_sell,epochs=200,callbacks=[tensboard])

和我的回溯

ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))

我正在考虑重塑我的 X/y 但这不会影响模型。我将如何解决这个问题?

损失函数和这个有关系吗?

添加到我的评论中,如果您出于任何原因想要坚持 softmax 激活(您将来可能会有更多 类),请将最后一行代码修改为:

model.fit(seqs, tf.keras.utils.to_categorical(buy_sell,  num_classes=2), epochs=200, callbacks=[tensboard])