in automl21/scs_neural/experimentation/launcher.py [0:0]
def _plot_metrics(self, data, nrow, ncol, metrics, metric_names, tag, std=None):
fig, axs = plt.subplots(nrow, ncol, figsize=(6*ncol, 4*nrow))
for i in range(len(metrics)):
if nrow > 1 and ncol > 1:
ax = axs[int(i / 2)][i % 2]
elif nrow > 1 or ncol > 1:
ax = axs[i]
else:
ax = axs
metric = metrics[i]
metric_name = metric_names[i]
if metric == 'loss':
x = [i * self.cfg.test_freq for i in range(len(data['scs_neural'][metric]['train']))]
ax.plot(x, data['scs_neural'][metric]['train'], label='training loss')
ax.plot(x, data['scs_neural'][metric]['val'], label='validation loss')
ax.plot(x, data['scs_neural'][metric]['test'], label='test loss')
ax.set_yscale('log')
ax.set_xlabel('Training Iteration')
elif metric == 'all_u_diff_train':
x = [i for i in range(len(data['scs_neural'][metric]))]
delta_z = std['scs_neural'][metric]
lower = [0 for i in range(len(data['scs_neural'][metric]))]
upper = delta_z
ax.errorbar(x, data['scs_neural'][metric], (lower, upper), ecolor='red', label='scs_neural')
ax.set_yscale('log')
ax.set_xlim((0, len(x)))
elif std is not None:
for m, name in enumerate(['scs_neural']):
x = [i for i in range(len(data[name][metric]))]
delta_z = std[name][metric]
lower = [0 for i in range(len(data[name][metric]))]
upper = delta_z
ax.errorbar(x, data[name][metric], (lower, upper), label=name)
ax.set_xlabel('Fixed-Point Iteration')
ax.set_yscale('log')
else:
ax.plot(data['scs_neural'][metric], label='scs_neural')
ax.set_xlabel('Fixed-Point Iteration')
ax.set_yscale('log')
if metric in ['p_res', 'd_res']:
limits = self._find_y_limits([data['scs_neural'][metric]])
ax.set_ylim(limits)
ax.set_ylabel(metric_name)
ax.legend()
fig.tight_layout()
fname = tag + '.png'
fig.savefig(fname)
plt.close(fig)