国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 基于pytorch實現(xiàn)多頭自注意力機制代碼;Multiheads-Self-Attention代碼實現(xiàn)

這篇具有很好參考價值的文章主要介紹了Python 基于pytorch實現(xiàn)多頭自注意力機制代碼;Multiheads-Self-Attention代碼實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.Multiheads-Self-Attentiona簡介

多頭自注意力機制(Multi-Head Self-Attention)是一種注意力機制的變體,用于增強模型在處理序列數(shù)據時的建模能力。它在自注意力機制的基礎上引入了多個頭(Attention Head),每個頭都可以學習到不同的注意力權重分布,從而能夠捕捉到不同的關系和特征。

多頭自注意力機制可以分為以下幾個主要步驟:

1.1查詢、鍵和值的線性變換

????????首先,將輸入的查詢向量Q、鍵向量K和值向量V進行線性變換,得到多組查詢、鍵和值。具體來說,將它們通過不同的線性變換矩陣分別投射到不同的低維空間中,得到多組變換后的查詢向量Q'、鍵向量K'和值向量V'。

1.2多頭注意力權重的計算

????????在這一步驟中,針對每個注意力頭,分別計算出對應的注意力權重。具體來說,對于每個頭,將變換后的查詢向量Q'與鍵向量K'進行點積操作,然后通過softmax函數(shù)將得分歸一化為概率分布。這樣就得到了多組注意力權重。

1.3多頭上下文向量的計算

????????針對每個注意力頭,將對應的注意力權重與變換后的值向量V'進行加權求和,得到多組上下文向量。這些上下文向量將包含各個頭所關注的不同信息。

1.4多頭上下文的融合

????????將多組上下文向量在特定維度上進行拼接或線性變換,將它們融合成最終的上下文向量。這樣得到的上下文向量將包含從多個頭中學到的不同特征和關系。

????????多頭自注意力機制的優(yōu)勢在于可以并行地學習多組不同的注意力權重,從而能夠提取不同層次、不同類型的相關信息。通過引入多頭機制,模型可以同時關注序列中的多個位置,并從不同的角度對序列進行編碼,提高了模型的表達能力和泛化能力。

多頭注意力機制pytorch,NLP,GPT,LLMs,python,注意力機制,transformer,多頭注意力,人工智能

圖中h就是代表頭的數(shù)量,這個是transformer結構的一部分

多頭注意力機制pytorch,NLP,GPT,LLMs,python,注意力機制,transformer,多頭注意力,人工智能

2.代碼實現(xiàn)Multi-heads-Self-Attentiona結構

import torch
import torch.nn.functional as F
# 一個形狀為 (batch_size, seq_len, feature_dim) 的張量 x
x = torch.randn(2, 3, 4)  # 形狀 (batch_size, seq_len, feature_dim) 
# 定義頭數(shù)和每個頭的維度
num_heads = 2
head_dim = 2
# feature_dim 必須是 num_heads * head_dim 的整數(shù)倍
assert x.size(-1) == num_heads * head_dim
# 定義線性層用于將 x 轉換為 Q, K, V 向量
linear_q = torch.nn.Linear(4, 4)
linear_k = torch.nn.Linear(4, 4)
linear_v = torch.nn.Linear(4, 4)
# 通過線性層計算 Q, K, V
Q = linear_q(x)  # 形狀 (batch_size, seq_len, feature_dim) 
K = linear_k(x)  # 形狀 (batch_size, seq_len, feature_dim) 
V = linear_v(x)  # 形狀 (batch_size, seq_len, feature_dim) 
# 將 Q, K, V 分割成 num_heads 個頭
def split_heads(tensor, num_heads):
    batch_size, seq_len, feature_dim = tensor.size()
    head_dim = feature_dim // num_heads
    output = tensor.view(batch_size, seq_len, num_heads, head_dim).transpose(1, 2)
    return  output # 形狀 (batch_size, num_heads, seq_len, feature_dim)
