Различные контрольные суммы внедрения после кодирования с помощью SentenceTransformers?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Различные контрольные суммы внедрения после кодирования с помощью SentenceTransformers?

Сообщение Гость »


Я вычисляю некоторые вложения с помощью библиотеки SentenceTransformers. Однако я получаю разные результаты при кодировании предложений и вычислении их вложений при проверке суммы их значений. Например:
В:

Код: Выделить всё

RANDOM_SEED = 42
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

transformer_models = [
'M-CLIP/M-BERT-Distil-40',
]

sentences = df['content'].tolist()

for transformer_model in tqdm(transformer_models, desc="Transformer Models"):
tqdm.write(f"Processing with Transformer Model: {transformer_model}")
model = SentenceTransformer(transformer_model)
embeddings = model.encode(sentences)
print(f"Embeddings Checksum for {transformer_model}:", np.sum(embeddings))
Выход:

Код: Выделить всё

Embeddings Checksum for M-CLIP/M-BERT-Distil-40: 1105.9185
Или

Код: Выделить всё

Embeddings Checksum for M-CLIP/M-BERT-Distil-40: 1113.5422
Я заметил, что такая ситуация возникает, когда я перезапускаю и очищаю выходные данные блокнота Jupyter, а затем повторно запускаю весь блокнот. Есть идеи, как решить эту проблему?
Альтернатива, которую я пытался установить после и до расчета вложений, повторных начальных чисел:

Код: Выделить всё

import torch
import numpy as np
import random
import tensorflow as tf
from sentence_transformers import SentenceTransformer
from tqdm.auto import tqdm

RANDOM_SEED = 42

# Setting seeds
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

# Ensuring PyTorch determinism
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

transformer_models = ['M-CLIP/M-BERT-Distil-40']

sentences = df['content'].tolist()

for transformer_model in tqdm(transformer_models, desc="Transformer Models"):
# Set the seed again right before loading the model
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)

tqdm.write(f"Processing with Transformer Model: {transformer_model}")
model = SentenceTransformer(transformer_model, device='cpu')  # Force to use CPU

embeddings = model.encode(sentences, show_progress_bar=False)  # Disable progress bar and parallel tokenization
print(f"Embeddings Checksum for {transformer_model}:", np.sum(embeddings))
However I am getting the same inconsistent behavior.


Источник: https://stackoverflow.com/questions/781 ... ansformers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»