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

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

做我女朋友好不好套路網(wǎng)站seo高級優(yōu)化技巧

做我女朋友好不好套路網(wǎng)站,seo高級優(yōu)化技巧,用frontpage制作網(wǎng)頁教程,個人簡歷模板可編輯前言 最近在學Transformer,學了理論的部分之后就開始學代碼的實現(xiàn),這里是跟著b站的up主的視頻記的筆記,視頻鏈接:19、Transformer模型Encoder原理精講及其PyTorch逐行實現(xiàn)_嗶哩嗶哩_bilibili 正文 首先導入所需要的包:…

前言

? ? ? ? 最近在學Transformer,學了理論的部分之后就開始學代碼的實現(xiàn),這里是跟著b站的up主的視頻記的筆記,視頻鏈接:19、Transformer模型Encoder原理精講及其PyTorch逐行實現(xiàn)_嗶哩嗶哩_bilibili


正文

? ? ? ? 首先導入所需要的包:

import torch
import numpy as np
import torch.nn as nn
import torch.nn.functional as F

? ? ? ? ?關于Word Embedding,這里以序列建模為例,考慮source sentence、target sentence,構建序列,序列的字符以其在詞表中的索引的形式表示。

? ? ? ? 首先使用定義batch_size的大小,并且使用torch.randint()函數(shù)隨機生成序列長度,這里的src是生成原本的序列,tgt是生成目標的序列。

????????以機器翻譯實現(xiàn)英文翻譯為中文來說,src就是英文句子,tgt就是中文句子,這也就是規(guī)定了要翻譯的英文句子的長度和翻譯出來的句子長度。(舉個例子而已,不用糾結為什么翻譯要限制句子的長度)

batch_size = 2src_len=torch.randint(2,5,(batch_size,))
tgt_len=torch.randint(2,5,(batch_size,))

? ? ? ? 將生成的src_len、tgt_len輸出:

tensor([2, 3])    生成的原序列第一個句子長度為2,第二個句子長度為3
tensor([4, 4])    生成的目標序列第一個句子長度為4,第二個句子長度為4

????????因為隨機生成的,所以每次運行都會有新的結果,也就是生成的src和tgt兩個序列,其子句的長度每次都是隨機的,這里改成生成固定長度的序列:

src_len = torch.Tensor([11, 9]).to(torch.int32)
tgt_len = torch.Tensor([10, 11]).to(torch.int32)

?????????將生成的src_len、tgt_len輸出,此時就固定好了序列長度了:

tensor([11,  9], dtype=torch.int32)
tensor([10, 11], dtype=torch.int32)

? ? ? ? 接著是要實現(xiàn)單詞索引構成的句子,首先定義單詞表的大小和序列的最大長度。

# 單詞表大小
max_num_src_words = 10
max_num_tgt_words = 10# 序列的最大長度
max_src_seg_len = 12
max_tgt_seg_len = 12

? ? ? ? ?以生成原序列為例,使用torch.randint()生成第一個句子和第二個句子,然后放到列表中:

src_seq = [torch.randint(1, max_num_src_words, (L,)) for L in src_len]
[tensor([5, 3, 7, 5, 6, 3, 4, 3]), tensor([1, 6, 3, 1, 1, 7, 4])]

?????????可以發(fā)現(xiàn)生成的兩個序列長度不一樣(因為我們自己定義的時候就是不一樣的),在這里需要使用F.pad()函數(shù)進行padding保證序列長度一致:

src_seq = [F.pad(torch.randint(1, max_num_src_words, (L,)), (0, max_src_seg_len-L)) for L in src_len]
[tensor([8, 5, 2, 4, 6, 8, 1, 4, 0, 0, 0, 0]), tensor([5, 5, 5, 3, 7, 9, 3, 0, 0, 0, 0, 0])]

? ? ? ? ?此時已經(jīng)填充為同樣的長度了,但是不同的句子各為一個張量,需要使用torch.cat()函數(shù)把不同句子的tensor轉(zhuǎn)化為二維的tensor,在此之前需要先把每個張量變成二維的,使用torch.unsqueeze()函數(shù):

src_seq = torch.cat([torch.unsqueeze(F.pad(torch.randint(1, max_num_src_words, (L,)),(0, max_src_seg_len-L)), 0) for L in src_len])
tensor([[9, 7, 7, 4, 7, 3, 9, 4, 7, 8, 8, 0],[1, 1, 5, 9, 5, 6, 2, 7, 4, 0, 0, 0]])
tensor([[3, 3, 2, 8, 3, 4, 1, 2, 9, 4, 0, 0],[1, 6, 3, 8, 5, 1, 5, 5, 1, 5, 3, 0]])

