在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来就可以了,下面以一个简单的例子进行说明,这个例子中的图片是一个随机生成的图片。
import torch
from torchvision import transforms
toPIL = transforms.ToPILImage() #这个函数可以将张量转为PIL图片,由小数转为0-255之间的像素值
img = torch.randn(3,128,64)
pic = toPIL(img)
pic.save('random.jpg')
这两天利用pytorch搭建模型,训练分类网络,模型没问题,代码没问题,但是损失就是死活不收敛。看一下代码吧:
src_prec, _ , src_feat = self.model(src_imgs)
loss_src_ce = self.criterion_ce(src_prec[:, :self.src_classes], src_labels, weight_src)
死活不好使,搞不清楚,可是我后来稍微一改,改成下面的:
src_prec, temp , src_feat = self.model(src_imgs)
loss_src_ce = self.criterion_ce(src_prec[:, :self.src_classes], src_labels, weight_src)
loss_src_ce = self.criterion_ce(src_prec[:, :self.src_classes], src_labels, weight_src)
结果就好了,就是在解包模型传出来的返回值的时候,不用下划线 _ 填充位置就好了,我也不知道为什么这么神奇
在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来就可以了,下面以一个简单的例子进行说明,这个例子中的图片是一个随机生成的图片。
import torch
from torchvision import transforms
toPIL = transforms.ToPILImage() #这个函数可以将张量转为PIL图片,由小数转为0-255之间的像素值
img = torch.randn(3,128,64)
pic = toPIL(img)
pic.save('random.jpg')
这里都是一些常用的生成图片的方式