pos機(jī)終端初始化異常,Nginx源碼分析之模塊初始化

 新聞資訊  |   2023-04-17 10:01  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)終端初始化異常,Nginx源碼分析之模塊初始化的知識,也有很多人為大家解答關(guān)于pos機(jī)終端初始化異常的問題,今天pos機(jī)之家(www.dsth100338.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)終端初始化異常

pos機(jī)終端初始化異常

機(jī)器之心編譯

參與:楊旋、袁澤林、趙華龍、吳攀

近日,來自卡內(nèi)基梅隆大學(xué)、日本奈良先端科學(xué)技術(shù)大學(xué)、Google DeepMind、以色列巴伊蘭大學(xué)、艾倫人工智能研究所、IBM T.J. Watson 研究中心、澳大利亞墨爾本大學(xué)、約翰·霍普金斯大學(xué)、谷歌、華盛頓大學(xué)、微軟和英國愛丁堡大學(xué)的研究者共同發(fā)表了一篇重磅論文《DyNet: The Dynamic Neural Network Toolkit》,正式介紹了動態(tài)神經(jīng)網(wǎng)絡(luò)工具包 DyNet;該工具包也已在 GitHub 上開源:http://github.com/clab/dynet。機(jī)器之心對這篇論文進(jìn)行了摘要性的介紹,論文原文可點(diǎn)擊文末「閱讀原文」下載。

摘要:在本論文中,我們將介紹 DyNet——一個(gè)基于網(wǎng)絡(luò)結(jié)構(gòu)的動態(tài)聲明(dynamic declaration of network structure)的用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型的工具包。在 Theano、CNTK 和 TensorFlow 等工具包中所用的靜態(tài)聲明策略(static declaration strategy)中,用戶需要首先定義計(jì)算圖(computation graph,即計(jì)算過程的符號表示),然后樣本會被傳遞給執(zhí)行該計(jì)算的引擎并計(jì)算其導(dǎo)數(shù)。而在 DyNet 的動態(tài)聲明策略中,計(jì)算圖的構(gòu)建(construction)基本上是透明的,通過執(zhí)行用于計(jì)算網(wǎng)絡(luò)輸出的程序代碼來隱式地構(gòu)造;對于任意一個(gè)輸入,用戶都可以自由得使用不同的網(wǎng)絡(luò)結(jié)構(gòu)。因此,動態(tài)聲明有助于實(shí)現(xiàn)更復(fù)雜的網(wǎng)絡(luò)架構(gòu);特別的,DyNet 允許用戶使用他們喜愛的編程語言(C ++ 或 Python)以一種他們慣用的方式來實(shí)現(xiàn)他們的模型。在動態(tài)聲明中,有一件充滿挑戰(zhàn)的事情:由于對于每個(gè)訓(xùn)練樣本都要重新定義符號計(jì)算圖,所以其構(gòu)建的開銷必須要低。為了實(shí)現(xiàn)這一點(diǎn),DyNet 使用了一個(gè)經(jīng)過優(yōu)化的 C ++ 后端和輕量級的圖表示(graph representation)。實(shí)驗(yàn)表明,DyNet 的速度與靜態(tài)聲明工具包相當(dāng)甚至比其更快,并且明顯快于另一個(gè)動態(tài)聲明工具包 Chainer。DyNet 根據(jù) Apache 2.0 許可證進(jìn)行了開源,可以在這里訪問:http://github.com/clab/dynet

1. 引言

深度神經(jīng)網(wǎng)絡(luò)現(xiàn)在是機(jī)器學(xué)習(xí)開發(fā)者的工具箱中不可或缺的工具,它在圖像理解 [39]、語音的識別與合成 [29,65]、游戲 [45,54]、語言建模和分析 [6, 14 ] 等領(lǐng)域中擁有重要的地位。首先,深度學(xué)習(xí)將應(yīng)用特定的特征工程(加上理解良好的模型,這是經(jīng)典的「淺度」學(xué)習(xí)的范式)替換成了應(yīng)用特定的模型工程(model engineering,通常結(jié)合了輸入的不太復(fù)雜的特征)。因此,深度學(xué)習(xí)范式在不斷發(fā)展新的模型變體。要開發(fā)有效的模型不僅僅需要洞察力和進(jìn)行分析,還需要實(shí)現(xiàn)一些新模型并評估其在實(shí)際任務(wù)上的表現(xiàn)。因此,快速的原型設(shè)計(jì)、高效輕松的維護(hù)和正確的模型代碼在深度學(xué)習(xí)中至關(guān)重要。

