精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用 PyTorch 實現基于字符的循環神經網絡

人工智能 深度學習
在過去的幾周里,我花了很多時間用 PyTorch 實現了一個 char-rnn 的版本。我以前從未訓練過神經網絡,所以這可能是一個有趣的開始。

在過去的幾周里,我花了很多時間用 PyTorch 實現了一個 char-rnn 的版本。我以前從未訓練過神經網絡,所以這可能是一個有趣的開始。

這個想法(來自 循環神經網絡的不合理效應 )可以讓你在文本上訓練一個基于字符的 循環神經網絡(recurrent neural network)(RNN),并得到一些出乎意料好的結果。

[[358756]]

不過,雖然沒有得到我想要的結果,但是我還是想分享一些示例代碼和結果,希望對其他開始嘗試使用 PyTorch 和 RNN 的人有幫助。

這是 Jupyter 筆記本格式的代碼: char-rnn in PyTorch.ipynb 。你可以點擊這個網頁最上面那個按鈕 “Open in Colab”,就可以在 Google 的 Colab 服務中打開,并使用免費的 GPU 進行訓練。所有的東西加起來大概有 75 行代碼,我將在這篇博文中盡可能地詳細解釋。

第一步:準備數據

首先,我們要下載數據。我使用的是 古登堡項目(Project Gutenberg)中的這個數據: Hans Christian Anderson’s fairy tales 。

  1. !wget -O fairy-tales.txt 

這個是準備數據的代碼。我使用 fastai 庫中的 Vocab 類進行數據處理,它能將一堆字母轉換成“詞表”,然后用這個“詞表”把字母變成數字。

