Mã hóa vị trí hình sin
Trung bìnhTransformerAI5 test · 12 giây · sai số 1e-5
Attention không tự biết thứ tự token, nên Transformer cộng thêm vector vị trí vào mỗi token:
- PE[pos, 2i] = sin(pos / 10000^(2i / d_model))
- PE[pos, 2i + 1] = cos(pos / 10000^(2i / d_model))
với pos = 0 … seq_len − 1 và 2i chạy qua các cột chẵn.
Viết hàm
positional_encoding(seq_len, d_model)Tham số
seq_len: số vị tríd_model: số chiều (chẵn)
Trả về
Ma trận (seq_len, d_model).
Ví dụ
Tham số
seq_len = 2 d_model = 4
Kết quả
[[0.0,1.0,0.0,1.0],[0.841470985,0.540302306,0.009999833,0.99995]]
Hàng 0 luôn là [0, 1, 0, 1, …]
Tham số
seq_len = 3 d_model = 2
Kết quả
[[0.0,1.0],[0.841470985,0.540302306],[0.909297427,-0.416146837]]
Bài tiếp theo: Lớp tuyến tính với tensor →
Python · NumPy
Bấm “Chạy thử” để gọi positional_encoding() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.