? ? ? ? ?這里把tgt的也補充了,得到的就是src和tgt的內(nèi)容各自在一個二維張量里(batch_size,max_seg_len),batch_size也就是句子數(shù),max_seg_len也就是句子的單詞數(shù)(分為src的長度跟tgt兩種)。

? ? ? ? 補充:可以看到上面三次運行出來的結果都不一樣,因為三次運行的時候,每次都是隨機生成,所以結果肯定不一樣,第三次為什么有兩個二維的tensor是因為第三次把tgt的部分也補上去了,所以就有兩個二維的tensor。

? ? ? ? 接下來就是構造embedding了,這里nn.Embedding()傳入了兩個參數(shù),第一個是embedding的長度,也就是單詞個數(shù)+1,+1的原因是因為有個0是作為填充的,第二個參數(shù)就是embedding的維度,也就是一個單詞會被映射為多少維度的向量。

? ? ? ? 然后調(diào)用forward,得到我們的src和tgt的embedding

src_embedding_table = nn.Embedding(max_num_src_words+1, model_dim)
tgt_embedding_table = nn.Embedding(max_num_tgt_words+1, model_dim)
src_embedding = src_embedding_table(src_seq)   
tgt_embedding = tgt_embedding_table(tgt_seq)
print(src_embedding_table.weight)    # 每一行代表一個embedding向量,第0行讓給pad,從第1行到第行分配給各個單詞,單詞的索引是多少就取對應的行位置的向量
print(src_embedding)    # 根據(jù)src_seq,從src_embedding_table獲取得到的embedding vector,三維張量:batch_size、max_seq_len、model_dim
print(tgt_embedding)

????????此時src_embedding_table.weight的輸出內(nèi)容如下,第一行為填充(0)的向量:

tensor([[-0.3412, ?1.5198, -1.7252, ?0.6905, -0.3832, -0.8586, -2.0788, ?0.3269],
? ? ? ? [-0.5613, ?0.3953, ?1.6818, -2.0385, ?1.1072, ?0.2145, -0.9349, -0.7091],
? ? ? ? [ 1.5881, -0.2389, -0.0347, ?0.3808, ?0.5261, ?0.7253, ?0.8557, -1.0020],
? ? ? ? [-0.2725, ?1.3238, -0.4087, ?1.0758, ?0.5321, -0.3466, -0.9051, -0.8938],
? ? ? ? [-1.5393, ?0.4966, -1.4887, ?0.2795, -1.6751, -0.8635, -0.4689, -0.0827],
? ? ? ? [ 0.6798, ?0.1168, -0.5410, ?0.5363, -0.0503, ?0.4518, -0.3134, -0.6160],
? ? ? ? [-1.1223, ?0.3817, -0.6903, ?0.0479, -0.6894, ?0.7666, ?0.9695, -1.0962],
? ? ? ? [ 0.9608, ?0.0764, ?0.0914, ?1.1949, -1.3853, ?1.1089, -0.9282, -0.9793],
? ? ? ? [-0.9118, -1.4221, -2.4675, -0.1321, ?0.7458, -0.8015, ?0.5114, -0.5023],
? ? ? ? [-1.7504, ?0.0824, ?2.2088, -0.4486, ?0.7324, ?1.8790, ?1.7644, ?1.2731],
? ? ? ? [-0.3791, ?1.9915, -1.0117, ?0.8238, -2.1784, -1.2824, -0.4275, ?0.3202]],
? ? ? ?requires_grad=True)

? ? ? ? src_embedding的輸出結果如下所示,往前看src_seq的第一個句子前三個為9? 7? 7,往前看第9+1行與第7+1行的向量,就是現(xiàn)在輸出的前3個向量:

