diff --git a/python/paddle/nn/layer/conv.py b/python/paddle/nn/layer/conv.py index d554bb0fd96bd0bd5b2ab12da36929e102888c81..096dc937b0a48c78a2f3f488dd74a2f065b17507 100644 --- a/python/paddle/nn/layer/conv.py +++ b/python/paddle/nn/layer/conv.py @@ -123,8 +123,17 @@ class _ConvNd(layers.Layer): filter_shape = [out_channels, in_channels // groups ] + self._kernel_size + def _get_default_param_initializer(): + if transposed: + return None + filter_elem_num = np.prod(self._kernel_size) * self._in_channels + std = (2.0 / filter_elem_num)**0.5 + return Normal(0.0, std, 0) + self.weight = self.create_parameter( - shape=filter_shape, attr=self._param_attr) + shape=filter_shape, + attr=self._param_attr, + default_initializer=_get_default_param_initializer()) self.bias = self.create_parameter( attr=self._bias_attr, shape=[self._out_channels], is_bias=True)