Python 如何使用Pytorch保存每个类的图像?(无网格)

Python 如何使用Pytorch保存每个类的图像?(无网格),python,pytorch,generator,save-image,generative-adversarial-network,Python,Pytorch,Generator,Save Image,Generative Adversarial Network,我正在使用acgan做图像增强。目前,样本图像是以网格格式生成的。但是我想分别为每个类保存图像。(例如1.png;2.png…)我应该如何修改此代码?还是有我想提及的答案 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() self.label_emb = nn.Embedding(opt.n_classes, opt.latent_dim) self.in

我正在使用acgan做图像增强。目前,样本图像是以网格格式生成的。但是我想分别为每个类保存图像。(例如1.png;2.png…)我应该如何修改此代码?还是有我想提及的答案

class Generator(nn.Module):
def __init__(self):
    super(Generator, self).__init__()

    self.label_emb = nn.Embedding(opt.n_classes, opt.latent_dim)

    self.init_size = opt.img_size // 4  # Initial size before upsampling
    self.l1 = nn.Sequential(nn.Linear(opt.latent_dim, 128 * self.init_size ** 2))

    self.conv_blocks = nn.Sequential(
        nn.BatchNorm2d(128),
        nn.Upsample(scale_factor=2),
        nn.Conv2d(128, 128, 3, stride=1, padding=1),
        nn.BatchNorm2d(128, 0.8),
        nn.LeakyReLU(0.2, inplace=True),
        nn.Upsample(scale_factor=2),
        nn.Conv2d(128, 64, 3, stride=1, padding=1),
        nn.BatchNorm2d(64, 0.8),
        nn.LeakyReLU(0.2, inplace=True),
        nn.Conv2d(64, opt.channels, 3, stride=1, padding=1),
        nn.Tanh(),
    )


def sample_图像
中,有一行定义生成器的目标标签:
labels=np.array([num代表范围内(n\u行)中的num代表范围内(n\u行)])

不要使用由于从范围采样而发生变化的num,而是使用传递的常量作为参数(
class\u id
如下):

这样,您将得到一个矩形数组,其中包含您所请求的类的全部图像


此外,要仅拥有一个图像,可以将
n_row
设置为1。请注意,您没有为
save_image
功能提供代码,可能有一些技巧。

def sample_image
中,您有一行定义生成器的目标标签:
labels=np.array([num代表范围内(n\u行)中的num代表范围内(n\u行)])

不要使用由于从范围采样而发生变化的num,而是使用传递的常量作为参数(
class\u id
如下):

这样,您将得到一个矩形数组,其中包含您所请求的类的全部图像


此外,要仅拥有一个图像,可以将
n_row
设置为1。请注意,您没有为
save_image
功能提供代码,可能有一些技巧。

是的,是的。它必须与培训数据上的标签相匹配。是的。它必须与培训数据上的标签相匹配。
generator = Generator()
def sample_image(n_row, batches_done):
   """Saves a grid of generated digits ranging from 0 to n_classes"""
   # Sample noise
   z = Variable(FloatTensor(np.random.normal(0, 1, (n_row ** 2, opt.latent_dim))))
   # Get labels ranging from 0 to n_classes for n rows
   labels = np.array([num for _ in range(n_row) for num in range(n_row)])
   labels = Variable(LongTensor(labels))
   gen_imgs = generator(z, labels)
   save_image(gen_imgs.data, "images/%d.png" % batches_done, nrow=n_row, normalize=True)
def sample_image(n_row, batches_done, class_id):
   """Saves a grid of generated digits ranging from 0 to n_classes"""
   # Sample noise
   z = Variable(FloatTensor(np.random.normal(0, 1, (n_row ** 2, opt.latent_dim))))
   # Get labels ranging from 0 to n_classes for n rows
   labels = np.array([class_id for _ in range(n_row) for __ in range(n_row)])
   labels = Variable(LongTensor(labels))
   gen_imgs = generator(z, labels)
   save_image(gen_imgs.data, "images/%d.png" % batches_done, nrow=n_row, normalize=True)