2016-07-14 8 views
2

私は以下の簡単なデータセットを持っています。それは9つの特徴から成り立ち、バイナリ分類の問題である。特徴ベクトルの一例を以下に示す。各行には対応する0,1ラベルがあります。私はCNNsを知っ 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 
... 

は、画像分類のために広く使用されているが、私は私が手にしたデータセットに適用しようとしています。私はサイズ2のフィルターを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')) 

最後に、私が作成したモデルの精度をテストするテスト関数を呼び出します。次の関数は、私がKerasに新たなんだ、私はモデルを作成し、それをトレーニング機能を渡すと

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) 

を得ることを達成しようとします。私はhereからコードを適用しようとしています。どのような助けや指針をいただければ幸いです。前もって感謝します。

+0

(、1、4604 9)に(9、4604)から – y300

答えて

1

お客様のコードmodel.add(Convolution1D(5,2,border_mode='same',input_shape=(1,num_features)))は、入力が形状(batch_size, 1, num_features)である必要があると定義しています。ただし、X_trainおよびX_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

関連する問題