最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch+lstm實現(xiàn)的pos示例

 更新時間:2020年01月14日 10:33:10   作者:say_c_box  
今天小編就為大家分享一篇pytorch+lstm實現(xiàn)的pos示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

學了幾天終于大概明白pytorch怎么用了

這個是直接搬運的官方文檔的代碼

之后會自己試著實現(xiàn)其他nlp的任務(wù)

# Author: Robert Guthrie

import torch
import torch.autograd as autograd
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

torch.manual_seed(1)


lstm = nn.LSTM(3, 3) # Input dim is 3, output dim is 3
inputs = [autograd.Variable(torch.randn((1, 3)))
     for _ in range(5)] # make a sequence of length 5

# initialize the hidden state.
hidden = (autograd.Variable(torch.randn(1, 1, 3)),
     autograd.Variable(torch.randn((1, 1, 3))))
for i in inputs:
  # Step through the sequence one element at a time.
  # after each step, hidden contains the hidden state.
  out, hidden = lstm(i.view(1, 1, -1), hidden)

# alternatively, we can do the entire sequence all at once.
# the first value returned by LSTM is all of the hidden states throughout
# the sequence. the second is just the most recent hidden state
# (compare the last slice of "out" with "hidden" below, they are the same)
# The reason for this is that:
# "out" will give you access to all hidden states in the sequence
# "hidden" will allow you to continue the sequence and backpropagate,
# by passing it as an argument to the lstm at a later time
# Add the extra 2nd dimension
inputs = torch.cat(inputs).view(len(inputs), 1, -1)
hidden = (autograd.Variable(torch.randn(1, 1, 3)), autograd.Variable(
  torch.randn((1, 1, 3)))) # clean out hidden state
out, hidden = lstm(inputs, hidden)
#print(out)
#print(hidden)

#準備數(shù)據(jù)
def prepare_sequence(seq, to_ix):
  idxs = [to_ix[w] for w in seq]
  tensor = torch.LongTensor(idxs)
  return autograd.Variable(tensor)

training_data = [
  ("The dog ate the apple".split(), ["DET", "NN", "V", "DET", "NN"]),
  ("Everybody read that book".split(), ["NN", "V", "DET", "NN"])
]
word_to_ix = {}
for sent, tags in training_data:
  for word in sent:
    if word not in word_to_ix:
      word_to_ix[word] = len(word_to_ix)
print(word_to_ix)
tag_to_ix = {"DET": 0, "NN": 1, "V": 2}

# These will usually be more like 32 or 64 dimensional.
# We will keep them small, so we can see how the weights change as we train.
EMBEDDING_DIM = 6
HIDDEN_DIM = 6

#繼承自nn.module
class LSTMTagger(nn.Module):

  def __init__(self, embedding_dim, hidden_dim, vocab_size, tagset_size):
    super(LSTMTagger, self).__init__()
    self.hidden_dim = hidden_dim

    #一個單詞數(shù)量到embedding維數(shù)的矩陣
    self.word_embeddings = nn.Embedding(vocab_size, embedding_dim)

    #傳入兩個維度參數(shù)
    # The LSTM takes word embeddings as inputs, and outputs hidden states
    # with dimensionality hidden_dim.
    self.lstm = nn.LSTM(embedding_dim, hidden_dim)

    #線性layer從隱藏狀態(tài)空間映射到tag便簽
    # The linear layer that maps from hidden state space to tag space
    self.hidden2tag = nn.Linear(hidden_dim, tagset_size)
    self.hidden = self.init_hidden()

  def init_hidden(self):
    # Before we've done anything, we dont have any hidden state.
    # Refer to the Pytorch documentation to see exactly
    # why they have this dimensionality.
    # The axes semantics are (num_layers, minibatch_size, hidden_dim)
    return (autograd.Variable(torch.zeros(1, 1, self.hidden_dim)),
        autograd.Variable(torch.zeros(1, 1, self.hidden_dim)))

  def forward(self, sentence):
    embeds = self.word_embeddings(sentence)
    lstm_out, self.hidden = self.lstm(embeds.view(len(sentence), 1, -1), self.hidden)
    tag_space = self.hidden2tag(lstm_out.view(len(sentence), -1))
    tag_scores = F.log_softmax(tag_space)
    return tag_scores

#embedding維度,hidden維度,詞語數(shù)量,標簽數(shù)量
model = LSTMTagger(EMBEDDING_DIM, HIDDEN_DIM, len(word_to_ix), len(tag_to_ix))

#optim中存了各種優(yōu)化算法
loss_function = nn.NLLLoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

