A. bp神經網路根據身高,體重識別男女這里,我有點不懂,為啥大於0.5是男,小於0.5是女
這是人為定義的吧,在數據集里定義1是男,0是女
B. 如何通過人工神經網路實現圖像識別
人工神經網路(Artificial Neural Networks)(簡稱ANN)系統從20 世紀40 年代末誕生至今僅短短半個多世紀,但由於他具有信息的分布存儲、並行處理以及自學習能力等優點,已經在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。尤其是基於誤差反向傳播(Error Back Propagation)演算法的多層前饋網路(Multiple-Layer Feedforward Network)(簡稱BP 網路),可以以任意精度逼近任意的連續函數,所以廣泛應用於非線性建模、函數逼近、模式分類等方面。
目標識別是模式識別領域的一項傳統的課題,這是因為目標識別不是一個孤立的問題,而是模式識別領域中大多數課題都會遇到的基本問題,並且在不同的課題中,由於具體的條件不同,解決的方法也不盡相同,因而目標識別的研究仍具有理論和實踐意義。這里討論的是將要識別的目標物體用成像頭(紅外或可見光等)攝入後形成的圖像信號序列送入計算機,用神經網路識別圖像的問題。
一、BP 神經網路
BP 網路是採用Widrow-Hoff 學習演算法和非線性可微轉移函數的多層網路。一個典型的BP 網路採用的是梯度下降演算法,也就是Widrow-Hoff 演算法所規定的。backpropagation 就是指的為非線性多層網路計算梯度的方法。一個典型的BP 網路結構如圖所示。
六、總結
從上述的試驗中已經可以看出,採用神經網路識別是切實可行的,給出的例子只是簡單的數字識別實驗,要想在網路模式下識別復雜的目標圖像則需要降低網路規模,增加識別能力,原理是一樣的。
C. cnn 人臉識別 如何判斷是誰
CNN卷積神經網路是一種深度模型。它其實老早就已經可以成功訓練並且應用了(最近可能deep learning太火了,CNNs也往這裡面靠。雖然CNNs也屬於多層神經網路架構,但把它置身於DL家族,還是有不少人保留自己的理解的)。 它在原始的輸入中應用可訓練的濾波器trainable filters和局部鄰域池化操作local neighborhood pooling operations,得到一個分級的且逐漸復雜的特徵表示。有實踐表示,如果採用合適的規則化項來訓練,它可以達到非常好的效果。CNN還讓人青睞的一點就是它會對例如姿勢、光照和復雜背景存在不變性。
D. BP神經網路如何把訓練後的權值輸入至MATLAB 建立網路 完成預測
這個就只能自己編M文件實現了,給個例子你看看
% script: main_batch.m
% 批量方式訓練BP網路,實現性別識別
%% 清理
clear all
clc
%% 讀入數據
% xlsfile='student.xls';
[data,label]=getdata();
%% 劃分數據
[traind,trainl,testd,testl]=divide(data,label);
%% 設置參數
rng('default')
rng(0)
nTrainNum = 60; % 60個訓練樣本
nSampDim = 2; % 樣本是2維的
%% 構造網路
net.nIn = 2; % 輸入層2個神經元,分別輸入身高、體重
net.nHidden = 3; % 3個隱含層節點
net.nOut = 1; % 1個輸出層節點
w = 2*(rand(net.nHidden,net.nIn)-1/2); % nHidden * 3 一行代表一個隱含層節點
b = 2*(rand(net.nHidden,1)-1/2);
net.w1 = [w,b];
W = 2*(rand(net.nOut,net.nHidden)-1/2);
B = 2*(rand(net.nOut,1)-1/2);
net.w2 = [W,B];
%% 訓練數據歸一化
mm=mean(traind);
% 均值平移
for i=1:2
traind_s(:,i)=traind(:,i)-mm(i);
end
% 方差標准化
ml(1) = std(traind_s(:,1));
ml(2) = std(traind_s(:,2));
for i=1:2
traind_s(:,i)=traind_s(:,i)/ml(i);
end
%% 訓練
SampInEx = [traind_s';ones(1,nTrainNum)];
expectedOut=trainl;
eb = 0.01; % 誤差容限
eta = 0.6; % 學習率
mc = 0.8; % 動量因子
maxiter = 2000; % 最大迭代次數
iteration = 0; % 第一代
errRec = zeros(1,maxiter);
outRec = zeros(nTrainNum, maxiter);
NET=[]; % 記錄
% 開始迭代
for i = 1 : maxiter
hid_input = net.w1 * SampInEx; % 隱含層的輸入
hid_out = logsig(hid_input); % 隱含層的輸出
ou_input1 = [hid_out;ones(1,nTrainNum)]; % 輸出層的輸入
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2); % 輸出層的輸出
outRec(:,i) = out_out'; % 記錄每次迭代的輸出
err = expectedOut - out_out; % 誤差
sse = sumsqr(err);
errRec(i) = sse; % 保存誤差值
fprintf('第 %d 次迭代 誤差: %f\n', i, sse);
iteration = iteration + 1;
% 判斷是否收斂
if sse<=eb
break;
end
% 誤差反向傳播
% 隱含層與輸出層之間的局部梯度
DELTA = err.*dlogsig(ou_input2,out_out);
% 輸入層與隱含層之間的局部梯度
delta = net.w2(:,1:end-1)' * DELTA.*dlogsig(hid_input,hid_out);
% 權值修改量
dWEX = DELTA*ou_input1';
dwex = delta*SampInEx';
% 修改權值,如果不是第一次修改,則使用動量因子
if i == 1
net.w2 = net.w2 + eta * dWEX;
net.w1 = net.w1 + eta * dwex;
else
net.w2 = net.w2 + (1 - mc)*eta*dWEX + mc * dWEXOld;
net.w1 = net.w1 + (1 - mc)*eta*dwex + mc * dwexOld;
end
% 記錄上一次的權值修改量
dWEXOld = dWEX;
dwexOld = dwex;
end
%% 測試
% 測試數據歸一化
for i=1:2
testd_s(:,i)=testd(:,i)-mm(i);
end
for i=1:2
testd_s(:,i)=testd_s(:,i)/ml(i);
end
% 計算測試輸出
InEx=[testd_s';ones(1,260-nTrainNum)];
hid_input = net.w1 * InEx;
hid_out = logsig(hid_input); % output of the hidden layer nodes
ou_input1 = [hid_out;ones(1,260-nTrainNum)];
ou_input2 = net.w2 * ou_input1;
out_out = logsig(ou_input2);
out_out1=out_out;
% 取整
out_out(out_out<0.5)=0;
out_out(out_out>=0.5)=1;
% 正確率
rate = sum(out_out == testl)/length(out_out);
%% 顯示
% 顯示訓練樣本
train_m = traind(trainl==1,:);
train_m=train_m';
train_f = traind(trainl==0,:);
train_f=train_f';
figure(1)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('體重')
title('訓練樣本分布')
legend('男生','女生')
figure(2)
axis on
hold on
grid
[nRow,nCol] = size(errRec);
plot(1:nCol,errRec,'LineWidth',1.5);
legend('誤差平方和');
xlabel('迭代次數','FontName','Times','FontSize',10);
ylabel('誤差')
fprintf(' ----------------錯誤分類表----------\n')
fprintf(' 編號 標簽 身高 體重\n')
ind= find(out_out ~= testl);
for i=1:length(ind)
fprintf(' %4d %4d %f %f \n', ind(i), testl(ind(i)), testd(ind(i),1), testd(ind(i),2));
end
fprintf('最終迭代次數\n %d\n', iteration);
fprintf('正確率:\n %f%%\n', rate*100);
E. 遺傳神經網路識別原理
4.3.1 遺傳BP簡介
遺傳識別是遺傳演算法+神經網路的一種新興的尋優技術,適合於復雜的、疊加的非線性系統的辨識描述。神經網路演算法是當前較為成熟的識別分類方法,但網路權值的訓練一直存在著缺陷。為此結合具體應用,在對遺傳演算法進行改進的基礎上,本文採用了一種基於遺傳學習權值的神經網路識別方法,並取得了較好的效果。
盡管常規遺傳演算法是穩健的,但針對一個具體問題遺傳演算法只有和其他方法(或稱原有演算法)有效地結合在一起,組成一個新的混合演算法,才能在實際中得到廣泛應用。混合演算法既要保持原有演算法的長處,又要保持遺傳演算法的優點,因此常規遺傳演算法中的適應值函數、編碼、遺傳運算元等必須做適當的修改以適應混合演算法的要求。
4.3.1.1 適應值信息
常規演算法中,適應值常被表示為全局極小,用歐氏距離來實現。例如,適應值常被表示為如下形式:
圖4-5 改進的 GABP計算流程圖
GABP的計算過程圖如圖4-5所示。
F. 神經網路怎麼辨識對象
神經網路模擬人腦的神經元,神經元之間相互連接,每個神經元接受數據,判斷時候產生信號傳遞給下一個神經元,層層傳送,最終達到識別的目的。神經網路不像其它的模型有理論依據,它很多的像是一種模糊的統計預測模型。正因為這種特性,它的適應能力很強,只要有充足的數據與足夠的神經元,便能實現識別,決策,預測等功能。
G. 神經網路如何識別和編碼性別
神經網路模擬人腦中的神經元,神經元相互連接。每個神經元接收數據,並將判斷過程中產生的信號傳輸到下一個神經元,該神經元逐層傳輸,最終達到識別的目的,與其他模型不同,神經網路很像模糊統計預測模型。由於這一特點,其適應性非常強。只要有充足的數據和充足的神經元,就可以實現識別,決策,預測等功能。
其實人工神經網路他是一種簡單的數學模型,它將類似於大腦神經突觸連接的結構應用於信息處理。因為在工程和學術界裡面,它也經常被直接稱為神經網路或准神經網路。神經網路是一種操作模型,它由大量的節點或神經元及其相互連接組成,每個節點代表一個稱為激勵函數的特定輸出函數。
H. 相機人臉識別中辨別性別是什麼原理
①參考模板法
首先設計一個或數個標准人臉的模板,然後計算測試採集的樣品與標准模板之間的匹配程度,並通過閾值來判斷是否存在人臉;
②人臉規則法
由於人臉具有一定的結構分布特徵,所謂人臉規則的方法即提取這些特徵生成相應的規則以判斷測試樣品是否包含人臉;
③樣品學習法
這種方法即採用模式識別中人工神經網路的方法,即通過對面像樣品集和非面像樣品集的學習產生分類器;
④膚色模型法
這種方法是依據面貌膚色在色彩空間中分布相對集中的規律來進行檢測。
⑤特徵子臉法
這種方法是將所有面像集合視為一個面像子空間,並基於檢測樣品與其在子孔間的投影之間的距離判斷是否存在面像。
值得提
I. Python中顯示出性別為女的數據
利用單層神經網路模型。
男女的身高和體重有著顯著的差別,此次Python程序的任務是根據一個人的身高和體重,簡單判斷他的性別。採用最簡單的單層神經網路,logisticregression模型,模型輸入一個人身高和體重,判斷性別男女。
Python解釋器易於擴展,可以使用C擴展新的功能和數據類型。Python也可用於可定製化軟體中的擴展程序語言。Python擁有動態類型系統和垃圾回收功能,能夠自動管理內存使用,並且其本身擁有一個巨大而廣泛的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。