reve-positions / position_bank.py
jonathan-lys's picture
Update position_bank.py
befa5b5 verified
Raw
History Blame Contribute Delete
973 Bytes
import torch
from transformers import PreTrainedModel
from .configuration_bank import RevePositionBankConfig
class RevePositionBank(PreTrainedModel):
config_class = RevePositionBankConfig
def __init__(self, config: RevePositionBankConfig):
super().__init__(config)
self.position_names = config.position_names
self.mapping = {name: i for i, name in enumerate(self.position_names)}
self.register_buffer("embedding", torch.randn(len(self.position_names), 3))
self.post_init()
def forward(self, channel_names: list[str]):
indices = [self.mapping[q] for q in channel_names if q in self.mapping]
if len(indices) < len(channel_names):
print(f"Found {len(indices)} positions out of {len(channel_names)} channels")
indices = torch.tensor(indices, device=self.embedding.device)
return self.embedding[indices]
def get_all_positions(self):
return self.position_names