深度學(xué)習(xí)模型以兩種模式操作:在給定輸入的情況下計(jì)算預(yù)測值(或者是預(yù)測上的分布),或者在監(jiān)督學(xué)習(xí)訓(xùn)練的時(shí)候計(jì)算相關(guān)模型參數(shù)的預(yù)測誤差「損失」的導(dǎo)數(shù),用于使用梯度下降方法的某些變體來最小化和類似輸入之間后續(xù)的誤差。因?yàn)閷?shí)現(xiàn)模型需要同時(shí)實(shí)現(xiàn)模型預(yù)測的代碼和進(jìn)行梯度計(jì)算和學(xué)習(xí)的代碼,所以模型開發(fā)是一個(gè)非常困難的工程挑戰(zhàn)。通過使用簡化神經(jīng)網(wǎng)絡(luò)計(jì)算的工具,可以減少這種挑戰(zhàn)的難度。這些工具包括 Theano [7]、TensorFlow [1]、Torch [13]、CNTK [64]、MxNet [10] 和 Chainer [62],它們提供了神經(jīng)網(wǎng)絡(luò)功能原語(例如線性代數(shù)運(yùn)算、非線性變換等)、參數(shù)初始化和程序優(yōu)化以及表達(dá)特定任務(wù)預(yù)測和誤差的復(fù)合能力——這些預(yù)測和誤差然后會被自動微分(autodiff)以獲取驅(qū)動學(xué)習(xí)算法所需的梯度。最后的自動微分(autodiff)組件可以說是它們最重要的節(jié)省勞動的功能,因?yàn)槿绻淖冇?jì)算訓(xùn)練輸入損失值的函數(shù),那么其導(dǎo)數(shù)的計(jì)算過程也要做出相應(yīng)的改變。如果工程師獨(dú)立地維護(hù)這些代碼路徑,則它們很容易導(dǎo)致它們不能同步。此外,由于對復(fù)合表達(dá)式的微分的算法相對簡單 [63,31],所以使用 autodiff 算法代替手寫代碼計(jì)算導(dǎo)數(shù)是個(gè)不錯(cuò)的選擇。

簡言之,由于這些工具有效地解決了一些關(guān)鍵的軟件工程問題,它們讓深度學(xué)習(xí)取得了成功。不過仍然存在一些問題:因?yàn)楣こ蹋╡ngineering)是深度學(xué)習(xí)實(shí)踐的關(guān)鍵組成部分,什么工程問題是現(xiàn)有工具無法解決的呢?它們能讓程序員比較自然地實(shí)現(xiàn)自己的想法嗎?它們是否便于調(diào)試?它們是否方便大型項(xiàng)目的維護(hù)?

在本論文中,我們將推薦一個(gè)基于幾個(gè)流行工具包的編程模型——即將網(wǎng)絡(luò)架構(gòu)的聲明和執(zhí)行(我們稱為靜態(tài)聲明)進(jìn)行分離,在這其中必然會存在一些嚴(yán)重的軟件工程風(fēng)險(xiǎn),特別是在處理動態(tài)結(jié)構(gòu)化網(wǎng)絡(luò)架構(gòu)(例如,可變長度的序列和樹形結(jié)構(gòu)的遞歸神經(jīng)網(wǎng)絡(luò))的時(shí)候。作為一種替代方案,我們提出了一個(gè)替代的編程模型,它可在 autodiff 庫中進(jìn)行統(tǒng)一聲明和執(zhí)行。

