code: def layer_norm_with_scale_and_bias_ref(
      X, scale, bias, axis=-1, epsilon=1e-4
  ):
      left = np.prod(X.shape[:axis])
      reshaped = np.reshape(X, [left, -1])
      mean = np.mean(reshaped, axis=1).reshape([left, 1])
      stdev = np.sqrt(
          np.mean(np.square(reshaped), axis=1).reshape([left, 1])
          - np.square(mean)
          + epsilon
      )
      norm = (reshaped - mean) / stdev
      norm = np.reshape(norm, X.shape)
      adjusted = scale * norm + bias
  
      return adjusted
  
imports: from caffe2.python import core, gradient_checker, rnn_cell, workspace, scope, utils
  from caffe2.python.attention import AttentionType
  from caffe2.python.model_helper import ModelHelper, ExtractPredictorNet
  from caffe2.python.rnn.rnn_cell_test_util import sigmoid, tanh, _prepare_rnn
  from caffe2.proto import caffe2_pb2
  import caffe2.python.hypothesis_test_util
  from functools import partial
  from hypothesis import assume, given
  from hypothesis import settings
  import hypothesis.strategies
  import numpy
  import unittest
label_desc: Use image node_id 2 for calling a global function with example usage: layer_norm_with_scale_and_bias_ref(X, scale, bias, axis, epsilon) and returns: adjusted