def construct(self, x):
    x_shape = self.shape(x)
    _check_input_3d(x_shape)
    x = self.expand_dims(x, 2)
    (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[0] + self.padding[1]))
    w_out = self._deconv_output_length(w, self.kernel_size[1], self.stride[1], self.dilation[1], (self.padding[2] + self.padding[3]))
    output = self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out))
    if self.has_bias:
        output = self.bias_add(output, self.bias)
    output = self.squeeze(output)
    return output
def construct(self, x):
    x_shape = self.shape(x)
    _check_input_3d(x_shape)
    x = self.expand_dims(x, 2)
    (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[0] + self.padding[1]))
    w_out = self._deconv_output_length(w, self.kernel_size[1], self.stride[1], self.dilation[1], (self.padding[2] + self.padding[3]))
    output = self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out))
    if self.has_bias:
        output = self.bias_add(output, self.bias)
    output = self.squeeze(output)
    return output