作為我們推薦的編程模型的概念證明,我們通過論文《DyNet: The Dynamic Neural Network Toolkit》進(jìn)行了描述。DyNet 是一個(gè)基于統(tǒng)一聲明和執(zhí)行編程模型的工具包,我們稱之為動態(tài)聲明(dynamic declaration)。

在單臺機(jī)器環(huán)境(single-machine environment)中的一系列案例研究中,我們表明 DyNet 的執(zhí)行效率與標(biāo)準(zhǔn)模型架構(gòu)的靜態(tài)聲明工具包相當(dāng)。和使用動態(tài)架構(gòu)(例如,其中每個(gè)訓(xùn)練實(shí)例具有不同的模型架構(gòu))的模型相比,DyNet 的實(shí)現(xiàn)得到了顯著的簡化。

2. 靜態(tài)聲明 vs. 動態(tài)聲明

在本節(jié)中,我們更具體地描述了靜態(tài)聲明(§2.1)和動態(tài)聲明(§2.2)的兩種范式。

3.范式編碼

3.1 編碼范式概述

從用戶的角度來看,使用 DyNet 編寫程序的目的是創(chuàng)建對應(yīng)于需要被執(zhí)行的計(jì)算的表達(dá)式(Expression)。這首先從基本的表達(dá)式開始,基本表達(dá)式通常是常量輸入值或模型參數(shù)(Parameters)。然后,通過進(jìn)行運(yùn)算(Operation)從其他表達(dá)式進(jìn)一步構(gòu)建復(fù)合表達(dá)式,并且運(yùn)算鏈(chain of operations)隱含地為所需的計(jì)算定義一個(gè)計(jì)算圖(ComputationGraph)。該計(jì)算圖表示了符號計(jì)算,并且計(jì)算的結(jié)果是被動的:僅當(dāng)用戶顯式地請求它時(shí)(在該點(diǎn)觸發(fā)「前向(forward)」計(jì)算)才執(zhí)行計(jì)算。評估標(biāo)量(即損失值)的表達(dá)式也可以用于觸發(fā)「后向」計(jì)算,其以參數(shù)為依據(jù)來計(jì)算計(jì)算的梯度。參數(shù)和梯度被保存在模型(Model)對象中,訓(xùn)練器(Trainer)用于根據(jù)梯度和更新規(guī)則來更新參數(shù)。

我們下面將簡要地介紹這些每種組件:

Parameter 和 LookupParameter:Parameter 是表示諸如權(quán)重矩陣和偏置向量之類的實(shí)數(shù)向量、矩陣或張量。LookupParameters 是我們想要查找的參數(shù)向量集,例如詞嵌入(word embeddings)。換句話說,如果我們有一個(gè)詞匯集 V,我們想要查找其嵌入(embeddings),那么就有一個(gè) LookupParameters 對象定義一個(gè) | V | ×d 矩陣,其作為一個(gè)嵌入矩陣與 0,...,| V | -1 到 d 維向量的項(xiàng)形成映射。Parameters 和 LookupParameters 被存儲在模型中,并可以跨越訓(xùn)練樣本(即跨不同的 ComputationGraph 樣本)進(jìn)行保存。

模型(Model):模型是 Parameters 和 LookupParameters 的集合。用戶通過從模型中請求 Parameters 來獲取它們。然后模型會跟蹤這些參數(shù)(及其梯度)。模型可以保存到磁盤中也可以通過磁盤加載,也可以被下面要講到的 Trainer 對象使用。

訓(xùn)練器(Trainer):訓(xùn)練器實(shí)現(xiàn)在線更新規(guī)則,比如簡單隨機(jī)梯度下降、AdaGrad [16] 或 Adam [34]。Trainer 有指向 Model 對象的指針,所以同時(shí)也有其中的參數(shù),并且還可以根據(jù)更新規(guī)則的需要保存關(guān)于參數(shù)的其他信息。