之后我們就得到了一個大的數字數組(training_set),我們可以用于訓練我們的模型。

  1. from fastai.text import * 
  2. text = unidecode.unidecode(open('fairy-tales.txt').read()) 
  3. v = Vocab.create((x for x in text), max_vocab=400min_freq=1
  4. training_set = torch.Tensor(v.numericalize([x for x in text])).type(torch.LongTensor).cuda() 
  5. num_letters = len(v.itos) 

第二步:定義模型

這個是 PyTorch 中 LSTM 類的封裝。除了封裝 LSTM 類以外,它還做了三件事:

  • 對輸入向量進行 one-hot 編碼,使得它們具有正確的維度。
  • 在 LSTM 層后一層添加一個線性變換,因為 LSTM 輸出的是一個長度為 hidden_size 的向量,我們需要的是一個長度為 input_size 的向量這樣才能把它變成一個字符。
  • 把 LSTM 隱藏層的輸出向量(實際上有 2 個向量)保存成實例變量,然后在每輪運行結束后執行 .detach() 函數。(我很難解釋清 .detach() 的作用,但我的理解是,它在某種程度上“結束”了模型的求導計算)(LCTT 譯注:detach() 函數是將該張量的 requires_grad 參數設置為 False,即反向傳播到該張量就結束。)
  1. class MyLSTM(nn.Module): 
  2.     def __init__(self, input_size, hidden_size): 
  3.         super().__init__() 
  4.         self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True
  5.         self.h2o = nn.Linear(hidden_size, input_size) 
  6.         self.input_size=input_size 
  7.         self.hidden = None 
  8.  
  9.     def forward(self, input): 
  10.         input = torch.nn.functional.one_hot(input, num_classes=self.input_size).type(torch.FloatTensor).cuda().unsqueeze(0) 
  11.         if self.hidden is None: 
  12.             l_output, selfself.hidden = self.lstm(input) 
  13.         else: 
  14.             l_output, selfself.hidden = self.lstm(input, self.hidden) 
  15.         self.hidden = (self.hidden[0].detach(), self.hidden[1].detach()) 
  16.  
  17.         return self.h2o(l_output) 

這個代碼還做了一些比較神奇但是不太明顯的功能。如果你的輸入是一個向量(比如 [1,2,3,4,5,6]),對應六個字母,那么我的理解是 nn.LSTM 會在內部使用 沿時間反向傳播 更新隱藏向量 6 次。

第三步:編寫訓練代碼

模型不會自己訓練的!

我最開始的時候嘗試用 fastai 庫中的一個輔助類(也是 PyTorch 中的封裝)。我有點疑惑因為我不知道它在做什么,所以最后我自己編寫了模型訓練代碼。

下面這些代碼(epoch() 方法)就是有關于一輪訓練過程的基本信息?;旧暇褪侵貜妥鱿旅孢@幾件事情:

  • 往 RNN 模型中傳入一個字符串,比如 and they ought not to teas。(要以數字向量的形式傳入)
  • 得到下一個字母的預測結果
  • 計算 RNN 模型預測結果和真實的下一個字母之間的損失函數(e,因為 tease 這個單詞是以 e 結尾的)
  • 計算梯度(用 loss.backward() 函數)
  • 沿著梯度下降的方向修改模型中參數的權重(用 self.optimizer.step() 函數)
  1. class Trainer(): 
  2.   def __init__(self): 
  3.       self.rnn = MyLSTM(input_size, hidden_size).cuda() 
  4.       self.optimizer = torch.optim.Adam(self.rnn.parameters(), amsgrad=Truelrlr=lr) 
  5.   def epoch(self): 
  6.       i = 0 
  7.       while i < len(training_set) - 40: 
  8.         seq_len = random.randint(10, 40) 
  9.         input, target = training_set[i:i+seq_len],training_set[i+1:i+1+seq_len] 
  10.         i += seq_len 
  11.         # forward pass 
  12.         output = self.rnn(input) 
  13.         loss = F.cross_entropy(output.squeeze()[-1:], target[-1:]) 
  14.         # compute gradients and take optimizer step 
  15.         self.optimizer.zero_grad() 
  16.         loss.backward() 
  17.         self.optimizer.step() 

使用 nn.LSTM 沿著時間反向傳播,不要自己寫代碼

開始的時候我自己寫代碼每次傳一個字母到 LSTM 層中,之后定期計算導數,就像下面這樣:

  1. for i in range(20): 
  2.     input, target = next(iter) 
  3.     output, hidden = self.lstm(input, hidden) 
  4. loss = F.cross_entropy(output, target) 
  5. hiddenhidden = hidden.detach() 
  6. self.optimizer.zero_grad() 
  7. loss.backward() 
  8. self.optimizer.step() 

這段代碼每次傳入 20 個字母,每次一個,并且在最后訓練了一次。這個步驟就被稱為 沿時間反向傳播 ,Karpathy 在他的博客中就是用這種方法。

這個方法有些用處,我編寫的損失函數開始能夠下降一段時間,但之后就會出現峰值。我不知道為什么會出現這種現象,但之后我改為一次傳入 20 個字符到 LSTM 之后(按 seq_len 維度),再進行反向傳播,情況就變好了。

第四步:訓練模型!

我在同樣的數據上重復執行了這個訓練代碼大概 300 次,直到模型開始輸出一些看起來像英文的文本。差不多花了一個多小時吧。

這種情況下我也不關注模型是不是過擬合了,但是如果你在真實場景中訓練模型,應該要在驗證集上驗證你的模型。

第五步:生成輸出!

最后一件要做的事就是用這個模型生成一些輸出。我寫了一個輔助方法從這個訓練好的模型中生成文本(make_preds 和 next_pred)。這里主要是把向量的維度對齊,重要的一點是:

  1. output = rnn(input) 
  2. prediction_vector = F.softmax(output/temperature) 
  3. letter = v.textify(torch.multinomial(prediction_vector, 1).flatten(), sep='').replace('_', ' ') 

基本上做的事情就是這些:

  • RNN 層為字母表中的每一個字母或者符號輸出一個數值向量(output)。
  • 這個 output 向量并不是一個概率向量,所以需要 F.softmax(output/temperature) 操作,將其轉換為概率值(也就是所有數值加起來和為 1)。temperature 某種程度上控制了對更高概率的權重,在限制范圍內,如果設置 temperature=0.0000001,它將始終選擇概率最高的字母。
  • torch.multinomial(prediction_vector) 用于獲取概率向量,并使用這些概率在向量中選擇一個索引(如 12)。
  • v.textify 把 12 轉換為字母。

如果我們想要處理的文本長度為 300,那么只需要重復這個過程 300 次就可以了。

結果!

我把預測函數中的參數設置為 temperature = 1 得到了下面的這些由模型生成的結果。看起來有點像英語,這個結果已經很不錯了,因為這個模型要從頭開始“學習”英語,并且是在字符序列的級別上進行學習的。

雖然這些話沒有什么含義,但我們也不知道到底想要得到什么輸出。

“An who was you colotal said that have to have been a little crimantable and beamed home the beetle. “I shall be in the head of the green for the sound of the wood. The pastor. “I child hand through the emperor’s sorthes, where the mother was a great deal down the conscious, which are all the gleam of the wood they saw the last great of the emperor’s forments, the house of a large gone there was nothing of the wonded the sound of which she saw in the converse of the beetle. “I shall know happy to him. This stories herself and the sound of the young mons feathery in the green safe.”

“That was the pastor. The some and hand on the water sound of the beauty be and home to have been consider and tree and the face. The some to the froghesses and stringing to the sea, and the yellow was too intention, he was not a warm to the pastor. The pastor which are the faten to go and the world from the bell, why really the laborer’s back of most handsome that she was a caperven and the confectioned and thoughts were seated to have great made

下面這些結果是當 temperature=0.1 時生成的,它選擇字符的方式更接近于“每次都選擇出現概率最高的字符”。這就使得輸出結果有很多是重復的。

ole the sound of the beauty of the beetle. “She was a great emperor of the sea, and the sun was so warm to the confectioned the beetle. “I shall be so many for the beetle. “I shall be so many for the beetle. “I shall be so standen for the world, and the sun was so warm to the sea, and the sun was so warm to the sea, and the sound of the world from the bell, where the beetle was the sea, and the sound of the world from the bell, where the beetle was the sea, and the sound of the wood flowers and the sound of the wood, and the sound of the world from the bell, where the world from the wood, and the sound of the

這段輸出對這幾個單詞 beetles、confectioners、sun 和 sea 有著奇怪的執念。

總結!

至此,我的結果遠不及 Karpathy 的好,可能有一下幾個原因:

  • 沒有足夠多的訓練數據。
  • 訓練了一個小時之后我就沒有耐心去查看 Colab 筆記本上的信息。
  • Karpathy 使用了兩層LSTM,包含了更多的參數,而我只使用了一層。
  • 完全是另一回事。

但我得到了一些大致說得過去的結果!還不錯!

 

責任編輯:趙寧寧 來源: Linux中國
相關推薦

2017-04-26 08:31:10

神經網絡自然語言PyTorch

2022-07-28 09:00:00

深度學習網絡類型架構

2024-11-05 16:19:55

2020-09-18 11:40:44

神經網絡人工智能PyTorch

2024-04-30 14:54:10

2023-03-03 08:17:28

神經網絡RNN網絡

2019-08-19 00:31:16

Pytorch神經網絡深度學習

2025-02-25 14:13:31

2020-09-08 13:02:00

Python神經網絡感知器

2022-10-19 07:42:41

圖像識別神經網絡

2018-07-29 06:46:07

神經網絡RNN循環神經網絡

2022-06-16 10:29:33

神經網絡圖像分類算法

2025-02-19 15:12:17

神經網絡PyTorch大模型

2017-12-14 21:17:24

2018-12-20 11:38:37

神經元神經網絡語言

2017-07-07 15:46:38

循環神經網絡視覺注意力模擬

2017-08-28 21:31:37

TensorFlow深度學習神經網絡

2018-07-03 16:10:04

神經網絡生物神經網絡人工神經網絡

2021-12-28 08:48:54

PyTorch神經網絡人工智能

2022-04-22 12:36:11

RNN神經網絡)機器學習
點贊
收藏