# See what the scores are before training
# Note that element i,j of the output is the score for tag j for word i.
inputs = prepare_sequence(training_data[0][0], word_to_ix)
tag_scores = model(inputs)
print(tag_scores)

for epoch in range(300): # again, normally you would NOT do 300 epochs, it is toy data
  for sentence, tags in training_data:
    # Step 1. Remember that Pytorch accumulates gradients.
    # We need to clear them out before each instance
    model.zero_grad()

    # Also, we need to clear out the hidden state of the LSTM,
    # detaching it from its history on the last instance.
    model.hidden = model.init_hidden()

    # Step 2. Get our inputs ready for the network, that is, turn them into
    # Variables of word indices.
    sentence_in = prepare_sequence(sentence, word_to_ix)
    targets = prepare_sequence(tags, tag_to_ix)

    # Step 3. Run our forward pass.
    tag_scores = model(sentence_in)

    # Step 4. Compute the loss, gradients, and update the parameters by
    # calling optimizer.step()
    loss = loss_function(tag_scores, targets)
    loss.backward()
    optimizer.step()

# See what the scores are after training
inputs = prepare_sequence(training_data[0][0], word_to_ix)
tag_scores = model(inputs)
# The sentence is "the dog ate the apple". i,j corresponds to score for tag j
# for word i. The predicted tag is the maximum scoring tag.
# Here, we can see the predicted sequence below is 0 1 2 0 1
# since 0 is index of the maximum value of row 1,
# 1 is the index of maximum value of row 2, etc.
# Which is DET NOUN VERB DET NOUN, the correct sequence!
print(tag_scores)


以上這篇pytorch+lstm實現(xiàn)的pos示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PyCharm 2021.2 (Professional)調(diào)試遠程服務(wù)器程序的操作技巧

    PyCharm 2021.2 (Professional)調(diào)試遠程服務(wù)器程序的操作技巧

    本文給大家分享用 PyCharm 2021 調(diào)試遠程服務(wù)器程序的過程,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • Python?Opencv實現(xiàn)圖片切割處理

    Python?Opencv實現(xiàn)圖片切割處理

    這篇文章主要為大家詳細介紹了Python?Opencv實現(xiàn)圖片切割處理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python服務(wù)器與android客戶端socket通信實例

    python服務(wù)器與android客戶端socket通信實例

    這篇文章主要介紹了python服務(wù)器與android客戶端socket通信的實現(xiàn)方法,實例形式詳細講述了Python的服務(wù)器端實現(xiàn)原理與方法,以及對應(yīng)的Android客戶端實現(xiàn)方法,需要的朋友可以參考下
    2014-11-11
  • Python安裝教程全過程(2022最新)

    Python安裝教程全過程(2022最新)

    這篇文章主要介紹了Python安裝教程全過程(2022最新版本),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python中的sort()方法使用基礎(chǔ)教程

    Python中的sort()方法使用基礎(chǔ)教程

    這篇文章主要介紹了Python中的sort()方法使用基礎(chǔ)教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • jupyter notebook如何使用matlab

    jupyter notebook如何使用matlab

    這篇文章主要介紹了jupyter notebook如何使用matlab問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python如何將將模塊分割成多個文件

    Python如何將將模塊分割成多個文件

    這篇文章主要介紹了Python如何將將模塊分割成多個文件,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • 利用Python求陰影部分的面積實例代碼

    利用Python求陰影部分的面積實例代碼

    這篇文章主要給大家介紹了關(guān)于利用Python求陰影部分面積的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Python數(shù)據(jù)處理Filter函數(shù)高級用法示例

    Python數(shù)據(jù)處理Filter函數(shù)高級用法示例

    本文將詳細介紹filter函數(shù)的使用方法,并提供豐富的示例代碼,幫助你深入理解如何利用它來處理數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python 訪問限制 private public的詳細介紹

    Python 訪問限制 private public的詳細介紹

    在一個模塊中,我們可能會定義很多函數(shù)和變量。這篇文章主要介紹了Python 訪問限制 private public的詳細介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10

最新評論

永清县| 广德县| 泗洪县| 自贡市| 洞头县| 仁寿县| 临澧县| 响水县| 蓬溪县| 新丰县| 株洲县| 伊金霍洛旗| 武乡县| 鄂伦春自治旗| 虹口区| 大名县| 青铜峡市| 平昌县| 澄迈县| 修水县| 西乡县| 吉首市| 翁牛特旗| 镇沅| 来宾市| 句容市| 定兴县| 邢台市| 泰顺县| 绥棱县| 永吉县| 抚顺县| 湖州市| 亳州市| 壶关县| 平湖市| 依安县| 神池县| 格尔木市| 浦东新区| 石家庄市|