婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pytorch 如何使用batch訓練lstm網絡

pytorch 如何使用batch訓練lstm網絡

熱門標簽:應電話機器人打電話違法嗎 地圖標注線上如何操作 400電話辦理哪種 天津電話機器人公司 手機網頁嵌入地圖標注位置 開封語音外呼系統代理商 開封自動外呼系統怎么收費 河北防封卡電銷卡 電銷機器人的風險

batch的lstm

# 導入相應的包
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data as Data 
torch.manual_seed(1) 
 
# 準備數據的階段
def prepare_sequence(seq, to_ix):
    idxs = [to_ix[w] for w in seq]
    return torch.tensor(idxs, dtype=torch.long)
  
with open("/home/lstm_train.txt", encoding='utf8') as f:
    train_data = []
    word = []
    label = []
    data = f.readline().strip()
    while data:
        data = data.strip()
        SP = data.split(' ')
        if len(SP) == 2:
            word.append(SP[0])
            label.append(SP[1])
        else:
            if len(word) == 100 and 'I-PRO' in label:
                train_data.append((word, label))
            word = []
            label = []
        data = f.readline()
 
word_to_ix = {}
for sent, _ in train_data:
    for word in sent:
        if word not in word_to_ix:
            word_to_ix[word] = len(word_to_ix)
 
tag_to_ix = {"O": 0, "I-PRO": 1}
for i in range(len(train_data)):
    train_data[i] = ([word_to_ix[t] for t in train_data[i][0]], [tag_to_ix[t] for t in train_data[i][1]])
 
# 詞向量的維度
EMBEDDING_DIM = 128
 
# 隱藏層的單元數
HIDDEN_DIM = 128
 
# 批大小
batch_size = 10  
class LSTMTagger(nn.Module):
 
    def __init__(self, embedding_dim, hidden_dim, vocab_size, tagset_size, batch_size):
        super(LSTMTagger, self).__init__()
        self.hidden_dim = hidden_dim
        self.batch_size = batch_size
        self.word_embeddings = nn.Embedding(vocab_size, embedding_dim)
 
        # The LSTM takes word embeddings as inputs, and outputs hidden states
        # with dimensionality hidden_dim.
        self.lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True)
 
        # The linear layer that maps from hidden state space to tag space
        self.hidden2tag = nn.Linear(hidden_dim, tagset_size)
 
    def forward(self, sentence):
        embeds = self.word_embeddings(sentence)
        # input_tensor = embeds.view(self.batch_size, len(sentence) // self.batch_size, -1)
        lstm_out, _ = self.lstm(embeds)
        tag_space = self.hidden2tag(lstm_out)
        scores = F.log_softmax(tag_space, dim=2)
        return scores
 
    def predict(self, sentence):
        embeds = self.word_embeddings(sentence)
        lstm_out, _ = self.lstm(embeds)
        tag_space = self.hidden2tag(lstm_out)
        scores = F.log_softmax(tag_space, dim=2)
        return scores 
 
loss_function = nn.NLLLoss()
model = LSTMTagger(EMBEDDING_DIM, HIDDEN_DIM, len(word_to_ix), len(tag_to_ix), batch_size)
optimizer = optim.SGD(model.parameters(), lr=0.1)
 
data_set_word = []
data_set_label = []
for data_tuple in train_data:
    data_set_word.append(data_tuple[0])
    data_set_label.append(data_tuple[1])
torch_dataset = Data.TensorDataset(torch.tensor(data_set_word, dtype=torch.long), torch.tensor(data_set_label, dtype=torch.long))
# 把 dataset 放入 DataLoader
loader = Data.DataLoader(
    dataset=torch_dataset,  # torch TensorDataset format
    batch_size=batch_size,  # mini batch size
    shuffle=True,  #
    num_workers=2,  # 多線程來讀數據
)
 
