精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲乱码国产乱码精品精| 久久久91精品国产一区二区精品| 按摩亚洲人久久| xxxxwww一片| 在线手机中文字幕| 18欧美亚洲精品| 精品视频一区在线| 中文字幕福利视频| 亚洲婷婷免费| 中文字幕亚洲无线码在线一区| a级大片免费看| 澳门成人av网| 亚洲影视在线播放| 无遮挡亚洲一区| 天堂av在线免费| 久久99精品国产麻豆不卡| 久久久久中文字幕| 国产第一页精品| 羞羞答答一区二区| 日韩一区二区三| 一区二区三区韩国| 少妇视频在线观看| 亚洲精品国产视频| 神马影院午夜我不卡| 天天干天天色天天| 国产精品亚洲人在线观看| 国产精品久久久久久超碰| 黄色激情视频在线观看| 一区二区三区四区电影| 正在播放欧美视频| 五月婷婷综合在线观看| 日韩在线观看一区二区三区| 欧美亚洲一区二区在线| 91国视频在线| av电影在线地址| 亚洲最大的成人av| 青青草原网站在线观看| bbbbbbbbbbb在线视频| 26uuu亚洲综合色| 国产a一区二区| 国产模特av私拍大尺度| 免费不卡在线观看| 日韩美女在线观看一区| 国产成人精品片| 在线日韩中文| 久久男人资源视频| 国产大片中文字幕| 在线不卡亚洲| 久久男人av资源网站| 久久久久久欧美精品se一二三四| 亚洲国产一区二区三区在线播放| 中文字幕在线精品| 黄色一级片一级片| 国产精品久久久久久久| 色婷婷综合成人| 国产一区第一页| 天天做天天爱天天爽综合网| 色琪琪综合男人的天堂aⅴ视频| av免费播放网站| 99久久精品费精品国产| 久久久999精品视频| 久久久久久久麻豆| 国模一区二区三区| 国内精品一区二区三区四区| 日韩av免费网址| 亚洲永久免费精品| 日本国产精品视频| 波多野结衣视频网址| 日本色综合中文字幕| 国产噜噜噜噜噜久久久久久久久| 在线视频你懂得| 国产一本一道久久香蕉| 国产成人精品日本亚洲11 | 超碰caoporn久久| 亚洲青青青在线视频| 欧美久久久久久久久久久久久久| av资源中文在线| 在线视频欧美精品| 北条麻妃亚洲一区| 韩国女主播一区二区三区| 亚洲精品久久久久国产| 中文字幕在线观看免费高清| 亚洲国产一成人久久精品| 久久久久亚洲精品国产| 极品国产91在线网站| 麻豆精品在线看| 99久久精品无码一区二区毛片 | 日韩美女毛片| 中文字幕亚洲一区二区三区| 中文字幕电影av| 亚洲欧洲一区| 国产精品私拍pans大尺度在线| 亚洲大尺度视频| 久久精品欧美一区二区三区麻豆| 中文字幕日韩一区二区三区不卡| 超免费在线视频| 欧美性高清videossexo| 亚洲精品成人无码毛片| 精品久久视频| 久久久久久久av| 日本一区二区三区久久| 成人午夜电影小说| 亚洲精品欧洲精品| 华人av在线| 欧美一区二区视频在线观看 | 日韩精品二区| 欧美伦理91i| 国产精品xxxxxx| 波多野结衣视频一区| 一级二级三级欧美| 欧美aa免费在线| 日韩免费在线观看| www.黄色com| 免费亚洲网站| 国产区日韩欧美| 69成人在线| 欧美性生活久久| 右手影院亚洲欧美| 欧美日韩国产探花| 成人免费网站在线观看| 成人亚洲综合天堂| 富二代精品短视频| 精品人妻在线视频| 午夜亚洲福利| 成人国产在线激情| 最新97超碰在线| 日本精品一区二区三区高清 | 免费成人蒂法网站| 欧美午夜国产| 97视频中文字幕| 二区三区四区高清视频在线观看| 91福利精品视频| 野外性满足hd| 国产精品日本欧美一区二区三区| 97视频中文字幕| 91极品在线| 日韩欧美在线观看一区二区三区| 国产精品免费在线视频| 免费成人av在线| 亚洲免费不卡| 国外成人福利视频| 色视频www在线播放国产成人| 九九热最新视频| 国产色一区二区| 国产一线二线三线在线观看| 欧美精品一区二区久久| 国产91精品在线播放| 韩日视频在线| 91传媒视频在线播放| 精品无人区无码乱码毛片国产| 午夜在线a亚洲v天堂网2018| 蜜桃传媒视频麻豆一区 | 国内久久视频| 国产伦理久久久| 国产网站在线| 亚洲人成电影网站色www| 无码任你躁久久久久久久| 国产亚洲精久久久久久| 日日噜噜噜噜久久久精品毛片| av亚洲免费| 91精品免费看| 国产第一页在线| 亚洲国内精品视频| 69xxxx国产| 国产精品久久久久天堂| 手机在线视频一区| 亚洲高清自拍| 久热国产精品视频一区二区三区| 外国成人直播| 久久综合久久八八| 黄色av网站免费在线观看| 日韩欧美在线播放| 在线观看日本黄色| 国产91露脸合集magnet| 红桃av在线播放| 国产韩国精品一区二区三区| 成人在线免费观看一区| 伊人久久视频| 久久最新资源网| 午夜av免费在线观看| 欧美在线免费观看视频| 日本高清一二三区| 99精品视频一区| 在线黄色免费看| 99av国产精品欲麻豆| 少妇特黄a一区二区三区| 91精品国产自产精品男人的天堂| 奇米4444一区二区三区| 成人在线播放| 亚洲欧美成人一区二区在线电影| 国产日本精品视频| 欧美午夜xxx| 免费网站看av| 国产日韩精品一区二区三区在线| 2025中文字幕| 美女国产一区二区| 日本www在线视频| 99热国内精品永久免费观看| 久久99精品久久久久久三级| 亚洲毛片在线免费| 日本国产欧美一区二区三区| 色女人在线视频| 中文字幕亚洲一区在线观看| 天堂网在线观看视频| 欧美日韩国产高清一区二区| 亚洲高清毛片一区二区| 亚洲一区二区精品3399| 伊人久久久久久久久久久久久久| 91在线云播放| 美国黄色一级视频| 狠狠久久亚洲欧美| 九热视频在线观看| 国产精品日本| 久艹在线免费观看| 综合久久精品| 一区二区免费电影| 精品国产91| 久久久一本精品99久久精品| 亚洲欧洲国产精品一区| 91精品久久久久久久久久久| 日本综合字幕| 68精品久久久久久欧美| 男女在线视频| 欧美肥臀大乳一区二区免费视频| 午夜在线播放| 在线观看欧美日韩国产| 国产乱子伦三级在线播放| 亚洲激情视频在线| 精品女同一区二区三区| 91精品国产综合久久久久久久| 中文字幕在线播出| 欧美亚洲国产一区二区三区| 亚洲欧美另类在线视频| 粉嫩av一区二区三区免费野| 国产精品黄色网| 亚洲大片免费看| 国产精品7777777| 亚洲韩国一区二区三区| 国产一级视频在线| 亚洲成人综合视频| www.国产成人| 色悠悠亚洲一区二区| 五月天婷婷激情| 色综合天天综合网国产成人综合天 | 色天下一区二区三区| 精品一区2区三区| 日韩理论电影中文字幕| 欧美精品一区二区三区在线四季 | 国产一级免费视频| 在线免费不卡电影| 亚洲天堂狠狠干| 欧美精品一二三四| 国产三级小视频| 日韩美女主播在线视频一区二区三区| 亚洲国产精彩视频| 亚洲激情小视频| 日本不卡免费播放| 在线播放精品一区二区三区 | 亚洲欧美一区二区三区极速播放 | 亚洲精品免费观看| 国内外成人激情视频| 老司机一区二区三区| 欧美精品久久久久久久久25p| 韩国精品在线观看| 黄色激情在线观看| 26uuu精品一区二区| 日本综合在线观看| 亚洲欧美欧美一区二区三区| 久久久久免费看| 色婷婷综合激情| 91精品视频免费在线观看| 日韩视频永久免费| 亚洲欧美日韩免费| 日日骚av一区| 国产精品69xx| 国产精品久久久久一区二区| www.久久久久爱免| 极品尤物一区二区三区| 成人高清av| 国产欧美精品aaaaaa片| 久久亚洲图片| 欧美体内she精高潮| 久久综合丝袜日本网| 91av手机在线| 精品久久久久久久大神国产| 中文字幕永久在线视频| 欧美一区2区视频在线观看| 天天色天天操天天射| 亚洲人成网站999久久久综合| 日本视频在线| 欧美自拍视频在线| 伊人久久影院| 一区二区不卡在线视频 午夜欧美不卡' | 色偷偷av亚洲男人的天堂| 日本无删减在线| 国产精品高清在线观看| caoporn成人免费视频在线| 日韩免费av电影| 极品日韩av| 欧美大片久久久| 久久麻豆一区二区| 久草免费新视频| 欧美老女人在线| 欧洲天堂在线观看| 久久久久久噜噜噜久久久精品| 国产激情欧美| 欧美日韩国产不卡在线看| 国产精品mv在线观看| 中文字幕中文在线| 国产亚洲视频系列| 午夜精品久久久久久久久久久久久蜜桃| 宅男噜噜噜66一区二区66| 黄色毛片在线看| 亚州av一区二区| 日本少妇精品亚洲第一区| 亚洲精品一区二区三| 午夜亚洲伦理| 亚洲一区二区在线免费| 亚洲视频一区在线观看| 一本久道久久综合无码中文| 亚洲摸下面视频| 国产美女精品写真福利视频| 国产精品 日韩| 欧美粗暴jizz性欧美20| 国产免费中文字幕| 国产精品久久精品日日| 波多野结衣二区三区| 亚洲欧美一区二区三区情侣bbw | 91久久国产综合久久蜜月精品 | 久久久亚洲精品石原莉奈| 91精品国产高潮对白| 精品国产91久久久久久久妲己| 黄色在线论坛| 91香蕉亚洲精品| 91精品二区| 韩国三级丰满少妇高潮| 亚洲欧洲一区二区在线播放| 国产精品久久久久久久成人午夜| 日韩天堂在线视频| 只有精品亚洲| 中文字幕精品在线播放| 国产九九视频一区二区三区| 成人自拍小视频| 日韩一二三区不卡| 欧美xxxx黑人又粗又长| 成人资源视频网站免费| 亚洲手机在线| 中国av免费看| 色欧美日韩亚洲| 国产爆初菊在线观看免费视频网站| 国产成人精品av| 欧美日韩国产在线观看网站| 色噜噜狠狠一区二区| 亚洲视频在线观看三级| 亚洲乱码在线观看| 91精品国产91久久久久久久久| 图片婷婷一区| 三级视频中文字幕| 综合久久久久久久| 亚洲国产999| 欧美亚洲视频在线看网址| 国产a久久精品一区二区三区| 免费一级特黄录像| 亚洲欧洲国产日本综合| 超碰福利在线观看| 538国产精品一区二区免费视频| 欧美美乳视频| 97超碰成人在线| 亚洲亚洲人成综合网络| 十九岁完整版在线观看好看云免费| 日韩免费在线免费观看| 国产精品久久久久久影院8一贰佰| 中文字幕无码毛片免费看| 欧美日韩另类在线| 亚洲成人三级| 国产视色精品亚洲一区二区| 免费日韩av片| 欧美又粗又大又长| 国产视频一区在线| 亚洲高清国产拍精品26u| 日本大胆人体视频| 久久久久久免费毛片精品| 国产色片在线观看| 欧美一级高清免费| 亚洲五月综合| 亚洲精品成人无码| 日韩欧美成人午夜| 精品欧美一区二区三区在线观看| 欧美 国产 精品| 国产三级三级三级精品8ⅰ区| 国产后入清纯学生妹| 日韩美女视频在线观看| 国产精品九九| 欧美性猛交xxxx乱大交少妇| 亚洲高清一区二| 亚洲欧美在线人成swag| jizzjizzxxxx| 亚洲一区二区五区| 91精品专区| 六月婷婷久久|