Keras ValueError:预期稠密_1具有形状(3),但获得具有形状(4)的数组

Keras ValueError:预期稠密_1具有形状(3),但获得具有形状(4)的数组,keras,Keras,我一直在试图弄清楚如何在从.csv文件读取数据时使用Keras[1]。我有以下代码: dataframe = pd.read_csv("iris.csv", header=None) dataset = dataframe.values X = dataset[:, 0:4].astype(float) Y = dataset[:, 4] # encode class values as integers encoder = LabelEncoder() encoder.fit(Y) enco

我一直在试图弄清楚如何在从.csv文件读取数据时使用Keras[1]。我有以下代码:

dataframe = pd.read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:, 0:4].astype(float)
Y = dataset[:, 4]

# encode class values as integers
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
# convert integers to dummy variables (i.e. one hot encoded)
one_hot_y = keras.utils.to_categorical(encoded_Y)

X_train = X[:100]
X_test = X[50:]

Y_train = one_hot_y[:100]
Y_test = one_hot_y[50:]

print(X_train.shape)


# define baseline model
def baseline_model():
    # create model
    model = keras.models.Sequential()
    model.add(keras.layers.Dense(8, input_shape=(4, ), activation='relu'))
    model.add(keras.layers.Dense(3, activation='softmax'))
    # Compile model
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

model = baseline_model()

history = model.fit(X_train, X_test, epochs=5)

test_loss, test_acc = model.evaluate(Y_train, Y_test)
print('Test accuracy:', test_acc)
但是,当我运行此命令时,会出现以下错误:

ValueError: Error when checking target: expected dense_1 to have shape (3,) but got array with shape (4,)
我觉得这很奇怪,因为我确定要设置输入_shape=(4,)。在此方面的任何帮助都将不胜感激

[1] CSV如下所示:

5.1,3.5,1.4,0.2,刚毛鸢尾

您只有3个输出神经元,但您使用的数据显然有4个类,因此您需要更改此行:

model.add(keras.layers.Dense(3, activation='softmax'))
从3个输出类到4个输出类:

model.add(keras.layers.Dense(4, activation='softmax'))

你需要将错误编辑为第二密集层中的显示错误,并且你已经将其发布为第一密集层。我只是复制了我收到的错误,并且可以向你保证它显示为“密集层1”。实际上,我说过,因为我试图复制错误,错误是相同的,但在密集层2中。但这并不重要,因为问题已经解决了