# 訓練過程
for epoch in range(200):
    for step, (batch_x, batch_y) in enumerate(loader):
        # 梯度清零
        model.zero_grad()
        tag_scores = model(batch_x)
 
        # 計算損失
        tag_scores = tag_scores.view(-1, tag_scores.shape[2])
        batch_y = batch_y.view(batch_y.shape[0]*batch_y.shape[1])
        loss = loss_function(tag_scores, batch_y)
        print(loss)
        # 后向傳播
        loss.backward()
 
        # 更新參數
        optimizer.step()
 
# 測試過程
with torch.no_grad():
    inputs = torch.tensor([data_set_word[0]], dtype=torch.long)
    print(inputs)
    tag_scores = model.predict(inputs)
    print(tag_scores.shape)
    print(torch.argmax(tag_scores, dim=2))

補充:PyTorch基礎-使用LSTM神經網絡實現手寫數據集識別

看代碼吧~

import numpy as np
import torch
from torch import nn,optim
from torch.autograd import Variable
from torchvision import datasets,transforms
from torch.utils.data import DataLoader
# 訓練集
train_data = datasets.MNIST(root="./", # 存放位置
                            train = True, # 載入訓練集
                            transform=transforms.ToTensor(), # 把數據變成tensor類型
                            download = True # 下載
                           )
# 測試集
test_data = datasets.MNIST(root="./",
                            train = False,
                            transform=transforms.ToTensor(),
                            download = True
                           )
# 批次大小
batch_size = 64
# 裝載訓練集
train_loader = DataLoader(dataset=train_data,batch_size=batch_size,shuffle=True)
# 裝載測試集
test_loader = DataLoader(dataset=test_data,batch_size=batch_size,shuffle=True)
for i,data in enumerate(train_loader):
    inputs,labels = data
    print(inputs.shape)
    print(labels.shape)
    break
# 定義網絡結構
class LSTM(nn.Module):
    def __init__(self):
        super(LSTM,self).__init__()# 初始化
        self.lstm = torch.nn.LSTM(
            input_size = 28, # 表示輸入特征的大小
            hidden_size = 64, # 表示lstm模塊的數量
            num_layers = 1, # 表示lstm隱藏層的層數
            batch_first = True # lstm默認格式input(seq_len,batch,feature)等于True表示input和output變成(batch,seq_len,feature)
        )
        self.out = torch.nn.Linear(in_features=64,out_features=10)
        self.softmax = torch.nn.Softmax(dim=1)
    def forward(self,x):
        # (batch,seq_len,feature)
        x = x.view(-1,28,28)
        # output:(batch,seq_len,hidden_size)包含每個序列的輸出結果
        # 雖然lstm的batch_first為True,但是h_n,c_n的第0個維度還是num_layers
        # h_n :[num_layers,batch,hidden_size]只包含最后一個序列的輸出結果
        # c_n:[num_layers,batch,hidden_size]只包含最后一個序列的輸出結果
        output,(h_n,c_n) = self.lstm(x)
        output_in_last_timestep = h_n[-1,:,:]
        x = self.out(output_in_last_timestep)
        x = self.softmax(x)
        return x
# 定義模型
model = LSTM()
# 定義代價函數
mse_loss = nn.CrossEntropyLoss()# 交叉熵
# 定義優化器
optimizer = optim.Adam(model.parameters(),lr=0.001)# 隨機梯度下降
# 定義模型訓練和測試的方法
def train():
    # 模型的訓練狀態
    model.train()
    for i,data in enumerate(train_loader):
        # 獲得一個批次的數據和標簽
        inputs,labels = data
        # 獲得模型預測結果(64,10)
        out = model(inputs)
        # 交叉熵代價函數out(batch,C:類別的數量),labels(batch)
        loss = mse_loss(out,labels)
        # 梯度清零
        optimizer.zero_grad()
        # 計算梯度
        loss.backward()
        # 修改權值
        optimizer.step()
        
