Code snippet: saving Keras models and model results in Python

samcha
Oct 18, 2018

--

Keras is fun. Keras is nice.

Manually tweaking hyperparameters, forgetting to save the results, and running your models again is bad practice. It wastes time, energy, and makes your laptop’s fans tired.

Here’s a quick code snippet that saves your Keras models (as well as the results) for later reference:

# Hyperparametersnum_neurons_ = 5
dropout_ = .5
epochs_ = 5
batch_size_ = 5
# Example modelmodel = Sequential()
model.add(LSTM(num_neurons_, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dropout(dropout_))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# Fit modelhistory = model.fit(X_train,
y_train,
epochs=epochs_,
batch_size=batch_size_,
validation_data=(X_test, y_test),
verbose=1,
shuffle=False)
# Make predictionyhat = model.predict(X_test)# Calculate RMSE & r2rmse = sqrt(mean_squared_error(yhat, y_test))
r2 = r2_score(yhat, y_test)
# Save model for laterfilename = str(int(time.time())) + '_model.h5'
model.save('./models/' + filename)
# Save all resultsmodel_results_dict = {}model_results_dict['model_filename'] = filename
model_results_dict['time_ran'] = int(time.time())
model_results_dict['lstm'] = num_neurons_
model_results_dict['dropout'] = dropout_
model_results_dict['params'] = history.params
model_results_dict['loss'] = history.history
model_results_dict['rmse'] = rmse
model_results_dict['r2'] = r2
model_results_dict['notes'] = 'Write notes here.'model_results.append(model_results_dict)# Reads in old results and concats new resultsnew_res_df = pd.DataFrame(model_results)
old_res_df = pd.read_csv('./results/results.csv', index_col=0)
res_df = pd.concat([old_res_df, new_res_df], axis=0, sort=False).reset_index(drop=True)
res_df.to_csv('./results/results.csv')

Now you can call your results df and sort by top score:

res_df.sort_values(by='r2', ascending=False).head()

Yay! Save those laptop fans.

Anything I can write about to help you find success in data science or trading? Tell me about it here: https://bit.ly/3mStNJG

--

--

samcha
samcha

Written by samcha

Python, trading, data viz. Get access to samchaaa++ for ready-to-implement algorithms and quantitative studies: https://samchaaa.substack.com/

No responses yet