ワインのデータを分類するためのモデルを作成しています。コーディングも初めてです。出力変数に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
keras.utils.to_categorical
指定されたラベルに指定したクラスよりも多くのクラスが含まnum_classes
れている場合(このclassifications
場合は渡しています)、この例外が発生します。
あなたはで確認することができます
print(np.unique(Y)) # or y_test / y_train
本当に6つの一意のクラスラベルがあるかどうか、および「ギャップ」があるかどうか。先に進む前に、txtから読み取っているラベルをクリーンアップする必要がある可能性があります。
2番目の質問について:
さらに、モデルを実行すると学習が非常に遅くなりますが、どうすればこれを修正できますか?
他のモデルよりも遅いなど、自分にとって遅いとはどういう意味かについて、より具体的にする必要がありますか?他のシステムより遅いですか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加