def test():
    # 模型的測試狀態
    model.eval()
    correct = 0 # 測試集準確率
    for i,data in enumerate(test_loader):
        # 獲得一個批次的數據和標簽
        inputs,labels = data
        # 獲得模型預測結果(64,10)
        out = model(inputs)
        # 獲得最大值,以及最大值所在的位置
        _,predicted = torch.max(out,1)
        # 預測正確的數量
        correct += (predicted==labels).sum()
    print("Test acc:{0}".format(correct.item()/len(test_data)))
    
    correct = 0
    for i,data in enumerate(train_loader): # 訓練集準確率
        # 獲得一個批次的數據和標簽
        inputs,labels = data
        # 獲得模型預測結果(64,10)
        out = model(inputs)
        # 獲得最大值,以及最大值所在的位置
        _,predicted = torch.max(out,1)
        # 預測正確的數量
        correct += (predicted==labels).sum()
    print("Train acc:{0}".format(correct.item()/len(train_data)))
# 訓練
for epoch in range(10):
    print("epoch:",epoch)
    train()
    test()

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • pytorch下使用LSTM神經網絡寫詩實例
  • 基于pytorch的lstm參數使用詳解
  • Pytorch 如何實現LSTM時間序列預測
  • Pytorch實現LSTM和GRU示例

標簽:成都 六盤水 山東 江蘇 常州 蘭州 駐馬店 宿遷