表達(dá)式(Expression):在 DyNet 項(xiàng)目中,表達(dá)式是主要的可以被操作的數(shù)據(jù)類型。單個(gè)表達(dá)式代表了一個(gè)計(jì)算圖中的一個(gè)子計(jì)算。舉個(gè)例子,一個(gè)表示矩陣或者向量的參數(shù)對象可以被加進(jìn)計(jì)算圖里,這就產(chǎn)生了一個(gè)表達(dá)式 W 或者 b。同樣,一個(gè) LookupParameters 對象 E 可以通過查找操作來查詢一個(gè)專門的嵌入向量(它也是被加在計(jì)算圖里的),這就產(chǎn)生了一個(gè)表達(dá)式 E[i]。這些表達(dá)式可以被組合成更大的表達(dá)式,例如 concatenate(E[3], E[4]) 或者 softmax(tanh(W ? concatenate(E[3], E[4]) +b))。這里的 softmax、tanh、?、+、concatenate 都是運(yùn)算,下面詳細(xì)介紹。

運(yùn)算(Operations):運(yùn)算不是對象,而是在表達(dá)式以及返回表達(dá)式上運(yùn)行的函數(shù),它用來在后臺構(gòu)建計(jì)算圖。DyNet 為很多基本的算術(shù)原語(加、乘、點(diǎn)積、softmax、...)和常用的損失函數(shù)、激活函數(shù)等等都定義了相應(yīng)的運(yùn)算。當(dāng)情況適宜時(shí),運(yùn)算可以通過運(yùn)算符重載來定義,這使得圖的構(gòu)建能盡可能地直觀和自然。

構(gòu)造器類(Builder Classes):Builder Classes 定義了創(chuàng)建各種「標(biāo)準(zhǔn)化」的網(wǎng)絡(luò)組件(比如循環(huán)神經(jīng)網(wǎng)絡(luò)、樹結(jié)構(gòu)網(wǎng)絡(luò)和大詞匯量 softmax)的接口。這些都工作在表達(dá)式和運(yùn)算之上,并且提供了各種易用的庫。Builder Classes 為各種標(biāo)準(zhǔn)算法提供了高效便捷的實(shí)現(xiàn)。不過,從代碼層次的意義上來說,它并不是「核心」DyNet 庫的一部分,因?yàn)?Builder Classes 是更高層次的,它實(shí)現(xiàn)在 DyNet 最核心的自動微分功能之上。Builder Classes 將會在后續(xù)的§5 中深入討論。

計(jì)算圖(ComputationGraph):表達(dá)式相當(dāng)于一種隱含的計(jì)算圖對象的一部分,該計(jì)算圖定義了需要進(jìn)行的計(jì)算是什么。DyNet 目前假定在任意一個(gè)時(shí)刻只有一個(gè)計(jì)算圖存在。盡管計(jì)算圖是 DyNet 內(nèi)部工作的核心,但從使用者的角度來看,唯一需要負(fù)責(zé)做的是為每個(gè)訓(xùn)練樣本創(chuàng)建一個(gè)新的計(jì)算圖。

用 DyNet 中實(shí)現(xiàn)并訓(xùn)練一個(gè)模型的整體流程可描述如下:

創(chuàng)建一個(gè)模型;

向模型里增加必要的參數(shù)(Parameters)和查找表參數(shù)(LookupParameters);

創(chuàng)建一個(gè)訓(xùn)練器(Trainer)對象,并使之與模型(Model)相關(guān)聯(lián);

對每個(gè)樣本(example):

(a) 創(chuàng)建一個(gè)新的計(jì)算圖(ComputationGraph),并且建立一個(gè)表達(dá)式(Expression)來填充該計(jì)算圖,該表達(dá)式用來表示針對這個(gè)樣本想要進(jìn)行的計(jì)算。

(b) 通過調(diào)用最終表達(dá)式的 value() 或者 npvalue() 函數(shù),計(jì)算整個(gè)圖前向計(jì)算的結(jié)果。

(c) 如果訓(xùn)練的話,計(jì)算損失函數(shù)的表達(dá)式,并使用它的 backward() 函數(shù)來進(jìn)行反向傳播。

(d) 使用訓(xùn)練器對模型的參數(shù)進(jìn)行更新。

