Source code for ai2_kit.tool.deepmd
import numpy as np
import matplotlib.pyplot as plt
from typing import Optional
[docs]
def display_lcurve(in_file: str = 'lcurve.out', save_to: Optional[str] = None, fig_ax = None):
lcurve = np.loadtxt(in_file)
step = lcurve[:,0] # step
e_trn = lcurve[:,2] # rmse_e_trn
f_trn = lcurve[:,3] # rmse_f_trn
# plot e_trn and f_trn in log scale,
# and make them fit the size of jupyter notebook
if fig_ax is None:
fig, ax = plt.subplots(1, 2, figsize=(12, 4), constrained_layout=True)
else:
fig, ax = fig_ax
ax[0].plot(step, e_trn)
ax[0].set_yscale('log')
ax[0].set_xlabel(r'$STEP$')
ax[0].set_ylabel(r'$RMSE_{E}$')
ax[0].grid()
ax[0].set_title('Learning Curve: RMSE of Energy')
ax[1].plot(step, f_trn)
ax[1].set_xlabel(r'$STEP$')
ax[1].set_ylabel(r'$RMSE_{F}$')
ax[1].grid()
ax[1].set_title('Learning Curve: RMSE of Force')
if save_to is None:
fig.canvas.draw()
fig.canvas.flush_events()
else:
fig.savefig(save_to, dpi=300, bbox_inches='tight')