Q = split_heads(Q, num_heads)  # 形狀 (batch_size, num_heads, seq_len, head_dim)
K = split_heads(K, num_heads)  # 形狀 (batch_size, num_heads, seq_len, head_dim)
V = split_heads(V, num_heads)  # 形狀 (batch_size, num_heads, seq_len, head_dim)
# 計算 Q 和 K 的點積,作為相似度分數(shù) , 也就是自注意力原始權重
raw_weights = torch.matmul(Q, K.transpose(-2, -1))  # 形狀 (batch_size, num_heads, seq_len, seq_len)
# 對自注意力原始權重進行縮放
scale_factor = K.size(-1) ** 0.5
scaled_weights = raw_weights / scale_factor  # 形狀 (batch_size, num_heads, seq_len, seq_len)
# 對縮放后的權重進行 softmax 歸一化,得到注意力權重
attn_weights = F.softmax(scaled_weights, dim=-1)  # 形狀 (batch_size, num_heads, seq_len, seq_len)
# 將注意力權重應用于 V 向量,計算加權和,得到加權信息
attn_outputs = torch.matmul(attn_weights, V)  # 形狀 (batch_size, num_heads, seq_len, head_dim)
# 將所有頭的結果拼接起來
def combine_heads(tensor, num_heads):
    batch_size, num_heads, seq_len, head_dim = tensor.size()
    feature_dim = num_heads * head_dim
    output = tensor.transpose(1, 2).contiguous().view(batch_size, seq_len, feature_dim)
    return output# 形狀 : (batch_size, seq_len, feature_dim)
attn_outputs = combine_heads(attn_outputs, num_heads)  # 形狀 (batch_size, seq_len, feature_dim) 
# 對拼接后的結果進行線性變換
linear_out = torch.nn.Linear(4, 4)
attn_outputs = linear_out(attn_outputs)  # 形狀 (batch_size, seq_len, feature_dim) 
print(" 加權信息 :", attn_outputs)

多頭注意力機制pytorch,NLP,GPT,LLMs,python,注意力機制,transformer,多頭注意力,人工智能

在我的其它文章中詳細介紹了transformer和gpt的結構,具體代碼見此專欄的其他文章?

3.總結

????????值得注意的是,多頭自注意力機制通常還會引入一些線性變換和歸一化操作,以增加模型的表達能力和穩(wěn)定性。比如,可以通過將多個頭輸出的上下文向量進行線性變換并拼接,然后再通過另一個線性變換將其映射到目標空間。同時,為了保持變換前后的數(shù)值范圍一致,常常會進行歸一化操作,如層歸一化(Layer Normalization)或批次歸一化(Batch Normalization)。

????????綜上所述,多頭自注意力機制通過引入多組注意力頭,可以并行學習多個不同的注意力權重,從而能夠提取不同層次、不同類型的相關信息,增強模型的表達能力和泛化能力。它是當前很多自然語言處理任務中常用的重要注意力機制之一。文章來源地址http://www.zghlxwxcb.cn/news/detail-858344.html