與像 Theano 和 TensorFlow 這樣的靜態(tài)聲明庫對比可以發(fā)現(xiàn),創(chuàng)建一個(gè)圖的步驟落在每一個(gè)樣本的循環(huán)里。這有利于使用戶為每個(gè)實(shí)例(instance)靈活地創(chuàng)建新的圖結(jié)構(gòu),并使用他們掌握的編程語言中的流控句法(flow control syntax,比如迭代(iteration))來做這些。當(dāng)然,它也增加了對圖結(jié)構(gòu)速度的要求,即它要足夠快,不能變成負(fù)擔(dān),我們會在§4 中進(jìn)一步闡述。

3.2 高層面的示例

為了在更高層次說明 DyNet 的編碼范式,我們用 Python 演示了一個(gè) DyNet 程序的例子,如圖 1 所示。這個(gè)程序顯示了為一個(gè)簡單分類器進(jìn)行最大似然訓(xùn)練的過程,這個(gè)分類器為每個(gè)需要它預(yù)測的類計(jì)算一個(gè)向量分?jǐn)?shù),然后返回這個(gè)得分最高的類 ID 以及這個(gè)最高分。我們假定每個(gè)訓(xùn)練樣本是一個(gè)(輸入和輸出)對,其中輸入是一個(gè)二詞索引的元組,輸出是一個(gè)指示正確類的數(shù)。

圖 1:一個(gè)使用 DyNet 的 Python API 進(jìn)行訓(xùn)練和測試的例子。

在頭兩行,我們導(dǎo)入(import)適當(dāng)?shù)膸?。在?3 行,我們初始化 DyNet 模型,并為相關(guān)參數(shù)分配內(nèi)存空間,但是不初始化它們。在第 4—6 行,我們向模型里添加我們的參數(shù),這個(gè)過程會因?yàn)槭褂玫哪P筒煌灰粯?。這里我們增加一個(gè) 20 × 100 的權(quán)重矩陣、一個(gè) 20 維的偏置向量和一個(gè)查找表(嵌入表)——該查找表的詞匯量大小為 20000 項(xiàng)映射到 50 維向量。在第 7 行,我們初始化了一個(gè)訓(xùn)練器(在這個(gè)例子中是一個(gè)簡單的隨機(jī)梯度降(SGD)訓(xùn)練器),這個(gè)訓(xùn)練器被用來更新模型參數(shù)。在第 8 行中,我們對數(shù)據(jù)進(jìn)行多次訓(xùn)練和測試。

從第 9 行開始,我們對訓(xùn)練數(shù)據(jù)進(jìn)行迭代。第 10 行,清除當(dāng)前計(jì)算圖的內(nèi)容,開始一個(gè)空的計(jì)算圖,為后續(xù)的計(jì)算做準(zhǔn)備。第 11-13 行,我們創(chuàng)建一個(gè)圖,這個(gè)圖會為每個(gè)訓(xùn)練實(shí)例計(jì)算一個(gè)分?jǐn)?shù)向量(這個(gè)過程會因?yàn)槟P偷牟煌煌?。這里我們首先訪問模型中的權(quán)重矩陣和偏置向量參數(shù)(W_p 和 b_p),并把它們加到圖中,也就是這個(gè)代碼例子中用到的表達(dá)式中(W 和 b_p)。然后我們根據(jù)輸入的 id 來查找兩個(gè)向量,拼接它們,然后做一個(gè)線性變換和 softmax,這樣就創(chuàng)建了和計(jì)算相對應(yīng)的表達(dá)式。接下來,我們在第 14 行創(chuàng)建一個(gè)與損失有關(guān)的表達(dá)式——對正確記分結(jié)果做一次 softmax 后的負(fù)對數(shù)似然估計(jì)。在第 15 行,我們計(jì)算前向圖的結(jié)果,在第 16 行,我們計(jì)算后向的,并累計(jì)模型變量中參數(shù)的梯度。在第 17 行,我們根據(jù) SGD 的更新規(guī)則更新這些參數(shù),并清掉之前的累計(jì)梯度。

