Изменение формы этикетки для CNN - PullRequest
0 голосов
/ 09 мая 2018

Я столкнулся с проблемой при преобразовании данных, чтобы они поместились в сверточную нейронную сеть. Я перепробовал много решений, но все еще не смог этого сделать. Набор данных Содержит 800 строк и 271 столбец (последний столбец содержит метку класса). Всего 9 классов. Ниже мой код:

 dataset = pd.read_csv('train.csv')

 X = dataset.iloc[:, 0:270].values
 y = dataset.iloc[:, 270].values

 print("X Shape: "+str(X.shape))  ---> (804, 270)

 *** Reshaping Variables here

 X_train, X_test, y_train, y_test = train_test_split(X_reshaped, Y_reshaped, test_size = 0.20)

 model = Sequential()
 model.add(Convolution1D(64, kernel_size=(10), input_shape=(X_train.shape[1],X_train.shape[2])))
 model.add(Activation('relu'))
 model.add(MaxPooling1D(3))
 model.add(Flatten())
 model.add(Dense(100))
 model.add(Dropout(0.5))
 model.add(Dense(9))
 model.add(Activation('softmax'))
 model.compile(loss='sparse_categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
 model.fit(X_train,y_train,validation_data=(X_test,y_test))
 print(str(model.evaluate(x_test,y_test)))

Есть ли способ успешно изменить форму переменных для обучения модели? Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Convolutional1D предназначен для обработки временных данных, и у вас их нет. Вам нужно разбить ваши данные на количество выборок и временные шаги

0 голосов
/ 09 мая 2018

Convolution1D требует ввода вида

(samples, steps, input_dim)

Прямо сейчас вы проходите

(samples,input_dim)

Вам необходимо изменить форму данных в зависимости от того, как вы организовали временные шаги в 800 строках.

Например, если 800 строк - это 80 выборок по 10 временных шагов, как 10 временных шагов первой выборки, за которыми следуют 10 других шагов ...
тогда вам нужно изменить форму как (80,10,270)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...