巨人網絡通訊聲明:本文標題《pytorch 如何使用batch訓練lstm網絡》,本文關鍵詞  pytorch,如何,使用,batch,訓練,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 如何使用batch訓練lstm網絡》相關的同類信息!
  • 本頁收集關于pytorch 如何使用batch訓練lstm網絡的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人精品国产一区二区4080| 91麻豆精品国产91久久久久久久久| 成人免费视频视频| 国产成人啪午夜精品网站男同| 欧美色偷偷大香| 亚洲精选在线视频| 国产成人av福利| 欧美一区二区三区视频| 亚洲一区二区三区免费视频| 在线免费观看成人短视频| 中文字幕亚洲综合久久菠萝蜜| 国产精品18久久久久久久久久久久| 精品国产1区2区3区| 久久精品国产久精国产| 精品处破学生在线二十三| 美女爽到高潮91| 国产无一区二区| 成人福利视频网站| 一区二区三区四区在线播放| 欧美日韩日日摸| 久久国产三级精品| 中文字幕第一区二区| 99精品视频在线观看免费| 亚洲三级在线播放| 欧美麻豆精品久久久久久| 国内精品久久久久影院薰衣草| 久久青草欧美一区二区三区| 色综合中文字幕国产 | 欧美日韩成人在线| 免费在线观看成人| **性色生活片久久毛片| 正在播放一区二区| 成人精品视频.| 免费一级片91| 亚洲国产精品欧美一二99| 欧美成人精品二区三区99精品| 97久久超碰国产精品| 蜜桃视频第一区免费观看| 中文字幕一区二区视频| 欧美成人一区二区三区| 欧美视频一区二区| 成人激情图片网| 日韩成人精品在线观看| 亚洲欧洲www| 久久久久久久久久久久久夜| 久久精品网站免费观看| 精品国一区二区三区| 丰满放荡岳乱妇91ww| 国产91精品在线观看| 久久综合九色综合欧美98| 丝袜诱惑制服诱惑色一区在线观看| 国产精品三级在线观看| 成人免费一区二区三区在线观看| www国产成人| 欧美无人高清视频在线观看| 91污片在线观看| 午夜精品福利一区二区三区av| 欧美一区二区三区精品| 欧美色综合久久| 国产一区二区免费视频| 麻豆一区二区三区| 亚洲日穴在线视频| 亚洲欧美自拍偷拍色图| 日韩欧美国产精品一区| 欧美一区二区三区四区高清| 岛国精品一区二区| 国产精品美日韩| 精品卡一卡二卡三卡四在线| 国产午夜精品久久久久久久| 午夜视频在线观看一区| 久久精品国产亚洲高清剧情介绍 | 蜜桃视频在线观看一区二区| 视频一区中文字幕国产| av电影在线不卡| 欧美日韩精品免费观看视频| 国产精品国产三级国产普通话99 | 91精品国产综合久久久久久久 | 日韩理论在线观看| 亚洲欧洲日韩在线| 亚洲精品日韩一| 国产精品网站在线播放| 国产精品传媒视频| 久久精品男人天堂av| 日韩精品久久久久久| 美国av一区二区| 亚洲成人激情社区| 久久精品一区四区| 久久免费国产精品| 久久久久久综合| 欧美日韩国产天堂| 欧美专区亚洲专区| 欧美少妇一区二区| 欧美视频在线一区| 欧美日韩三级一区| 欧美日韩国产乱码电影| 在线观看日韩国产| 精品精品国产高清a毛片牛牛| 91精品国产一区二区人妖| 久久精品人人爽人人爽| 亚洲激情五月婷婷| 蜜桃精品视频在线观看| 免费成人av在线| 99久久综合色| 色美美综合视频| 日韩亚洲欧美高清| 久久女同互慰一区二区三区| 精品国产一区二区精华| 亚洲综合一区二区精品导航| 欧美国产一区视频在线观看| 亚洲午夜久久久久中文字幕久| 亚洲自拍欧美精品| av中文字幕在线不卡| 欧洲av在线精品| 欧美一区二区三区视频在线观看| 精品国产一区二区精华| 亚洲第一福利视频在线| 日本亚洲一区二区| 91偷拍与自偷拍精品| 欧美群妇大交群中文字幕| 中文字幕一区日韩精品欧美| 午夜免费久久看| 色综合视频在线观看| 日韩女优av电影在线观看| 一区二区激情小说| 韩日欧美一区二区三区| 欧美嫩在线观看| 中文字幕一区二区三区视频| 久久久国产精华| 亚洲天堂久久久久久久| 久草精品在线观看| 欧美电影精品一区二区| 亚洲桃色在线一区| 99精品国产视频| 日韩欧美国产综合在线一区二区三区| 亚洲18女电影在线观看| 国产成人av电影在线| 国产精品网曝门| 蜜桃视频在线一区| 久久人人爽人人爽| 日本亚洲天堂网| 欧美精品一区二区三区久久久| 一区二区三区免费网站| 欧美午夜不卡在线观看免费| 国产精品沙发午睡系列990531| 福利一区在线观看| 欧美电影免费提供在线观看| 国产精品一区二区你懂的| 欧美日韩亚洲综合在线| 蜜臀av一区二区在线观看| 在线观看亚洲一区| 爽爽淫人综合网网站 | 综合激情网...| 91在线视频观看| 欧美老肥妇做.爰bbww| 亚洲成a人v欧美综合天堂下载 | 成人黄色小视频| 久久综合999| 成人av电影免费在线播放| 久久久亚洲午夜电影| 丁香婷婷综合色啪| 国产欧美一区二区精品秋霞影院 | 喷白浆一区二区| 日韩一区二区三区视频| 国产成人av一区二区| 国产人久久人人人人爽| 99re热这里只有精品视频| 国产精品免费视频网站| 欧美日韩一区二区欧美激情| 一区二区三区精品| 久久奇米777| 国产成人一级电影| 亚洲成人久久影院| 91麻豆精品国产91久久久更新时间| 国产中文一区二区三区| 欧美精品一区二区三区蜜桃| 色婷婷精品大在线视频| 洋洋av久久久久久久一区| 在线看日本不卡| 午夜视频在线观看一区二区| 91精品国产综合久久香蕉的特点| 亚洲成人免费影院| 国产欧美日韩三级| 99国产精品久久久久| 久久成人18免费观看| 久久久久久综合| 欧美一三区三区四区免费在线看| 另类欧美日韩国产在线| 亚洲图片自拍偷拍| 99热在这里有精品免费| 精品亚洲成a人在线观看 | 国产日韩高清在线| 丁香六月久久综合狠狠色| 日韩中文字幕麻豆| 久久久久久久久97黄色工厂| 欧美日韩夫妻久久| 国产一区二区三区不卡在线观看| 精品日本一线二线三线不卡| 亚洲成人www| 中文字幕一区二区不卡| 正在播放一区二区|