训练好的beta-VAE模型(效果很好)对于单张图片无法利用模型(权重)进行图片复原,如何解决?

模型已经训练好了,输入一个batch的数据能够利用模型的权重复原图片,如图所示:

img

但是如果采用单个图片,用模型编码到z值再解码效果很差。如图所示:

img

使用的代码为:


from torchvision import transforms
def forward_to_z(input: Tensor, **kwargs) -> Tensor:
    mu, log_var = model.encode(input)
    z = model.reparameterize(mu, log_var)

    #print(self.decode(z).size())
    return  z
#将图片输入tensor
img_tensor=transforms.functional.to_tensor(img)
#利用模型权重获取z值
z=forward_to_z(img_tensor.reshape(1,1,80,80))
#利用z值复原图片
recons=model.decode(z)
pic=recons.detach().numpy()[0,0,:,:]

其中self.decode为训练模型时用的decode。

能不能帮忙看下问题出在哪呢?谢谢了!