|
import torch |
|
from torch import nn |
|
|
|
|
|
def append_dims(x: torch.Tensor, target_dims: int) -> torch.Tensor: |
|
"""Appends dimensions to the end of a tensor until it has target_dims dimensions.""" |
|
dims_to_append = target_dims - x.ndim |
|
if dims_to_append < 0: |
|
raise ValueError( |
|
f"input has {x.ndim} dims but target_dims is {target_dims}, which is less" |
|
) |
|
elif dims_to_append == 0: |
|
return x |
|
return x[(...,) + (None,) * dims_to_append] |
|
|
|
|
|
class Identity(nn.Module): |
|
"""A placeholder identity operator that is argument-insensitive.""" |
|
|
|
def __init__(self, *args, **kwargs) -> None: |
|
super().__init__() |
|
|
|
|
|
def forward(self, x: torch.Tensor, *args, **kwargs) -> torch.Tensor: |
|
return x |
|
|