高性能算法-深度學習_第1頁
高性能算法-深度學習_第2頁
高性能算法-深度學習_第3頁
高性能算法-深度學習_第4頁
高性能算法-深度學習_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

..深度學習算法的研究與實現..摘要深度學習近幾年開展迅速,取得了突破性的進展。借助于深度學習算法,人類終于找到了如何處理"抽象概念〞這個亙古難題的方法。本文首先介紹了深度學習的背景,然后對深度學習的研究過程以及開展現狀進展了綜述。接下來本文介紹了深度學習的根本原理,并在此根底上介紹了深度學習目前應用比擬成功的幾個領域的應用情況。在本文的最后,本文利用伯克利大學開發的Caffe深度學習平臺進展了手寫數字字符的識別的工程。數據來源于MNIST數據庫,在經歷生成符合Caffe的LMDB格式數據集、編寫深度學習模型文件、本文編寫網絡求解文件后,通過調用Caffe可執行文件對深度網絡進展訓練及測試,并得到最終的實驗結果。在經歷了1萬次迭代后,實驗結果顯示卷積神經網絡構成的深度學習網絡可以到達99%以上的識別,顯示出深度學習強大的識別能力。關鍵字:深度學習,Caffe,手寫數字識別ABSTRACTDeeplearninghasdevelopedrapidlyinrecentyears,andhasmadebreakthroughprogress.WiththehelpoftheDeepLearningalgorithm,humanfoundawayhowtodealwiththeabstractconceptinourmonproblem.ThispaperfirstlyintroducesthebackgroundoftheDeepLearningstudy,andthensummarizestheresearchprocessandthedevelopmentoftheDeepLearning.Next,thispaperintroducesthebasicprinciplesofdeeplearning,andonthebasisofthat,theapplicationofthedeeplearningwasalsointroducedinsomeexcellentarea.Next,thispaperusestheCaffedeeplearningplatformdevelopedbyBerkeleyUniversitytocarryouttherecognitionofhandwrittennumeralcharacters.ThedataisfromtheMNISTdatabase,throughtheprocessofgeneratingLMDBformatdataset,writingdeeplearningmodelfile,writingsolverfile,finallybycallingtheCaffeexecutablefiletotrainingandtestingofthedeeplearningnetwork,wegetthefinalexperimentalresults.After10thousanditerations,theexperimentalresultsshowthatthedeeplearningnetworkposedofconvolutionalneuralnetworkscanreachmorethan99%oftherightrate,showingthestrongabilityofdeeplearning.Keywords:DeepLearning,Caffe,Handwrittennumeralcharacterrecognition目錄1摘要12ABSTRACT23背景介紹24研究過程與開展現狀24.1研究過程24.1.1淺層學習和深度學習24.1.2深度學習與人工神經網絡24.2開展現狀24.2.1初始化方法、網絡層數和激活函數的選擇24.2.2模型構造24.2.3學習算法25深度學習根本原理25.1深度學習的根本思想25.2深度學習訓練過程25.3自動編碼機25.4卷積神經網絡25.4.1卷積神經網絡的構造25.4.2參數減少與權值共享25.4.3卷積神經網絡總結26應用領域26.1語音識別26.2圖像識別26.3自然語言處理26.4搜索廣告CTR預估27深度學習實戰演練27.1實驗壞境的搭建27.1.1深度學習平臺27.1.2安裝依賴庫27.1.3安裝Caffe27.2實驗概述27.3實驗過程27.3.1生成指定的數據格式文件27.3.2編寫深度網絡模型文件27.3.3編寫網絡求解文件27.4實驗結果28總結29參考文獻210附錄〔源代碼〕2..背景介紹人工智能很久以來就是人類最美好的夢想之一。雖然計算機技術已經取得了長足的進步,但是到目前為止,還沒有一臺電腦能產生"自我〞的意識。圖靈在1950年的論文里,提出圖靈試驗的設想,即,隔墻對話,你將不知道與你談話的,是人還是電腦。這無疑給計算機,尤其是人工智能,預設了一個很高的期望值。但是半個世紀過去了,人工智能的進展,遠遠沒有到達圖靈試驗的標準。這不僅讓多年翹首以待的人們,心灰意冷,認為人工智能是忽悠,相關領域是"偽科學〞。自2006年以來,在機器學習領域,取得了突破性的進展。圖靈試驗,至少不是那么可望而不可及了。至于技術手段,不僅僅依賴于云計算對大數據的并行處理能力,而且依賴于算法。這個算法就是深度學習,借助于DeepLearning算法,人類終于找到了如何處理"抽象概念〞這個亙古難題的方法,下面本文詳細介紹一下機器學習的開展背景。人工智能概念圖機器學習是一門專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識構造使之不斷改善自身的性能的學科。機器能否像人類一樣能具有學習能力呢?1959年美國的塞繆爾(Samuel)設計了一個下棋程序,這個程序具有學習能力,它可以在不斷的對弈中改善自己的棋藝。4年后,這個程序戰勝了設計者本人。又過了3年,這個程序戰勝了美國一個保持8年之久的常勝不敗的冠軍。這個程序向人們展示了機器學習的能力。機器學習雖然開展了幾十年,但還是存在很多沒有良好解決的問題,目前我們通過機器學習去解決問題的思路大致如下:通過傳感器〔例如CMOS〕來獲得數據預處理、特征提取、特征選擇推理、預測或者識別最后一個局部,也就是機器學習的局部,絕大局部的工作是在這方面做的,存在很多的和研究。而中間的三局部,概括起來就是特征表達。良好的特征表達,對最終算法的準確性起了非常關鍵的作用,而且系統主要的計算和測試工作都耗在這一大局部。但這塊實際中一般都是人工完成的,靠人工提取特征。機器學習在開展的過程中出現了不少強大的特征,具有大小、尺度和旋轉等的不變性以及可區分性。例如SIFT是局部圖像特征描述子研究領域一項里程碑式的工作。由于SIFT對尺度、旋轉以及一定視角和光照變化等圖像變化都具有不變性,并且SIFT具有很強的可區分性,確實讓很多問題的解決變為可能,但它也不是萬能的。然而,手工地選取特征是一件非常費力的方法,能不能選取好很大程度上靠經歷和運氣,而且它的調節需要大量的時間。既然手工選取特征不太好,那么能不能自動地學習一些特征呢?答案是能,深度學習就是用來干這個事情的,這也就是深度學習提出的背景。研究過程與開展現狀研究過程淺層學習和深度學習淺層學習是機器學習的第一次浪潮。20世紀80年代末期,用于人工神經網絡的反向傳播算法的創造,給機器學習帶來了希望,掀起了基于統計模型的機器學習熱潮。這個熱潮一直持續到今天。人們發現,利用BP算法可以讓一個人工神經網絡模型從大量訓練樣本中學習統計規律,從而對未知事件做預測。這種基于統計的機器學習方法比起過去基于人工規那么的系統,在很多方面顯出優越性。這個時候的人工神經網絡,雖也被稱作多層感知機,但實際是種只含有一層隱含層節點的淺層模型。20世紀90年代,各種各樣的淺層機器學習模型相繼被提出,例如支撐向量機、Boosting、最大熵方法等。這些模型的構造根本上可以看成帶有一層隱層節點〔如SVM、Boosting〕,或沒有隱層節點。這些模型無論是在理論分析還是應用中都獲得了巨大的成功。相比之下,由于理論分析的難度大,訓練方法又需要很多經歷和技巧,這個時期淺層人工神經網絡反而相對寂靜。深度學習是機器學習的第二次浪潮。2006年,加拿大多倫多大學教授、機器學習領域的泰斗GeoffreyHinton和他的學生在Science上發表了一篇文章,開啟了深度學習在學術界和工業界的浪潮。這篇文章有兩個主要觀點:1〕多隱層的人工神經網絡具有優異的特征學習能力,學習得到的特征對數據有更本質的刻畫,從而有利于可視化或分類;2〕深度神經網絡在訓練上的難度,可以通過"逐層初始化〞來有效克制,在這篇文章中,逐層初始化是通過無監視學習實現的。當前多數分類、回歸等學習方法為淺層構造算法,其局限性在于有限樣本和計算單元情況下對復雜函數的表示能力有限,針對復雜分類問題其泛化能力受到一定制約。深度學習可通過學習一種深層非線性網絡構造,實現復雜函數逼近,表征輸入數據分布式表示,并展現了強大的從少數樣本集中學習數據集本質特征的能力。深度學習的實質,是通過構建具有多隱層的機器學習模型和海量的訓練數據,來學習更有用的特征,從而最終提升分類或預測的準確性。因此,"深度模型〞是手段,"特征學習〞是目的。區別于傳統的淺層學習,深度學習的不同在于:1〕強調了模型構造的深度,通常有5層、6層,甚至10多層的隱層節點;2〕明確突出了特征學習的重要性,也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,從而使分類或預測更加容易。與人工規那么構造特征的方法相比,利用大數據來學習特征,更能夠刻畫數據的豐富在信息。深度學習與人工神經網絡深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進展分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。深度學習是無監視學習的一種。深度學習的概念源于人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習構造。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示。深度學習本身算是機器學習的一個分支,簡單可以理解為神經網絡的開展。大約二三十年前,神經網絡曾經是機器學習領域特別熾熱的一個方向,但是后來確慢慢淡出了,原因包括以下幾個方面:1〕比擬容易過擬合,參數比擬難調,而且需要不少技巧和經歷;2〕訓練速度比擬慢,在層次比擬少〔小于等于3〕的情況下效果并不比其它方法更優;所以中間有大約20多年的時間,神經網絡被關注很少,這段時間根本上是SVM和Boosting算法的天下。但是,一個癡心的老先生Hinton,他堅持了下來,并最終提成了一個實際可行的深度學習框架。深度學習與傳統的神經網絡之間有一樣的地方也有很多不同。二者的一樣在于深度學習采用了神經網絡相似的分層構造,系統由包括輸入層、隱層〔多層〕、輸出層組成的多層網絡,只有相鄰層節點之間有連接,同一層以及跨層節點之間相互無連接,每一層可以看作是一個Logistic回歸模型;這種分層構造,是比擬接近人類大腦的構造的。而為了克制神經網絡訓練中的問題,深度學習采用了與神經網絡很不同的訓練機制。傳統神經網絡中,采用的是反向傳播的方式進展,簡單來講就是采用迭代的算法來訓練整個網絡,隨機設定初值,計算當前網絡的輸出,然后根據當前輸出和標簽之間的差去改變前面各層的參數,直到收斂〔整體是一個梯度下降法〕。而深度學習整體上是一個逐層的訓練機制。這樣做的原因是因為,如果采用反向傳播的機制,對于一個深度網絡〔7層以上〕,殘差傳播到最前面的層已經變得太小,出現所謂的梯度擴散。開展現狀由于深度學習能夠很好地解決一些復雜問題,近年來許多研究人員對其進展了深入研究,出現了許多有關深度學習研究的新進展。下面分別從初始化方法、網絡層數和激活函數的選擇、模型構造、學習算法和實際應用這四個方面對近幾年深度學習研究的新進展進展介紹。初始化方法、網絡層數和激活函數的選擇研究人員試圖搞清網絡初始值的設定與學習結果之間的關系。Erhan等人在軌跡可視化研究中指出即使從相近的值開場訓練深度構造神經網絡,不同的初始值也會學習到不同的局部極值,同時發現用無監視預訓練初始化模型的參數學習得到的極值與隨機初始化學習得到的極值差異比擬大,用無監視預訓練初始化模型的參數學習得到的模型具有更好的泛化誤差。Bengio與Krueger等人指出用特定的方法設定訓練樣例的初始分布和排列順序可以產生更好的訓練結果,用特定的方法初始化參數,使其與均勻采樣得到的參數不同,會對梯度下降算法訓練的結果產生很大的影響。Glorot等人指出通過設定一組初始權值使得每一層深度構造神經網絡的Ja-cobian矩陣的奇異值接近于1,在很大程度上減小了監視深度構造神經網絡和有預訓練過程設定初值的深度構造神經網絡之間的學習結果差異。另外,用于深度學習的學習算法通常包含許多超參數,文獻[2]給出了這些超參數的選擇指導性意見,推薦一些常用的超參數,尤其適用于基于反向傳播的學習算法和基于梯度的優化算法中;并討論了如何解決有許多可調超參數的問題,描述了實際用于有效訓練常用的大型深度構造神經網絡的超參數的影響因素,指出深度學習訓練中存在的困難。選擇不同的網絡隱層數和不同的非線性激活函數會對學習結果產生不同的影響。Glorot研究了隱層非線性映射關系的選擇和網絡的深度相互影響的問題,討論了隨機初始化的標準梯度下降算法用于深度構造神經網絡學習得到不好的學習性能的原因。Glorot觀察不同非線性激活函數對學習結果的影響,得到LogisticS型激活單元的均值會驅使頂層和隱層進入飽和,因而LogisticS型激活單元不適合用隨機初始化梯度算法學習深度構造神經網絡;并據此提出了標準梯度下降算法的一種新的初始化方案來得到更快的收斂速度,為理解深度構造神經網絡使用和不使用無監視預訓練的性能差異作出了新的奉獻。Bengio從理論上說明深度學習構造的表示能力隨著神經網絡深度的增加以指數的形式增加,但是這種增加的額外表示能力會引起相應局部極值數量的增加,使得在其中尋找最優值變得困難。模型構造DBN的構造及其變種采用二值可見單元和隱單元RBM作為構造單元的DBN,在MNIST等數據集上表現出很好的性能。近幾年,具有連續值單元的RBM,如mcRBM、mPoT模型和spike-and-slabRBM等已經成功應用。Spike-and-slabRBM中Spike表示以0為中心的離散概率分布,slab表示在連續域上的稠密均勻分布,可以用吉布斯采樣對spike-and-slabRBM進展有效推斷,得到優越的學習性能。和積網絡深度學習最主要的困難是配分函數的學習,如何選擇深度構造神經網絡的構造使得配分函數更容易計算是一個很困難的問題。Poon等人提出一種新的深度模型構造,和積網絡(SPN),引入多層隱單元表示配分函數,使得配分函數更容易計算。SPN是有根節點的有向無環圖,圖中的葉節點為變量,中間節點執行和運算與積運算,連接節點的邊帶有權值,它們在Caltech-101和Olivetti兩個數據集上進展實驗證明了SPN的性能優于DBN和最近鄰方法。卷積神經網絡文獻[4]研究了用生成式子抽樣單元組成的卷積神經網絡,在MNIST數字識別任務和Caltech-101目標分類基準任務上進展實驗,顯示出非常好的學習性能。Huang等人提出一種新的卷積學習模型,即局部卷積RBM,利用對象類中的總體構造學習特征,不假定圖像具有平穩特征,在實際人臉數據集上進展實驗,得到性能很好的實驗結果。學習算法深度費希爾映射方法Wong等人提出一種新的特征提取方法,正那么化深度費希爾映射(RDFM)方法,學習從樣本空間到特征空間的顯式映射,根據Fisher準那么用深度構造神經網絡提高特征的區分度。深度構造神經網絡具有深度非局部學習構造,從更少的樣本中學習變化很大的數據集中的特征,顯示出比核方法更強的特征識別能力,同時RDFM方法的學習過程由于引入正那么化因子,解決了學習能力過強帶來的過擬合問題。在各種類型的數據集上進展實驗,得到的結果說明了在深度學習微調階段運用無監視正那么化的必要性。非線性變換方法該變換方法使得多層感知器〔MLP〕網絡的每個隱神經元的輸出具有零輸出和平均值上的零斜率,使學習MLP變得更容易。將學習整個輸入輸出映射函數的線性局部和非線性局部盡可能分開,用Shortcut權值建立線性映射模型,令Fisher信息陣接近對角陣,使得標準梯度接近自然梯度。通過實驗證明非線性變換方法的有效性,該變換使得根本隨機梯度學習與當前的學習算法在速度上不相上下,并有助于找到泛化性能更好的分類器。用這種非線性變換方法實現的深度無監視自編碼模型進展圖像分類和學習圖像的低維表示的實驗,說明這些變換有助于學習深度至少到達五個隱層的深度構造神經網絡,證明了變換的有效性,提高了根本隨機梯度學習算法的速度,有助于找到泛化性更好的分類器。稀疏編碼對稱機算法Ranzato等人提出一種新的有效的無監視學習算法,稀疏編碼對稱機(SESM),能夠在無須歸一化的情況下有效產生稀疏表示。SESM的損失函數是重構誤差和稀疏罰函數的加權總和,基于該損失函數比擬和選擇不同的無監視學習機,提出一種迭代在線學習算法,并在理論和實驗上將SESM與RBM和PCA進展比擬,在手寫體數字識別MNIST數據集和實際圖像數據集上進展實驗,說明該方法的優越性。遷移學習算法在許多常見學習場景中訓練和測試數據集中的類標簽不同,必須保證訓練和測試數據集中的相似性進展遷移學習。Mesnil等人研究了用于無監視遷移學習場景中學習表示的不同種類模型構造,將多個不同構造的層堆棧使用無監視學習算法用于五個學習任務,并研究了用于少量已標記訓練樣本的簡單線性分類器堆棧深度構造學習算法。Bengio研究了無監視遷移學習問題,討論了無監視預訓練有用的原因,如何在遷移學習場景中利用無監視預訓練,以及在什么情況下需要注意從不同數據分布得到的樣例上的預測問題。學習率自適應方法學習率自適應方法可用于提高深度構造神經網絡訓練的收斂性并且去除超參數中的學習率參數,包括全局學習率、層次學習率、神經元學習率和參數學習率等。最近研究人員提出了一些新的學習率自適應方法,如Duchi等人提出的自適應梯度方法和Schaul等人提出的學習率自適應方法;Hinton提出了收縮學習率方法使得平均權值更新在權值大小的1/1000數量級上;LeRoux等人提出自然梯度的對角低秩在線近似方法,并說明該算法在一些學習場景中能加速訓練過程深度學習根本原理深度學習的根本思想假設我們有一個系統S,它有N層〔S1,…,SN〕,它的輸入是I,輸出是O,如果輸出O等于輸入I,即輸入I經過這個系統變化之后沒有任何的信息損失,保持了不變,這意味著輸入I經過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息〔即輸入I〕的另外一種表示。我們需要自動地學習特征,假設我們有一堆輸入I〔如一堆圖像或者文本〕,假設我們設計了一個系統S〔有N層〕,我們通過調整系統中參數,使得它的輸出仍然是輸入I,那么我們就可以自動地獲取得到輸入I的一系列層次特征。對于深度學習來說,其思想就是對堆疊多個層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實現對輸入信息進展分級表達了。另外,前面是假設輸出嚴格地等于輸入,這個限制太嚴格,我們可以略微地放松這個限制,例如我們只要使得輸入與輸出的差異盡可能地小即可,這個放松會導致另外一類不同的DeepLearning方法。深度學習訓練過程如果對所有層同時訓練,時間復雜度會太高;如果每次訓練一層,偏差就會逐層傳遞。這會面臨跟上面監視學習中相反的問題,會嚴重欠擬合〔因為深度網絡的神經元和參數太多了〕。2006年,Hinton提出了在非監視數據上建立多層神經網絡的一個有效方法,簡單的說,分為兩步,一是每次訓練一層網絡,二是調優,使原始表示X向上生成的高級表示R和該高級表示R向下生成的X’盡可能一致。方法是:1〕首先逐層構建單層神經元,這樣每次都是訓練一個單層網絡。2〕當所有層訓練完后,Hinton使用Wake-Sleep算法進展調優。將除最頂層的其它層間的權重變為雙向的,這樣最頂層仍然是一個單層神經網絡,而其它層那么變為了圖模型。向上的權重用于"認知〞,向下的權重用于"生成〞。然后使用Wake-Sleep算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復原底層的結點。比方頂層的一個結點表示人臉,那么所有人臉的圖像應該激活這個結點,并且這個結果向下生成的圖像應該能夠表現為一個大概的人臉圖像。DeepLearning訓練過程具體如下:1〕使用自下上升非監視學習〔就是從底層開場,一層一層的往頂層訓練〕:采用無標定數據〔有標定數據也可〕分層訓練各層參數,這一步可以看作是一個無監視訓練過程,是和傳統神經網絡區別最大的局部〔這個過程可以看作是特征學習過程〕:體的,先用無標定數據訓練第一層,訓練時先學習第一層的參數〔這一層可以看作是得到一個使得輸出和輸入差異最小的三層神經網絡的隱層〕,由于模型容量的限制以及稀疏性約束,使得得到的模型能夠學習到數據本身的構造,從而得到比輸入更具有表示能力的特征;在學習得到第N-1層后,將N-1層的輸出作為第N層的輸入,訓練第N層,由此分別得到各層的參數;2〕自頂向下的監視學習〔就是通過帶標簽的數據去訓練,誤差自頂向下傳輸,對網絡進展微調〕:基于第一步得到的各層參數進一步調整個多層模型的參數,這一步是一個有監視訓練過程;第一步類似神經網絡的隨機初始化初值過程,由于深度學習的第一步不是隨機初始化,而是通過學習輸入數據的構造得到的,因而這個初值更接近全局最優,從而能夠取得更好的效果;所以深度學習效果好很大程度上歸功于第一步的特征學習過程。自動編碼機深度學習最簡單的一種方法是利用人工神經網絡的特點,人工神經網絡〔ANN〕本身就是具有層次構造的系統,如果給定一個神經網絡,我們假設其輸出與輸入是一樣的,然后訓練調整其參數,得到每一層中的權重。自然地,我們就得到了輸入I的幾種不同表示〔每一層代表一種表示〕,這些表示就是特征。自動編碼器就是一種盡可能復現輸入信號的神經網絡。為了實現這種復現,自動編碼器就必須捕捉可以代表輸入數據的最重要的因素,就像PCA那樣,找到可以代表原信息的主要成分。具體過程簡單的說明如下:1〕給定無標簽數據,用非監視學習學習特征:在我們之前的神經網絡中,如第一個圖,我們輸入的樣本是有標簽的,即〔input,target〕,這樣我們根據當前輸出和target〔label〕之間的差去改變前面各層的參數,直到收斂。但現在我們只有無標簽數據,也就是右邊的圖。那么這個誤差怎么得到呢?如上圖,我們將input輸入一個encoder編碼器,就會得到一個code,這個code也就是輸入的一個表示,那么我們怎么知道這個code表示的就是input呢?我們加一個decoder解碼器,這時候decoder就會輸出一個信息,那么如果輸出的這個信息和一開場的輸入信號input是很像的〔理想情況下就是一樣的〕,那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調整encoder和decoder的參數,使得重構誤差最小,這時候我們就得到了輸入input信號的第一個表示了,也就是編碼code了。因為是無標簽數據,所以誤差的來源就是直接重構后與原輸入相比得到。2〕通過編碼器產生特征,然后訓練下一層。這樣逐層訓練:那上面我們就得到第一層的code,我們的重構誤差最小讓我們相信這個code就是原輸入信號的良好表達了,或者牽強點說,它和原信號是一模一樣的〔表達不一樣,反映的是一個東西〕。那第二層和第一層的訓練方式就沒有差異了,我們將第一層輸出的code當成第二層的輸入信號,同樣最小化重構誤差,就會得到第二層的參數,并且得到第二層輸入的code,也就是原輸入信息的第二個表達了。其他層就同樣的方法炮制就行了〔訓練這一層,前面層的參數都是固定的,并且他們的decoder已經沒用了,都不需要了〕。3〕有監視微調:經過上面的方法,我們就可以得到很多層了。至于需要多少層〔或者深度需要多少,這個目前本身就沒有一個科學的評價方法〕需要自己試驗調了。每一層都會得到原始輸入的不同的表達。當然了,我們覺得它是越抽象越好了,就像人的視覺系統一樣。到這里,這個AutoEncoder還不能用來分類數據,因為它還沒有學習如何去連結一個輸入和一個類。它只是學會了如何去重構或者復現它的輸入而已。或者說,它只是學習獲得了一個可以良好代表輸入的特征,這個特征可以最大程度上代表原輸入信號。那么,為了實現分類,我們就可以在AutoEncoder的最頂的編碼層添加一個分類器〔例如羅杰斯特回歸、SVM等〕,然后通過標準的多層神經網絡的監視訓練方法〔梯度下降法〕去訓練。也就是說,這時候,我們需要將最后層的特征code輸入到最后的分類器,通過有標簽樣本,通過監視學習進展微調,這也分兩種,一個是只調整分類器〔黑色局部〕:另一種:通過有標簽樣本,微調整個系統:〔如果有足夠多的數據,這個是最好的。end-to-endlearning端對端學習〕一旦監視訓練完成,這個網絡就可以用來分類了。神經網絡的最頂層可以作為一個線性分類器,然后我們可以用一個更好性能的分類器去取代它。在研究中可以發現,如果在原有的特征中參加這些自動學習得到的特征可以大大提高準確度,甚至在分類問題中比目前最好的分類算法效果還要好!卷積神經網絡卷積神經網絡〔N〕是人工神經網絡的一種,已成為當前語音分析和圖像識別領域的研究熱點。它的權值共享網絡構造使之更類似于生物神經網絡,降低了網絡模型的復雜度,減少了權值的數量。該優點在網絡的輸入是多維圖像時表現的更為明顯,使圖像可以直接作為網絡的輸入,防止了傳統識別算法中復雜的特征提取和數據重建過程。卷積網絡是為識別二維形狀而特殊設計的一個多層感知器,這種網絡構造對平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。Ns是受早期的延時神經網絡〔TDNN〕的影響。延時神經網絡通過在時間維度上共享權值降低學習復雜度,適用于語音和時間序列信號的處理。Ns是第一個真正成功訓練多層網絡構造的學習算法。它利用空間關系減少需要學習的參數數目以提高一般前向BP算法的訓練性能。Ns作為一個深度學習架構提出是為了最小化數據的預處理要求。在N中,圖像的一小局部〔局部感受區域〕作為層級構造的最低層的輸入,信息再依次傳輸到不同的層,每層通過一個數字濾波器去獲得觀測數據的最顯著的特征。這個方法能夠獲取對平移、縮放和旋轉不變的觀測數據的顯著特征,因為圖像的局部感受區域允許神經元或者處理單元可以訪問到最根底的特征,例如定向邊緣或者角點。卷積神經網絡的構造卷積神經網絡是一個多層的神經網絡,每層由多個二維平面組成,而每個平面由多個獨立神經元組成。卷積神經網絡示意圖輸入圖像通過和三個可訓練的濾波器和可加偏置進展卷積,卷積后在C1層產生三個特征映射圖,然后特征映射圖中每組的四個像素再進展求和,加權值,加偏置,通過一個Sigmoid函數得到三個S2層的特征映射圖。這些映射圖再進過濾波得到C3層。這個層級構造再和S2一樣產生S4。最終,這些像素值被光柵化,并連接成一個向量輸入到傳統的神經網絡,得到輸出。一般地,C層為特征提取層,每個神經元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關系也隨之確定下來;S層是特征映射層,網絡的每個計算層由多個特征映射組成,每個特征映射為一個平面,平面上所有神經元的權值相等。特征映射構造采用影響函數核小的sigmoid函數作為卷積網絡的激活函數,使得特征映射具有位移不變性。此外,由于一個映射面上的神經元共享權值,因而減少了網絡自由參數的個數,降低了網絡參數選擇的復雜度。卷積神經網絡中的每一個特征提取層〔C-層〕都緊跟著一個用來求局部平均與二次提取的計算層〔S-層〕,這種特有的兩次特征提取構造使網絡在識別時對輸入樣本有較高的畸變容忍能力。參數減少與權值共享N一個牛逼的地方就在于通過感受野和權值共享減少了神經網絡需要訓練的參數的個數。卷積神經網絡減少參數示意圖如圖5-2左,如果我們有1000x1000像素的圖像,有1百萬個隱層神經元,那么他們全連接的話〔每個隱層神經元都連接圖像的每一個像素點〕,就有1012個連接,也就是1012個權值參數。然而圖像的空間聯系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經元都不需要對全局圖像做感受,每個神經元只感受局部的圖像區域,然后在更高層,將這些感受不同局部的神經元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數目,也就是減少神經網絡需要訓練的權值參數的個數了。如圖5-2右:假設局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接,所以1百萬個隱層神經元就只有一億個連接,即108個參數。比原來減少了四個數量級,這樣訓練起來就沒那么費力了。我們知道,隱含層的每一個神經元都連接10x10個圖像區域,也就是說每一個神經元存在10x10=100個連接權值參數。那如果我們每個神經元這100個參數是一樣的呢?也就是說每個神經元用的是同一個卷積核去卷積圖像。這樣我們就只有100個參數了,這就是權值共享,那問題就是這樣做靠譜嗎?假設一種濾波器,也就是一種卷積核就是提出圖像的一種特征,例如某個方向的邊緣。那么我們需要提取不同的特征,怎么辦,加多幾種濾波器不就行了嗎?對了。所以假設我們加到100種濾波器,每種濾波器的參數不一樣,表示它提出輸入圖像的不同特征,例如不同的邊緣。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為FeatureMap。所以100種卷積核就有100個FeatureMap。這100個FeatureMap就組成了一層神經元。這時這一層有1萬個參數。卷積神經網絡權值共享示意圖需要注意的一點是,上面的討論都沒有考慮每個神經元的偏置局部。所以權值個數需要加1。這個也是同一種濾波器共享的。卷積神經網絡總結總之,卷積網絡的核心思想是將:局部感受野、權值共享〔或者權值復制〕以及時間或空間亞采樣這三種構造思想結合起來獲得了某種程度的位移、尺度、形變不變性。Ns中這種層間聯系和空域信息的嚴密關系,使其適于圖像處理和理解。而且,其在自動提取圖像的顯著特征方面還表現出了比擬優的性能。在一些例子當中,Gabor濾波器已經被使用在一個初始化預處理的步驟中,以到達模擬人類視覺系統對視覺刺激的響應。在目前大局部的工作中,研究者將Ns應用到了多種機器學習問題中,包括人臉識別,文檔分析和語言檢測等。為了到達尋找視頻中幀與幀之間的相干性的目的,目前Ns通過一個時間相干性去訓練,但這個不是Ns特有的。應用領域語音識別語音識別系統長期以來,描述每個建模單元的統計概率模型時候,大都是采用的混合高斯模型〔GMM〕。這種模型由于估計簡單,適合海量數據訓練,同時有成熟的區分度訓練技術支持,長期以來,一直在語音識別應用中占有壟斷性地位。但是這種混合高斯模型本質上是一種淺層網絡建模,不能夠充分描述特征的狀態空間分布。另外,GMM建模的特征維數一般是幾十維,不能充分描述特征之間的相關性。最后GMM建模本質上是一種似然概率建模,雖然區分度訓練能夠模擬一些模式類之間的區分性,但是能力有限。微軟研究院的語音識別專家Li和Dong從2009開場和深度學習專家Hinton合作。2011微軟基于深度神經網絡的語音識別研究取得成果,徹底改變了語音識別原有的技術框架。采用深度神經網絡后,可以充分描述特征之間的相關性,可以把連續多幀的語音特征并在一起,構成一個高維特征。最終的深度神經網絡可以采用高維特征訓練來模擬的。由于深度神經網絡采用模擬人腦的多層結果,可以逐級地進展信息特征抽取,最終形成適合模式分類的較理想特征。這種多層構造和人腦處理語音圖像信息的時候,是有很大的相似性的。深度神經網絡的建模技術,在實際線上效勞時,能夠無縫地和傳統的語音識別技術相結合,在不引起任何系統額外消耗情況下大幅度地提升了語音識別系統的識別率。其在線的使用方法具體如下:在實際解碼過程中,聲學模型仍然是采用傳統的HMM模型,語音模型仍然是采用傳統的統計語言模型,解碼器仍然是采用傳統的動態WFST解碼器。但是在聲學模型的輸出分布計算時,完全用神經網絡的輸出后驗概率除以一個先驗概率來代替傳統HMM模型中的GMM的輸出似然概率。百度實踐中發現,采用DNN進展聲音建模的語音識別系統的相比于傳統的GMM語音識別系統而言,相對誤識別率能降低25%。最終在2012年11月的時候,上線了第一款基于DNN的語音搜索系統,成為最早采用DNN技術進展商業語音效勞的公司之一。國際上谷歌也采用了深度神經網絡進展聲音建模,和百度一起是最早的突破深度神經網絡工業化應用的企業之一。但是谷歌產品中采用的深度神經網絡有4~5層,而百度采用的深度神經網絡多達9層。這種構造差異的核心其實是百度更好的解決了深度神經網絡在線計算的技術難題,從而百度線上產品可以采用更復雜的網絡模型。這將對于未來拓展海量語料的DNN模型訓練有更大的優勢。圖像識別圖像是深度學習最早嘗試的應用領域。早在1989,Lecun〔現紐約大學教授〕和他的同事們就發表了卷積神經網絡(N)的工作。N是一種帶有卷積構造的深度神經網絡,通常至少有2個非線性可訓練的卷積層、2個非線性的固定卷積層〔又叫PoolingLayer〕和1個全連接層,一共至少5個隱含層。N的構造受到著名的Hubel-Wiesel生物視覺模型的啟發,尤其是模擬視覺皮層V1和V2層中simplecell和plexcell的行為。在很長時間里,N雖然在小規模的問題上,比方說手寫數字,取得當時世界最好結果,但一直沒有取得巨大成功。這主要原因是N在大規模圖像上效果不好,比方像素很多的自然圖片容理解,所以沒有得到計算機視覺領域的足夠重視。這個情況一直持續到2012年10月,Hinton和他的兩個學生在著名的ImageNet問題上用更深的N取得世界最好結果,使得圖像識別大踏步前進。在Hinton的模型里,輸入就是圖像的像素,沒有用到任何的人工特征。這個驚人的結果為什么在之前沒有發生?原因當然包括算法的提升,比方Dropout等防止過擬合技術,但最重要的是GPU帶來的計算能力提升和更多的訓練數據。百度在2012將深度學習技術成功應用于自然圖像OCR識別和人臉識別等問題,并推出相應的桌面和移動搜索產品,在2013,深度學習模型被成功應用于一般圖片的識別和理解。從百度的經歷來看,深度學習應用于圖像識別不但大大提升了準確性,而且防止了人工特征抽取的時間消耗,從而大大提高了在線計算效率。可以很有把握地說,從現在開場,深度學習將取代人工特征+機器學習的方法而逐漸成為主流圖像識別方法。自然語言處理除了語音和圖像,深度學習的另一個應用領域問題自然語言處理〔NLP〕。經過幾十年的開展,基于統計的模型已經成為NLP的主流,但是作為統計方法之一的人工神經網絡在NLP領域幾乎沒有受到重視。加拿大蒙特利爾大學教授Bengio等于2003提出用embedding的方法將詞映射到一個矢量表示空間,然后用非線性神經網絡來表示N-Gram模型。世界上最早的深度學習用于NLP的研究工作誕生于NECLabsAmerica,其研究員Collobert和Weston從2008開場采用embedding和多層一維卷積的構造,用于4個典型NLP問題。值得注意的是,他們將同一個模型用于不同任務,都能取得與StateOfTheArt相當的準確率。最近以來,斯坦福大學教授Manning等人在深度學習用于NLP的工作也值得關注。總的來說,深度學習在NLP上取得的進展沒有在語音圖像上那么令人影響深刻。一個很有意思的悖論是:相比于聲音和圖像,語言是唯一的非自然信號,是完全由人類大腦產生和處理的符號系統,但是模仿人腦構造的人工神經網絡確似乎在處理自然語言上沒有顯現明顯優勢?我們相信深度學習在NLP方面有很大的探索空間。從2006圖像深度學習成為學術界熱門課題到2012年10月Hinton在ImageNet上的重大突破,經歷了6年時間,我們需要有足夠耐心。搜索廣告CTR預估搜索廣告是搜索引擎的主要變現方式,而按點擊付費〔CPC〕又是其中被最廣泛應用的計費模式。在CPC模式下,預估的CTR越準確,點擊率就會越高,收益就越大。通常,搜索廣告的CTR是通過機器學習模型預估得到。提高CTR的準確性,是提升搜索公司、廣告主、搜索用戶三方利益的最正確途徑。傳統上,谷歌、百度等搜索引擎公司以LogisticRegression(LR)作為預估模型。而從2012開場,百度開場意識到模型的構造對廣告CTR預估的重要性:使用扁平構造的LR嚴重限制了模型學習與抽象特征的能力。為了突破這樣的限制,百度嘗試將DNN作用于搜索廣告,而這其中最大的挑戰在于當前的計算能力還無法承受1011級別的原始廣告特征作為輸入。作為解決,在百度的DNN系統里,特征數從1011數量級被降到了103,從而能被DNN正常的學習。這套深度學習系統已于2013年5月開場效勞于百度搜索廣告系統,每天為數億網民使用。DNN在搜索廣告系統中的應用還遠遠沒到成熟,其中DNN與遷移學習的結合將可能是一個令人振奮的方向。使用DNN,未來的搜索廣告將可能借助網頁搜索的結果優化特征的學習與提取;亦可能通過DNN將不同的產品線聯系起來,使得不同的變現產品不管數據多少,都能互相優化。我們認為未來的DNN一定會在搜索廣告中起到更重要的作用。深度學習實戰演練實驗壞境的搭建深度學習平臺目前主要有三個最經常使用的開源深度學習平臺,本文做了一個簡單的介紹:Caffe:源自加州伯克利分校的Caffe被廣泛應用,包括Pinterest這樣的web大戶。與TensorFlow一樣,Caffe也是由C++開發,Caffe也是Google今年早些時候發布的DeepDream工程(可以識別貓的人工智能神經網絡)的根底。Theano:2008年誕生于蒙特利爾理工學院,Theano派生出了大量深度學習Python軟件包,最著名的包括Blocks和Keras。Torch:誕生已經有十年之久,但是真正起勢得益于去年Facebook開源了大量Torch的深度學習模塊和擴展。Torch另外一個特殊之處是采用了不怎么流行的編程語言Lua(該語言曾被用來開發視頻游戲)。本次試驗,我采用了比擬廣泛使用的Caffe深度學習平臺。接下來,我主要介紹Caffe的環境搭建方法。安裝依賴庫首先,我在s://github./BVLC/caffe下載了Caffe的源代碼,為了能夠順利的進展編譯,首先我們需要安裝一下依賴庫。libatlas-base-devlibprotobuf-devlibleveldb-devlibsnappy-devlibopencv-devlibboost-all-devlibhdf5-serial-devlibgflags-devlibgoogle-glog-devliblmdb-devprotobuf-pilerpython-numpypython3-numpypython-scipypython3-scipy在Ubutun中,我們只需要使用sudoapt-getinstallPACKAGE_NAME即可完成對上述所有依賴庫的安裝。在安裝完依賴庫后,我們就可以開場安裝Caffe了。安裝Caffe在完成了依賴庫的安裝之后,我們就可以開場Caffe的安裝了。為此,我們首先要準備一個Makefile.Config文件。事實上,Caffe已經為我們準備好了一個Makefile.Config.Example文件,只要將該文件重命名并進展相應的修改即可開場進展編譯。由于本次實驗的機器中沒有支持CUDA的顯卡,因此我們需要在Makefile.Config文件中將CPU_ONLY選項置為1,然后即可開場編譯。我們只要在終端中輸入命令makeall即可開場編譯。在Caffe成功編譯完成后,我們輸入指令makepycaffe來編譯python接口模塊,當然如果你的系統中沒有python的話需要先安裝python。在上述所有編譯指令完成后,其實Caffe就已經安裝好了,在你的目錄中會生成build/tools文件夾,里面的Caffe可執行文件就是以后用來訓練深度神經網絡的工具。接下來,我們可以進展簡單的測試,測試Caffe是否可以正常工作,只需要在終端中輸入maketestmakeruntest即可進展Caffe的正確性測試。如果最后的結果顯示PASSED那么說明Caffe已經安裝完畢。實驗概述本文主要完成一個手寫數字體識別的深度學習測試,數據來源于網上的MNIST數據庫,數據庫一共擁有6萬個用于訓練的手寫數字〔帶標簽〕,同時還擁有1萬個用于識別的手寫數字字符,局部手寫體數字的效果如下列圖所示。MNIST手寫體本文首先在yann.lecun./exdb/mnist/上下載MNIST手寫字符集,并得到四個文件,分別是兩個圖片數據文件以及兩個標簽文件。接下來,按照MNIST的數據格式,書寫Python程序讀取程序圖片,并生成符合Caffe的LMDB格式數據集。接下來,本文參考已有的深度網絡模型,書寫模型文件。最后,本文編寫求解參數文件,調用Caffe可執行文件對深度網絡進展訓練,并得到最終的測試結果。本文實驗中所采用的環境如下:操作系統〔OS〕Ubuntu14.04CPUIntel(R)Core(TM)i5-4217CPU3.80GHz運行存大小〔RAM〕4.00GB實驗過程生成指定的數據格式文件為了使用Caffe深度學習平臺,我們首先需要將得到的數據集轉化為Caffe可以使用的LMDB格式,其具體過程如下。首先在下載的MNIST文件中提取所有的圖片源文件,主要使用的是Python編程。本文將所有的訓練用手寫數字放在train文件夾,測試用放在了val文件夾。并利用Python產生了兩個TAG文件,主要用來指示圖片的標簽。例如上圖所示,它代表8.jpg的標簽為1,也就是說8.jpg圖片中顯示的手寫數字應該是1。在上述文件全部準備好之后,我們可以調用Caffe提供的數據格式轉換工具convert_imageset能完成標準數據集的生成。本文寫了一個批處理文件完成了數據集的生成,其效果如下。編寫深度網絡模型文件按照當前文獻的說法,卷積神經網絡對手寫字符的識別具有較好的效果,我按照標準的Caffe模型編寫格式,參考網上的教程,編寫了一個深度網絡模型。首先定義一個訓練輸入data層,指定其數據路徑,數據文件格式,等參數,代碼書寫如下:layer{name:"mnist"type:"Data"top:"data"top:"label"include{phase:TRAIN}transform_param{scale:0.00390625}data_param{source:"/home/dong/dl2/hand_write_train/"batch_size:64backend:LMDB}}同理,定義一個測試輸入data層用來對訓練的網絡進展測試。接下來,定義一層卷積神經網絡,指定其類型為Convolution層,學習速率,其他參數保持默認。layer{name:"conv1"http://卷積神經網絡的第一層,卷積層type:"Convolution"http://這層操作為卷積bottom:"data"http://這一層的前一層是data層top:"conv1"param{lr_mult:1}param{lr_mult:2}convolution_param{num_output:20//定義輸出特征圖個數kernel_size:5//定義卷積核大小stride:1weight_filler{type:"xavier"}bias_filler{type:"constant"}}}在此之后,定義一層池化層,第二層卷積神經網絡層,第二層池化層,以及兩個積層,具體的模型代碼見附錄。編寫網絡求解文件和Makefile一樣,網絡求解文件是由模板的,根據自己的需要進展修改即可。一個典型的模板如下。net:"path/to/your/net"http://定義網絡構造文件,也就是我們上一步編寫的文件test_iter:100test_interval:500//每隔500次用測試數據,做一次驗證base_lr:0.01//學習速率momentum:0.9//動量參數weight_decay:0.0005//權重衰減系數lr_policy:"inv"http://梯度下降的相關優化策略gamma:0.0001power:0.75display:100max_iter:10000//最大迭代次數snapshot:5000//每迭代5000次,保存一次結果snapshot_prefix:"examples/mnist/lenet"http://保存結果路徑solver_mode:GPU//訓練硬件設備選擇GPU還是CPU編寫完以上所有的文件就可以使用Caffe進展網絡的訓練了,只要在終端中輸入:~/caffe-master/build/tools/caffetrain--solver=/home/dong/dpln/lenet_totxt即可開場訓練,訓練過程中會得到大量的迭代結果,在每500次迭代,系統會自動調用測試數據集進展一次準確度的測試,如下是在本次試驗中得到的結果:可以看到系統迭代到9000次的時候進展了一次測試驗證,識別正確率高達99.1%,這主要得益于卷積神經網絡的特性。實驗結果當終端提示OptimizationDone的時候,表示深度學習完畢,并會返回在給定測試數據集中的結果,本文得到的結果如下:當系統迭代了1萬次以后,優化完成,最終的識別進度為99.06%,可見深度學習能自動提取手寫體數字的特征,進展學習,并最后識別。總結本文介紹了深度學習的背景,對深度學習的研究過程以及開展現狀進展了概括,同時介紹了其根本原理以及應用領域。其次,通過Caffe深度學習平臺進展了手寫數字字符的識別的小工程。我了解到了深度學習的根本過程以及根本方法。例如如何搭建深度學習平臺,如何生成數據集,編寫簡單的深度學習網絡并最后調用Caffe進展訓練和測試。在上述步驟之中,我認為最重要的就是如何編寫深度學習網絡,這個很大程度上決定了你模型的可用性,這需要你對不同深度網絡模型的特點了然于胸,才能寫出最適合特定問題的深度學習網絡,本文在編寫MNIST深度學習網絡的時候參考了較多的網上資料,論文中也說到卷積神經網絡比擬適合手寫數字體的識別。實驗結果顯示,在經歷了1萬次迭代后,卷積神經網絡構成的深度學習網絡對手寫數字字體可以到達99%以上的識別,顯示出深度學習強大的識別能力。參考文獻SarikayaR,HintonGE,DeorasA.Applicationofdeepbeliefnetworksfornaturallanguageunderstanding[J].IEEETransactionsonAudio,SpeechandLanguageProcessing,2014,22(4):778-784BENGIOY.Practicalremendationsforgradient-basedtrainingofdeeparchitectures[M]NeuralNetworks:TricksoftheTrade.Ber-lin:Springer-Verlag,2012:437-478.FischerA,IgelC.TrainingrestrictedBoltzmannmachines:anintroduction[J],PatternRecognition,2014,47(1):25-39LEEH,GROSSER,RANGANATHR,etal.Convolutionaldeepbeliefnetworksforscalableunsupervisedlearningofhierarchicalrepresentations[C],Procofthe26thInternationalConferenceonMa-chineLearning.NewYork:ACMPress,2009:609-616.HintonGE,OsinderoS,TehYW.Afastlearningalgorithmfordeepbeliefnets[J],Neuralputation,2006,18(7):1527-1554.胡侯立,深度學習算法的原理及應用[J],信息技術,2015(2):176-177岳永鵬,深度無監視學習算法研究[D],西南石油大學碩士學位論文,2015,6:3-5建偉等,深度學習研究進展[J],計算機應用研究,2014,4(7):1925-1927建明等,深度學習的研究與開展[J],大學學報,2015,3(2):195-196/zouxy09/article/details/8775360//hjimce/article/details/48933813//hjimce/article/details/48781693/附錄〔源代碼〕讀取MNIST數據文件Python程序importnumpyasnpfromscipy.miscimportimsaveimportstruct#imsave('meelo.jpg',x)f=open('./train-images-idx3-ubyte','rb')filedata=f.read()#filesize=f.tell()f.close()data=bytearray(filedata)num=60000row=28col=28x=np.random.random((28,28))#printxcur=16foriinrange(0,num): forrinrange(0,row): forcinrange(0,col): v=data[cur] cur+=1 x[r][c]=v imsave('./train/'+str(i)+'.jpg',x)f=open('./t10k-images-idx3-ubyte','rb')filedata=f.read()#filesize=f.tell()f.close()data=bytearray(filedata)num=10000row=28col=28x=np.random.random((28,28))#printxcur=16foriinrange(0,num): forrinrange(0,row): forcinrange(0,col): v=data[cur] cur+=1 x[r][c]=v imsave('./val/t'+str(i)+'.jpg',x)f=open('./train-labels-idx1-ubyte','rb')filedata=f.read()#filesize=f.tell()f.close()data=bytearray(filedata)num=60000cur=8ttag=open('train.txt','w')foriinrange(0,num): v=data[cur] cur+=1 ttag.write(str(i)+'.jpg'+''+str(v)+'\n')ttag.close()f=open('./t10k-labels-idx1-ubyte','rb')filedata=f.read()#filesize=f.tell()f.close()data=bytearray(filedata)num=10000cur=8ttag2=open('val.txt','w')foriinrange(0,num): v=data[cur] cur+=1 ttag2.write('t'+str(i)+'.jpg'+''+str(v)+'\n')ttag2.close()深度網絡定義文件name:"LeNet"layer{name:"mnist"type:"Data"top:"data"top:"label"include{phase:TRAIN}transform_param{scale:0.00390625}data_param{source:"/home/dong/dl2/hand_write_train/"batch_size:64backend:LMDB}}layer{name:"mnist"type:"Data"top:"data"top:"label"include{phase:TEST}transform_param{scale:0.00390625}data_param{source:"/home/dong/dl2/hand_write_val/"batch_size:100backend:LMDB}}layer{name:"conv1"type:"Convolution"bottom:"data"top:"conv1"param{lr_mult:1}param{lr_mult:2}convolution_param{num_output:20kernel_size:5stride:1weight_filler{type:"xavier"}bias_filler{type:"constant"}}}layer{name:"pool1"type:"Pooling"bottom:"conv1"top:"pool1"pooling_param{pool:MAXkernel_size:2stride:2}}layer{name:"conv2"type:"Convolution"bottom:"pool1"top:"conv2"param{lr_mult:1}param{lr_mult:2}convolution_param{num_output:50kernel_size:5stride:1weight_filler{type:"xavier"}bias_filler{type:"constant"}}}layer{name:"pool2"type:"Pooling"bottom:"conv2"top:"pool2"pooling_param{pool:MAXkernel_size:2stride:2}}layer{name:"ip1"type:"InnerProduct"bottom:"pool2"top:"ip1"param{lr_mult:1}param{lr_mult:2}inner_product_param{num_output:500weight_filler{type:"xavier"}bias_filler{type:"con

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論