tensor([[[-1.7504,  0.0824,  2.2088, -0.4486,  0.7324,  1.8790,  1.7644, 1.2731],[ 0.9608,  0.0764,  0.0914,  1.1949, -1.3853,  1.1089, -0.9282, -0.9793],[ 0.9608,  0.0764,  0.0914,  1.1949, -1.3853,  1.1089, -0.9282, -0.9793],[-1.5393,  0.4966, -1.4887,  0.2795, -1.6751, -0.8635, -0.4689, -0.0827],[ 0.9608,  0.0764,  0.0914,  1.1949, -1.3853,  1.1089, -0.9282, -0.9793],[-0.2725,  1.3238, -0.4087,  1.0758,  0.5321, -0.3466, -0.9051, -0.8938],[-1.7504,  0.0824,  2.2088, -0.4486,  0.7324,  1.8790,  1.7644, 1.2731],[-1.5393,  0.4966, -1.4887,  0.2795, -1.6751, -0.8635, -0.4689, -0.0827],[ 0.9608,  0.0764,  0.0914,  1.1949, -1.3853,  1.1089, -0.9282, -0.9793],[-0.9118, -1.4221, -2.4675, -0.1321,  0.7458, -0.8015,  0.5114, -0.5023],[-0.9118, -1.4221, -2.4675, -0.1321,  0.7458, -0.8015,  0.5114, -0.5023],[-0.3412,  1.5198, -1.7252,  0.6905, -0.3832, -0.8586, -2.0788, 0.3269]],[[-0.5613,  0.3953,  1.6818, -2.0385,  1.1072,  0.2145, -0.9349, -0.7091],[-0.5613,  0.3953,  1.6818, -2.0385,  1.1072,  0.2145, -0.9349, -0.7091],[ 0.6798,  0.1168, -0.5410,  0.5363, -0.0503,  0.4518, -0.3134, -0.6160],[-1.7504,  0.0824,  2.2088, -0.4486,  0.7324,  1.8790,  1.7644, 1.2731],[ 0.6798,  0.1168, -0.5410,  0.5363, -0.0503,  0.4518, -0.3134, -0.6160],[-1.1223,  0.3817, -0.6903,  0.0479, -0.6894,  0.7666,  0.9695, -1.0962],[ 1.5881, -0.2389, -0.0347,  0.3808,  0.5261,  0.7253,  0.8557, -1.0020],[ 0.9608,  0.0764,  0.0914,  1.1949, -1.3853,  1.1089, -0.9282, -0.9793],[-1.5393,  0.4966, -1.4887,  0.2795, -1.6751, -0.8635, -0.4689, -0.0827],[-0.3412,  1.5198, -1.7252,  0.6905, -0.3832, -0.8586, -2.0788, 0.3269],[-0.3412,  1.5198, -1.7252,  0.6905, -0.3832, -0.8586, -2.0788, 0.3269],[-0.3412,  1.5198, -1.7252,  0.6905, -0.3832, -0.8586, -2.0788, 0.3269]]], grad_fn=<EmbeddingBackward>)

? ? ? ? ?同理tgt_embedding的輸出結果如下所示:

tensor([[[-1.3681, -0.1619, -0.3676,  0.4312, -1.3842, -0.6180,  0.3685, 1.6281],[-1.3681, -0.1619, -0.3676,  0.4312, -1.3842, -0.6180,  0.3685, 1.6281],[-2.6519, -0.8566,  1.2268,  2.6479, -0.2011, -0.1394, -0.2449, 1.0309],[-0.8919,  0.5235, -3.1833,  0.9388, -0.6213, -0.5146,  0.7913, 0.5126],[-1.3681, -0.1619, -0.3676,  0.4312, -1.3842, -0.6180,  0.3685, 1.6281],[-0.4984,  0.2948, -0.2804, -1.1943, -0.4495,  0.3793, -0.1562, -1.0122],[ 0.8976,  0.5226,  0.0286,  0.1434, -0.2600, -0.7661,  0.1225, -0.7869],[-2.6519, -0.8566,  1.2268,  2.6479, -0.2011, -0.1394, -0.2449, 1.0309],[ 2.2026,  1.8504, -0.6285, -0.0996, -0.0994, -0.0828,  0.6004, -0.3173],[-0.4984,  0.2948, -0.2804, -1.1943, -0.4495,  0.3793, -0.1562, -1.0122],[ 0.3637,  0.4256,  0.7674,  1.4321, -0.1164, -0.6032, -0.8182, -0.6119],[ 0.3637,  0.4256,  0.7674,  1.4321, -0.1164, -0.6032, -0.8182, -0.6119]],[[ 0.8976,  0.5226,  0.0286,  0.1434, -0.2600, -0.7661,  0.1225, -0.7869],[-1.0356,  0.8212,  1.0538,  0.4510,  0.2734,  0.3254,  0.4503, 0.1694],[-1.3681, -0.1619, -0.3676,  0.4312, -1.3842, -0.6180,  0.3685, 1.6281],[-0.8919,  0.5235, -3.1833,  0.9388, -0.6213, -0.5146,  0.7913, 0.5126],[-0.4783, -1.5936,  0.5033,  0.3483, -1.3354,  1.4553, -1.1344, -1.9280],[ 0.8976,  0.5226,  0.0286,  0.1434, -0.2600, -0.7661,  0.1225, -0.7869],[-0.4783, -1.5936,  0.5033,  0.3483, -1.3354,  1.4553, -1.1344, -1.9280],[-0.4783, -1.5936,  0.5033,  0.3483, -1.3354,  1.4553, -1.1344, -1.9280],[ 0.8976,  0.5226,  0.0286,  0.1434, -0.2600, -0.7661,  0.1225, -0.7869],[-0.4783, -1.5936,  0.5033,  0.3483, -1.3354,  1.4553, -1.1344, -1.9280],[-1.3681, -0.1619, -0.3676,  0.4312, -1.3842, -0.6180,  0.3685, 1.6281],[ 0.3637,  0.4256,  0.7674,  1.4321, -0.1164, -0.6032, -0.8182, -0.6119]]], grad_fn=<EmbeddingBackward>)

