如何将ByteTensor转换为图像张量?

时间:2020-07-10 13:23:39

标签: python matlab pytorch tensor resnet

我正在通过matlab将图像转换为二进制文件,并尝试将二进制的matlab向量(1d)加载到python中并将其转换为ByteTensors:

img = np.fromfile(dir_train + image_name)
img = torch.ByteTensor(img) 

这很好。 ByteTensors的尺寸为2。之后,我想将它们转换回为图像,就像对其进行重塑一样,因为神经网络(resnet18)需要4维张量。最好的方法是什么?

目前,我的网络需要张量为[64、3、7、7]的张量,但是ByteTensors为[8,1914]。

1 个答案:

答案 0 :(得分:0)

我这样解决了:

img = np.fromfile(dir_train + image_name, 'bool')    # read in the binary file
img = img.reshape(1, 350, 350)    # reshape binary file
img = torch.ByteTensor(img)    # convert to ByteTensor
img = img.type(torch.FloatTensor)    # convert to FloatTensor

我认为没有比类型转换ByteTensor更好的方法了。最重要的是,我更改了网络体系结构的第一个卷积层(resnet18),以确保输入的预期输入与转换的二进制输入相匹配。

resnet18.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)