Example #1
0
    def __init__(self):
        super().__init__()

        n_channel = 56

        self.preBlock = nn.Sequential(
            nn.Conv2d(1, n_channel, 9, stride=1, padding=4, groups=1),
            nn.PReLU())

        # ResBlock 8
        self.blocks = nn.Sequential(
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
            SRBlock(n_channel, n_channel),
        )

        self.postBlock = nn.Sequential(
            nn.Conv2d(n_channel, n_channel, 3, stride=1, padding=1,
                      bias=False),
            nn.BatchNorm2d(n_channel),
        )

        self.final = nn.Sequential(
            nn.Conv2d(n_channel, 2, 9, stride=1, padding=4, groups=1), )

        self.symmetry_amp = Lambda(partial(symmetry, mode="real"))
        self.symmetry_imag = Lambda(partial(symmetry, mode="imag"))

        self.elu = GeneralELU(add=+(1 + 1e-10))
    def __init__(self, img_size):
        super().__init__()
        self.conv1_phase = nn.Sequential(
            *conv_phase(1, 4, (23, 23), 1, 11, 1, add=-2.1415))
        self.conv2_phase = nn.Sequential(
            *conv_phase(4, 8, (21, 21), 1, 10, 1, add=-2.1415))
        self.conv3_phase = nn.Sequential(
            *conv_phase(8, 12, (17, 17), 1, 8, 1, add=-2.1415))
        self.conv_con1_phase = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(-2.1415),
        )

        self.conv4_phase = nn.Sequential(
            *conv_phase(1, 4, (5, 5), 1, 3, 2, add=-2.1415))
        self.conv5_phase = nn.Sequential(
            *conv_phase(4, 8, (5, 5), 1, 2, 1, add=-2.1415))
        self.conv6_phase = nn.Sequential(
            *conv_phase(8, 12, (3, 3), 1, 3, 2, add=-2.1415))
        self.conv7_phase = nn.Sequential(
            *conv_phase(12, 16, (3, 3), 1, 1, 1, add=-2.1415))
        self.conv_con2_phase = nn.Sequential(
            LocallyConnected2d(16, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(-2.1415),
        )

        self.conv8_phase = nn.Sequential(
            *conv_phase(1, 4, (3, 3), 1, 1, 1, add=-2.1415))
        self.conv9_phase = nn.Sequential(
            *conv_phase(4, 8, (3, 3), 1, 1, 1, add=-2.1415))
        self.conv10_phase = nn.Sequential(
            *conv_phase(8, 12, (3, 3), 1, 2, 2, add=-2.1415))
        self.conv_con3_phase = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(-2.1415),
        )
        self.symmetry_imag = Lambda(partial(symmetry, mode="imag"))
