def METHOD_NAME(
        self, N, G, D, H, W, epsilon, order, gc, dc):
    op = core.CreateOperator(
        "GroupNorm",
        ["X", "gamma", "beta"],
        ["Y", "mean", "inv_std"],
        group=G,
        epsilon=epsilon,
        order=order,
    )
    C = G * D
    X = np.arange(N * C * H * W).astype(np.float32)
    np.random.shuffle(X)
    if order == "NCHW":
        X = X.reshape((N, C, H, W))
    else:
        X = X.reshape((N, H, W, C))
    gamma = np.random.randn(C).astype(np.float32)
    beta = np.random.randn(C).astype(np.float32)
    inputs = [X, gamma, beta]
    for i in range(len(inputs)):
        self.assertGradientChecks(gc, op, inputs, i, [0])