① 如何通過人工神經網路實現圖像識別
人工神經網路(Artificial Neural Networks)(簡稱ANN)系統從20 世紀40 年代末誕生至今僅短短半個多世紀,但由於他具有信息的分布存儲、並行處理以及自學習能力等優點,已經在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。尤其是基於誤差反向傳播(Error Back Propagation)演算法的多層前饋網路(Multiple-Layer Feedforward Network)(簡稱BP 網路),可以以任意精度逼近任意的連續函數,所以廣泛應用於非線性建模、函數逼近、模式分類等方面。
目標識別是模式識別領域的一項傳統的課題,這是因為目標識別不是一個孤立的問題,而是模式識別領域中大多數課題都會遇到的基本問題,並且在不同的課題中,由於具體的條件不同,解決的方法也不盡相同,因而目標識別的研究仍具有理論和實踐意義。這里討論的是將要識別的目標物體用成像頭(紅外或可見光等)攝入後形成的圖像信號序列送入計算機,用神經網路識別圖像的問題。
一、BP 神經網路
BP 網路是採用Widrow-Hoff 學習演算法和非線性可微轉移函數的多層網路。一個典型的BP 網路採用的是梯度下降演算法,也就是Widrow-Hoff 演算法所規定的。backpropagation 就是指的為非線性多層網路計算梯度的方法。一個典型的BP 網路結構如圖所示。
六、總結
從上述的試驗中已經可以看出,採用神經網路識別是切實可行的,給出的例子只是簡單的數字識別實驗,要想在網路模式下識別復雜的目標圖像則需要降低網路規模,增加識別能力,原理是一樣的。
② 如何在R語言中進行神經網路模型的建立
不能發鏈接,所以我復制過來了。
#載入程序和數據
library(RSNNS)
data(iris)
#將數據順序打亂
iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]
#定義網路輸入
irisValues <- iris[,1:4]
#定義網路輸出,並將數據進行格式轉換
irisTargets <- decodeClassLabels(iris[,5])
#從中劃分出訓練樣本和檢驗樣本
iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)
#數據標准化
iris <- normTrainingAndTestSet(iris)
#利用mlp命令執行前饋反向傳播神經網路演算法
model <- mlp(iris$inputsTrain, iris$targetsTrain, size=5, learnFunc="Quickprop", learnFuncParams=c(0.1, 2.0, 0.0001, 0.1),maxit=100, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)
#利用上面建立的模型進行預測
predictions <- predict(model,iris$inputsTest)
#生成混淆矩陣,觀察預測精度
confusionMatrix(iris$targetsTest,predictions)
#結果如下:
# predictions
#targets 1 2 3
# 1 8 0 0
# 2 0 4 0
# 3 0 1 10
③ 關於Matlab BP神經網路建模的問題
假設輸入的是5個參數,輸出1個參數。
神經網路的節點結構為 5-N-1 (N是中間層節點數,數目根據實驗效果確定,可選5~10個)
關於輸入延遲,不清楚意思。
是否可以做這樣的數據處理:
假設t 時間的5個輸入數據和t+1時間的1個輸出數據對應,則以這一對數據作為訓練樣本,也不需要其理解神經網路中的延時處理機制。
訓練函數寫法: net=train(net,t 時間的輸入數據,t+1時間的輸入數據);
④ BP神經網路的非線性系統建模
在工程應用中經常會遇到一些復雜的非線性系統(我們航空發動機就是典型的強非線性模型),這些系統狀態方程復雜,難以用數學方法准確建模。在這種情況下,可以建立BP神經網路表達這些非線性系統。該方法把未知系統看成黑箱,首先用系統輸入輸出數據訓練BP神經網路,使網路能夠表達該未知函數,然後用訓練好的BP神經網路預測系統輸出。
本文要擬合的非線性函數是
該函數的圖形如下圖1所示。
回顧上一篇文章建立BP網路的演算法流程,進行具有非線性函數擬合的BP網路可以分為網路構建、訓練和預測三步,如下圖2所示。
BP神經網路構建 根據要擬合的非線性函數特點確定BP網路結構,由於該非線性函數有兩個輸入參數,一個輸出參數,所以BP網路結構可以設置為2-5-1,即輸入層有2個節點,隱含層有5個節點,輸出層有1個節點。
BP神經網路訓練 用非線性函數輸入輸出數據訓練神經網路,使訓練後的網路能夠預測非線性函數輸出。從非線性函數中隨機得到2 000組輸入輸出數據,從中隨機選擇1 900組作為訓練數據,用於網路訓練,100組作為測試數據,用於測試網路的擬合性能。
神經網路預測 用訓練好的網路預測輸出,並對預測結果進行分析。
根據非線性函數方程隨機得到該函數的2 000組輸入輸出數據,將數據存儲在data.mat文件中,input是函數輸入數據,output是函數輸出數據。從輸入輸出數據中隨機選取1 900組數據作為網路訓練數據,100組作為網路測試數據,並對訓練數據進行歸一化處理。
用訓練數據訓練BP神經網路,使網路對非線性函數輸出具有預測能力。
用訓練好的BP神經網路預測非線性函數輸出,並通過BP神經網路預測輸出和期望輸出,分析BP神經網路的擬合能力。
用訓練好的BP神經網路預測函數輸出,預測結果如下圖3所示。
BP神經網路預測輸出和期望輸出的誤差如下圖4所示。
從圖3和圖4可以看出,雖然BP神經網路具有較高的擬合能力,但是網路預測結果仍有一定誤差,某些樣本點的預測誤差較大。
在上一篇文章中提到了調整隱含層節點數目、改變權值和閾值更新演算法以及變學習率學習演算法等方法,針對非線性擬合,BP神經網路的優化還可以使用多隱層的BP神經網路、改變激活函數等方法。
⑤ 1.如何用MATLAB神經網路工具箱創建BP神經網路模型具體有哪些步驟請高手舉實例詳細解釋下 2.如何把輸
%人臉識別模型,臉部模型自己找吧。
function mytest()
clc;
images=[ ];
M_train=3;%表示人臉
N_train=5;%表示方向
sample=[];
pixel_value=[];
sample_number=0;
for j=1:N_train
for i=1:M_train
str=strcat('Images\',num2str(i),'_',num2str(j),'.bmp'); %讀取圖像,連接字元串形成圖像的文件名。
img= imread(str);
[rows cols]= size(img);%獲得圖像的行和列值。
img_edge=edge(img,'Sobel');
%由於在分割圖片中我們可以看到這個人臉的眼睛部分也就是位於分割後的第二行中,位置變化比較大,而且眼睛邊緣檢測效果很好
sub_rows=floor(rows/6);%最接近的最小整數,分成6行
sub_cols=floor(cols/8);%最接近的最小整數,分成8列
sample_num=M_train*N_train;%前5個是第一幅人臉的5個角度
sample_number=sample_number+1;
for subblock_i=1:8 %因為這還在i,j的循環中,所以不可以用i
block_num=subblock_i;
pixel_value(sample_number,block_num)=0;
for ii=sub_rows:(2*sub_rows)
for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols
pixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);
end
end
end
end
end
%將特徵值轉換為小於1的值
max_pixel_value=max(pixel_value);
max_pixel_value_1=max(max_pixel_value);
for i=1:3
mid_value=10^i;
if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)<10))
multiple_num=1/mid_value;
pixel_value=pixel_value*multiple_num;
break;
end
end
% T 為目標矢量
t=zeros(3,sample_number);
%因為有五類,所以至少用3個數表示,5介於2的2次方和2的3次方之間
for i=1:sample_number
% if((mod(i,5)==1)||(mod(i,5)==4)||(mod(i,5)==0))
if(i<=3)||((i>9)&&(i<=12))||((i>12)&&(i<=15))
t(1,i)=1;
end
%if((mod(i,5)==2)||(mod(i,5)==4))
if((i>3)&&(i<=6))||((i>9)&&(i<=12))
t(2,i)=1;
end
%if((mod(i,5)==3)||(mod(i,5)==0))
if((i>6)&&(i<=9))||((i>12)&&(i<=15))
t(3,i)=1;
end
end
% NEWFF——生成一個新的前向神經網路
% TRAIN——對 BP 神經網路進行訓練
% SIM——對 BP 神經網路進行模擬
% 定義訓練樣本
% P 為輸入矢量
P=pixel_value'
% T 為目標矢量
T=t
size(P)
size(T)
% size(P)
% size(T)
% 創建一個新的前向神經網路
net_1=newff(minmax(P),[10,3],{'tansig','purelin'},'traingdm')
% 當前輸入層權值和閾值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
% 當前網路層權值和閾值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}
% 設置訓練參數
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;
% 調用 TRAINGDM 演算法訓練 BP 網路
[net_1,tr]=train(net_1,P,T);
% 對 BP 網路進行模擬
A = sim(net_1,P);
% 計算模擬誤差
E = T - A;
MSE=mse(E)
x=[0.14 0 1 1 0 1 1 1.2]';
sim(net_1,x)
⑥ SPSS統計分析案例:多層感知器神經網路
SPSS統計分析案例:多層感知器神經網路
神經網路模型起源於對人類大腦思維模式的研究,它是一個非線性的數據建模工具, 由輸入層和輸出層、 一個或者多個隱藏層構成神經元,神經元之間的連接賦予相關的權重, 訓練學習演算法在迭代過程中不斷調整這些權重,從而使得預測誤差最小化並給出預測精度。
在SPSS神經網路中,包括多層感知器(MLP)和徑向基函數(RBF)兩種方法。
本期主要學習多層感知器神經網路,要把它講清楚是比較困難的,為了能直觀感受它的功能,首先以一個案例開始,最後再總結知識。
案例數據
該數據文件涉及某銀行在降低貸款拖欠率方面的舉措。該文件包含 700 位過去曾獲得貸款的客戶財務和人口統計信息。請使用這 700 名客戶的隨機樣本創建多層感知器神經網路模型。銀行需要此模型對新的客戶數據按高或低信用風險對他們進行分類。
第一次分析:菜單參數
要運行「多層感知器」分析,請從菜單中選擇:
分析 > 神經網路 > 多層感知器
如上圖所示,MLP主面板共有8個選項卡,至少需要設置其中"變數"、"分區"、"輸出"、"保存"、"導出"等5個選項卡,其他接受軟體默認設置。
▌ "變數"選項卡
將"是否拖欠"移入因變數框;
將分類變數"學歷"移入因子框,其他數值變數移入"協變數"框;
因各協變數量綱不同,選擇"標准化"處理;
▌ "分區"選項卡
在此之前,首先在 "轉換 > 隨機數生成器"菜單中設置隨機數固定種子為9191972(此處同SPSS官方文檔,用戶可以自由設定),因為"分區"選項卡中,要求對原始數據文件進行隨機化抽樣,將數據劃分為"訓練樣本"、"支持樣本"、"檢驗樣本"3個區塊,為了隨機過程可重復,所以此處指定固定種子一枚;
初次建模,先抽樣70%作為訓練樣本,用於完成自學習構建神經網路模型,30%作為支持樣本,用於評估所建立模型的性能,暫不分配檢驗樣本;
▌ "輸出"選項卡
勾選"描述"、"圖";
勾選"模型摘要"、"分類結果"、"預測實測圖";
勾選"個案處理摘要";
構成"自變數重要性分析";
這是第一次嘗試性的分析,主要參數設置如上,其他選項卡接受軟體默認設置,最後返回主面板,點擊"確定"按鈕,軟體開始執行MLP過程。
第一次分析產生的結果:
主要看重點的結果,依次如下:
個案處理摘要表,700個貸款客戶的記錄,其中480個客戶被分配到訓練樣本,佔比68.6%,另外220個客戶分配為支持樣本。
模型摘要表,首次構建的MLP神經網路模型其不正確預測百分比為12.7%,獨立的支持樣本檢驗模型的不正確百分比為20.9%,提示"超出最大時程數",模型非正常規則中止,顯示有過度學習的嫌疑。
判斷:首次建立的模型需要預防過度訓練。
第二次分析:菜單參數
首次分析懷疑訓練過度,所以第二次分析主要是新增檢驗樣本以及輸出最終的模型結果。
運行「多層感知器」分析,請從菜單中選擇:
分析 > 神經網路 > 多層感知器
▌ "分區"選項卡
對樣本進行重新分配,總700樣本,支持樣本繼續30%,訓練樣本由原來的70%縮減至50%,另外的20%分配給獨立的檢驗樣本空間;
▌ "保存"選項卡
保存每個因變數的預測值或類別;
保存每個因變數的預測擬概率;
▌ "導出"選項卡
將突觸權重估算值導出到XML文件;
給XML模型文件起名並制定存放路徑;
其他選項卡的操作和第一次分析保持一致。返回主面板,點擊"確定"開始執行第二次分析。
第一次分析產生的結果:
總樣本在3個分區的分配比例。
MLP神經網路圖,模型包括1個輸入層、1個隱藏層和1個輸出層,輸入層神經元個數12個,隱藏層9個,輸出層2個。
模型摘要表,模型誤差在1個連續步驟中未出現優化減少現象,模型按預定中止。模型在3個分區中的不正確預測百分比較接近。
模型分類表,軟體默認採用0.5作為正確和錯誤的概率分界,將3大分區樣本的正確率進行交叉對比,顯示出預測為NO,即預測為不拖欠的概率高於拖欠,模型對有拖欠的貸款客戶風險識別能力較低。
預測-實測圖,按照貸款客戶是否拖欠與預測結果進行分組,縱坐標為預測概率。以0.5為分界時,對優質客戶的識別效果較好,但是有較大的概率在識別有拖欠客戶上出錯。
顯然以0.5作為分界並不是最優解,可以嘗試將分界下移至0.3左右,此操作會使第四個箱圖中大量欠貸客戶正確地重新分類為欠貸者,提高風險識別能力。
自變數重要性圖,重要性圖為重要性表格中值的條形圖,以重要性值降序排序。其顯示與客戶穩定性(employ、address)和負債(creddebt、debtinc)相關的變數對於網路如何對客戶進行分類有重大影響;
最後來看導出的XML模型文件:
以XML文件存儲了第二次構建的MLP神經網路模型,可以用於新客戶的分類和風險識別。
新客戶分類
假設現在有150名新客戶,現在需要採用此前建立的模型,對這些客戶進行快速的風險分類和識別。
打開新客戶數據,菜單中選擇:
實用程序 > 評分向導
型"XML文件,點擊"下一步":
檢查新數據文件變數的定義是否准確。下一步。
選擇輸出"預測類別的概率"、"預測值"。完成。
新客戶數據文件新增3列,分別給出每一個新客戶的預測概率和風險分類(是否欠貸)。
多層感知器神經網路 總結
一種前饋式有監督的學習技術;
多層感知器可以發現極為復雜的關系;
如果因變數是分類型,神經網路會根據輸入數據,將記錄劃分為最適合的類別;
如果因變數是連續型,神將網路預測的連續值是輸入數據的某個連續函數;
建議創建訓練-檢驗-支持三個分區,網路訓練學習將更有效;
可將模型導出成 XML 格式對新的數據進行打分;
⑦ 神經網路有3層,輸出層2個神經元,樣本訓練後,如何擬合某一個輸入和輸出之間的圖形具體命令是如何
用你訓練出來的模型(就是那些連接權值參數),再代入輸入數據和輸出數據,然後模型會產生一個輸出y0,在matlab里畫出這個y和你已知的輸出值,一看圖就知道擬合的怎麼樣了;比如產生10個輸出值y0(1)->y0(10),就會有十個真實值(已知)y(1)-.y(10);n=1:10;plot(n,y(n),'r-',n,y(n),'b');
⑧ 當訓練一個神經網路進行貓狗圖片分類時 輸入模型的應該是哪兩個部分
神經網路的結構和神經網路的權值參數兩部分。使用卷積神經網路完成對貓和狗圖片的分類,我們准備好貓和狗的訓練集圖片後分別輸入神經網路的結構和神經網路的權值參數兩部分中。