def construct(self, x):
    (n, _, h, w) = self.shape(x)
    h_out = self._deconv_output_length(h, self.kernel_size[0], self.stride[0], self.dilation[0], (self.padding_top + self.padding_bottom))
    w_out = self._deconv_output_length(w, self.kernel_size[1], self.stride[1], self.dilation[1], (self.padding_left + self.padding_right))
    if self.has_bias:
        return self.bias_add(self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out)), self.bias)
    return self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out))
def construct(self, x):
    (n, _, h, w) = self.shape(x)
    h_out = self._deconv_output_length(h, self.kernel_size[0], self.stride[0], self.dilation[0], (self.padding_top + self.padding_bottom))
    w_out = self._deconv_output_length(w, self.kernel_size[1], self.stride[1], self.dilation[1], (self.padding_left + self.padding_right))
    if self.has_bias:
        return self.bias_add(self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out)), self.bias)
    return self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out))