DNNのグリッドサーチを模倣して、CNNのグリッドサーチのプログラミングを実施したのですが、エラーが発生します。
どうも、このエラーの意味がよく理解できません。。
CNNではうまく動作するのですが、何故でしょうか?
そもそも、CNNでグリッドサーチはできないのでしょうか?
お詳しい方、ご指導をお願いします。
def create_model(optimizer='rmsprop', init='glorot_uniform'): model = Sequential() model.add(Conv2D(64, (3, 3), padding='same',input_shape=x_train.shape[1:])) model.add(Activation('relu')) model.add(Conv2D(64, (3, 3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Conv2D(64, (3, 3), padding='same')) model.add(Activation('relu')) model.add(Conv2D(64, (3, 3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(64)) model.add(Activation('relu')) model.add(Dropout(0.25)) model.add(Dense(dense_size)) model.add(Activation('softmax')) model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy']) return model
from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV model = KerasClassifier(build_fn=create_model, verbose=0) optimizers = ['adam']# optimizers = ['rmsprop', 'adam', 'sgd', 'adagrad'] init = ['normal']# init = ['glorot_uniform', 'normal', 'uniform'] epochs = [50] batches = [8] param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init) grid = GridSearchCV(estimator=model, param_grid=param_grid,n_jobs=-1) grid_result = grid.fit(x_train, y_train) print(grid.best_params_) print(grid.best_score_)
以下、エラーメッセージです(中間表示省略)。
ValueError Traceback (most recent call last) <ipython-input-10-eb910e579a23> in <module> 13 init=init) 14 grid = GridSearchCV(estimator=model, param_grid=param_grid,n_jobs=-1) ---> 15 grid_result = grid.fit(x_train, y_train) 16 17 # summarize results --- ValueError: Error when checking target: expected activation_6 to have shape (1,) but got array with shape (3,)
あなたの回答
tips
プレビュー