Python 检查目标时出错:预期密集_2具有形状(3),但获得具有形状(1)的数组

Python 检查目标时出错:预期密集_2具有形状(3),但获得具有形状(1)的数组,python,keras,Python,Keras,我更改了数据类型,但无法解决错误 我尝试了一种热编码,但它也不起作用 我不知道怎么了:( 错误;检查目标时出错:预期稠密_2具有形状(3),但获得具有形状(1)的数组 在此处检测到;model.fit(X[序列索引],Y[序列索引],历代=100,批次大小=2) 我该怎么办?TensorFlow已经在稠密层上做了一些记录,如果你不说input\u dim说input\u shape,你可以指定首选的形状。 然后,当您添加另一个密集层时,实际上不必提供输入 model.add(Dense(10)

我更改了数据类型,但无法解决错误

我尝试了一种热编码,但它也不起作用

我不知道怎么了:(

错误;检查目标时出错:预期稠密_2具有形状(3),但获得具有形状(1)的数组

在此处检测到;model.fit(X[序列索引],Y[序列索引],历代=100,批次大小=2)


我该怎么办?

TensorFlow已经在稠密层上做了一些记录,如果你不说input\u dim说input\u shape,你可以指定首选的形状。

然后,当您添加另一个密集层时,实际上不必提供输入

model.add(Dense(10))
我解决了这个问题

在这个代码中

model.fit(X[train_index], Y[train_index], epochs=100, batch_size=2)
“Y[train_index]”中的行数必须为3,因为类为3

由于每个Y[train_index]只有一行,因此出现了错误

因此,我使用了一个热编码,并像这样更改了代码

e = LabelEncoder()
e.fit(Y_Eva)
Y = e.transform(Y_Eva)
Y_encoded = np_utils.to_categorical(Y) # changed code

K = 10 
kFold = StratifiedKFold(n_splits=K, shuffle=True, random_state=seed) 

accuracy = []

for train_index, test_index in kFold.split(X,Y):
    model = Sequential() 
    model.add(Dense(32, input_dim=5, activation='relu')) 
    model.add(Dense(16, activation='relu')) 
    model.add(Dense(3, activation='softmax'))
    model.compile(loss='categorical_crossentropy', 
              optimizer='adam', 
              metrics=['accuracy'])
    model.fit(X[train_index], Y_encoded[train_index], epochs=100, batch_size=2) # changed code

最后,我能够运行代码。

很抱歉让您感到困惑。我更改了输入数据类型,而不是input\u shape或input\u dim。无论如何,它不起作用,但您输入的形状只有5或[batch\u size,5]?只有5。batch size为2,epoch为100,然后您需要将输入形状更改为[batch\u size,5]我用另一种方式解决了这个问题。无论如何,谢谢你!
model.fit(X[train_index], Y[train_index], epochs=100, batch_size=2)
e = LabelEncoder()
e.fit(Y_Eva)
Y = e.transform(Y_Eva)
Y_encoded = np_utils.to_categorical(Y) # changed code

K = 10 
kFold = StratifiedKFold(n_splits=K, shuffle=True, random_state=seed) 

accuracy = []

for train_index, test_index in kFold.split(X,Y):
    model = Sequential() 
    model.add(Dense(32, input_dim=5, activation='relu')) 
    model.add(Dense(16, activation='relu')) 
    model.add(Dense(3, activation='softmax'))
    model.compile(loss='categorical_crossentropy', 
              optimizer='adam', 
              metrics=['accuracy'])
    model.fit(X[train_index], Y_encoded[train_index], epochs=100, batch_size=2) # changed code