使用keras错误在Python中进行多分类

使用keras错误在Python中进行多分类,python,neural-network,deep-learning,keras,Python,Neural Network,Deep Learning,Keras,我是python新手,尝试在iris.csv数据集上进行多分类,该数据集有100个实例和9列。我得到了这个错误,搜索了这个错误并应用了解决方案,但对我来说没有任何效果。。请帮忙 回溯(最后一次调用):文件“iris.py”,第48行,在 model.fit(X,dummy,epochs=200,batch\u size=5)文件“C:\Users\HP\Anaconda2\lib\site packages\keras\models.py”,第871行, 合拍 initial\u epoch=i

我是python新手,尝试在iris.csv数据集上进行多分类,该数据集有100个实例和9列。我得到了这个错误,搜索了这个错误并应用了解决方案,但对我来说没有任何效果。。请帮忙

回溯(最后一次调用):文件“iris.py”,第48行,在 model.fit(X,dummy,epochs=200,batch\u size=5)文件“C:\Users\HP\Anaconda2\lib\site packages\keras\models.py”,第871行, 合拍 initial\u epoch=initial\u epoch)文件“C:\Users\HP\Anaconda2\lib\site packages\keras\engine\training.py”, 第1525行,合适的 batch\u size=batch\u size)文件“C:\Users\HP\Anaconda2\lib\site packages\keras\engine\training.py”, 第1383行,输入用户数据 异常文件“C:\Users\HP\Anaconda2\lib\site packages\keras\engine\training.py”, 第144行,输入数据 str(array.shape))ValueError:检查目标时出错:预期密集_2具有形状(无,1),但获得具有形状(100L,3L)的数组

这是我的密码

import numpy
import pandas
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.cross_validation import cross_val_score, KFold
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline

# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)

# load dataset
dataframe = pandas.read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:8].astype(float)
Y = dataset[:,8]
print(X)
print(Y)

#encode class values as integers
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)


# convert integers to dummy variables (hot encoded)
dummy_y = np_utils.to_categorical(encoded_Y)
print(dummy_y)


# create model
model = Sequential()
model.add(Dense(8, input_dim=8, activation='relu'))
model.add(Dense(3, activation='sigmoid'))


# Compile model
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])


#model.fit
model.fit(X, dummy_y, epochs=200, batch_size=5)


#print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

解决方案1: 将损失函数更改为
categorical\u crossentropy

解决方案2:
使用
encoded_Y
训练您的模型<代码>稀疏\u分类\u交叉熵不需要热编码标签。

共享数据集链接