① 神經網路工具箱與編程實現哪個更好
首先說一下神經網路工具箱,在我剛剛接觸神經網路的時候,我就利用工具箱去解決問題,這讓我從直觀上對神經網路有了了解,大概清楚了神經網路的應用范圍以及它是如何解決實際問題的。
工具箱的優勢在於我們不用了解其內部的具體實現,更關注於模型的建立與問題的分析,也就是說,如果拋開演算法的錯誤,那麼用工具箱來解決實際問題會讓我們能把更多的精力放在實際問題的模型建立上,而不是繁瑣的演算法實現以及分析上。
其次談談編程實現神經網路,由於個人能力有限,所以只是簡單的編程實現過一些基本神經演算法,總的體會就是編程的過程讓我對演算法有了更透徹的理解,可以更深入的分析其內部運行機制,也同樣可以實現一下自己的想法,構建自己的神經網路演算法。
以上是我對兩個方法的簡單理解。那究竟哪個方法更好些呢?我個人的看法是要看使用者的目的是怎樣的。
如果使用者的目的在於解決實際問題,利用神經網路的函數逼近與擬合功能實現自己對實際問題的分析與模型求解,那我的建議就是利用神經網路工具箱,學過編程語言的人都知道,無論用什麼編程語言將一個現有的演算法編程實現達到可用的結果這一過程都是及其繁瑣與復雜的,就拿簡單的經典BP神經網路演算法來說,演算法本身的實現其實並不難,可根據不同人的能力,編出來的程序的運行效率是大不相同的,而且如果有心人看過matlab的工具箱的源碼的話,應該能發現,裡面採用的方法並不完全是純粹的BP經典演算法,一個演算法從理論到實現還要依賴與其他演算法的輔助,計算機在計算的時候難免出現的舍入誤差,保證權值的時刻改變,這都是編程人員需要考慮的問題,可能還有很多的問題
這樣的話,如果自己單人編程去實現神經網路來解決實際問題的話,整體效率就沒有使用工具箱更好。
如果使用者的目的在於分析演算法,構造新的網路的話那當然首推自己編程實現。個人的感覺就是,如果真的是自己完全編程實現的話,對演算法會有很深入的理解,在編程的調試過程中,也會領悟到很多自己從前從來沒有考慮過的問題,像權值的初始的隨機選取應該怎麼樣,將訓練樣本按什麼順序輸入等,這都是編程實現所要考慮的問題,不同的方法得到的結果會有很大的差距。
② 復雜神經網路模型用什麼軟體
bp神經網路能用MATLAB,
理論上編程語言都可以,比如VB,C語言,過程也都是建模、量化、運算及結果輸出(圖、表),但是matlab發展到現在,集成了很多的工具箱,所以用的最為廣泛,用其他的就得是要從源碼開發入手了。
bp神經網路是一種演算法,只要是演算法就可以用任何軟體工具,只要編譯器或者解釋器支持,c,c++,python,來進行實現,只是實現時的復雜程度有區別而已
③ 直接用神經網路工具箱構建bp神經網路,希望能給個例子說明,有註解最好,本人matlab新手,謝謝
BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層專前饋網路,是目前應用屬最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。
附件就是利用神經網路工具箱構建BP神經網路進行預測的實例。如果要用可視化工具,可以在命令窗口輸入nntool.
④ 如何用MATLAB的神經網路工具箱實現三層BP網路
使用神經網路工具箱可以非常簡便地實現網路建立和訓練,實例代碼如下:
%%BP演算法
functionOut=bpnet(p,t,p_test)
%p,t為樣本需要提前組織好
globalS1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');%trainlm訓練函數最有效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.showWindow=false;%阻止訓練窗口的彈出
net.trainParam.showCommandLine=false;%阻止訓練窗口的彈出
net=train(net,p,t);
Out=sim(net,p_test);
end
上面的代碼不完整,完整的帶訓練樣本數據的程序見附件。