接下來,從第 18 和 19 行開始,我們遍歷測試數(shù)據(jù)并測量準(zhǔn)確度。在第 20-23 行,我們又一次清除計(jì)算圖以及定義計(jì)算測試數(shù)據(jù)分?jǐn)?shù)的表達(dá)式,方式和我們在訓(xùn)練數(shù)據(jù)中做的一樣。在第 24 行,我們開始計(jì)算并把結(jié)果數(shù)據(jù)放到一個(gè) NumPy 的數(shù)組里。在第 25 和 26 行,我們檢查是否正確的數(shù)據(jù)是最高分的那個(gè),如果是的話就把它算作是一個(gè)正確的結(jié)果。最后第 27 行,我們把本次迭代的測試準(zhǔn)確度 print 出來。

3.3 動態(tài)圖構(gòu)建(Dynamic Graph Construction)的兩個(gè)示例

圖 2:樹結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(tree-structured recursive neural network)的一個(gè)例子

圖 3:動態(tài)流控制的一個(gè)示例。

4 后臺工作

如上一節(jié)所述,將 DyNet 與其它神經(jīng)網(wǎng)絡(luò)工具包相區(qū)別的一個(gè)主要特性是,它能夠?yàn)槊總€(gè)訓(xùn)練樣本或 minibatch 有效地創(chuàng)建新的計(jì)算圖(Computation Graphs)。為了保持計(jì)算效率,DyNet 使用了細(xì)致的內(nèi)存管理策略來存儲前向傳播和反向傳播的計(jì)算過程中的值(§4.2),因此大部分時(shí)間都會用在實(shí)際的計(jì)算上(§4.3)

4.1 計(jì)算圖(Computation Graphs)

圖 4:公式 g(x, j) = tanh(W1?x+b)+tanh(W2?ej+b) 的計(jì)算圖的例子,以及相應(yīng)的代碼。

4.2 高效的圖構(gòu)建

4.3 執(zhí)行計(jì)算

5 更高級的抽象結(jié)構(gòu)

如第 3 節(jié)所述,DyNet 實(shí)現(xiàn)了在張量(tensors)上表示基本(子)可微函數(shù)的運(yùn)算。這和 Theano 和 TensorFlow 庫中提供的運(yùn)算是相似的。除了這些基本運(yùn)算外,使用可被視為由基本運(yùn)算組成的更復(fù)雜的結(jié)構(gòu)也是很常見的。常見的例子有循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、樹結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)(tree-structured networks)和更復(fù)雜的計(jì)算 softmax 概率分布的方法。在其它庫中,這些更高級別的結(jié)構(gòu)或是通過本地提供,亦或是通過第三方庫(如 Keras)提供。在 DyNet 中,循環(huán)神經(jīng)網(wǎng)絡(luò)的本地支持、樹結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)和更復(fù)雜的 softmax 函數(shù)都是通過 Builder 提供的;具體細(xì)節(jié)會在接下來的章節(jié)描述,圖 5 中也有所總結(jié)。

圖 5:DyNet Builders 實(shí)現(xiàn)的更高級結(jié)構(gòu)的示例,以及它們的規(guī)范使用

5.1 循環(huán)神經(jīng)網(wǎng)絡(luò)的 Builders

5.2 樹結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的 Builders

5.3 Large-Vocabulary Softmax Builders

圖 6:各種 RNN 接口

6 效率工具

DyNet 包含許多可以提高計(jì)算效率的功能,包括稀疏更新(sparse updates)、minibatching 和跨 CPU 的多處理(multi-processing across CPUs)。

7 實(shí)證比較

在本節(jié)中,我們將使用 C++ 接口和 Python 接口將 DyNet 和其他三個(gè)流行庫(Theano [7]、TensorFlow [1] 和 Chainer [62])進(jìn)行對比。我們選擇這些庫是因?yàn)?Theano 和 TensorFlow 可以說是目前最受歡迎的深度學(xué)習(xí)庫,而 Chainer 的 define-by-run 哲學(xué)和 DyNet 相似。

表 1:各個(gè)任務(wù)的數(shù)據(jù)和默認(rèn)設(shè)置。

