導航:首頁 > 網路問題 > 神經網路的庫怎麼建立

神經網路的庫怎麼建立

發布時間:2023-06-14 01:16:07

什麼是BP神經網路

BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。

㈡ 用c++實現神經網路一般用什麼庫

如果你想自己實現神經網路玩玩的話,不妨用MATLAB;具體可以參考Unsupervised Feature Learning and Deep Learning Tutorial,這個教程是Andrew Ng和他的學生寫的,上面有配套的MATLAB習題,是很好的練習材料。

但如果你想實際使用神經網路做項目的話,建議還是使用開源的庫,比如Caffe | Deep Learning Framework。事實上,不建議個人實現神經網路做為項目用途:其中的卷積、反向傳導等實現要想做好還是不太容易的。

關於你說的矩陣庫,我只用過armadillo,在Windows上面和VS搭配使用的,配置很簡單,裡面也有examples,很好上手;而且這個庫本身是基於blas和lapack,個人感覺還是很高效的。重點是,這個庫的各種函數、語法,整個就一MATLAB,特別簡單好用……自從有了它,媽媽再也不用擔心老師叫我把MATLAB的代碼轉成C++了

㈢ (急)如何用MATLAB建立ANN(人工神經網路模型)

問題描述:
有兩個自變數,一個因變數,10個樣本(這里就取少一點好了)。用實際問題來表述,假設一個股票,開盤價 x1,收盤價 x2,第二天的股價 y。 那用神經網路來預測的目的是,根據10天的開盤價和收盤價,來預測未來股價。顯然,這里的y與x1和x2相關,我們要訓練一個網路(net)來讓他盡可能的預測一個y

MATLAB程序

clc
clear
load data input output
%input就是包含了x1和x2 10天數據的矩陣,說白了就是20個數的矩陣。output是y的一個向量,%10個數
%需要自己找一些數據賦值給input和ouput

P=input;
T=output;
%這里P和T必須是 x1 x2和y的行向量組合。對於P,x1是行向量,x2是行向量。P=[x1;x2]; T=y. y是行向量

Epochs=5000;
NodeNum=12; TypeNum=1;
TF1='logsig'; TF2='purelin';
%設置一些初始參數,Epochs是迭代上限次數,NodeNum是第一個隱藏層的神經元個數,%TypeNum是幾層。TF1和TF2分別定義了幾個傳遞函數。

net=newff(minmax(P),[NodeNum TypeNum],{TF1 TF2},'trainlm');
%建立一個神經網路,訓練輸入和輸出數據都有了,設置隱藏層的個數。

net.trainParam.epochs=Epochs;
net.trainParam.goal=1e-4;
net.trainParam.min_grad=1e-4;
net.trainParam.show=200;
net.trainParam.time=inf;
%設置一些訓練時的參數,第一個是每次訓練的最大迭代次數;

net=train(net,P,T);
%開始網路訓練

P_test=P;
B_test=T;
%就用原始的數據進行測試

X=sim(net,P_test);
%測試

Erro=abs(B_test-X);
sigma=std(Erro);
%計算出預測值和實際值的誤差,求出方差。將來方差可以用來隨機調整

㈣ 用c++實現神經網路一般用什麼庫

openNN 一款開源的C++神經網路庫
http://opennn.cimne.com/

㈤ 關於matlab的BP神經網路:

比較新的版本,比如說matlab 2010以上的,都不需要裝神經網路的工具箱
建立網路步驟:
1、數據歸一化:輸入的數據通常為P,輸出數據通常為T,數據格式為:每列對應一個樣本,歸一化常用函數:mapminmax
[pn,ps]=mapminmax(p); [tn,ts]=mapminmax(t)
pn,tn是歸一化後的數據,ps, ts是歸一化的結構體,在後面反歸一化預測值很有用。
2、建立網路並設定參數
net=newff(pn,tn,[ ]) 中括弧裡面的是輸入層數,隱含神經元數,輸出層數,還可以設定節點傳遞函數等等的參數
net.trainparam.epochs=1000 訓練的次數
net.trainparam.goal=0.0001 訓練的誤差目標值
net.trainparam.lr=0.1 學習速率,通常在0到1之間,過大過小都不好
3、預測並分析
an=sim(net, pn)
ouput=mapminmax('reverse', an, ts) 根據之前歸一化的標准,對預測結果進行反歸一化,得到結果
error=output-t 這里是對誤差進行輸出,也可以用error=sum(asb(output-t))
當然也可以作圖,比如說:
plot(p,t,'-o')
hold on
plot(p, output,'-*')
看預測值和真實值能否吻合
還可以在神經網路訓練完成後的對話框中看MSE和R方
還有很多方法提高神經網路的精度,以上程序沒有經過MATLAB調試,但大致過程如上

純手打,希望採納!

㈥ python 神經網路庫有哪些

學習人工智慧時,我給自己定了一個目標--用Python寫一個簡單的神經網路。為了確保真得理解它,我要求自己不使用任何神經網路庫,從頭寫起。多虧了Andrew Trask寫得一篇精彩的博客,我做到了!下面貼出那九行代碼:

在這篇文章中,我將解釋我是如何做得,以便你可以寫出你自己的。我將會提供一個長點的但是更完美的源代碼。
首先,神經網路是什麼?人腦由幾千億由突觸相互連接的細胞(神經元)組成。突觸傳入足夠的興奮就會引起神經元的興奮。這個過程被稱為「思考」。

我們可以在計算機上寫一個神經網路來模擬這個過程。不需要在生物分子水平模擬人腦,只需模擬更高層級的規則。我們使用矩陣(二維數據表格)這一數學工具,並且為了簡單明了,只模擬一個有3個輸入和一個輸出的神經元。

