Как преобразовать ByteTensor в тензор изображения? - PullRequest
0 голосов
/ 10 июля 2020

Я конвертирую изображения в двоичные файлы через 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 голосов
/ 15 июля 2020

Я решил это следующим образом:

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) 
...