def network(optimizers='rmsprop'):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Embedding(vocab_size, 100, weights=[embedding_matrix], input_length=length, trainable=True))
# model.add(LSTM(50, recurrent_dropout=.20))
model.add(tf.keras.layers.Dense(8, activation='relu'))
# model.add(Dense(200, activation='relu'))
model.add(tf.keras.layers.Dropout(.40))
# model.add(Flatten())
model.add(tf.keras.layers.Dense(50, activation='relu'))
# model.add(Dropout(.3))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(8, activation='sigmoid'))
#model compile
model.compile(optimizer=optimizers, loss='binary_crossentropy', metrics=['accuracy'])
return model
num_tags = 8
#create hyperparameter search space
epochs = [25, 50]
batches = [5, 10, 100]
optimizers = ['rmsprop', 'adam']
neural_network = KerasClassifier(build_fn=network, verbose = 1)
hyperparamters = dict(optimizers=optimizers, epochs=epochs, batch_size = batches)
grid = GridSearchCV(estimator=neural_network, cv=2, param_grid=hyperparamters)
grid.fit(X_train, Ytrain)
Я пытаюсь сохранить модель, используя pickle, как это:
import pickle
pickle.dump(grid,open('keras_saved_model.pickle', 'wb'))
Это ошибка, которую я получаю:
TypeError Traceback (most recent call last)
<ipython-input-24-07d3687ecaaf> in <module>()
1 import pickle
----> 2 pickle.dump(grid,open('keras_saved_model.pickle', 'wb'))
TypeError: can't pickle _thread._local objects
Я также пробовал joblib, но это показывая мне ту же ошибку.
from sklearn.externals import joblib
joblib.dump(grid.best_estimator_, 'keras_saved_model.pkl')
Любая помощь будет принята с благодарностью! ..