У меня есть следующий простой набор данных. Он состоит из 9 функций и является проблемой двоичной классификации. Пример векторов признаков показан ниже. Каждая строка имеет соответствующую метку 0,1.Keras, создающий сеть для 9-мерного вектора функций
30,82,1,2.73,172,117,2,2,655.94
30,174,1,5.8,256,189,3,2,587.28
98.99,84,2,0.84,577,367,3,2,1237.34
30,28,1,0.93,38,35,2,1,112.35
...
Я знаю CNNs широко используется для классификации изображений, но я стараюсь, чтобы применить его к набору данных, я под руку. Я пытаюсь применить 5 фильтров каждый размером 2. Я застрял в том, чтобы создать сеть, которая будет построена правильно, учитывая форму этих данных. Вот моя функция, которая строит сеть.
def make_network(num_features,nb_classes):
model = Sequential()
model.add(Convolution1D(5,2,border_mode='same',input_shape=(1,num_features)))
model.add(Activation('relu'))
model.add(Convolution1D(5,2,border_mode='same'))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(2))
model.add(Activation('softmax'))
Я также, наконец, вызову функцию тестирования, чтобы проверить точность модели, которую я создал. Следующая функция пытается достичь этой
def train_model(model, X_train, Y_train, X_test, Y_test):
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.3, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
model.fit(X_train, Y_train, nb_epoch=100, batch_size=10,
validation_split=0.1, verbose=1)
print('Testing...')
res = model.evaluate(X_test, Y_test,
batch_size=batch_size, verbose=1, show_accuracy=True)
print('Test accuracy: {0}'.format(res[1]))
Когда я сделать модель и передать его функции обучения я получаю следующую ошибку
Using Theano backend.
Traceback (most recent call last):
File "./cnn.py", line 69, in <module>
train_model(model,x_train,y_train,x_test,y_test)
File "./cnn.py", line 19, in train_model
validation_split=0.1, verbose=1)
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 413, in fit
sample_weight=sample_weight)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1011, in fit
batch_size=batch_size)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 938, in _standardize_user_data
exception_prefix='model input')
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 96, in standardize_input_data
str(array.shape))
Exception: Error when checking model input: expected convolution1d_input_1 to have 3:(None, 1, 9) dimensions, but got array with shape (4604, 9)
Я новичок в Keras
. Я пытаюсь адаптировать код от here. Любая помощь или указатели будут высоко оценены. Заранее спасибо.
Переформуйте ввод X_train из (4604, 9) в (4604, 1, 9) – y300