diff --git a/python/paddle/fluid/layers/nn.py b/python/paddle/fluid/layers/nn.py index b44e249ee9fabf158f44cee9a05f88a419dda6f9..0cb348c5dd3c7f85388f99e6caee17e0e39a733e 100755 --- a/python/paddle/fluid/layers/nn.py +++ b/python/paddle/fluid/layers/nn.py @@ -3198,6 +3198,10 @@ def instance_norm(input, dtype = core.VarDesc.VarType.FP32 input_shape = input.shape + if len(input.shape) < 2 or len(input.shape) > 5: + raise ValueError( + 'expected 2D or 3D or 4D or 5D input (got {}D input, input shape is: {})'. + format(len(input.shape), input_shape)) channel_num = input_shape[1] param_shape = [channel_num] diff --git a/python/paddle/fluid/tests/unittests/test_instance_norm_op.py b/python/paddle/fluid/tests/unittests/test_instance_norm_op.py index b7fcc63ca59b148807014132ca90becd02c5ae6d..aa184dd42e6fcd8d767a97b63a5d2de7deb47c9c 100644 --- a/python/paddle/fluid/tests/unittests/test_instance_norm_op.py +++ b/python/paddle/fluid/tests/unittests/test_instance_norm_op.py @@ -15,6 +15,7 @@ from __future__ import print_function import unittest import numpy as np +import paddle import paddle.fluid.core as core import paddle.fluid as fluid from paddle.fluid.op import Operator @@ -215,6 +216,15 @@ class TestInstanceNormOpError(unittest.TestCase): self.assertRaises(TypeError, fluid.layers.instance_norm, x2) +class TestInstanceNormOpErrorCase1(unittest.TestCase): + def test_errors(self): + with program_guard(Program(), Program()): + # the first dimension of input for instance_norm must between [2d, 5d] + x = fluid.layers.data( + name='x', shape=[3], dtype="float32", append_batch_size=False) + self.assertRaises(ValueError, paddle.static.nn.instance_norm, x) + + class TestElasticNormOp(unittest.TestCase): def init_test_case(self): self.epsilon = 1e-5 diff --git a/python/paddle/fluid/tests/unittests/test_instance_norm_op_v2.py b/python/paddle/fluid/tests/unittests/test_instance_norm_op_v2.py index 19d0b1ea9895c03d0bee47a990a25ebbcca83599..102e08e36a9e571db1f4dc0b77c5b2d90c6bb792 100644 --- a/python/paddle/fluid/tests/unittests/test_instance_norm_op_v2.py +++ b/python/paddle/fluid/tests/unittests/test_instance_norm_op_v2.py @@ -45,12 +45,12 @@ class TestInstanceNorm(unittest.TestCase): def error3d(): x_data_4 = np.random.random(size=(2, 1, 3, 3)).astype('float32') - instance_norm3d = paddle.nn.BatchNorm3D(1) + instance_norm3d = paddle.nn.InstanceNorm3D(1) instance_norm3d(fluid.dygraph.to_variable(x_data_4)) def weight_bias_false(): x_data_4 = np.random.random(size=(2, 1, 3, 3)).astype('float32') - instance_norm3d = paddle.nn.BatchNorm3D( + instance_norm3d = paddle.nn.InstanceNorm3D( 1, weight_attr=False, bias_attr=False) with fluid.dygraph.guard(p):