使用 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 深度学习模型,但在训练时返回错误

Python:keras 形状不匹配错误

不能将tf.keras.optimizer与tf.keras.models.sequential一起使用

在 keras 模型指标中使用简单的“准确性”进行多类分类在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?

Symfony 4 - 使用 KnpPaginatorBundle 进行多分页渲染?

Keras模型重复输出0,没有错误