未验证 提交 e641c638 编写于 作者: C ceci3 提交者: GitHub

fix instance norm index error (#35341)

* fix instance norm index error

* add unittest

* update

* fix
上级 0460608d
...@@ -3198,6 +3198,10 @@ def instance_norm(input, ...@@ -3198,6 +3198,10 @@ def instance_norm(input,
dtype = core.VarDesc.VarType.FP32 dtype = core.VarDesc.VarType.FP32
input_shape = input.shape 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] channel_num = input_shape[1]
param_shape = [channel_num] param_shape = [channel_num]
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
from __future__ import print_function from __future__ import print_function
import unittest import unittest
import numpy as np import numpy as np
import paddle
import paddle.fluid.core as core import paddle.fluid.core as core
import paddle.fluid as fluid import paddle.fluid as fluid
from paddle.fluid.op import Operator from paddle.fluid.op import Operator
...@@ -215,6 +216,15 @@ class TestInstanceNormOpError(unittest.TestCase): ...@@ -215,6 +216,15 @@ class TestInstanceNormOpError(unittest.TestCase):
self.assertRaises(TypeError, fluid.layers.instance_norm, x2) 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): class TestElasticNormOp(unittest.TestCase):
def init_test_case(self): def init_test_case(self):
self.epsilon = 1e-5 self.epsilon = 1e-5
......
...@@ -45,12 +45,12 @@ class TestInstanceNorm(unittest.TestCase): ...@@ -45,12 +45,12 @@ class TestInstanceNorm(unittest.TestCase):
def error3d(): def error3d():
x_data_4 = np.random.random(size=(2, 1, 3, 3)).astype('float32') 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)) instance_norm3d(fluid.dygraph.to_variable(x_data_4))
def weight_bias_false(): def weight_bias_false():
x_data_4 = np.random.random(size=(2, 1, 3, 3)).astype('float32') 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) 1, weight_attr=False, bias_attr=False)
with fluid.dygraph.guard(p): with fluid.dygraph.guard(p):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册