У меня есть набор данных из 600 строк и 271 столбца (последний столбец содержит класс). Каждая строка содержит вредоносные функции и метку своего класса. Я пишу код Convolutional Neural Network для предсказания этих классов. Всего 9 классов. Ниже мой код:
dataset = pd.read_csv('train.csv')
X = dataset.iloc[:, 0:270].values
y = dataset.iloc[:, 270].values
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
model = Sequential()
model.add(Convolution1D(64, 10, input_shape=(643,270)))
model.add(Activation('relu'))
model.add(MaxPooling1D(1))
model.add(Flatten())
model.add(Dense(100))
model.add(Dropout(0.5))
model.add(Dense(9))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
X_train = np.reshape(X_train, (1, X_train.shape[0], X_train.shape[1]))
X_test = np.reshape(X_test, (1, X_test.shape[0], X_test.shape[1]))
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
model.fit(X_train,y_train,validation_data=(X_test,y_test))
print(str(model.evaluate(x_test,y_test)))
Здесь я получаю сообщение об ошибке:
model.fit(X_train,y_train,validation_data=(X_test,y_test))
Error: Error when checking target: expected activation_2 to have shape (None, 9)
but got array with shape (643, 10)
из-за "y_train", который не в нужной форме для тренировок. Может кто-нибудь объяснить мне, как решить эту проблему и изменить форму y_train для успешного обучения?
EDIT:
После изменения input_shape
на фигуру второго и третьего измерения ошибка теперь изменяется на:
fValueError: Error when checking target: expected activation_2 to have shape (None, 1)
but got array with shape (643, 10)
Пожалуйста, какое-нибудь решение для этой проблемы?
Спасибо!