2017-06-24 9 views
0

現在、波を分類するためにCNNをトレーニングしています。コードは完全に機能しますが、ハイパーパラメータチューニング用のGridSearchCVは意図したとおりに動作しません。私はMLPでハイパーパラメータをチューニングするために同様のコードを使用したので、混乱しました。これは完全なコードですが、私はTFをバックエンドとして使用しています。Keras:ハイパーパラメータチューニングのためのGridSearchCV

import pandas as pd 
import numpy as np 

#Import training set 
training_set = pd.read_csv("training_set.csv", delimiter=";") 
X_train = training_set.iloc[:,1:].values 
y_train = training_set.iloc[:,0:1].values 

#Import test set 
test_set = pd.read_csv("test_set_v2.csv", delimiter=";") 
X_test = test_set.iloc[:,1:].values 
y_test = test_set.iloc[:,0:1].values 

from sklearn.preprocessing import StandardScaler 
ss = StandardScaler() 
X_train = ss.fit_transform(X_train) 
X_test = ss.fit_transform(X_test) 

#Convert X into 3D tensor 
X_train = np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1)) 
X_test = np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1)) 

#Importing the CNN libraries 
from keras.models import Sequential 
from keras.layers import Conv1D,MaxPooling1D,Flatten 
from keras.layers import Dropout,Dense 
from keras.layers.normalization import BatchNormalization 

#Parameter tuning 
from keras.wrappers.scikit_learn import KerasClassifier 
from sklearn.model_selection import GridSearchCV 
def build_classifier(optimizer, dropout1, dropout2): 
    classifier = Sequential() 
    classifier.add(Conv1D(filters=4,kernel_size=4,activation='relu',input_shape=(X_train.shape[1],1))) 
    classifier.add(MaxPooling1D(strides=4)) 
    classifier.add(BatchNormalization())  
    classifier.add(Flatten()) 
    classifier.add(Dropout(0.25)) 
    classifier.add(Dense(8, activation='relu')) 
    classifier.add(Dropout(0.25)) 
    classifier.add(Dense(1,activation='sigmoid')) 
    classifier.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) 
    return classifier 

classifier = KerasClassifier(build_fn=build_classifier) 

parameters = {'batch_size': [25,32], 
       'epochs': [5,10], 
       'optimizer': ['adam', 'rmsprop'], 
       'dropout1' : [0.2,0.25,3], 
       'dropout2' : [0.2,0.25,3], 
       } 
grid_search = GridSearchCV(estimator=classifier, 
          param_grid = parameters, 
          scoring = 'accuracy', 
          cv = 10) 
grid_search = grid_search.fit(X_train, y_train) 
best_parameters = grid_search.best_params_ 
best_accuracy = grid_search.best_score_ 

奇妙なことは、完全にエポックで実行されていた場合、次のエラーが発生するということです。

File "C:\Program Files\Anaconda3\lib\site-> >packages\keras\wrappers\scikit_learn.py", line 220, in predict return self.classes_[classes]

IndexError: index 1 is out of bounds for axis 0 with size 1

私を助けることができますか?どんな種類の助けも大歓迎です!ありがとう、たくさんの人!

答えて

0

はgithubのマスターブランチを経て

更新を解決し

関連する問題