到了這里,關于Python 基于pytorch實現(xiàn)多頭自注意力機制代碼;Multiheads-Self-Attention代碼實現(xiàn)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Transformer系列(2)】注意力機制、自注意力機制、多頭注意力機制、通道注意力機制、空間注意力機制超詳細講解

    【Transformer系列(2)】注意力機制、自注意力機制、多頭注意力機制、通道注意力機制、空間注意力機制超詳細講解

    注意力機制一直是一個比較熱的話題,其實在很早之前就提出了,我們在學習圖像分類時在SENet就見到過(直通車:經典神經網絡論文超詳細解讀(七)——SENet(注意力機制)學習筆記(翻譯+精讀+代碼復現(xiàn)))自從谷歌發(fā)表了《Attention Is All You Need》這篇論文后,注意力

    2024年02月06日
    瀏覽(23)
  • 【NLP】多頭注意力概念(02)

    【NLP】多頭注意力概念(02)

    接上文:? 【NLP】多頭注意力概念(01)? ????????將? Q 、K 和? V? 拆分為它們的頭部后,現(xiàn)在可以計算? Q? 和? K? 的縮放點積。上面的等式表明,第一步是執(zhí)行張量乘法。但是, 必須先 轉置 K。 ????????展望未來,每個張量的 seq_length 形狀將通過其各自的張量來識

    2024年02月16日
    瀏覽(23)
  • Bert基礎(二)--多頭注意力

    Bert基礎(二)--多頭注意力

    顧名思義,多頭注意力是指我們可以使用多個注意力頭,而不是只用一個。也就是說,我們可以應用在上篇中學習的計算注意力矩陣Z的方法,來求得多個注意力矩陣。讓我們通過一個例子來理解多頭注意力層的作用。以All is well這句話為例,假設我們需要計算well的自注意力值

    2024年02月21日
    瀏覽(23)
  • 【NLP】多頭注意力概念(01)

    ????????本文是“已實施的變壓器”系列的一篇。它從零開始引入了多頭注意力機制。注意力是變壓器背后的支柱和力量,因為它為序列提供了上下文。 ????????在變壓器模型中,注意力為每個序列提供上下文。這有助于模型了解不同單詞如何相互關聯(lián),以創(chuàng)建有意義

    2024年02月16日
    瀏覽(21)
  • MultiHeadAttention多頭注意力機制的原理

    MultiHeadAttention多頭注意力機制的原理

    MultiHeadAttention多頭注意力作為Transformer的核心組件,其主要由多組自注意力組合構成。 在NLP任務中,自注意力能夠根據上下文詞來重新構建目標詞的表示,其之所以被稱之為注意力,在于從上下文詞中去篩選目標詞更需要關注的部分,比如\\\"他叫小明\\\",\\\"他\\\"這個詞更應該關注

    2023年04月21日
    瀏覽(21)
  • 多維時序 | MATLAB實現(xiàn)TSOA-TCN-Multihead-Attention多頭注意力機制多變量時間序列預測

    多維時序 | MATLAB實現(xiàn)TSOA-TCN-Multihead-Attention多頭注意力機制多變量時間序列預測

    預測效果 基本介紹 MATLAB實現(xiàn)TSOA-TCN-Multihead-Attention多頭注意力機制多變量時間序列預測。 模型描述 MATLAB實現(xiàn)TSOA-TCN-Multihead-Attention凌日優(yōu)化時間卷積神經網絡融合多頭自注意力機制的多變量時間序列預測,用于處理時間序列數(shù)據;適用平臺:Matlab 2023及以上 1.data為數(shù)據集,格

    2024年02月05日
    瀏覽(32)
  • 【軸承RUL預測代碼】基于TCN、TCN和多頭注意力(TCN和Transformer的encoder結合)、Transformer模型的軸承RUL預測代碼(精華)

    這里以PHM2012軸承特征數(shù)據集為例,采樣頻率為25.6kHz,采樣持續(xù)時間是0.1s,采樣點數(shù)是2560 原始特征集 類型 振動數(shù)據 2560維度 FFT預處理數(shù)據 1280維度 STFT預處理數(shù)據 1281維度 后續(xù)還可以將上述的原始特征集數(shù)據作為深度自編網絡的輸入,進行無監(jiān)督學習,提取深度特征數(shù)據 自

    2024年02月12日
    瀏覽(47)
  • 深入理解Transformer,兼談MHSA(多頭自注意力)、Cross-Attention(交叉注意力)、LayerNorm、FFN、位置編碼

    深入理解Transformer,兼談MHSA(多頭自注意力)、Cross-Attention(交叉注意力)、LayerNorm、FFN、位置編碼

    Transformer其實不是完全的Self-Attention(SA,自注意力)結構,還帶有Cross-Attention(CA,交叉注意力)、殘差連接、LayerNorm、類似1維卷積的Position-wise Feed-Forward Networks(FFN)、MLP和Positional Encoding(位置編碼)等 本文涵蓋Transformer所采用的MHSA(多頭自注意力)、LayerNorm、FFN、位置編

    2024年04月12日
    瀏覽(51)
  • multi-head_seft-attention(多頭自注意力)

    multi-head_seft-attention(多頭自注意力)

    相比于single-head,multi-head就是將 q i q^i q i 分成了 h h h 份 將 q i q^i q i 分成了 h h h 份 計算過程 對于每個Head,我們可以提取出他的 b 11 b_{11} b 11 ? 到 b m 1 b_{m1} b m 1 ? ,以 H e a d 1 Head_1 He a d 1 ? 舉例 將輸入序列進行embedding后,變?yōu)橄蛄?a 1 a_1 a 1 ? , a 2 a_2 a 2 ? , a 3 a_3 a 3 ?

    2024年02月13日
    瀏覽(19)
  • 深入理解深度學習——注意力機制(Attention Mechanism):帶掩碼的多頭注意力(Masked Multi-head Attention)

    深入理解深度學習——注意力機制(Attention Mechanism):帶掩碼的多頭注意力(Masked Multi-head Attention)

    分類目錄:《深入理解深度學習》總目錄 相關文章: ·注意力機制(AttentionMechanism):基礎知識 ·注意力機制(AttentionMechanism):注意力匯聚與Nadaraya-Watson核回歸 ·注意力機制(AttentionMechanism):注意力評分函數(shù)(AttentionScoringFunction) ·注意力機制(AttentionMechanism):Bahda

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包