我已经知道如何使用tensorboard和model.fit(),当我转移到KerasClassifier时我不知道如何使用它,我的代码:
import keras as keras
import numpy
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
#WHERE TO USE IT?!
tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
# load network packets dataset
dataset = numpy.loadtxt("temp.csv", delimiter=",")
X = dataset[:, 0:11].astype(float)
Y = dataset[:, 11]
def create_baseline():
model = Sequential()
model.add(Dense(11, input_dim=11, kernel_initializer='normal', activation='relu'))
model.add(Dense(7, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
estimators = []
estimators.append(('standardize', StandardScaler()))
classifier = KerasClassifier(build_fn=create_baseline, nb_epoch=150, batch_size=5, verbose=1)
estimators.append(('mlp', classifier))
pipeline = Pipeline(estimators)
kfold = StratifiedKFold(n_splits=4, shuffle=True, random_state=seed)
results = cross_val_score(pipeline, X, Y, cv=kfold)
print("Result: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
我已经检查过添加KerasClassifier(build_fn=DNN, nb_epoch=32, batch_size=8, callbacks=[your_callback], verbose=1)
可以解决问题,但不幸的是没有!错误是:
RuntimeError: Cannot clone object <keras.wrappers.scikit_learn.KerasClassifier object at 0x00000222C3D13B70>, as the constructor does not seem to set parameter callbacks
同样在cross_val_score中添加fit_params={'callbacks': [EarlyStopping(), TensorBoard()]})
并没有解决问题。错误:
step, param = pname.split('__', 1)
ValueError: not enough values to unpack (expected 2, got 1)