def lsgan_epoch_train(self):  #training LSGAN epoch-wise

        save_file_gan_ex = self.gan_save_box.toPlainText()  #####input save folder for single experiments
        rounds = self.epochs_gan_spinBox.value()
        bs = self.bs_gan_spinBox.value()
        kd = self.k_d_spinBox.value()
        kg = self.k_g_spinBox.value()
        n_interval = self.interval_spinBox.value()
        channel_n = self.channel_spinBox.value()
        z_dim = self.z_dim_spinBox.value()
        in_r = self.smooth_real_doubleSpinBox.value()  ###
        in_f = self.smooth_fake_doubleSpinBox.value()  ###
        save_file_gan = os.path.join('../lsgan_result/', str(save_file_gan_ex))
        lr_g = self.optimizer_g_lr_spinBox.value()
        b_g = self.optimizer_g_b_spinBox.value()
        lr_d = self.optimizer_d_lr_spinBox.value()
        b_d = self.optimizer_d_b_spinBox.value()
        real_dim = (96, 96, channel_n)
        train_set = np.load(os.path.join('../npy/', str(self.file_raw)))
        ndis = self.display_spinBox.value()

        textg = self.gen_comboBox.currentText()
        if textg == 'gen1':
            gen = gan_g1(z_dim, channel_n)
        elif textg == 'gen2':
            gen = gan_g2(z_dim, channel_n)
        elif textg == 'gen3':
            gen = gan_g3(z_dim, channel_n)
        elif textg == 'gen4':
            gen = resnet_gen(z_dim, channel_n)
        elif textg == 'gen5':
            gen = gan_g5(z_dim, channel_n)

        textb = self.dis_comboBox.currentText()
        if textb == 'dis4':
            dis = wgan_d1(real_dim)

        elif textb == 'dis5':
            dis = wgan_d2(real_dim)

        elif textb == 'dis6':
            dis = resnet_dis_w(channel_n)

        optimizer_g = Adam(lr_g, b_g)
        optimizer_d = Adam(lr_d, b_d)

        if not os.path.exists('../lsgan_result'):  # create folder to save the experiment result.
            os.mkdir('../lsgan_result')
        if not os.path.exists(save_file_gan):
            os.mkdir(save_file_gan)

        train6(X=train_set, G=gen, D=dis, nb_epochs=rounds, batch_size=bs, k_d=kd, k_g=kg,
               index_r=in_r, index_f=in_f, opt_g=optimizer_g, opt_d=optimizer_d, z_dim=z_dim,
               channel=channel_n, save_file=save_file_gan, n_i=n_interval, n=ndis)
    def dcgan_loop_train(self):   #training DCGAN loop-wise

        save_file_gan_ex = self.gan_save_box.toPlainText()  #####input save folder for single experiments
        rounds = self.epochs_gan_spinBox.value()  #training loops
        bs = self.bs_gan_spinBox.value()  #batch size
        kd = self.k_d_spinBox.value()  #training D kd times per loop
        kg = self.k_g_spinBox.value()  #training G kg times per loop
        ndis = self.display_spinBox.value()  #row/column of generated display images
        n_interval = self.interval_spinBox.value()  #sacing interval
        channel_n = self.channel_spinBox.value()  #image channel
        z_dim = self.z_dim_spinBox.value()  #latent vector size
        in_r = self.smooth_real_doubleSpinBox.value()  ###label somooth for real images
        in_f = self.smooth_fake_doubleSpinBox.value()  ###label smooth for fake images
        save_file_gan = os.path.join('../dcgan_result/', str(save_file_gan_ex))  #saving path of the result
        lr_g = self.optimizer_g_lr_spinBox.value()
        b_g = self.optimizer_g_b_spinBox.value()
        lr_d = self.optimizer_d_lr_spinBox.value()
        b_d = self.optimizer_d_b_spinBox.value()
        real_dim = (96, 96, channel_n) #image size
        train_set = np.load(os.path.join('../npy/', str(self.file_raw)))  #path of trained original image dataset

        textg = self.gen_comboBox.currentText()  #select network
        if textg == 'gen1':
            gen = gan_g1(z_dim, channel_n)
        elif textg == 'gen2':
            gen = gan_g2(z_dim, channel_n)
        elif textg == 'gen3':
            gen = gan_g3(z_dim, channel_n)
        elif textg == 'gen4':
            gen = resnet_gen(z_dim, channel_n)
        elif textg == 'gen5':
            gen = gan_g5(z_dim, channel_n)

        textb = self.dis_comboBox.currentText()
        if textb == 'dis1':
            dis = dcgan_d1(real_dim)

        elif textb == 'dis2':
            dis = dcgan_d2(real_dim)

        elif textb == 'dis3':
            dis = resnet_dis(channel_n)

        optimizer_g = Adam(lr_g, b_g)
        optimizer_d = Adam(lr_d, b_d)

        if not os.path.exists('../dcgan_result'):  # create folder to save the experiment result.
            os.mkdir('../dcgan_result')
        if not os.path.exists(save_file_gan):
            os.mkdir(save_file_gan)

        train(X = train_set, G = gen, D = dis, loops = rounds, batch_size = bs, k_d = kd, k_g = kg,
              index_r = in_r, index_f = in_f, opt_g= optimizer_g, opt_d= optimizer_d, z_dim= z_dim,
              channel= channel_n, save_file = save_file_gan, n_i= n_interval, n = ndis)