keras 提供了sklearn 的接口,我們可以很方便的將我們搭建的模型進(jìn)行封裝,這樣的話就可以調(diào)用sklearn中非常方便的類例如交叉驗證、網(wǎng)格搜索等功能。下面我貼一下利用網(wǎng)格搜索尋找最佳神經(jīng)元數(shù)目的代碼,大家一看就能明白該怎么用。
from sklearn.model_selection import GridSearchCV
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.wrappers.scikit_learn import KerasClassifier
def create_model(neurons1,neurons2):
# create model
model = Sequential()
model.add(Dense(neurons1, input_dim=8, kernel_initializer='uniform', activation='linear', kernel_constraint=maxnorm(4)))
model.add(Dropout(0.2))
model.add(Dense(neurons2, kernel_initializer='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model, epochs=100, batch_size=10, verbose=0) #這里就封裝好了,大家直接把model當(dāng)做sklearn的一個類的對象來用就行
neurons1 = [1, 5, 10, 15, 20, 25, 30]
neurons2 = [1, 5, 10, 15, 20, 25, 30]
param_grid = dict(neurons1=neurons1,neurons2=neurons2)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1)
參考:https://keras-cn.readthedocs.io/en/latest/scikit-learn_API/