? ? ? ? 實際想要把文本句子嵌入到Embedding中,需要先根據(jù)自己的詞典,將文本信息轉(zhuǎn)化為每個詞在詞典中的位置,然后第0個位置依舊要讓給Padding,得到索引然后構建Batch再去構造Embedding,以索引為輸入得到每個樣本的Embedding。?

代碼

import torch
import numpy as np
import torch.nn as nn
import torch.nn.functional as F# 句子數(shù)
batch_size = 2# 單詞表大小
max_num_src_words = 10
max_num_tgt_words = 10# 序列的最大長度
max_src_seg_len = 12
max_tgt_seg_len = 12# 模型的維度
model_dim = 8# 生成固定長度的序列
src_len = torch.Tensor([11, 9]).to(torch.int32)
tgt_len = torch.Tensor([10, 11]).to(torch.int32)
print(src_len)
print(tgt_len)#單詞索引構成的句子
src_seq = torch.cat([torch.unsqueeze(F.pad(torch.randint(1, max_num_src_words, (L,)),(0, max_src_seg_len-L)), 0) for L in src_len])
tgt_seq = torch.cat([torch.unsqueeze(F.pad(torch.randint(1, max_num_tgt_words, (L,)),(0, max_tgt_seg_len-L)), 0) for L in tgt_len])
print(src_seq)
print(tgt_seq)# 構造embedding
src_embedding_table = nn.Embedding(max_num_src_words+1, model_dim)
tgt_embedding_table = nn.Embedding(max_num_tgt_words+1, model_dim)
src_embedding = src_embedding_table(src_seq)  
tgt_embedding = tgt_embedding_table(tgt_seq)
print(src_embedding_table.weight)    
print(src_embedding)    
print(tgt_embedding)

參考

?torch.randint — PyTorch 2.3 documentation

torch.nn.functional.pad — PyTorch 2.3 文檔

F.pad 的理解_domain:luyixian.cn-CSDN博客

嵌入 — PyTorch 2.3 文檔

http://www.risenshineclean.com/news/36769.html

相關文章:

  • 做局域網(wǎng)網(wǎng)站公司網(wǎng)站怎么弄
  • 家居企業(yè)網(wǎng)站建設如何豬八戒網(wǎng)接單平臺
  • 廣州 企業(yè)網(wǎng)站建設百度貼吧怎么做推廣
  • 新興建設網(wǎng)站頭條指數(shù)
  • 小型手機網(wǎng)站建設哪家好百度視頻
  • 收圖片的網(wǎng)站企業(yè)培訓計劃方案
  • 三亞網(wǎng)站建設介紹首頁
  • 怎么做網(wǎng)盤搜索引擎網(wǎng)站抖音怎么推廣
  • 網(wǎng)站設計第一步怎么做今日國內(nèi)新聞10則
  • 站長平臺有哪些百度平臺營銷軟件
  • 建筑專業(yè)網(wǎng)站文明seo技術教程網(wǎng)
  • wordpress 添加icp舟山百度seo
  • 網(wǎng)站右邊跳出的廣告怎么做可以推廣的軟件有哪些
  • 惠民網(wǎng)站建設淺議網(wǎng)絡營銷論文
  • 休閑旅游產(chǎn)品營銷網(wǎng)站的建設策略app運營
  • 深圳高端網(wǎng)站開發(fā)網(wǎng)絡營銷的優(yōu)勢有哪些?
  • 外貿(mào)網(wǎng)站推廣實操手冊2023年新聞小學生摘抄
  • 怎么建立自己的網(wǎng)站平臺多少錢南寧seo優(yōu)化公司排名
  • 黃江鎮(zhèn)做網(wǎng)站在線生成個人網(wǎng)站源碼
  • 自己做網(wǎng)站 發(fā)布視頻北京自動seo
  • 建設部舉報網(wǎng)站西安網(wǎng)站建設方案優(yōu)化
  • 凡科建站可以多人協(xié)作編輯嗎北京百度快照推廣公司
  • 渭南做網(wǎng)站的公司河北高端網(wǎng)站建設
  • 網(wǎng)站開發(fā)人員要求科技網(wǎng)站建設公司
  • 綁定網(wǎng)站品牌策劃與推廣方案
  • 建一個購物網(wǎng)站需要多少錢邯鄲今日頭條最新消息
  • 免費個人網(wǎng)站建設可口可樂軟文營銷案例
  • 惠州網(wǎng)站開發(fā)公司網(wǎng)頁
  • 建網(wǎng)站怎么避免備案百度推廣課程
  • 可以做哪些網(wǎng)站我想自己建立一個網(wǎng)站