Python 如何修复最后一层形状的不一致性“;检查目标时出错:预期稠密“具有形状xx,但获得具有形状yy的数组”;

Python 如何修复最后一层形状的不一致性“;检查目标时出错:预期稠密“具有形状xx,但获得具有形状yy的数组”;,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,我是深度学习和TensorFlow的新手,但仍然无法理解层与层输出之间的关系。我正在研究时间序列的二进制分类,并得到以下错误。我想知道出现此错误的原因是什么,我应该在体系结构中检查哪些项目以避免出现此错误: Error when checking target: expected dense_68 to have shape (1,) but got array with shape (24,) 我有一个具有以下大小的简单数据集: xTrain (32,24) # 32 training ob

我是深度学习和TensorFlow的新手,但仍然无法理解层与层输出之间的关系。我正在研究时间序列的二进制分类,并得到以下错误。我想知道出现此错误的原因是什么,我应该在体系结构中检查哪些项目以避免出现此错误:

Error when checking target: expected dense_68 to have shape (1,) but got array with shape (24,)
我有一个具有以下大小的简单数据集:

xTrain (32,24) # 32 training observations with 24 features
yTrain (32,1) # 32 training binary label (0 or 1)
xTest (16,24) 
yTest (16,1)
我的架构如下所示:

model = Sequential()
model.add(Dense(100, activation='relu', input_dim=24))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(xTrain, yTrain, validation_data=(xTest, yTest), epochs=10, batch_size=2)

由于
yTrain
yTest
的大小是1,并且在最后一个密集层中,我将单位大小设置为1,我想知道为什么我得到的错误是数组的形状(24),这等于我的特征大小作为错误。

我复制粘贴了你的代码,并创建了具有相同形状的数据集。模型正确地开始训练,所以我认为你只是在某处有一个输入错误/错误

我的代码是:

import numpy as np
from keras import Sequential
from keras.layers import Dense

xTrain = np.zeros((32,24)) # 32 training observations with 24 features
yTrain = np.zeros((32,1)) # 32 training binary label (0 or 1)
xTest = np.zeros((16,24))
yTest = np.zeros((16,1))

model = Sequential()
model.add(Dense(100, activation='relu', input_dim=24))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(xTrain, yTrain, validation_data=(xTest, yTest), epochs=10, batch_size=2)

是的,这看起来很奇怪,你确定你给我们的形状是正确的,并且你正确地传递了x和y吗?如果在model.fit中将xTrain作为y传递,则会产生错误
import numpy as np
from keras import Sequential
from keras.layers import Dense

xTrain = np.zeros((32,24)) # 32 training observations with 24 features
yTrain = np.zeros((32,1)) # 32 training binary label (0 or 1)
xTest = np.zeros((16,24))
yTest = np.zeros((16,1))

model = Sequential()
model.add(Dense(100, activation='relu', input_dim=24))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(xTrain, yTrain, validation_data=(xTest, yTest), epochs=10, batch_size=2)