Эффективно ли передавать модель в пользовательский набор данных для выполнения вывода модели во время обучения стратегии ⇐ Python
-
Гость
Эффективно ли передавать модель в пользовательский набор данных для выполнения вывода модели во время обучения стратегии
Я пытаюсь разработать процесс обучения для выборки образцов во время обучения.
Мои данные выглядят следующим образом:
defaultdict(список, {'C1629836-28004480': [0, 5, 6, 12, 17, 19, 28], 'C0021846-28004480': [1, 7, 15], 'C0162832-28004480': [2, 9], 'C0025929-28004480': [3, 10, 30], 'C1515655-28004480': [4], ... } где ключ — это метка, а значение — список индексов данных
Я настраиваемый класс набора данных, в котором моей функции __getitem__(self, idx) необходимо вычислять расстояние между привязкой (которая выбирается случайным образом) и другими точками данных. Выглядит это так:
def __getitem__(self, idx): item_label = self.labels[idx] # C1629836-28004480 item_data = self.data[item_label] # [0, 5, 6, 12, 17, 19, 28] якорь_индекс = случайный.образец(item_data,1) упоминания_indices = [idx для idx в item_data, если idx != якорный_индекс] с torch.no_grad(): self.model.eval() якорный_вход = ... anchor_embedding = self.model.mention_encoder(anchor_input) для idx в упоминании_indices: ... Другой способ предотвратить передачу модели в пользовательский набор данных — запустить вывод внутри функции training_step во время обучения.
Но я где-то читал, что использование набора данных и загрузчика данных для подготовки данных для подачи в модель может сэкономить время обучения, поскольку у них есть параллельный механизм или что-то в этом роде.
Но на самом деле мне нужно вычислить такое расстояние на основе последнего состояния веса моей модели во время обучения, гарантирует ли это параллельный механизм? Хотя в Python переменная является ссылочной переменной, а не переменной значения.
Так какой же путь более профессиональный и правильный?
Я пытаюсь разработать процесс обучения для выборки образцов во время обучения.
Мои данные выглядят следующим образом:
defaultdict(список, {'C1629836-28004480': [0, 5, 6, 12, 17, 19, 28], 'C0021846-28004480': [1, 7, 15], 'C0162832-28004480': [2, 9], 'C0025929-28004480': [3, 10, 30], 'C1515655-28004480': [4], ... } где ключ — это метка, а значение — список индексов данных
Я настраиваемый класс набора данных, в котором моей функции __getitem__(self, idx) необходимо вычислять расстояние между привязкой (которая выбирается случайным образом) и другими точками данных. Выглядит это так:
def __getitem__(self, idx): item_label = self.labels[idx] # C1629836-28004480 item_data = self.data[item_label] # [0, 5, 6, 12, 17, 19, 28] якорь_индекс = случайный.образец(item_data,1) упоминания_indices = [idx для idx в item_data, если idx != якорный_индекс] с torch.no_grad(): self.model.eval() якорный_вход = ... anchor_embedding = self.model.mention_encoder(anchor_input) для idx в упоминании_indices: ... Другой способ предотвратить передачу модели в пользовательский набор данных — запустить вывод внутри функции training_step во время обучения.
Но я где-то читал, что использование набора данных и загрузчика данных для подготовки данных для подачи в модель может сэкономить время обучения, поскольку у них есть параллельный механизм или что-то в этом роде.
Но на самом деле мне нужно вычислить такое расстояние на основе последнего состояния веса моей модели во время обучения, гарантирует ли это параллельный механизм? Хотя в Python переменная является ссылочной переменной, а не переменной значения.
Так какой же путь более профессиональный и правильный?