Source code for deepsphere.data.transforms.transforms

"""Transformations for samples of atmospheric rivers and tropical cyclones dataset.
"""
import torch


[docs]class ToTensor: """Convert raw data and labels to PyTorch tensor. """ def __call__(self, item): """Function call operator to change type. Args: item (:obj:`numpy.array`): Numpy array that needs to be transformed. Returns: :obj:`torch.Tensor`: Sample of size (vertices, features). """ return torch.Tensor(item)
[docs]class Permute: """Permute first and second dimension. """ def __call__(self, item): """Permute first and second dimension. Args: item (:obj:`torch.Tensor`): Torch tensor that needs to be transformed. Returns: :obj:`torch.Tensor`: Permuted input tensor. """ return item.permute(1, 0)
[docs]class Normalize: """Normalize using mean and std. """ def __init__(self, mean, std): """Initialization Args: mean (:obj:`numpy.array`): means of each feature std (:obj:`numpy.array`): standard deviations of each feature """ self.mean = torch.from_numpy(mean) self.std = torch.from_numpy(std) def __call__(self, item): """ Args: item (:obj:`torch.Tensor`): Sample of size (vertices, features) to be normalized on its features. Returns: :obj:`torch.Tensor`: Normalized input tensor. """ return (item - self.mean) / self.std
[docs]class Stack: """Stack images in torch tensor. """ def __init__(self, dimension=0): """Initialization Args: dimension int: The dimension to be used for stacking. """ self.dimension = dimension def __call__(self, item): """Stack images in torch tensor. Args: item (:obj:`torch.Tensor`): Torch tensor that needs to be transformed. Returns: :obj:`torch.Tensor`: Stacked input tensor. """ return torch.stack(item, dim=self.dimension)