Код: Выделить всё
from transformers import DistilBertModel
import numpy as np
model = DistilBertModel.from_pretrained("distilbert-base-uncased")
layer_0 = model.transformer.layer[0]
W_q = layer_0.attention.q_lin.weight.detach().numpy()
W_k = layer_0.attention.k_lin.weight.detach().numpy()
W_v = layer_0.attention.v_lin.weight.detach().numpy()
zeros = np.zeros((len(input_matrix), 468))
expanded_matrix = np.hstack((input_matrix, zeros))
Код: Выделить всё
@
K = expanded_matrix @ W_k
V = expanded_matrix @ W_v
< /code>
Я видел ожидаемые отношения между словами. Однако для слоя 0 все точечные продукты были отрицательными. Это указывает на что -то не так? Для остальных 5 слоев значения представляли собой смесь негативов, нулей и положительных результатов (которые я ожидал). < /P>
Любой вход ценится. Если вы знаете другой трансформатор с предварительно обученным Q, k, V матрирами, совместимыми с моим оригинальным (num_words, 300) вход, пожалуйста, дайте мне знать.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ve-their-s