Tensorflow 检查目标时出错:预期密集_18具有形状(1),但获得具有形状(10)的数组
我必须将MNIST数据分为10类。我正在将Y_序列转换为一个热编码数组。我已经看过很多答案,但没有一个有用。请在这方面指导我,因为我是ML和神经网络的新手 似乎没有必要在第一层中使用Tensorflow 检查目标时出错:预期密集_18具有形状(1),但获得具有形状(10)的数组,tensorflow,machine-learning,neural-network,Tensorflow,Machine Learning,Neural Network,我必须将MNIST数据分为10类。我正在将Y_序列转换为一个热编码数组。我已经看过很多答案,但没有一个有用。请在这方面指导我,因为我是ML和神经网络的新手 似乎没有必要在第一层中使用model.add(flatte())。您可以使用具有特定输入大小的密集层,如:model.add(密集(64,input\u shape=your\u input\u shape,activation=“relu”) 为了确保由于层的原因而发生此问题,您可以检查To_category()函数是否与jupyter n
model.add(flatte())
。您可以使用具有特定输入大小的密集层,如:model.add(密集(64,input\u shape=your\u input\u shape,activation=“relu”)
为了确保由于层的原因而发生此问题,您可以检查To_category()
函数是否与jupyter notebook单独工作
最新答案
在制作模型之前,你应该重塑你的模型。在这种情况下,28*28到784
Y_train = to_categorical(Y_train, num_classes = 10)#
random_seed = 2
X_train,X_val,Y_train,Y_val = train_test_split(X_train, Y_train, test_size = 0.1, random_state=random_seed)
Y_train.shape
model = Sequential()
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size = 86, epochs = 3,validation_data = (X_val, Y_val), verbose =2)
我还建议通过简单地将图像划分为255来规范化数据
在这一步之后,您应该创建您的模型
train_images = train_images.reshape((-1, 784))
test_images = test_images.reshape((-1, 784))
您是否注意到input\u shape=(784,)
这就是您的扁平输入的形状
最后一步,编译和拟合
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(64, activation='relu'),
Dense(10, activation='softmax'),
])
你要做的是,你刚刚展平了输入层,而没有向网络提供输入。这就是你遇到问题的原因。关键是你应该手动重塑你的输入,并使用参数
input\u shape
前馈到densed()
层。我尝试添加了一个模型。densed的输入形状为(10,)然而,我得到了“检查输入时出错:预计密集的\u 42\u输入有2维,但得到了形状为(34020,28,28,1)的数组”@shreyanshupadhyay,我将更新我的答案以更清楚。感谢您的深入解释
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(
train_images,
train_labels,
epochs=10,
batch_size=16,
)