Ejemplo n.º 1
0
def dcwcgan_data(img_epoch_num=50, cuda=True):
    '''
    :param img_epoch_num:
    :param cuda:
    :return: imgs(.jpg) note: change the save path
    '''
    latent_dim = 20  # details in G_D_Module
    n_class = 5  # details in G_D_Module
    img_shape = (1, 32, 32)  # details in G_D_Module
    data_list = os.listdir('coedatas')
    data = []
    for path in data_list:
        data.append(data_read('coedatas/' + path))

    if cuda:
        FloatTensor = torch.cuda.FloatTensor
        LongTensor = torch.cuda.LongTensor

    generator = G_D_Module.GeneratorDCWCGAN(latent_dim, n_class, img_shape)
    generator.load_state_dict(torch.load('GANParameters/DCWCGAN/generator.pt'))

    noise = FloatTensor(
        np.random.normal(0, 1, (img_epoch_num * n_class, latent_dim)))
    single_list = list(range(n_class))
    label_cpu = single_list * img_epoch_num
    label = LongTensor(label_cpu)
    if cuda:
        label.cuda()
        generator.cuda()
    gen_imags = generator(noise, label)
    gen_imags = gen_imags.cpu()

    for i in range(gen_imags.shape[0]):
        plt.axis('off')
        plt.contourf(gen_imags[i][0].detach().numpy())
        plt.subplots_adjust(top=1,
                            bottom=0,
                            right=1,
                            left=0,
                            hspace=0,
                            wspace=0)
        plt.savefig(save_path + 'gen/label' + str(i % 5) + '_' + str(i // 5) +
                    '.jpg')
        plt.close()

    for i in range(img_epoch_num):
        for j in range(len(data)):
            index = random.randint(0, data[j].shape[0] - 1)
            plt.axis('off')
            plt.contourf(data[j][index])
            plt.subplots_adjust(top=1,
                                bottom=0,
                                right=1,
                                left=0,
                                hspace=0,
                                wspace=0)
            plt.savefig(save_path + 'real/label' + str(j) + '_' + str(i) +
                        '.jpg')
            plt.close()
Ejemplo n.º 2
0
def dcwcgan_data_perf(img_epoch_num=50, cuda=True):
    '''
    :param img_epoch_num:
    :param cuda:
    :return:
    note: generate the .npy in the Performance
    '''
    latent_dim = 20  # details in G_D_Module
    n_class = 5  # details in G_D_Module
    img_shape = (1, 32, 32)  # details in G_D_Module
    data_list = os.listdir('coedatas')
    data = []
    for path in data_list:
        data.append(data_read('coedatas/' + path))

    if cuda:
        FloatTensor = torch.cuda.FloatTensor
        LongTensor = torch.cuda.LongTensor
    else:
        FloatTensor = torch.FloatTensor
        LongTensor = torch.LongTensor

    generator = G_D_Module.GeneratorDCWCGAN(latent_dim, n_class, img_shape)
    generator.load_state_dict(torch.load('GANParameters/DCWCGAN/generator.pt'))

    noise = FloatTensor(
        np.random.normal(0, 1, (img_epoch_num * n_class, latent_dim)))
    single_list = list(range(n_class))
    label_cpu = single_list * img_epoch_num
    label = LongTensor(label_cpu)
    if cuda:
        label.cuda()
        generator.cuda()
    gen_imags = generator(noise, label)
    gen_imags = gen_imags.cpu()

    datas = []
    for i in range(len(data_list)):
        datas.append(np.empty((img_epoch_num, *img_shape), dtype=float))

    for i in range(len(label_cpu)):
        datas[label_cpu[i]][i // 5][0] = gen_imags[i][0].detach().numpy()

    for i in range(len(datas)):
        np.savez(save_path + "gen/%d.npz" % i, datas[i])
        print(datas[i].shape)
Ejemplo n.º 3
0
def show_dcwcgan_data():
    im_index = range(9)
    latent_dim = 20
    data_list = os.listdir('coedatas')
    data = []
    for path in data_list:
        data.append(data_read('coedatas/' + path))

    FloatTensor = torch.FloatTensor
    LongTensor = torch.LongTensor
    generator = G_D_Module.GeneratorDCWCGAN(latent_dim, 5, (1, 32, 32))
    generator.load_state_dict(torch.load('GANParameters/DCWCGAN/generator.pt'))

    noise = FloatTensor(np.random.normal(0, 1, (len(data)**2, latent_dim)))
    single_list = list(range(len(data)))
    label = LongTensor(single_list * len(data))
    gen_imags = generator(noise, label)
    gen_imags = gen_imags.cpu()

    for i in range(gen_imags.size(0)):
        plt.subplot(len(data), len(data), i + 1)
        plt.axis('off')
        plt.contourf(gen_imags[i][0].detach().numpy())
    # plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
    plt.savefig('caches/gen.jpg', bbox_inches='tight', pad_inches=0)
    # plt.show()
    plt.close()

    for i in range(len(data)):
        for j in range(len(data)):
            index = random.randint(0, data[j].shape[0] - 1)
            plt.subplot(len(data), len(data), i * len(data) + j + 1)
            plt.axis('off')
            plt.contourf(data[j][index])
    # plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
    plt.savefig('caches/real.jpg', bbox_inches='tight', pad_inches=0)
    # plt.show()
    plt.close()
Ejemplo n.º 4
0
def ex_dcwcgan():
    data_sets = ReWrite.load_data_in_seq(source_files)
    data_sets = ReWrite.MyDataSet(data_sets)
    data_loader = DataLoader(
        data_sets,
        batch_size=256,
        shuffle=True,
    )
    generator = G_D_Module.GeneratorDCWCGAN(
        opt.latent_dim, opt.n_classes, img_shape)  # latent_dim should be 20
    discriminator = G_D_Module.DiscriminatorDCWCGAN(opt.n_classes, img_shape)

    TrainFunction.train_dcwcgan(generator,
                                discriminator,
                                data_loader,
                                opt.n_epochs,
                                opt.lr,
                                opt.b1,
                                opt.b2,
                                opt.latent_dim,
                                opt.n_classes,
                                cuda,
                                fist_train=False)