Мне нужна помощь в реализации функции контрольной точки в Keras. Я собираюсь подготовить большой набор данных, чтобы сделать это, сначала я обучил модель с использованием набора данных цветка радужной оболочки: http://machinelearningmastery.com/multi-class-classification-tutorial-keras-deep-learning-library/Модифицированные модели Checkpoint в Keras
Поскольку мой собственный набор данных очень похож на него, только разница в том, что мой набор данных больше больше.
Для контрольной точки функции: http://machinelearningmastery.com/check-point-deep-learning-models-keras/
Я понимаю, к примеру, используя Пим-индеец набор данные. Теперь я пытаюсь реализовать ту же функцию контрольной точки в скрипте iris-flower. Вот что я пробовал до сих пор.
import numpy
from pandas import *
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.model_selection import cross_val_score, KFold
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline
from keras.callbacks import ModelCheckpoint
seed = 7
numpy.random.seed(seed)
dataframe = read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
Y = dataset[:,4]
# encode class value as integers
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
dummy_y = np_utils.to_categorical(encoded_Y)
def baseline_model():
model = Sequential()
model.add(Dense(4, input_dim=4, init='normal', activation='relu'))
model.add(Dense(3, init='normal', activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
filepath="weights-improvement-{epoch:02d}-{val_acc:.2f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
callbacks_list = [checkpoint]
estimator = KerasClassifier(build_fn=baseline_model, validation_split=0.33, nb_epoch=200, batch_size=5, callbacks=callbacks_list, verbose=0)
kfold = KFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(estimator, X, dummy_y, cv=kfold)
print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
Этот скрипт произвел следующую ошибку. Я не знаю, как его устранить, или, может быть, мое расположение в скрипте неверно.
RuntimeError: Cannot clone object <keras.wrappers.scikit_learn.KerasClassifier object at 0x10e120fd0>, as the constructor does not seem to set parameter callbacks
Я надеюсь, что кто-то может мне помочь. Спасибо.
Вы знаете, какая строка вызывает ошибку? – jdehesa