Да, есть. Если вы говорите о torchvision.transforms
, они не зависят от загрузчиков данных. Например:
import torch
import numpy as np
from torchvision import transforms
torch.manual_seed(2020)
# lets say this is your image (you said it is a tensor, not a PIL Image)
x = (torch.rand((2,3)) * 255.).to(torch.uint8)
# this is your transformation... they need it to be a PIL Image :(
t = transforms.Compose([
transforms.ToPILImage(),
transforms.RandomHorizontalFlip(p=1.0), # 100% just to make sure we see it being applied
transforms.Lambda(lambda x: torch.tensor(np.array(x)))
])
# this is how you can apply the transformation
transformed_x = t(x)
print(x)
# tensor([[124, 26, 150],
# [ 29, 126, 72]], dtype=torch.uint8)
print(transformed_x)
# tensor([[150, 26, 124],
# [ 72, 126, 29]], dtype=torch.uint8)
Если у вас есть пользовательские преобразования, которые работают с тензором, вы можете удалить всю вещь «тензор -> PIL -> тензор».