def __init__(self,
                 in_channels,
                 output_channels,
                 feature_maps,
                 hidden_neurons=128):
        super(CNNDS2DDeconvWind_DK, self).__init__()
        # scale up input and then use a bigger kernel size to increase receptive field
        self.upscale = nn.ConvTranspose2d(in_channels,
                                          in_channels,
                                          kernel_size=2,
                                          stride=2)
        # 5x8x8
        self.doubleDSConv = DoubleDSConv(in_channels, feature_maps)
        self.dsConv1 = DepthwiseSeparableConv(feature_maps,
                                              output_channels=feature_maps //
                                              2,
                                              kernel_size=3,
                                              padding=0)
        # ((W−F+2P)/S)+1 --> (8x8)-3+1 = (6x6)
        self.dsConv2 = DepthwiseSeparableConv(feature_maps // 2,
                                              output_channels=feature_maps //
                                              4,
                                              kernel_size=3,
                                              padding=0)
        # (6x6)-3+1 = (4x4)
        self.bn = nn.BatchNorm2d(feature_maps // 4)

        self.doubleDense = DoubleDense(feature_maps // 4 * 4 * 4,
                                       hidden_neurons=hidden_neurons,
                                       output_channels=output_channels)
 def __init__(self,
              in_channels,
              output_channels,
              feature_maps,
              hidden_neurons=128):
     super(CNN2DWind_DK, self).__init__()
     self.conv1 = nn.Conv2d(in_channels=in_channels,
                            out_channels=feature_maps,
                            kernel_size=2)
     # Correctly calculate input features (depends on conv2d)
     # ((W−F+2P)/S)+1 --> ((4-2+0)/1)+1 = 3
     self.dd = DoubleDense(feature_maps * 3 * 3,
                           hidden_neurons=hidden_neurons,
                           output_channels=output_channels)
 def __init__(self,
              in_channels,
              output_channels,
              feature_maps,
              hidden_neurons=128):
     super(CNN3DWind_NL, self).__init__()
     self.conv1 = nn.Conv3d(in_channels=in_channels,
                            out_channels=feature_maps,
                            kernel_size=(2, 2, 2))
     # Correctly calculate input features (depends on conv3d)
     # ((W−F+2P)/S)+1 --> (7x6x6)-2+1 = 6x5x5
     self.dd = DoubleDense(feature_maps * 6 * 5 * 5,
                           hidden_neurons=hidden_neurons,
                           output_channels=output_channels)
 def __init__(self,
              in_channels,
              output_channels,
              feature_maps,
              hidden_neurons=128):
     super(CNN2DAttWind_DK, self).__init__()
     self.conv1 = AugmentedConv(in_channels=in_channels,
                                out_channels=feature_maps,
                                kernel_size=2,
                                dk=feature_maps // 2,
                                dv=feature_maps // 2,
                                Nh=feature_maps // 2,
                                shape=0,
                                relative=False,
                                stride=1)
     # Correctly calculate input features (depends on conv2d)
     # ((W−F+2P)/S)+1 --> ((4-2+0)/1)+1 = 3
     self.dd = DoubleDense(feature_maps * 3 * 3,
                           hidden_neurons=hidden_neurons,
                           output_channels=output_channels)