国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

Pytorch在NLP中的簡單應用詳解

2024-07-09 22:43:13
字體:
來源:轉載
供稿:網友

因為之前在項目中一直使用Tensorflow,最近需要處理NLP問題,對Pytorch框架還比較陌生,所以特地再學習一下pytorch在自然語言處理問題中的簡單使用,這里做一個記錄。

一、Pytorch基礎

首先,第一步是導入pytorch的一系列包

import torchimport torch.autograd as autograd #Autograd為Tensor所有操作提供自動求導方法import torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optim

1)Tensor張量

a) 創建Tensors

#tensorx = torch.Tensor([[1,2,3],[4,5,6]])#size為2x3x4的隨機數隨機數x = torch.randn((2,3,4))

b) Tensors計算

x = torch.Tensor([[1,2],[3,4]])y = torch.Tensor([[5,6],[7,8]])z = x+y

c) Reshape Tensors

x = torch.randn(2,3,4)#拉直x = x.view(-1)#4*6維度x = x.view(4,6)

2)計算圖和自動微分

a) Variable變量

#將Tensor變為Variablex = autograd.Variable(torch.Tensor([1,2,3]),requires_grad = True)#將Variable變為Tensory = x.data

b) 反向梯度算法

x = autograd.Variable(torch.Tensor([1,2]),requires_grad=True)y = autograd.Variable(torch.Tensor([3,4]),requires_grad=True)z = x+y#求和s = z.sum()#反向梯度傳播s.backward()print(x.grad)

c) 線性映射

linear = nn.Linear(3,5) #三維線性映射到五維x = autograd.Variable(torch.randn(4,3))#輸出為(4,5)維y = linear(x)

d) 非線性映射(激活函數的使用)

x = autograd.Variable(torch.randn(5))#relu激活函數x_relu = F.relu(x)print(x_relu)x_soft = F.softmax(x)#softmax激活函數print(x_soft)print(x_soft.sum())

output:

Variable containing:-0.9347-0.9882 1.3801-0.1173 0.9317[torch.FloatTensor of size 5] Variable containing: 0.0481 0.0456 0.4867 0.1089 0.3108[torch.FloatTensor of size 5] Variable containing: 1[torch.FloatTensor of size 1] Variable containing:-3.0350-3.0885-0.7201-2.2176-1.1686[torch.FloatTensor of size 5]

二、Pytorch創建網絡

1) word embedding詞嵌入

通過nn.Embedding(m,n)實現,m表示所有的單詞數目,n表示詞嵌入的維度。

word_to_idx = {'hello':0,'world':1}embeds = nn.Embedding(2,5) #即兩個單詞,單詞的詞嵌入維度為5hello_idx = torch.LongTensor([word_to_idx['hello']])hello_idx = autograd.Variable(hello_idx)hello_embed = embeds(hello_idx)print(hello_embed)

output:

Variable containing:-0.6982 0.3909 -1.0760 -1.6215 0.4429[torch.FloatTensor of size 1x5]

2) N-Gram 語言模型

先介紹一下N-Gram語言模型,給定一個單詞序列 ,計算 ,其中 是序列的第 個單詞。

import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.autograd as autogradimport torch.optim as optim from six.moves import xrange

對句子進行分詞:

context_size = 2embed_dim = 10text_sequence = """When forty winters shall besiege thy brow,And dig deep trenches in thy beauty's field,Thy youth's proud livery so gazed on now,Will be a totter'd weed of small worth held:Then being asked, where all thy beauty lies,Where all the treasure of thy lusty days;To say, within thine own deep sunken eyes,Were an all-eating shame, and thriftless praise.How much more praise deserv'd thy beauty's use,If thou couldst answer 'This fair child of mineShall sum my count, and make my old excuse,'Proving his beauty by succession thine!This were to be new made when thou art old,And see thy blood warm when thou feel'st it cold.""".split()#分詞trigrams = [ ([text_sequence[i], text_sequence[i+1]], text_sequence[i+2]) for i in xrange(len(text_sequence) - 2) ]trigrams[:10]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南宁市| 高尔夫| 长岛县| 丹东市| 榆中县| 章丘市| 阿勒泰市| 肇州县| 诏安县| 枞阳县| 阜南县| 会昌县| 新巴尔虎左旗| 仁怀市| 双峰县| 罗源县| 家居| 中阳县| 中西区| 萍乡市| 彭水| 邵阳县| 汾西县| 麻城市| 乐安县| 江口县| 武安市| 含山县| 光泽县| 庐江县| 忻州市| 昔阳县| 周口市| 仁怀市| 九江县| 班玛县| 古蔺县| 苏州市| 房产| 许昌市| 平和县|