pytorch LSTM 簡單介紹

2022-09-06 15:03:19 字數 1351 閱讀 5540

參考:

torch.nn.lstm()的引數:

lstm輸出:

通常定義乙個1層雙向lstm模型如下:(ner任務,輸出是對每個字分類)

import torch

import torch.nn as nn

class mybilstm(nn.module):

def __init__(self, vocab_size, embedding_dim, hidden_dim, tag_size):

super(mybilstm, self).__init__()

self.vocab_size = vocab_size

self.embedding_dim = embedding_dim

self.hidden_dim = hidden_dim

self.tag_size = tag_size

self.embedding_layer = nn.embedding(vocab_size, embedding_dim)

self.lstm_layer = nn.lstm(embedding_dim, hidden_dim, num_layers=1, bidirectional=true, batch_first=true)

# *2因為是雙向的

self.output_layer = nn.linear(hidden_dim * 2, tag_size)

def init_hidden(self, batch_size):

# 正太分布, num_layer=2, 因為是雙向的

return (torch.randn(2, batch_size, self.hidden_dim), torch.randn(2, batch_size, self.hidden_dim))

def forward(self, input):

self.hidden = self.init_hidden(len(input))

embeds = self.embedding_layer(input)

lstm_out, self.hidden = self.lstm_layer(embeds, self.hidden)

model_out = self.output_layer(lstm_out)

return model_out

model = mybilstm(5, 10, 10, 4) # 5x10x10x4的lstm

input = torch.tensor([[0, 1, 2, 3, 4]]) # 輸入5個字元

print(model(input)) # 輸出5x4的矩陣

pytorch lstm 寫詩文的魔改,測試,猜想

首先目前自然語言處理的網路基本都是transformers的變體。我們就不從熱鬧了,就使用簡單的fc層設計乙個,首先一般自然語言都是乙個概率問題,所以就是乙個分類問題,一般都是有多少的字就分為多少類,一般的輸入是語句的編碼或者位置編碼,一般的輸出是乙個多組多分類 一句話有多個字這個字是哪個字 但是,...

xgboost簡單介紹 xgboost介紹

xgboost是華盛頓大學博士陳天奇創造的乙個梯度提公升 gradient boosting 的開源框架。至今可以算是各種資料比賽中的大殺器,被大家廣泛地運用。接下來,就簡單介紹一下xgboost和普通的gbdt相比,有什麼不同。何為gradient boosting,gbdt請看我上篇文章 1.梯...

mysql的簡單介紹 mysql的簡單介紹

mysql的簡單介紹 資料庫的內部鏈結 1 連線管理器 使用者或應用程式連線 2 分析器 3 快取區4 優化器 優化器執行的結果交由儲存引擎,再轉向物理層 表空間 myisam每個表有三個檔案 frm 表結構 myd 表資料 myi 表索引 innodb 所有表空間再乙個檔案 資料庫失敗的原因 1 ...