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"))
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))
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"))
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)