Наибольшая разница между нормой партии и слоя — это средняя стандартная ось.

def batch_norm(self):
    x = self.x
    m = x.mean(axis=0)
    s = x.std(axis=0)
    return m, s
def layer_norm(self):
    x = self.x
    m = x.mean(axis=1)
    s = x.std(axis=1)
    return m, s

Использование oop для защиты от него.

import numpy as np


class Norm:
    """
    Class that normalizes a matrix
    Args:
        X: numpy.ndarray of shape (n, m)
        norm: indicates the norm to be applied to each column
    Raises:
        TypeError: if X is not a numpy.ndarray
        ValueError: if norm is not a valid value
    Returns:
        The normalized X matrix
    """
    def __init__(self, x, norm='batch'):
        self.x = x
        self.norm = norm

    def fit(self):

        if self.norm == 'batch':
            return self.batch_norm()
        elif self.norm == 'layer':
            return self.layer_norm()

    def transform(self):
        x = self.x
        m, s = self.fit()
        return (x - m) / s

    def fit_transform(self):
        x = self.x
        m, s = self.fit(norm=self.norm)
        return (x - m) / s

    def batch_norm(self):
        x = self.x
        m = x.mean(axis=0)
        s = x.std(axis=0)
        return m, s

    def layer_norm(self):
        x = self.x
        m = x.mean(axis=1)
        s = x.std(axis=1)
        return m, s


x = np.random.rand(10, 2)
norm = Norm(x)
x = norm.fit_transform(norm='layer')