我們將訓練神經元解決下面的問題。前四個例子被稱作訓練集。你發現規律了嗎?『?』是0還是1?

你可能發現了,輸出總是等於輸入中最左列的值。所以『?』應該是1。
訓練過程
但是如何使我們的神經元回答正確呢?賦予每個輸入一個權重,可以是一個正的或負的數字。擁有較大正(或負)權重的輸入將決定神經元的輸出。首先設置每個權重的初始值為一個隨機數字,然後開始訓練過程:
取一個訓練樣本的輸入,使用權重調整它們,通過一個特殊的公式計算神經元的輸出。
計算誤差,即神經元的輸出與訓練樣本中的期待輸出之間的差值。
根據誤差略微地調整權重。
重復這個過程1萬次。

最終權重將會變為符合訓練集的一個最優解。如果使用神經元考慮這種規律的一個新情形,它將會給出一個很棒的預測。
這個過程就是back propagation。

計算神經元輸出的公式
你可能會想,計算神經元輸出的公式是什麼?首先,計算神經元輸入的加權和,即

接著使之規范化,結果在0,1之間。為此使用一個數學函數--Sigmoid函數:

Sigmoid函數的圖形是一條「S」狀的曲線。

把第一個方程代入第二個,計算神經元輸出的最終公式為:

你可能注意到了,為了簡單,我們沒有引入最低興奮閾值。
調整權重的公式
我們在訓練時不斷調整權重。但是怎麼調整呢?可以使用「Error Weighted Derivative」公式:

為什麼使用這個公式?首先,我們想使調整和誤差的大小成比例。其次,乘以輸入(0或1),如果輸入是0,權重就不會調整。最後,乘以Sigmoid曲線的斜率(圖4)。為了理解最後一條,考慮這些:
我們使用Sigmoid曲線計算神經元的輸出
如果輸出是一個大的正(或負)數,這意味著神經元採用這種(或另一種)方式
從圖四可以看出,在較大數值處,Sigmoid曲線斜率小
如果神經元認為當前權重是正確的,就不會對它進行很大調整。乘以Sigmoid曲線斜率便可以實現這一點
Sigmoid曲線的斜率可以通過求導得到:

把第二個等式代入第一個等式里,得到調整權重的最終公式:

當然有其他公式,它們可以使神經元學習得更快,但是這個公式的優點是非常簡單。
構造Python代碼
雖然我們沒有使用神經網路庫,但是將導入Python數學庫numpy里的4個方法。分別是:
exp--自然指數
array--創建矩陣
dot--進行矩陣乘法
random--產生隨機數
比如, 我們可以使用array()方法表示前面展示的訓練集:

「.T」方法用於矩陣轉置(行變列)。所以,計算機這樣存儲數字:

我覺得我們可以開始構建更優美的源代碼了。給出這個源代碼後,我會做一個總結。
我對每一行源代碼都添加了注釋來解釋所有內容。注意在每次迭代時,我們同時處理所有訓練集數據。所以變數都是矩陣(二維數據表格)。下面是一個用Python寫地完整的示例代碼。

結語
試著在命令行運行神經網路:

你應該看到這樣的結果:

我們做到了!我們用Python構建了一個簡單的神經網路!
首先神經網路對自己賦予隨機權重,然後使用訓練集訓練自己。接著,它考慮一種新的情形[1, 0, 0]並且預測了0.99993704。正確答案是1。非常接近!
傳統計算機程序通常不會學習。而神經網路卻能自己學習,適應並對新情形做出反應,這是多麼神奇,就像人類一樣。

㈦ 如何建立神經網路模型

人工神經網路有很多種,我只會最常用的BP神經網路。不同的網路有不同的結構和不同的學習演算法。
簡單點說,人工神經網路就是一個函數。只是這個函數有別於一般的函數。它比普通的函數多了一個學習的過程。
在學習的過程中,它根據正確結果不停地校正自己的網路結構,最後達到一個滿意的精度。這時,它才開始真正的工作階段。
學習人工神經網路最好先安裝MathWords公司出的MatLab軟體。利用該軟體,你可以在一周之內就學會建立你自己的人工神經網路解題模型。
如果你想自己編程實現人工神經網路,那就需要找一本有關的書籍,專門看神經網路學習演算法的那部分內容。因為「學習演算法」是人工神經網路的核心。最常用的BP人工神經網路,使用的就是BP學習演算法。

閱讀全文

與神經網路的庫怎麼建立相關的資料

熱點內容
路由器沒開就有網路 瀏覽:960
路由器與網路連接 瀏覽:838
光貓怎麼更換無線網路 瀏覽:557
網路麻將怎麼打 瀏覽:682
網路用語dgjj什麼意思 瀏覽:912
怎樣找到電腦網路賬號 瀏覽:16
蘋果手機打開軟體網路特別卡 瀏覽:719
網路安全保障人員培訓 瀏覽:40
網路寬頻上行下行調多少 瀏覽:1001
降檔什麼意思網路語 瀏覽:930
設置了dns網路快了好多 瀏覽:910
老路由器網路卡頓怎麼辦 瀏覽:66
億聯網路股票是哪個板塊 瀏覽:290
計算機網路支撐技術包括 瀏覽:134
vpm蘋果網路加速 瀏覽:900
蘋果6怎麼修改網路 瀏覽:954
全球手機網路最貴的國家是 瀏覽:541
計算機網路空間技術是干什麼的 瀏覽:445
電視上如何添加網路 瀏覽:683
數據網路基帶需要多少錢 瀏覽:318

友情鏈接