Example #3
0
 def __init__(self, img_size):
     super().__init__()
     self.img_size = img_size
     self.conv1_amp = nn.Sequential(
         nn.Conv2d(1, 4, stride=2, kernel_size=3, padding=3 // 2),
         nn.ReLU())
     self.conv1_phase = nn.Sequential(
         nn.Conv2d(1, 4, stride=2, kernel_size=3, padding=3 // 2),
         GeneralELU(1 - pi))
     self.conv2_amp = nn.Sequential(
         nn.Conv2d(4, 8, stride=2, kernel_size=3, padding=3 // 2),
         nn.ReLU())
     self.conv2_phase = nn.Sequential(
         nn.Conv2d(4, 8, stride=2, kernel_size=3, padding=3 // 2),
         GeneralELU(1 - pi))
     self.conv3_amp = nn.Sequential(
         nn.Conv2d(8, 16, stride=2, kernel_size=3, padding=3 // 2),
         nn.ReLU())
     self.conv3_phase = nn.Sequential(
         nn.Conv2d(8, 16, stride=2, kernel_size=3, padding=3 // 2),
         GeneralELU(1 - pi),
     )
     self.conv4_amp = nn.Sequential(
         nn.Conv2d(16, 32, stride=2, kernel_size=3, padding=3 // 2),
         nn.ReLU())
     self.conv4_phase = nn.Sequential(
         nn.Conv2d(16, 32, stride=2, kernel_size=3, padding=3 // 2),
         GeneralELU(1 - pi),
     )
     self.conv5_amp = nn.Sequential(
         nn.Conv2d(32, 64, stride=2, kernel_size=3, padding=3 // 2),
         nn.ReLU())
     self.conv5_phase = nn.Sequential(
         nn.Conv2d(32, 64, stride=2, kernel_size=3, padding=3 // 2),
         GeneralELU(1 - pi),
     )
     self.final_amp = nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Flatten(),
                                    nn.Linear(64, img_size**2))
     self.final_phase = nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Flatten(),
                                      nn.Linear(64, img_size**2))
Example #4
0
    def __init__(self, img_size):
        super().__init__()
        torch.cuda.set_device(1)
        self.img_size = img_size

        self.preBlock_amp = nn.Sequential(
            nn.Conv2d(1, 64, 7, stride=2, padding=3), nn.BatchNorm2d(64),
            nn.ReLU())
        self.preBlock_phase = nn.Sequential(
            nn.Conv2d(1, 64, 7, stride=2, padding=3),
            nn.BatchNorm2d(64),
            GeneralELU(1 - pi),
        )

        self.maxpool_amp = nn.MaxPool2d(3, 2, 1)
        self.maxpool_phase = nn.MaxPool2d(3, 2, 1)

        # first block
        self.layer1_amp = nn.Sequential(ResBlock_amp(64, 64),
                                        ResBlock_amp(64, 64))
        self.layer1_phase = nn.Sequential(ResBlock_phase(64, 64),
                                          ResBlock_phase(64, 64))

        self.layer2_amp = nn.Sequential(ResBlock_amp(64, 128, stride=2),
                                        ResBlock_amp(128, 128))
        self.layer2_phase = nn.Sequential(ResBlock_phase(64, 128, stride=2),
                                          ResBlock_phase(128, 128))

        self.layer3_amp = nn.Sequential(ResBlock_amp(128, 256, stride=2),
                                        ResBlock_amp(256, 256))
        self.layer3_phase = nn.Sequential(ResBlock_phase(128, 256, stride=2),
                                          ResBlock_phase(256, 256))

        self.layer4_amp = nn.Sequential(ResBlock_amp(256, 512, stride=2),
                                        ResBlock_amp(512, 512))
        self.layer4_phase = nn.Sequential(ResBlock_phase(256, 512, stride=2),
                                          ResBlock_phase(512, 512))

        self.final_amp = nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Flatten(),
                                       nn.Linear(512, img_size**2))
        self.final_phase = nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Flatten(),
                                         nn.Linear(512, img_size**2))
    def __init__(self, img_size):
        super().__init__()

        # ########################## Phase 1
        self.conv1_amp = nn.Sequential(*conv_amp(
            ni=1,
            nc=4,
            ks=(round_odd(0.365 * img_size), round_odd(0.365 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.365 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv1_phase = nn.Sequential(*conv_phase(
            ni=1,
            nc=4,
            ks=(round_odd(0.365 * img_size), round_odd(0.365 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.365 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv2_amp = nn.Sequential(*conv_amp(
            ni=4,
            nc=8,
            ks=(round_odd(0.333 * img_size), round_odd(0.333 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.333 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv2_phase = nn.Sequential(*conv_phase(
            ni=4,
            nc=8,
            ks=(round_odd(0.333 * img_size), round_odd(0.333 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.333 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv3_amp = nn.Sequential(*conv_amp(
            ni=8,
            nc=12,
            ks=(round_odd(0.269 * img_size), round_odd(0.269 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.269 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv3_phase = nn.Sequential(*conv_phase(
            ni=8,
            nc=12,
            ks=(round_odd(0.269 * img_size), round_odd(0.269 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.269 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv_con1_amp = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con1_phase = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )
        # #################################### Phase 2
        self.conv4_amp = nn.Sequential(*conv_amp(
            ni=1,
            nc=4,
            ks=(round_odd(0.0793 * img_size), round_odd(0.0793 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0793 * img_size), 1, 2),
            dilation=2,
        ))
        self.conv4_phase = nn.Sequential(*conv_phase(
            ni=1,
            nc=4,
            ks=(round_odd(0.0793 * img_size), round_odd(0.0793 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0793 * img_size), 1, 2),
            dilation=2,
            add=1 - pi,
        ))
        self.conv5_amp = nn.Sequential(*conv_amp(
            ni=4,
            nc=8,
            ks=(round_odd(0.0793 * img_size), round_odd(0.0793 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0793 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv5_phase = nn.Sequential(*conv_phase(
            ni=4,
            nc=8,
            ks=(round_odd(0.0793 * img_size), round_odd(0.0793 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0793 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv6_amp = nn.Sequential(*conv_amp(
            ni=8,
            nc=12,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 2),
            dilation=2,
        ))
        self.conv6_phase = nn.Sequential(*conv_phase(
            ni=8,
            nc=12,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 2),
            dilation=2,
            add=1 - pi,
        ))
        self.conv7_amp = nn.Sequential(*conv_amp(
            ni=12,
            nc=16,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv7_phase = nn.Sequential(*conv_phase(
            ni=12,
            nc=16,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv_con2_amp = nn.Sequential(
            LocallyConnected2d(16, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con2_phase = nn.Sequential(
            LocallyConnected2d(16, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )
        # ################################## Phase 3
        self.conv8_amp = nn.Sequential(*conv_amp(
            ni=1,
            nc=4,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv8_phase = nn.Sequential(*conv_phase(
            ni=1,
            nc=4,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv9_amp = nn.Sequential(*conv_amp(
            ni=4,
            nc=8,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv9_phase = nn.Sequential(*conv_phase(
            ni=4,
            nc=8,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv10_amp = nn.Sequential(*conv_amp(
            ni=8,
            nc=12,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 2),
            dilation=2,
        ))
        self.conv10_phase = nn.Sequential(*conv_phase(
            ni=8,
            nc=12,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 2),
            dilation=2,
            add=1 - pi,
        ))
        self.conv11_amp = nn.Sequential(*conv_amp(
            ni=12,
            nc=20,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
        ))
        self.conv11_phase = nn.Sequential(*conv_phase(
            ni=12,
            nc=20,
            ks=(round_odd(0.0476 * img_size), round_odd(0.0476 * img_size)),
            stride=1,
            padding=make_padding(round_odd(0.0476 * img_size), 1, 1),
            dilation=1,
            add=1 - pi,
        ))
        self.conv_con3_amp = nn.Sequential(
            LocallyConnected2d(20, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con3_phase = nn.Sequential(
            LocallyConnected2d(20, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )
        self.symmetry_real = Lambda(symmetry)
        self.symmetry_imag = Lambda(partial(symmetry, mode="imag"))
Example #6
0
    def __init__(self, img_size):
        super().__init__()
        self.conv1_amp = nn.Sequential(*conv_amp(1, 4, (23, 23), 1, 11, 1))
        self.conv1_phase = nn.Sequential(
            *conv_phase(1, 4, (23, 23), 1, 11, 1, add=1 - pi))
        self.conv2_amp = nn.Sequential(*conv_amp(4, 8, (21, 21), 1, 10, 1))
        self.conv2_phase = nn.Sequential(
            *conv_phase(4, 8, (21, 21), 1, 10, 1, add=1 - pi))
        self.conv3_amp = nn.Sequential(*conv_amp(8, 12, (17, 17), 1, 8, 1))
        self.conv3_phase = nn.Sequential(
            *conv_phase(8, 12, (17, 17), 1, 8, 1, add=1 - pi))
        self.conv_con1_amp = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con1_phase = nn.Sequential(
            LocallyConnected2d(12, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )

        self.conv4_amp = nn.Sequential(*conv_amp(1, 4, (5, 5), 1, 3, 2))
        self.conv4_phase = nn.Sequential(
            *conv_phase(1, 4, (5, 5), 1, 3, 2, add=1 - pi))
        self.conv5_amp = nn.Sequential(*conv_amp(4, 8, (5, 5), 1, 2, 1))
        self.conv5_phase = nn.Sequential(
            *conv_phase(4, 8, (5, 5), 1, 2, 1, add=1 - pi))
        self.conv6_amp = nn.Sequential(*conv_amp(8, 12, (3, 3), 1, 3, 2))
        self.conv6_phase = nn.Sequential(
            *conv_phase(8, 12, (3, 3), 1, 3, 2, add=1 - pi))
        self.conv7_amp = nn.Sequential(*conv_amp(12, 16, (3, 3), 1, 1, 1))
        self.conv7_phase = nn.Sequential(
            *conv_phase(12, 16, (3, 3), 1, 1, 1, add=1 - pi))
        self.conv_con2_amp = nn.Sequential(
            LocallyConnected2d(16, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con2_phase = nn.Sequential(
            LocallyConnected2d(16, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )

        self.conv8_amp = nn.Sequential(*conv_amp(1, 4, (3, 3), 1, 1, 1))
        self.conv8_phase = nn.Sequential(
            *conv_phase(1, 4, (3, 3), 1, 1, 1, add=1 - pi))
        self.conv9_amp = nn.Sequential(*conv_amp(4, 8, (3, 3), 1, 1, 1))
        self.conv9_phase = nn.Sequential(
            *conv_phase(4, 8, (3, 3), 1, 1, 1, add=1 - pi))
        self.conv10_amp = nn.Sequential(*conv_amp(8, 12, (3, 3), 1, 2, 2))
        self.conv10_phase = nn.Sequential(
            *conv_phase(8, 12, (3, 3), 1, 2, 2, add=1 - pi))
        self.conv11_amp = nn.Sequential(*conv_amp(12, 20, (3, 3), 1, 1, 1))
        self.conv11_phase = nn.Sequential(
            *conv_phase(12, 20, (3, 3), 1, 1, 1, add=1 - pi))
        self.conv_con3_amp = nn.Sequential(
            LocallyConnected2d(20, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            nn.ReLU(),
        )
        self.conv_con3_phase = nn.Sequential(
            LocallyConnected2d(20, 1, img_size, 1, stride=1, bias=False),
            nn.BatchNorm2d(1),
            GeneralELU(1 - pi),
        )
        self.symmetry_real = Lambda(symmetry)
        self.symmetry_imag = Lambda(partial(symmetry, mode="imag"))
        self.flatten = Lambda(flatten)
        # self.fully_connected = nn.Linear(3969, 54)
        # self.fully_connected = nn.Linear(7938, 5)
        # self.fully_connected = nn.Linear(3969, 1)
        self.fully_connected = nn.Linear(7938, 3)
        self.vaild_gauss_bs = Lambda(vaild_gauss_bs)
        self.Relu = nn.ReLU()
        self.fft = Lambda(fft)
        self.euler = Lambda(euler)
        self.shape = Lambda(shape)