#pytorch #huggingface-transformers
#пыторч #обнимашки-трансформеры
Вопрос:
Я хочу замаскировать тензор на основе его значений. В следующей функции, если я передаю диапазон (вторая часть), это работает, но я хочу иметь список с различными значениями prompt_ids
(3, 8, 9, 30). Но это не работает и выдает ошибку.
RuntimeError: Boolean value of Tensor with more than one value is ambiguous
Функция:
def get_prompt_token_fn(self): if self.prompt_ids: return lambda x: x in self.prompt_ids else: return lambda x: (xgt;=self.id_offset)amp;(xlt;self.id_offset self.length)
В чем проблема и как я могу ее решить?
Ответ №1:
Внутри pytorch 1.10
есть isin
функция, которая возвращает логический массив, основанный на условии, что элементы первого массива находятся во втором массиве. Для версий ниже, чем it, вы можете реализовать его следующим образом:
def isin(ar1, ar2): return (ar1[..., None] == ar2).any(-1)