我正在通过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]。
答案 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)