def dygraph_case_dcn(self): paddle.disable_static() x = paddle.to_tensor(self.input) offset = paddle.to_tensor(self.offset) mask = paddle.to_tensor(self.mask) bias = None if self.no_bias else paddle.to_tensor(self.bias) deform_conv2d = paddle.vision.ops.DeformConv2D( in_channels=self.in_channels, out_channels=self.out_channels, kernel_size=self.kernel_size, stride=self.stride, padding=self.padding, dilation=self.dilation, deformable_groups=self.deformable_groups, groups=self.groups, weight_attr=I.Assign(self.weight), bias_attr=False if self.no_bias else I.Assign(self.bias)) y_v1 = deform_conv2d(x, offset) y_v2 = deform_conv2d(x, offset, mask) out_v1 = y_v1.numpy() out_v2 = y_v2.numpy() return out_v1, out_v2
def static_graph_case_dcn(self): main = paddle.static.Program() start = paddle.static.Program() paddle.enable_static() with paddle.static.program_guard(main, start): x = paddle.static.data("input", (-1, self.in_channels, -1, -1), dtype=self.dtype) offset = paddle.static.data( "offset", (-1, self.deformable_groups * 2 * self.filter_shape[0] * self.filter_shape[1], -1, -1), dtype=self.dtype) mask = paddle.static.data( "mask", (-1, self.deformable_groups * self.filter_shape[0] * self.filter_shape[1], -1, -1), dtype=self.dtype) y_v1 = paddle.fluid.layers.deformable_conv( input=x, offset=offset, mask=None, num_filters=self.out_channels, filter_size=self.filter_shape, stride=self.stride, padding=self.padding, dilation=self.dilation, groups=self.groups, deformable_groups=self.deformable_groups, im2col_step=1, param_attr=I.Assign(self.weight), bias_attr=False if self.no_bias else I.Assign(self.bias), modulated=False) y_v2 = paddle.fluid.layers.deformable_conv( input=x, offset=offset, mask=mask, num_filters=self.out_channels, filter_size=self.filter_shape, stride=self.stride, padding=self.padding, dilation=self.dilation, groups=self.groups, deformable_groups=self.deformable_groups, im2col_step=1, param_attr=I.Assign(self.weight), bias_attr=False if self.no_bias else I.Assign(self.bias)) exe = paddle.static.Executor(self.place) exe.run(start) out_v1, out_v2 = exe.run(main, feed={ "input": self.input, "offset": self.offset, "mask": self.mask }, fetch_list=[y_v1, y_v2]) return out_v1, out_v2
def test_assign_initializer(self, dtype="float32"): """Test the numpy array initializer with supplied arguments """ paddle.enable_static() import numpy program = framework.Program() block = program.global_block() np_array = numpy.random.random((10000)).astype(dtype) for _ in range(2): block.create_parameter( dtype=np_array.dtype, shape=np_array.shape, lod_level=0, name="param", initializer=initializer.Assign(np_array)) num_ops = 2 if dtype == "float16" else 1 self.assertEqual(len(block.ops), num_ops) init_op = block.ops[0] self.assertEqual(init_op.type, 'assign_value') assert (init_op.attr('fp32_values') == np_array).all() paddle.disable_static() return block