Anonymous
Преобразование текста в 32-мерный вектор с использованием весов Albert-v2
Сообщение
Anonymous » 03 дек 2025, 09:12
Проблема несоответствия векторных данных преобразования текста в 32-мерные:
Используйте HuggingFace, чтобы загрузить веса Albert-v2 на локальный компьютер и прочитать текст для вывода. Почему вектор одного и того же текста отличается, когда для параметра Batch_size установлены разные значения при использовании графического процессора?
Вот код:
Код: Выделить всё
import tensorflow as tf
import numpy as np
import random
from transformers import AlbertTokenizer, TFAlbertModel, BertTokenizer, TFBertModel
from tqdm import tqdm
seed = 42
tf.random.set_seed(seed)
random.seed(seed)
np.random.seed(seed)
tokenizer = AlbertTokenizer.from_pretrained('albert')
albert_model = TFAlbertModel.from_pretrained("albert", output_hidden_states=True)
albert_model.trainable = False # 禁用训练模式
embedding_dim = 32
dense_layer = tf.keras.layers.Dense(embedding_dim, activation='linear', use_bias=False)
dense_layer.build((None, 768))
dense_layer.kernel.assign(tf.random.normal((768, embedding_dim)))
def text_to_embedding(texts, max_length=60):
inputs = tokenizer(texts, return_tensors='tf', padding='max_length', truncation=True, max_length=max_length)
with tf.device('/GPU:0'):
outputs = albert_model(inputs['input_ids'], attention_mask=inputs['attention_mask'])
last_hidden_state = outputs.last_hidden_state
# hidden_states = outputs.hidden_states # 获取所有层的输出
# print(hidden_states)
mean_output = tf.reduce_mean(last_hidden_state, axis=1)
reduced_output = dense_layer(mean_output)
return reduced_output.numpy() # 返回 numpy 数组
texts = ['无经验描述', '无工作经历 ', '-', '什么都没有', '无工作经历-无经验描述']
max_length = 60
batch_size = 2 # 或者 10
batches = [texts[i:i + batch_size] for i in range(0, len(texts), batch_size)]
for batch in tqdm(batches):
embedding = text_to_embedding(batch, max_length=max_length)
print(embedding)
почему пакетный размер=1 и 2, результат разный?
Подробнее здесь:
https://stackoverflow.com/questions/794 ... v2-weights
1764742339
Anonymous
Проблема несоответствия векторных данных преобразования текста в 32-мерные: Используйте HuggingFace, чтобы загрузить веса Albert-v2 на локальный компьютер и прочитать текст для вывода. Почему вектор одного и того же текста отличается, когда для параметра Batch_size установлены разные значения при использовании графического процессора? Вот код: [code]import tensorflow as tf import numpy as np import random from transformers import AlbertTokenizer, TFAlbertModel, BertTokenizer, TFBertModel from tqdm import tqdm seed = 42 tf.random.set_seed(seed) random.seed(seed) np.random.seed(seed) tokenizer = AlbertTokenizer.from_pretrained('albert') albert_model = TFAlbertModel.from_pretrained("albert", output_hidden_states=True) albert_model.trainable = False # 禁用训练模式 embedding_dim = 32 dense_layer = tf.keras.layers.Dense(embedding_dim, activation='linear', use_bias=False) dense_layer.build((None, 768)) dense_layer.kernel.assign(tf.random.normal((768, embedding_dim))) def text_to_embedding(texts, max_length=60): inputs = tokenizer(texts, return_tensors='tf', padding='max_length', truncation=True, max_length=max_length) with tf.device('/GPU:0'): outputs = albert_model(inputs['input_ids'], attention_mask=inputs['attention_mask']) last_hidden_state = outputs.last_hidden_state # hidden_states = outputs.hidden_states # 获取所有层的输出 # print(hidden_states) mean_output = tf.reduce_mean(last_hidden_state, axis=1) reduced_output = dense_layer(mean_output) return reduced_output.numpy() # 返回 numpy 数组 texts = ['无经验描述', '无工作经历 ', '-', '什么都没有', '无工作经历-无经验描述'] max_length = 60 batch_size = 2 # 或者 10 batches = [texts[i:i + batch_size] for i in range(0, len(texts), batch_size)] for batch in tqdm(batches): embedding = text_to_embedding(batch, max_length=max_length) print(embedding) [/code] почему пакетный размер=1 и 2, результат разный? Подробнее здесь: [url]https://stackoverflow.com/questions/79475774/convert-text-to-32-dimensional-vector-using-albert-v2-weights[/url]