表 2:每個(gè)工具箱在 CPU 上的處理速度。速度是以 RNNLM 與 Tagger 處理的詞/秒和 TreeLSTM 處理的句/秒進(jìn)行衡量的。帶 +sparse 的行表示 LookupParameters 的稀疏更新(sparse updates),這是 DyNet 中的默認(rèn)行為,但與其他工具包的執(zhí)行密集更新(dense updates)的實(shí)現(xiàn)不可對比。

表 3:每個(gè)工具箱在 GPU 上的處理速度。速度是以 RNNLM 與 Tagger 處理的詞/秒和 TreeLSTM 處理的句/秒進(jìn)行衡量的。

表 4:從程序啟動到為每個(gè)工具包處理第一個(gè)實(shí)例的時(shí)間(秒)。

表 5:密集或稀疏更新(dense or sparse updates)10 分鐘后的處理速度和準(zhǔn)確度。

表 6:每個(gè)工具包的實(shí)現(xiàn)的非注釋字符數(shù)。

8 使用案例

DyNet 已經(jīng)投入使用,并已被用于各種各樣的項(xiàng)目,主要涉及自然語言處理。DyNet 本身包含一些從最小到中等復(fù)雜度的示例(在 examples/ 目錄下)。我們還列出了一些全面的研究項(xiàng)目,可以讓有興趣的讀者找到匹配他們感興趣的應(yīng)用程序的參考樣例。

句法分析(Syntactic Parsing):分析是目前使用 DyNet 的最突出的場景,DyNet 是許多方法的開發(fā)背后的庫,例如 stack LSTMs [17](https://github.com/clab/lstm-parser)、用于依賴性解析的雙向 LSTM 特征提取器(https://github.com/elikip/bist-parser)、循環(huán)神經(jīng)網(wǎng)絡(luò)語法 [18](https://github.com/clab/rnng),和 LSTM 層次樹 [35](https://github.com/elikip/htparser)。

機(jī)器翻譯(Machine Translation):DyNet 幫助創(chuàng)造了包括注意偏差(biases in attention)[12](https://github.com/trevorcohn/mantis)和基于字符的 27 種翻譯方法 [42] 等方法。它還為許多機(jī)器翻譯工具包提供支持,如 Lamtram(https://github.com/neubig/lamtram)和 nmtkit(https:// github.com/odashi/nmtkit)。

語言建模(Language Modeling):DyNet 已被用于混合神經(jīng)/n 元語言模型(hybrid neural/n-gram language models)的開發(fā) [47](https://github.com/neubig/modlm)和生成語法語言模型 [18](https://github.com/clab/rnng)。

標(biāo)注(Tagging):DyNet 用于命名實(shí)體識別方法的開發(fā) [47](https://github.com/clab/stack-lstm-ner)、POS 標(biāo)注、語義角色標(biāo)簽 [60](https://github.com/clab/joint-lstm-parser)、標(biāo)點(diǎn)符號預(yù)測 [5](https://github.com/miguelballesteros/LSTM-punctuation)和序列處理的多任務(wù)學(xué)習(xí) [37,56] 以及創(chuàng)建新的架構(gòu),如段循環(huán)神經(jīng)網(wǎng)絡(luò)(segmental recurrent neural networks)[38](https://github.com/clab/dynet/tree/ master/examples/cpp/segrnn-sup)。

形態(tài)(Morphology):DyNet 已被用于形態(tài)變化生成 [21, 2](https://github.com/mfaruqui/morph-trans https://github.com/roeeaharoni/morphological-reinflection)。

雜項(xiàng):DyNet 已被用于開發(fā)專門的用于檢測協(xié)調(diào)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò) [22];半監(jiān)督的介詞意義消歧 [23]; 和用于識別詞匯語義關(guān)系 [53,52](https://github.com/vered1986/HypeNET)。

總結(jié)、致謝和參考文獻(xiàn)(略)

以上就是關(guān)于pos機(jī)終端初始化異常,Nginx源碼分析之模塊初始化的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機(jī)終端初始化異常的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://www.dsth100338.com/news/19562.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。