2016-07-14 1 views
2

다음과 같은 간단한 데이터 세트가 있습니다. 그것은 9 개의 특징으로 이루어지며 2 진 분류 문제입니다. 특징 벡터의 예는 다음과 같습니다. 각 행에는 해당하는 0,1 레이블이 있습니다.9 차원 특성 벡터에 대한 네트워크를 구축하는 Keras

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 
... 

CNN이 이미지 분류에 광범위하게 사용된다는 것을 알고 있지만 필자가 직접 사용해 본 데이터 세트에 적용하려고합니다. 나는 각각 크기 5의 필터 5 개를 적용하려고 노력하고 있습니다.이 데이터의 모양을 고려할 때 올바른 방식으로 네트워크를 구축해야합니다. 다음은 네트워크를 구축하는 제 기능입니다.

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의 코드를 적용하려고합니다. 어떤 도움이나 조언을 많이 주시면 감사하겠습니다. 미리 감사드립니다.

+0

(9 4604) (4604, 1, 9) – y300

답변

1

코드 model.add(Convolution1D(5,2,border_mode='same',input_shape=(1,num_features)))은 입력이 모양이 (batch_size, 1, num_features)이어야한다고 정의합니다. 그러나 X_trainX_test의 모양이 일치하지 않는 (batch_size, 9) 일 수 있습니다.

def train_model(model, X_train, Y_train, X_test, Y_test): 
    X_train = X_train.reshape(-1, 1, 9) 
    X_test = X_test.reshape(-1, 1, 9) 

    .... 
+0

덕분에에서 X_train 입력을 고쳐 만드십시오. 그게 효과가 있었어. 나는 단지 데이터 형성에 관한 더 많은 예제가 있었으면 좋겠다. – broccoli

관련 문제