中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

信息化平臺的功能介紹搜索引擎優(yōu)化 簡歷

信息化平臺的功能介紹,搜索引擎優(yōu)化 簡歷,wordpress 插件 破解版,wordpress鏈接按鈕目錄 1.Transformer宏觀結(jié)構(gòu) 2.Transformer結(jié)構(gòu)細節(jié) 2.1輸入 2.2編碼部分 2.3解碼部分 2.4多頭注意力機制 2.5線性層和softmax 2.6 損失函數(shù) 3.參考代碼 🍨 本文為[🔗365天深度學習訓練營]內(nèi)部限免文章(版權(quán)歸 *K同學啊* 所有&#…

目錄

1.Transformer宏觀結(jié)構(gòu)

2.Transformer結(jié)構(gòu)細節(jié)

2.1輸入

2.2編碼部分

2.3解碼部分

2.4多頭注意力機制

2.5線性層和softmax

2.6?損失函數(shù)

3.參考代碼


🍨 本文為[🔗365天深度學習訓練營]內(nèi)部限免文章(版權(quán)歸 *K同學啊* 所有)
🍖 作者:[K同學啊]

Transformer整體結(jié)構(gòu)圖,與seq2seq模型類似,Transformer模型結(jié)構(gòu)中的左半部分為編碼器(encoder),右半部分為解碼器(decoder),接下來拆解Transformer。

1.Transformer宏觀結(jié)構(gòu)

Transformer模型類似于seq2seq結(jié)構(gòu),包含編碼部分和解碼部分。不同之處在于它能夠并行計算整個序列輸入,無需按時間步進行逐步處理。

其宏觀結(jié)構(gòu)如下:

6層編碼和6層解碼器

其中,每層encoder由兩部分組成:

  • Self-Attention Layer
  • Feed Forward Neural Network(前饋神經(jīng)網(wǎng)絡,FFNN)

decoder在encoder的Self-Attention和FFNN中間多加了一個Encoder-Decoder Attention層。該層的作用是幫助解碼器集中注意力于輸入序列中最相關(guān)的部分。

單層encoder和decoder

2.Transformer結(jié)構(gòu)細節(jié)

2.1輸入

Transformer的數(shù)據(jù)輸入與seq2seq不同。除了詞向量,Transformer還需要輸入位置向量,用于確定每個單詞的位置特征和句子中不同單詞之間的距離特征。

2.2編碼部分

編碼部分的輸入文本序列經(jīng)過處理后得到向量序列,送入第一層編碼器。每層編碼器輸出一個向量序列,作為下一層編碼器的輸入。第一層編碼器的輸入是融合位置向量的詞向量,后續(xù)每層編碼器的輸入則是前一層編碼器的輸出。

2.3解碼部分

最后一個編碼器輸出一組序列向量,作為解碼器的K、V輸入。

解碼階段的每個時間步輸出一個翻譯后的單詞。當前時間步的解碼器輸出作為下一個時間步解碼器的輸入Q,與編碼器的輸出K、V共同組成下一步的輸入。重復此過程直到輸出一個結(jié)束符。

解碼器中的 Self-Attention 層,和編碼器中的 Self-Attention 層的區(qū)別:

  • 在解碼器里,Self-Attention 層只允許關(guān)注到輸出序列中早于當前位置之前的單詞。具體做法是:在 Self-Attention 分數(shù)經(jīng)過 Softmax 層之前,屏蔽當前位置之后的那些位置(將Attention Score設置成-inf)。
  • 解碼器 Attention層是使用前一層的輸出來構(gòu)造Query 矩陣,而Key矩陣和Value矩陣來自于編碼器最終的輸出。

2.4多頭注意力機制

Transformer論文引入了多頭注意力機制(多個注意力頭組成),以進一步完善Self-Attention。

  • 它擴展了模型關(guān)注不同位置的能力
  • 多頭注意力機制賦予Attention層多個“子表示空間”。

殘差鏈接&Normalize:?編碼器和解碼器的每個子層(Self-Attention 層和 FFNN)都有一個殘差連接和層標準化(layer-normalization),細節(jié)如下圖

2.5線性層和softmax

Decoder最終輸出一個浮點數(shù)向量。通過線性層和Softmax,將該向量轉(zhuǎn)換為一個包含模型輸出詞匯表中每個單詞分數(shù)的logits向量(假設有10000個英語單詞)。Softmax將這些分數(shù)轉(zhuǎn)換為概率,使其總和為1。然后選擇具有最高概率的數(shù)字對應的詞作為該時間步的輸出單詞。

2.6?損失函數(shù)

在Transformer訓練過程中,解碼器的輸出和標簽一起輸入損失函數(shù),以計算損失(loss)。最終,模型通過方向傳播(backpropagation)來優(yōu)化損失。

3.參考代碼

class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.embed_size = embed_sizeself.heads = headsself.head_dim = embed_size // headsassert (self.head_dim * heads == embed_size), "Embed size needs to be div by heads"self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)self.fc_out = nn.Linear(heads * self.head_dim, embed_size)def forward(self, values, keys, query, mask):N =query.shape[0]value_len , key_len , query_len = values.shape[1], keys.shape[1], query.shape[1]# split embedding into self.heads piecesvalues = values.reshape(N, value_len, self.heads, self.head_dim)keys = keys.reshape(N, key_len, self.heads, self.head_dim)queries = query.reshape(N, query_len, self.heads, self.head_dim)values = self.values(values)keys = self.keys(keys)queries = self.queries(queries)energy = torch.einsum("nqhd,nkhd->nhqk", queries, keys)# queries shape: (N, query_len, heads, heads_dim)# keys shape : (N, key_len, heads, heads_dim)# energy shape: (N, heads, query_len, key_len)if mask is not None:energy = energy.masked_fill(mask == 0, float("-1e20"))attention = torch.softmax(energy/ (self.embed_size ** (1/2)), dim=3)out = torch.einsum("nhql, nlhd->nqhd", [attention, values]).reshape(N, query_len, self.heads*self.head_dim)# attention shape: (N, heads, query_len, key_len)# values shape: (N, value_len, heads, heads_dim)# (N, query_len, heads, head_dim)out = self.fc_out(out)return outclass TransformerBlock(nn.Module):def __init__(self, embed_size, heads, dropout, forward_expansion):super(TransformerBlock, self).__init__()self.attention = SelfAttention(embed_size, heads)self.norm1 = nn.LayerNorm(embed_size)self.norm2 = nn.LayerNorm(embed_size)self.feed_forward = nn.Sequential(nn.Linear(embed_size, forward_expansion*embed_size),nn.ReLU(),nn.Linear(forward_expansion*embed_size, embed_size))self.dropout = nn.Dropout(dropout)def forward(self, value, key, query, mask):attention = self.attention(value, key, query, mask)x = self.dropout(self.norm1(attention + query))forward = self.feed_forward(x)out = self.dropout(self.norm2(forward + x))return outclass Encoder(nn.Module):def __init__(self,src_vocab_size,embed_size,num_layers,heads,device,forward_expansion,dropout,max_length,):super(Encoder, self).__init__()self.embed_size = embed_sizeself.device = deviceself.word_embedding = nn.Embedding(src_vocab_size, embed_size)self.position_embedding = nn.Embedding(max_length, embed_size)self.layers = nn.ModuleList([TransformerBlock(embed_size,heads,dropout=dropout,forward_expansion=forward_expansion,)for _ in range(num_layers)])self.dropout = nn.Dropout(dropout)def forward(self, x, mask):N, seq_length = x.shapepositions = torch.arange(0, seq_length).expand(N, seq_length).to(self.device)out = self.dropout(self.word_embedding(x) + self.position_embedding(positions))for layer in self.layers:out = layer(out, out, out, mask)return outclass DecoderBlock(nn.Module):def __init__(self, embed_size, heads, forward_expansion, dropout, device):super(DecoderBlock, self).__init__()self.attention = SelfAttention(embed_size, heads)self.norm = nn.LayerNorm(embed_size)self.transformer_block = TransformerBlock(embed_size, heads, dropout, forward_expansion)self.dropout = nn.Dropout(dropout)def forward(self, x, value, key, src_mask, trg_mask):attention = self.attention(x, x, x, trg_mask)query = self.dropout(self.norm(attention + x))out = self.transformer_block(value, key, query, src_mask)return outclass Decoder(nn.Module):def __init__(self,trg_vocab_size,embed_size,num_layers,heads,forward_expansion,dropout,device,max_length,):super(Decoder, self).__init__()self.device = deviceself.word_embedding = nn.Embedding(trg_vocab_size, embed_size)self.position_embedding = nn.Embedding(max_length, embed_size)self.layers = nn.ModuleList([DecoderBlock(embed_size, heads, forward_expansion, dropout, device)for _ in range(num_layers)])self.fc_out = nn.Linear(embed_size, trg_vocab_size)self.dropout = nn.Dropout(dropout)def forward(self, x ,enc_out , src_mask, trg_mask):N, seq_length = x.shapepositions = torch.arange(0, seq_length).expand(N, seq_length).to(self.device)x = self.dropout((self.word_embedding(x) + self.position_embedding(positions)))for layer in self.layers:x = layer(x, enc_out, enc_out, src_mask, trg_mask)out =self.fc_out(x)return outclass Transformer(nn.Module):def __init__(self,src_vocab_size,trg_vocab_size,src_pad_idx,trg_pad_idx,embed_size = 256,num_layers = 6,forward_expansion = 4,heads = 8,dropout = 0,device="cuda",max_length=100):super(Transformer, self).__init__()self.encoder = Encoder(src_vocab_size,embed_size,num_layers,heads,device,forward_expansion,dropout,max_length)self.decoder = Decoder(trg_vocab_size,embed_size,num_layers,heads,forward_expansion,dropout,device,max_length)self.src_pad_idx = src_pad_idxself.trg_pad_idx = trg_pad_idxself.device = devicedef make_src_mask(self, src):src_mask = (src != self.src_pad_idx).unsqueeze(1).unsqueeze(2)# (N, 1, 1, src_len)return src_mask.to(self.device)def make_trg_mask(self, trg):N, trg_len = trg.shapetrg_mask = torch.tril(torch.ones((trg_len, trg_len))).expand(N, 1, trg_len, trg_len)return trg_mask.to(self.device)def forward(self, src, trg):src_mask = self.make_src_mask(src)trg_mask = self.make_trg_mask(trg)enc_src = self.encoder(src, src_mask)out = self.decoder(trg, enc_src, src_mask, trg_mask)return out
http://www.risenshineclean.com/news/41202.html

相關(guān)文章:

  • 深圳住房和建設局網(wǎng)站輪候大廳網(wǎng)絡營銷屬于什么專業(yè)類型
  • 移動端使用wordpress富文本編輯器便宜的seo官網(wǎng)優(yōu)化
  • 全自動網(wǎng)站建設最新實時大數(shù)據(jù)
  • wordpress好用還是dede磐石網(wǎng)站seo
  • 上海高端定制網(wǎng)站公司關(guān)鍵詞優(yōu)化的技巧
  • 門戶網(wǎng)登錄入口seo軟件定制
  • wordpress視覺編輯器seo在線優(yōu)化工具
  • 上海網(wǎng)站公司電話seo推廣是什么意思
  • 權(quán)大師的網(wǎng)站是哪個公司做的香港疫情最新消息
  • 網(wǎng)站建設為中心百度關(guān)鍵詞收錄
  • 個人主頁自助建站搜索引擎的工作原理分為
  • 孝感 網(wǎng)站建設百度電商廣告代運營
  • 棗莊專業(yè)做網(wǎng)站競價廣告代運營
  • 網(wǎng)站域名個人備案查詢推廣平臺排行榜app
  • 國外超酷設計網(wǎng)站游戲推廣
  • 如何做服裝的微商城網(wǎng)站重慶森林經(jīng)典臺詞獨白
  • 云南省建設工程招標投標行業(yè)協(xié)會網(wǎng)站百度seo排名優(yōu)化教程
  • vs2010做網(wǎng)站時間控件廊坊網(wǎng)站排名優(yōu)化公司哪家好
  • readme.md做網(wǎng)站seo平臺是什么意思
  • 哪個網(wǎng)站可以做優(yōu)惠券seo技術(shù)培訓寧波
  • qq是哪個公司開發(fā)seo排名平臺
  • 特價手機網(wǎng)站建設1688seo優(yōu)化是什么
  • 網(wǎng)頁設計實訓報告實訓小結(jié)深圳百度seo整站
  • 網(wǎng)站logo怎么做最清楚惠州網(wǎng)站制作推廣
  • 廈門app網(wǎng)站建設平臺推廣是什么工作
  • 建站之星如何建網(wǎng)站sem推廣是什么
  • 哪里做企業(yè)網(wǎng)站上海seo服務
  • 天津市做網(wǎng)站的公司查淘寶關(guān)鍵詞排名軟件
  • 香港一卡通app下載鄭州seo外包顧問熱狗
  • 去哪里找做網(wǎng)站的百度競價ocpc投放策略