51CTO技術棧公眾號

日韩av三区| 国产福利在线播放麻豆| 久久久久久黄| 精品国产区一区二区三区在线观看| 污污的网站免费| 亚洲国产精品精华素| 不卡在线视频中文字幕| 国产精品久久久av久久久| 亚洲av无一区二区三区| 狼人天天伊人久久| 欧美无乱码久久久免费午夜一区| 国产一区二区三区在线免费| 欧美少妇另类| 国产白丝精品91爽爽久久| 啪一啪鲁一鲁2019在线视频| 久久国产精品国语对白| 香蕉国产成人午夜av影院| 欧美日高清视频| www.爱色av.com| 成人免费看片| 国产欧美一区二区精品性| 国产传媒一区二区三区| 伊人色综合久久久| 午夜亚洲一区| 久久久久久久久久国产精品| 国产探花视频在线| 在线日本制服中文欧美| 日韩欧美www| 99re精彩视频| 日日av拍夜夜添久久免费| 一区二区不卡在线播放| 一区二区欧美日韩| lutube成人福利在线观看| 99久久免费视频.com| 亚洲伊人久久综合| 中文字幕一区二区三区免费看| 99热免费精品在线观看| 欧美人与物videos| 国产人妻精品一区二区三区不卡| 黑丝美女一区二区| 国产视频一区在线| 黄色污在线观看| 成人午夜大片| 精品国产乱码久久久久久久 | 精品国产91洋老外米糕| 在线成人免费av| 日韩在线激情| 欧美日韩大陆一区二区| 亚洲欧美久久久久| 欧美日韩视频免费观看| 日韩欧美有码在线| 国产真实乱子伦| 色老头在线一区二区三区| 亚洲国产美国国产综合一区二区| 亚洲av综合色区| 成年视频在线观看| 亚洲女人****多毛耸耸8| 97超碰人人爱| 性xxxxfjsxxxxx欧美| 亚洲精品一二三| 久久综合久久久久| 99热99re6国产在线播放| 亚洲444eee在线观看| 日韩黄色片在线| 老司机深夜福利在线观看| 精品久久久久久国产| 国产日韩一区二区在线| 涩涩av在线| 欧美在线不卡一区| 91小视频在线播放| 日韩影片在线观看| 精品91自产拍在线观看一区| 久久福利小视频| 竹菊久久久久久久| 最近2019中文免费高清视频观看www99 | 91制片厂毛片| 玖玖玖视频精品| 精品国产不卡一区二区三区| 日本xxxx裸体xxxx| 精品久久影视| 欧美成人在线网站| 天海翼一区二区| 日韩1区2区3区| 亚洲一区精品电影| 日本在线一二三| 国产精品久久二区二区| www.xxx麻豆| 国产成人精品亚洲日本在线观看| 欧美日本在线一区| 国产婷婷在线观看| 欧美色爱综合| 久久久久久97| 免费av中文字幕| 国产成人在线观看免费网站| 久久亚洲高清| av网站免费在线观看| 欧美日韩在线视频观看| 波多野结衣免费观看| 亚洲传媒在线| 欧美黑人xxxx| 黄色一区二区视频| 成人毛片视频在线观看| 亚洲精品免费在线看| 成年男女免费视频网站不卡| 欧美日韩在线直播| 久久久久成人精品无码中文字幕| 清纯唯美日韩| 欧美在线一级va免费观看| 国产三级视频在线播放| 国产日韩欧美电影| 国产天堂视频在线观看| 91精品一久久香蕉国产线看观看| 日韩激情视频在线| 久久免费视频6| 久久国产精品72免费观看| 六月婷婷久久| 国产美女精品写真福利视频| 在线电影国产精品| 少妇太紧太爽又黄又硬又爽小说| 伊人久久婷婷| 高清国语自产拍免费一区二区三区| 国产精品免费播放| 欧美午夜片欧美片在线观看| 日本中文字幕在线不卡| 色天天综合网| 国产精品黄色影片导航在线观看| 亚洲人午夜射精精品日韩| 一区二区三区高清在线| 五月天婷婷在线观看视频| 成人综合专区| 国产精品一区久久久| 免费人成在线观看网站| 第一福利永久视频精品| 污片免费在线观看| 在线看片欧美| 国产不卡一区二区在线观看| 污污的网站在线看| 91麻豆精品国产91久久久久| 中国1级黄色片| 毛片基地黄久久久久久天堂| 欧美一区二区三区四区夜夜大片 | 国产精品观看| 99r国产精品视频| 午夜在线激情影院| 日韩精品一区二区三区中文精品| 亚洲欧美精品aaaaaa片| 黄色日韩网站视频| 国产又粗又爽又黄的视频| 在线观看亚洲精品福利片| 日韩在线免费高清视频| 国产又粗又大又爽| 成人欧美一区二区三区| 亚洲高清视频免费| 欧美 亚欧 日韩视频在线| 99精品99久久久久久宅男| 最爽无遮挡行房视频在线| 日韩午夜av电影| 久久久久国产精品夜夜夜夜夜| 国产成人一级电影| 69sex久久精品国产麻豆| 国产精品主播在线观看| 4388成人网| 国产午夜在线视频| 欧美精品在线一区二区| 欧美人禽zoz0强交| 不卡的av电影| 女人另类性混交zo| 先锋资源久久| 超碰97人人在线| 免费v片在线观看| 伊人久久五月天| 国产男男gay网站| 亚洲成av人片在线观看| 中文字幕国产专区| 国产在线播放一区三区四| 日韩精品一区二区在线视频| 欧洲亚洲一区二区三区| 国产精品精品一区二区三区午夜版| aaa日本高清在线播放免费观看| 欧美乱熟臀69xxxxxx| 日本三级黄色大片| 欧美极品美女视频| 免费99精品国产自在在线| 成人高清在线观看| 国产三级视频在线| 欧美日韩国产精选| 久久精品国产亚洲AV无码麻豆| 99re视频精品| 国产免费999| 欧美一区二区三区另类| 美国av一区二区三区| 欧美成人家庭影院| 97在线视频观看| 日本综合在线| 亚洲精品视频免费| 国产丰满果冻videossex| 色婷婷综合久久久中文一区二区 | 亚洲色图美女| 成人xvideos免费视频| 黄色漫画在线免费看| www.日韩欧美| 亚洲av成人精品日韩在线播放| 欧美日韩激情在线| 国产成人免费看| 亚洲男同性视频| www色com| 99久久国产综合精品麻豆| 不卡中文字幕在线观看| 欧美综合国产| 无码熟妇人妻av在线电影| 成人免费电影网址| 欧美日韩在线精品| 成人av综合网| 91在线|亚洲| 超碰这里只有精品| 5278欧美一区二区三区| av毛片在线| 最近免费中文字幕视频2019| 青青草在线免费视频| 精品久久一区二区三区| 国产一区二区在线视频观看| 日韩欧美在线视频| 欧美成人aaaaⅴ片在线看| 亚洲精品中文在线| 日韩免费av一区| 亚洲国产精品99久久久久久久久| 国产中文字幕一区二区| 99免费精品在线| www.555国产精品免费| 国产乱国产乱300精品| 久热精品在线播放| 日韩精品亚洲专区| 成年人小视频网站| 久久aⅴ国产紧身牛仔裤| 少妇高潮喷水在线观看| 亚洲伦理一区| 国产精品成人久久电影| 精品成人免费| 久久久久久免费看| 在线不卡亚洲| 欧美在线一区视频| 国产亚洲精品v| 日韩欧美在线播放视频| 国产视频一区欧美| 久热免费在线观看| 日韩精品一级中文字幕精品视频免费观看 | 日韩视频免费观看高清在线视频| 国产精品免费无遮挡| 欧美日韩黄色一区二区| 亚洲天堂视频网| 91麻豆精品国产91久久久资源速度 | 777色狠狠一区二区三区| 亚洲一区二区三区高清视频| 欧美三级三级三级爽爽爽| 中文字幕一区二区三区人妻四季| 欧美视频中文一区二区三区在线观看| 国产情侣免费视频| 欧美日韩国产小视频在线观看| 这里只有精品6| 4438x亚洲最大成人网| 国产国语亲子伦亲子| 欧美r级电影在线观看| 五月婷婷开心中文字幕| 亚洲男人天堂手机在线| 成人在线观看网站| 久久偷看各类女兵18女厕嘘嘘| a级在线观看| 欧美激情亚洲自拍| 成人性生交大片免费网站| 国产精品极品美女在线观看免费| 日本亚洲欧洲无免费码在线| 5566av亚洲| 九色丨蝌蚪丨成人| 日韩免费一区二区三区| 亚洲最新色图| 久久精品视频16| 美女www一区二区| 免费观看黄网站| 久久久久久久网| 希岛爱理中文字幕| 欧美视频在线免费看| 中文字幕av无码一区二区三区| 欧美大片在线观看| 精品欧美不卡一区二区在线观看| 久久精品男人天堂| 日本不卡免费高清视频在线| 国产精品永久免费视频| 99re8这里有精品热视频免费| 日本一区网站| 国产精品v日韩精品v欧美精品网站| 久久久999视频| 国内久久精品视频| 极品粉嫩小仙女高潮喷水久久| 国产精品久久久久影院亚瑟 | 国产真实乱人偷精品人妻| 中文字幕在线不卡| 国产无遮挡呻吟娇喘视频| 欧美美女一区二区在线观看| 香蕉视频成人在线| 超碰精品一区二区三区乱码| 正在播放日韩精品| 91久久偷偷做嫩草影院| 青青草成人影院| 337p粉嫩大胆噜噜噜鲁| 国产精品综合久久| 日韩视频在线观看免费视频| 亚洲国产成人av| 国产三级精品在线观看| 在线观看精品国产视频| 三级中文字幕在线观看| 99国产超薄肉色丝袜交足的后果| 成人精品影院| 亚洲爆乳无码专区| bt欧美亚洲午夜电影天堂| 丝袜美腿小色网| 欧美色老头old∨ideo| 神马电影在线观看| 高清一区二区三区四区五区| 高清久久一区| 亚洲电影免费| 亚洲欧美色图| 一本到高清视频免费精品| 日韩在线第三页| 成人精品视频一区二区三区| 国产日韩精品中文字无码| 色狠狠一区二区三区香蕉| 人妻少妇精品无码专区久久| 欧美成人午夜视频| 国产精品日本一区二区不卡视频 | 久久网站免费观看| 国产97色在线 | 日韩| 久久综合狠狠综合久久激情| 日本熟女一区二区| 精品国产乱码久久久久久久| 色噜噜狠狠狠综合欧洲色8| 成人性教育视频在线观看| 成人一区不卡| 天天爽天天爽夜夜爽| 久久精品欧美一区二区三区不卡| 特黄视频免费看| 国产手机视频精品| 欧美裸体视频| 九九九九久久久久| 视频一区中文字幕| 性欧美精品男男| 在线观看免费亚洲| h视频在线播放| 成人免费在线视频网址| 久久久精品久久久久久96| 北条麻妃亚洲一区| 一区二区欧美在线观看| 蜜桃视频久久一区免费观看入口| 久久久久久久国产精品| 美女一区2区| 人妻熟女一二三区夜夜爱| 国产欧美综合在线| 中文字幕制服诱惑| 日韩中文字幕在线看| 国产在线不卡一区二区三区| 一二三在线视频| 成人黄色一级视频| 国产又黄又猛又粗又爽| 在线视频欧美日韩精品| 祥仔av免费一区二区三区四区| 国产人妻互换一区二区| 韩国精品一区二区| 国产精品久久久久9999| 国产精彩视频在线| 你懂的国产精品永久在线| 国产精品久久久久久久久借妻| 杨幂一区二区三区免费看视频| 久久精品网站视频| 国产精品看片你懂得| 精品人妻无码一区二区色欲产成人 | 久久国产这里只有精品| 国产麻豆日韩欧美久久| 中文字幕在线观看2018| 亚洲成人网av| 免费成人美女女| 免费观看中文字幕| 91丨porny丨户外露出| 最近中文字幕av| 色综合男人天堂| 精品国内自产拍在线观看视频 | 三级视频在线观看| 中文字幕亚洲一区二区三区五十路| 99精品女人在线观看免费视频| 农民人伦一区二区三区| 国产精品你懂的在线| 内射无码专区久久亚洲| 国产精品视频免费观看www| 伊人久久综合| 黄色精品视频在线观看| 亚洲裸体xxxx| 国产在线一区不卡| 免费黄色福利视频| 亚洲自拍另类综合| 777电影在线观看| 欧美二区在线看| 国产91在线观看丝袜|