def test_mvn_operator(): runtime = get_runtime() data_shape = [3, 3, 3, 1] axis = [0, 2, 3] normalize_variance = True eps = np.float32(1e-9) data_value = np.array([[[[0.8439683], [0.5665144], [0.05836735]], [[0.02916367], [0.12964272], [0.5060197]], [[0.79538304], [0.9411346], [0.9546573]]], [[[0.17730942], [0.46192095], [0.26480448]], [[0.6746842], [0.01665257], [0.62473077]], [[0.9240844], [0.9722341], [0.11965699]]], [[[0.41356155], [0.9129373], [0.59330076]], [[0.81929934], [0.7862604], [0.11799799]], [[0.69248444], [0.54119414], [0.07513223]]]], dtype=np.float32) parameter_data = ng.parameter(data_shape, name='Data', dtype=np.float32) model = ng.mvn(parameter_data, axis, normalize_variance, eps) computation = runtime.computation(model, parameter_data) result = computation(data_value) data_mean = np.mean(data_value, axis=(0, 2, 3), keepdims=1) data_mean_squared = np.power(data_mean, 2) data_squared = np.power(data_value, 2) data_squared_mean = np.mean(data_squared, axis=(0, 2, 3), keepdims=1) std = np.sqrt(data_squared_mean - data_mean_squared) expected = (data_value - data_mean) / (std + 1e-9) assert np.allclose(result, expected)
def test_mvn_operator(): runtime = get_runtime() data_shape = [3, 3, 3, 1] axes = [0, 2, 3] normalize_variance = True eps = np.float32(1e-9) eps_mode = "outside_sqrt" data_value = np.array( [ [ [[0.8439683], [0.5665144], [0.05836735]], [[0.02916367], [0.12964272], [0.5060197]], [[0.79538304], [0.9411346], [0.9546573]], ], [ [[0.17730942], [0.46192095], [0.26480448]], [[0.6746842], [0.01665257], [0.62473077]], [[0.9240844], [0.9722341], [0.11965699]], ], [ [[0.41356155], [0.9129373], [0.59330076]], [[0.81929934], [0.7862604], [0.11799799]], [[0.69248444], [0.54119414], [0.07513223]], ], ], dtype=np.float32, ) parameter_data = ng.parameter(data_shape, name="Data", dtype=np.float32) model = ng.mvn(parameter_data, axes, normalize_variance, eps, eps_mode) computation = runtime.computation(model, parameter_data) result = computation(data_value) expected = np.array( [ [ [[1.3546423], [0.33053496], [-1.5450814]], [[-1.2106764], [-0.8925952], [0.29888135]], [[0.38083088], [0.81808794], [0.85865635]], ], [ [[-1.1060555], [-0.05552877], [-0.78310335]], [[0.83281356], [-1.250282], [0.67467856]], [[0.7669372], [0.9113869], [-1.6463585]], ], [ [[-0.23402764], [1.6092131], [0.42940593]], [[1.2906139], [1.1860244], [-0.92945826]], [[0.0721334], [-0.38174], [-1.7799333]], ], ], dtype=np.float32, ) assert np.allclose(result, expected)
def test_mvn_operator(): runtime = get_runtime() data_shape = [3, 3, 3, 1] across_channels = True normalize_variance = True eps = np.float32(1e-9) data_value = np.array( [ [ [[0.8439683], [0.5665144], [0.05836735]], [[0.02916367], [0.12964272], [0.5060197]], [[0.79538304], [0.9411346], [0.9546573]], ], [ [[0.17730942], [0.46192095], [0.26480448]], [[0.6746842], [0.01665257], [0.62473077]], [[0.9240844], [0.9722341], [0.11965699]], ], [ [[0.41356155], [0.9129373], [0.59330076]], [[0.81929934], [0.7862604], [0.11799799]], [[0.69248444], [0.54119414], [0.07513223]], ], ], dtype=np.float32, ) parameter_data = ng.parameter(data_shape, name="Data", dtype=np.float32) model = ng.mvn(parameter_data, across_channels, normalize_variance, eps) computation = runtime.computation(model, parameter_data) result = computation(data_value) expected = np.array( [ [ [[0.9951074], [0.14548765], [-1.410561]], [[-1.4999886], [-1.1923014], [-0.03975919]], [[0.8463296], [1.2926502], [1.3340596]], ], [ [[-1.0463363], [-0.1747985], [-0.7784088]], [[0.47672555], [-1.5383], [0.32375798]], [[1.2404392], [1.3878832], [-1.2228798]], ], [ [[-0.3228847], [1.2063044], [0.22751297]], [[0.91956615], [0.81839436], [-1.2279599]], [[0.5312334], [0.067952], [-1.3592235]], ], ], ) assert np.allclose(result, expected)