在进行特征图可视化时,发现了一个函数运行之后输入图像的tensor的维度发生了变化,不能直接转化为numpy数据进行图像显示,这个函数是**.unsqueeze(0)** 下面贴出该函数运行过后tensor维度的变化截图:
运行前:
tensor的维度是(3,224,224)含义是3通道大小为224*224的图像转化为了一个tensor向量,运行如下语句后:
image_info = image_info.unsqueeze(0)
结果是:
这时输入的张量tensor维度比输入前多了一维,可以发现tensor后面的中括号[ ]多了一层,意味着输入前的那个张量在这里变成了某个列表的第0个元素,随着一个批次处理的图片数据增加,那这个列表就会有第1个、第2个,,,元素填充进去,总体组成一个张量进入网络进行处理,于是就实现了批处理的功能。这时torch.Size([batch size,in_channels,height,width])是它的内部参数。
当然 **.squeeze(0)**就是进行反操作,当你选中其中一个图片的tensor后进行反操作,该图片的tensor维度就会从4维降到3维,从而可以直接对该图片进行显示等处理操作,因为图像一般至多3维,不降维无法使用相关函数直接处理。