模型已经训练好了,输入一个batch的数据能够利用模型的权重复原图片,如图所示:
但是如果采用单个图片,用模型编码到z值再解码效果很差。如图所示:
使用的代码为:
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。
能不能帮忙看下问题出在哪呢?谢谢了!