未验证 提交 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,
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]
......
......@@ -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
......
......@@ -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):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册