Matlab答疑隨筆17:很多同學學習神經(jīng)網(wǎng)絡還在使用newff和sim函數(shù),我來說說正確的用法
0.每隔一段時間,就會有同學問到關于newff神經(jīng)網(wǎng)絡相關程序代碼的問題,每次看到這樣的問題,內心波瀾涌起;
這種感覺吧,如鯁在喉,想回復一下,但轉念之間,算了,說了也沒用;
1.首先說,newff,這個函數(shù)
它用來創(chuàng)建了一個前饋反向傳播神經(jīng)網(wǎng)絡,它的用法如下:net = newff(P,T,S),具體語法含義不解釋,因為網(wǎng)上這方面的內容,可謂鋪天蓋地,唾手可得;
現(xiàn)在的問題是,如果稍微仔細了解一下,就會發(fā)現(xiàn),newff函數(shù)在Matlab R2010b已經(jīng)被Obsoleted(廢止、淘汰),新版本中,推薦的替代方法是feedforwardnet函數(shù);
注:Matlab2022a中,雖然淘汰,但newff函數(shù)親測,仍然可用;
2.接著說,feedforwardnet函數(shù)的用法
net = feedforwardnet(hiddenSizes,trainFcn) ,創(chuàng)建前饋神經(jīng)網(wǎng)絡,hiddenSizes指定隱藏層大小,訓練函數(shù)由 trainFcn 指定;前饋網(wǎng)絡由一系列層組成,第一層有來自網(wǎng)絡輸入的連接,每個后續(xù)層都有來自上一個層的連接,最后一個層產(chǎn)生網(wǎng)絡的輸出;
3. feedforwardnet可以創(chuàng)建基本通用的神經(jīng)網(wǎng)絡,但可能并不常用
在新版本中,除了feedforwardnet函數(shù),Matlab工具箱還另外預設了不同應用場景的神經(jīng)網(wǎng)絡,如擬合神經(jīng)網(wǎng)絡可以使用fitnet函數(shù),模式識別網(wǎng)絡可以使用patternnet 函數(shù),級聯(lián)前向網(wǎng)絡(從輸入到每層以及從每層到所有后續(xù)層,該網(wǎng)絡都有額外的連接)可以使用cascadeforwardnet 函數(shù);
之所以有這么多類別的細分,個人認為,是為了應對更廣泛更精細的應用需求,畢竟,新世紀新階段,借著人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)的東風,神經(jīng)網(wǎng)絡在各個領域中,一路狂奔又一路跌打損傷,也是大勢所趨;
這幾個函數(shù)用法就不叨叨念了,在我的視頻系列43中都有詳細講述和編程實例演示(43.1、43.11、43.14),也可以自己網(wǎng)上查資料學習;
4.繼續(xù)說,sim,這個函數(shù)
它用來進行神經(jīng)網(wǎng)絡仿真,意思是,神經(jīng)網(wǎng)絡訓練之后,輸入新的數(shù)據(jù),神經(jīng)網(wǎng)絡運算,返回響應數(shù)據(jù),用法:y=sim(net,x),net是神經(jīng)網(wǎng)絡對象,x是輸入數(shù)據(jù),y是響應數(shù)據(jù);
下面要說點什么呢,畢竟,這個函數(shù)沒有被Obsoleted;
下面要說的是,這個用法out了;
5.然后說,如今流行的調用方法
y=net(x)
也就是,直接使用神經(jīng)網(wǎng)絡對象net,把輸入數(shù)據(jù)丟進去,就可以仿真運算,返回結果了,是不是很賤;
6.最后說明
本文整篇都在無事生非,一個兩個函數(shù)或用法的改進,或者不改進,都是小聰明,能夠解決大家在建模、課題、論文中的實際問題,才是大謀略;
7.附圖:兩種神經(jīng)網(wǎng)絡示意圖


相關推薦





End