如何使用Tensorboard与KerasClassifier(Scikit-learn)?

时间:2017-05-17 07:46:53

标签: scikit-learn deep-learning keras tensorboard

我已经知道如何使用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)

0 个答案:

没有答案