code: def metrics_calc(
      y_val,
      y_pred_mu,
      y_pred_std,
      scale_c,
      b_0_var,
      w_0_var,
      data_noise,
      model=None,
      is_print=True,
  ):
      """computes and returns predictive metrics of interest"""
  
      mse_unnorm = np.mean(
          np.square(y_val - y_pred_mu)
      )  # for data noise
      rmse = np.sqrt(np.mean(np.square(scale_c * (y_val - y_pred_mu))))
      neg_log_like = gauss_neg_log_like(
          y_val, y_pred_mu, y_pred_std, scale_c
      )
  
      if is_print:
          print("\n\n-- " + model.name_ + " --")
          print(
              "b_0="
              + str(b_0_var)
              + ", w_0="
              + str(w_0_var)
              + ", noise var="
              + str(data_noise)
          )
          print(
              "RMSE\t",
              np.round(rmse, 4),
              "\nNLL\t",
              np.round(neg_log_like, 4),
          )
          print("data noise est\t", np.round(mse_unnorm, 4))
  
      if not model is None:
          # place holders
          model.mse_unnorm = mse_unnorm
          model.rmse = rmse
          model.nll = neg_log_like
  
      return mse_unnorm, rmse, neg_log_like
  
file_path: elu-gelu-kernels/code/experiments/02_shallow_experiments/utils.py
imports: import numpy
  import scipy.stats
  import matplotlib.pyplot
  import datetime
label_desc: Use image node_id 4 for calling a global function with example usage: metrics_calc(y_val, y_pred_mu, y_pred_std, scale_c, b_0_var, w_0_var, data_noise, model, is_print) and returns: mse_unnorm,  rmse,  neg_log_like