使用 keras 错误在 Python 中进行多分类
Posted
技术标签:
【中文标题】使用 keras 错误在 Python 中进行多分类【英文标题】:Multiclassification in Python using keras error 【发布时间】:2018-04-12 04:47:22 【问题描述】:我是 python 新手,尝试对具有 100 个实例和 9 列的 iris.csv 数据集进行多分类。我收到此错误并搜索此错误并应用解决方案,但对我没有任何帮助。请帮助
Traceback(最近一次调用最后一次):文件“iris.py”,第 48 行,在 model.fit(X, dummy_y, epochs=200, batch_size=5) 文件“C:\Users\HP\Anaconda2\lib\site-packages\keras\models.py”,第 871 行, 合身 initial_epoch=initial_epoch) 文件 "C:\Users\HP\Anaconda2\lib\site-packages\keras\engine\training.py", 第 1525 行,合适 batch_size=batch_size) 文件 "C:\Users\HP\Anaconda2\lib\site-packages\keras\engine\training.py", 第 1383 行,在 _standardize_user_data 中 exception_prefix='target') 文件 "C:\Users\HP\Anaconda2\lib\site-packages\keras\engine\training.py", 第 144 行,在 _standardize_input_data str(array.shape)) ValueError: 检查目标时出错:预期dense_2 的形状为(None, 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))
【问题讨论】:
分享数据集 osdn.net/projects/sfnet_irisdss/downloads/IRIS.csv 数据集链接 【参考方案1】:解决方案 1:
将损失函数更改为categorical_crossentropy
。
解决方案 2:
使用encoded_Y
训练您的模型。 sparse_categorical_crossentropy
不需要热编码标签。
【讨论】:
以上是关于使用 keras 错误在 Python 中进行多分类的主要内容,如果未能解决你的问题,请参考以下文章
使用 Embedding 层创建 Keras 深度学习模型,但在训练时返回错误
不能将tf.keras.optimizer与tf.keras.models.sequential一起使用
在 keras 模型指标中使用简单的“准确性”进行多类分类在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?