如何在python+慢速学习模型中修复此代码的索引错误?

2024-04-19 10:49:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个模型来对葡萄酒数据进行分类。 我对编码也很陌生。 我有6个不同的类的输出变量,但我得到一个索引错误。你知道吗

我该怎么解决这个问题? 此外,当我执行模型时,学习速度非常慢,如何解决这个问题?下面是代码+错误

from sklearn.model_selection import train_test_split
import keras
from keras.models import Sequential
from keras.layers import Dense 
from keras.layers import Dropout
import numpy as np

np.random.seed(3)

# number of wine classes
classifications = 6

# load dataset
dataset = np.loadtxt('winered.csv', delimiter=",")

# split dataset into sets for testing and training
X = dataset[:,1:12]
Y = dataset[:,0:1]
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=5)

# convert output values to one-hot
y_train = keras.utils.to_categorical(y_train-1, classifications)
y_test = keras.utils.to_categorical(y_test-1, classifications)


# creating model
model = Sequential()
model.add(Dense(10, input_dim=11, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(6, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(6, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='relu'))
model.add(Dense(classifications, activation='softmax'))

# compile and fit model
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=15, epochs=5000, validation_data=(x_test, y_test))

Expected that model would run but instead got the following error: 

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-15-86f94430e936> in <module>()
     20 
     21 # convert output values to one-hot
---> 22 y_train = keras.utils.to_categorical(y_train-1, classifications)
     23 y_test = keras.utils.to_categorical(y_test-1, classifications)
     24 

/anaconda3/lib/python2.7/site-packages/keras/utils/np_utils.pyc in to_categorical(y, num_classes, dtype)
     32     n = y.shape[0]
     33     categorical = np.zeros((n, num_classes), dtype=dtype)
---> 34     categorical[np.arange(n), y] = 1
     35     output_shape = input_shape + (num_classes,)
     36     categorical = np.reshape(categorical, output_shape)

IndexError: index 6 is out of bounds for axis 1 with size 6

Tags: totestimportaddmodelnptrainutils
1条回答
网友
1楼 · 发布于 2024-04-19 10:49:12

keras.utils.to_categorical当给定的标签包含的类多于指定的num_classes(在本例中是传递的classifications)时,会引发此异常。你知道吗

你可以跟我核实一下

print(np.unique(Y))  # or y_test / y_train

你是否真的只有6个独特的类标签,如果有任何“差距”。这可能是因为在继续之前,您需要清除从txt中读取的标签。你知道吗

关于你的第二个问题:

Furthermore, when I execute the model it is very slow learning, how can I fix this?

您需要更具体地说明对您意味着什么,例如,比另一个模型慢?比另一个系统慢?你知道吗

相关问题 更多 >