Package: plot-keras-history
A python package to print aKeras model training historyHow do I install this package?As usual, just download it using pip:pipinstallplot_keras_historyUsageLet’s say you have a model generated by the function my_keras_model:Plotting a training historyIn the following example we will see how to plot and either show or save the training history:fromplot_keras_historyimportshow_history,plot_historyimportmatplotlib.pyplotaspltmodel=my_keras_model()history=model.fit(...)show_history(history)plot_history(history,path="standard.png")plt.close()Plotting into separate graphsBy default, the graphs are all in one big image, but for various reasons you might need them one by one:fromplot_keras_historyimportplot_historyimportmatplotlib.pyplotaspltmodel=my_keras_model()history=model.fit(...)plot_history(history,path="singleton",single_graphs=True)plt.close()Plotting multiple historiesLet’s suppose you are training your model on multiple holdouts and you would like to plot all of them,
plus an average. Fortunately, we got you covered!fromplot_keras_historyimportplot_historyimportmatplotlib.pyplotasplthistories=[]forholdoutinrange(10):model=my_keras_model()histories.append(model.fit(...))plot_history(histories,show_standard_deviation=False,show_average=True)plt.close()Reducing the history noise with Savgol FiltersIn some occasion it is necessary to be able to see the progress of the history to interpolate the results to remove a bit of noise. A parameter is offered to automatically apply a Savgol filter:fromplot_keras_historyimportplot_historyimportmatplotlib.pyplotaspltmodel=my_keras_model()history=model.fit(...)plot_history(history,path="interpolated.png",interpolate=True)plt.close()Automatic aliasesA number of metrics are automatically converted from the default ones to more talking ones, for example “lr” becomes “Learning Rate”, or “acc” becomes “Accuracy”.Automatic normalizationThe library automatically normalizes the ranges of metrics that are known to be either in [-1, 1] or [0, 1] ranges in order
to avoid visual biases.All the available optionsdefplot_history(history,# Either the history object or a pandas DataFrame. When using a dataframe, the index name is used as abscissae label.style:str="-",# The style of the lines.interpolate:bool=False,# Wethever to interpolate or not the graphs datapoints.side:float=5,# Dimension of the graphs side.graphs_per_row:int=4,# Number of graphs for each row.customization_callback:Callable=None,# Callback for customizing the graphs.path:str=None,# Path where to store the resulting image or images (in the case of single_graphs)single_graphs:bool=False#  Wethever to save the graphs as single of multiples.)Chaining historiesIt’s common to stop and restart a model’s training, and this would break the history object into two: for this reason the methodchain_historiesis available:fromplot_keras_historyimportchain_historiesmodel=my_keras_model()history1=model.fit(...)history2=model.fit(...)history=chain_histories(history1,history2)ExtrasNumerous additional metrics are available inextra_keras_metricsCite this softwareIf you need a bib file to cite this work, here you have it:@software{Cappelletti_Plot_Keras_History_2022,author={Cappelletti, Luca},doi={10.5072/zenodo.1054923},month={4},title={{Plot Keras History}},version={1.1.36},year={2022}}