1. 訓練好的神經網路模型怎麼用
那是肯定有影響的。你這樣理解,就像你讓一個復雜的結構構造的機器去學習一個東西,和你用一個構造簡單的機器去學習一個東西,它們理解的會一樣嗎?而且關於隱含層神經元個數還有幾個公式來推測它可能的神經元個數,你可以查查看,如果沒有影響你覺得誰會花時間在這上面去研究公式呢,你說是吧?
除了你說的這些,另外訓練目標和訓練次數等也會對訓練結果產生影響。
2. 如何訓練一個簡單的分類卷積神經網路
卷積神經網路有以下幾種應用可供研究:
1、基於卷積網路的形狀識別
物體的形狀是人的視覺系統分析和識別物體的基礎,幾何形狀是物體的本質特徵的表現,並具有平移、縮放和旋轉不變等特點,所以在模式識別領域,對於形狀的分析和識別具有十分重要的意義,而二維圖像作為三維圖像的特例以及組成部分,因此二維圖像的識別是三維圖像識別的基礎。
2、基於卷積網路的人臉檢測
卷積神經網路與傳統的人臉檢測方法不同,它是通過直接作用於輸入樣本,用樣本來訓練網路並最終實現檢測任務的。它是非參數型的人臉檢測方法,可以省去傳統方法中建模、參數估計以及參數檢驗、重建模型等的一系列復雜過程。本文針對圖像中任意大小、位置、姿勢、方向、膚色、面部表情和光照條件的人臉。
3、文字識別系統
在經典的模式識別中,一般是事先提取特徵。提取諸多特徵後,要對這些特徵進行相關性分析,找到最能代表字元的特徵,去掉對分類無關和自相關的特徵。然而,這些特徵的提取太過依賴人的經驗和主觀意識,提取到的特徵的不同對分類性能影響很大,甚至提取的特徵的順序也會影響最後的分類性能。同時,圖像預處理的好壞也會影響到提取的特徵。
3. BP神經網路的模型已經訓練好,想用多一些數據繼續訓練,怎麼在原來的基礎上訓練呢
保存權重,下次賦值給新定義的網路。
4. 如何使用tensorflow構建,訓練和改進循環神經網路
我們利用 TensorFlow 提供的 tf.train.AdamOptimizer 來控制學習速度。AdamOptimizer 通過使用動量(參數的移動平均數)來改善傳統梯度下降,促進超參數動態調整。我們可以通過創建標簽錯誤率的摘要標量來跟蹤丟失和錯誤率:
# Create a placeholder for the summary statistics
with tf.name_scope("accuracy"):
# Compute the edit (Levenshtein) distance of the top path
distance =tf.edit_distance(tf.cast(self.decoded[0], tf.int32), self.targets)
# Compute the label error rate (accuracy)
self.ler =tf.rece_mean(distance, name='label_error_rate')
self.ler_placeholder =tf.placeholder(dtype=tf.float32, shape=[])
self.train_ler_op =tf.summary.scalar("train_label_error_rate", self.ler_placeholder)
self.dev_ler_op =tf.summary.scalar("validation_label_error_rate", self.ler_placeholder)
self.test_ler_op =tf.summary.scalar("test_label_error_rate", self.ler_placeholder)
如何改進 RNN
現在我們構建了一個簡單的 LSTM RNN 網路,下一個問題是:如何繼續改進它?幸運的是,在開源社區里,很多大公司都開源了自己的最新語音識別模型。在 2016 年 9 月,微軟的論文《The Microsoft 2016 Conversational Speech Recognition System》展示了在 NIST 200 Switchboard 數據中單系統殘差網路錯誤率 6.9% 的新方式。他們在卷積+循環神經網路上使用了幾種不同的聲學和語言模型。微軟的團隊和其他研究人員在過去 4 年中做出的主要改進包括:
在基於字元的 RNN 上使用語言模型
使用卷積神經網路(CNN)從音頻中獲取特徵
使用多個 RNN 模型組合
值得注意的是,在過去幾十年裡傳統語音識別模型獲得的研究成果,在目前的深度學習語音識別模型中仍然扮演著自己的角色。
修改自: A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014
訓練你的第一個 RNN 模型
在本教程的 Github 里,作者提供了一些介紹以幫助讀者在 TensorFlow 中使用 RNN 和 CTC 損失函數訓練端到端語音識別系統。大部分事例數據來自 LibriVox。數據被分別存放於以下文件夾中:
Train: train-clean-100-wav (5 examples)
Test: test-clean-wav (2 examples)
Dev: dev-clean-wav (2 examples)
當訓練這些示例數據時,你會很快注意到訓練數據的詞錯率(WER)會產生過擬合,而在測試和開發集中詞錯率則有 85% 左右。詞錯率不是 100% 的原因在於每個字母有 29 種可能性(a-z、逗號、空格和空白),神經網路很快就能學會:
某些字元(e,a,空格,r,s,t)比其他的更常見
輔音-母音-輔音是英文的構詞特徵
MFCC 輸入聲音信號振幅特徵的增加只與字母 a-z 有關
5. 深度神經網路是如何訓練的
Coursera的Ng機器學習,UFLDL都看過。沒記錯的話Ng的機器學習里是直接給出公式了,雖然你可能知道如何求解,但是即使不知道完成作業也不是問題,只要照著公式寫就行。反正我當時看的時候心裡並沒能比較清楚的明白。我覺得想了解深度學習UFLDL教程 - Ufldl是不錯的。有習題,做完的話確實會對深度學習有更加深刻的理解,但是總還不是很清晰。後來看了Li FeiFei的Stanford University CS231n: Convolutional Neural Networks for Visual Recognition,我的感覺是對CNN的理解有了很大的提升。沉下心來推推公式,多思考,明白了反向傳播本質上是鏈式法則(雖然之前也知道,但是當時還是理解的迷迷糊糊的)。所有的梯度其實都是對最終的loss進行求導得到的,也就是標量對矩陣or向量的求導。當然同時也學到了許多其他的關於cnn的。並且建議你不僅要完成練習,最好能自己也寫一個cnn,這個過程可能會讓你學習到許多更加細節和可能忽略的東西。這樣的網路可以使用中間層構建出多層的抽象,正如我們在布爾線路中做的那樣。例如,如果我們在進行視覺模式識別,那麼在第一層的神經元可能學會識別邊,在第二層的神經元可以在邊的基礎上學會識別出更加復雜的形狀,例如三角形或者矩形。第三層將能夠識別更加復雜的形狀。依此類推。這些多層的抽象看起來能夠賦予深度網路一種學習解決復雜模式識別問題的能力。然後,正如線路的示例中看到的那樣,存在著理論上的研究結果告訴我們深度網路在本質上比淺層網路更加強大。
6. 請問如何並行化訓練神經網路模型
各個框架都有自己的方法實現並行計算。
我常用的是pytorch,可通過以下方法實現並行計算(單機多卡):
new_net = nn.DataParallel(net, device_ids=[0, 1])
output = new_net(input)
通過device_ids參數可以指定在哪些GPU上進行優化
7. 如何訓練深度神經網路
deeplearinig就是神經網路的一類,就是解決的訓練問題的深層神經網路,所以你這問題「深度學習會代替神經網路『就不對,BP么,BP有自己的優勢,也是很成熟的演算法,做手寫識別等等效果已經商用化了,不會被輕易替代。deeplearning遠比BP要復雜,用來解決的問題也不是一個層面,所以也沒有替代的必要。Deeplearning所涉及的問題大多數BP都沒法解決的。
度學習的概念源於人工神經網路的研究。含多隱層的多層感知器就是一種深度學習結構,通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分布式特徵表示。深度學習的概念由Hinton等人於2006年提出,基於深信度網(DBN)提出非監督貪心逐層訓練演算法,為解決深層結構相關的優化難題帶來希望,隨後提出多層自動編碼器深層結構。深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。
系統地論述了神經網路的基本原理、方法、技術和應用,主要內容包括:神經信息處理的基本原理、感知器、反向傳播網路、自組織網路、遞歸網路、徑向基函數網路、核函數方法、神經網路集成、模糊神經網路、概率神經網路、脈沖耦合神經網路、神經場理論、神經元集群以及神經計算機。每章末附有習題,書末附有詳細的參考文獻。神經網路是通過對人腦或生物神經網路的抽象和建模,研究非程序的、適應性的、大腦風格的信息處理的本質和能力。它以腦科學和認知神經科學的研究成果為基礎,拓展智能信息處理的方法,為解決復雜問題和智能控制提供有效的途徑,是智能科學和計算智能的重要部分。