1樓:匿名使用者
你幹什麼用啊
是模式分類?
要是得話我有原始碼不過是用 matlab 工具箱寫的要嗎
2樓:快來下啊
希望對您有用
clcclear
close all
% 產生訓練樣本與測試樣本,每一列為一個樣本
p1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
t1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
p2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
t2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
% 歸一化
[pn1,minp,maxp] = premnmx(p1);
pn2 = tramnmx(p2,minp,maxp);
% 訓練
switch 2
case 1
% 神經元數是訓練樣本個數
spread = 1; % 此值越大,覆蓋的函式值就大(預設為1)
net = newrbe(pn1,t1,spread);
case 2
% 神經元數逐步增加,最多就是訓練樣本個數
goal = 1e-4; % 訓練誤差的平方和(預設為0)
spread = 1; % 此值越大,需要的神經元就越少(預設為1)
mn = size(pn1,2); % 最大神經元數(預設為訓練樣本個數)
df = 1; % 顯示間隔(預設為25)
net = newrb(pn1,t1,goal,spread,mn,df);
case 3
spread = 1; % 此值越大,需要的神經元就越少(預設為1)
net = newgrnn(pn1,t1,spread);
end% 測試
y1 = sim(net,pn1); % 訓練樣本實際輸出
y2 = sim(net,pn2); % 測試樣本實際輸出
y1 = full(compet(y1)); % 競爭輸出
y2 = full(compet(y2));
% 結果統計
result = ~sum(abs(t1-y1)) % 正確分類顯示為1
percent1 = sum(result)/length(result) % 訓練樣本正確分類率
result = ~sum(abs(t2-y2)) % 正確分類顯示為1
percent2 = sum(result)/length(result) % 測試樣本正確分類率
matlab中用rbf神經網路做**的**怎麼寫
3樓:會飛的小兔子
clc;
clearall;
closeall;
%%----buildatrainingsetofasimilarversionofxor
c_1=[00];
c_2=[11];
c_3=[01];
c_4=[10];
n_l1=20;%numberoflabel1
n_l2=20;%numberoflabel2
a=zeros(n_l1*2,3);
a(:,3)=1;
b=zeros(n_l2*2,3);
b(:,3)=0;
%createrandompoints
fori=1:n_l1
a(i,1:2)=c_1+rand(1,2)/2;
a(i+n_l1,1:2)=c_2+rand(1,2)/2;
endfori=1:n_l2
b(i,1:2)=c_3+rand(1,2)/2;
b(i+n_l2,1:2)=c_4+rand(1,2)/2;
end%showpoints
scatter(a(:,1),a(:,2),,'r');
holdon
scatter(b(:,1),b(:,2),,'g');
x=[a;b];
data=x(:,1:2);
label=x(:,3);
%%usingkmeanstofindcintervector
n_center_vec=10;
rng(1);
[idx,c]=kmeans(data,n_center_vec);
holdon
scatter(c(:,1),c(:,2),'b','linewidth',2);
%%calulatesigma
n_data=size(x,1);
%calculatek
k=zeros(n_center_vec,1);
fori=1:n_center_vec
k(i)=numel(find(idx==i));
%thencalucatesigma
sigma=zeros(n_center_vec,1);
fori=1:n_center_vec
[n,d]=knnsearch(data,c(i,:),'k',k(i));
l2=(bsxfun(@minus,data(n,:),c(i,:)).^2);
l2=sum(l2(:));
sigma(i)=sqrt(1/k(i)*l2);
end%%calutateweights
%kernelmatrix
k_mat=zeros(n_data,n_center_vec);
fori=1:n_center_vec
r=bsxfun(@minus,data,c(i,:)).^2;
r=sum(r,2);
k_mat(:,i)=exp((-r.^2)/(2*sigma(i)^2));
endw=pinv(k_mat'*k_mat)*k_mat'*label;
y=k_mat*w;
%y(y>=0.5)=1;
%y(y<0.5)=0;
%%trainingfunctionandpredictfunction
[w1,sigma1,c1]=rbf_training(data,label,10);
y1=rbf_predict(data,w,sigma,c1);
[w2,sigma2,c2]=lazyrbf_training(data,label,2);
y2=rbf_predict(data,w2,sigma2,c2);
擴充套件資料
matlab的特點
1、具有完備的圖形處理功能,實現計算結果和程式設計的視覺化;
2、友好的使用者介面及接近數學表示式的自然化語言,使學者易於學習和掌握;
3、功能豐富的應用工具箱(如訊號處理工具箱、通訊工具箱等) ,為使用者提供了大量方便實用的處理工具。
4樓:萬同堂
%rbf**模型
t_data=[0.1 0.68668 0.67143 0.79999 0.79091 0.40004;
0.36667 0.58001 0.1 0.7 0.71818 0.20001;
0.26 0.47334 0.1 0.29997 0.2091 0.80009;
0.36667 0.9 0.9 0.29997 0.13637 0.37504;
0.26 0.84668 0.67143 0.1 0.42727 0.37504;
0.36667 0.58001 0.44286 0.49999 0.1 0.55006;
0.15333 0.47334 0.44286 0.7 0.42727 0.60006;
0.1 0.84668 0.67143 0.29997 0.5 0.1;
0.15333 0.42 0.21429 0.49999 0.5 0.55006;
0.20667 0.79335 0.21429 0.59999 0.5 0.32503;
0.1 0.42 0.21429 0.9 0.5 0.45005;
0.1 0.84668 0.32857 0.59999 0.5 0.27502;
0.20667 0.47334 0.32857 0.29997 0.13637 0.50005;
0.1 0.68668 0.67143 0.49999 0.24546 0.20001;
0.42 0.58001 0.21429 0.9 0.9 0.42504;
0.31334 0.58001 0.44286 0.49999 0.31818 0.25002;
0.15333 0.42 0.1 0.19999 0.35454 0.55006;
0.20667 0.47334 0.32857 0.29997 0.31818 0.27502;
0.15333 0.68668 0.44286 0.29997 0.31818 0.40004;
0.20667 0.20667 0.21429 0.39999 0.28183 0.52506;
0.26 0.79335 0.21429 0.49999 0.57273 0.9;
0.42 0.36667 0.1 0.59999 0.35454 0.30003;
0.47334 0.36667 0.1 0.59999 0.57273 0.35003;
0.1 0.47334 0.67143 0.7 0.42727 0.49894;
0.42 0.58001 0.67143 0.49999 0.24546 0.47505;
0.31334 0.1 0.32857 0.9 0.79091 0.8501;
0.1 0.52667 0.21429 0.9 0.5 0.50005;
0.52667 0.55867 0.21429 0.1 0.28183 0.42504;
0.9 0.58001 0.55715 0.1 0.17273 0.32503;
0.15333 0.68668 0.62572 0.29997 0.2091 0.57506];
%初始化資料
tt=t_data(:,6);x=t_data(:,1:5);tt=tt';
%隨機選取中心
c=x;
%定義delta平方為樣本各點的協方差之和
delta=cov(x');
delta=sum(delta);
%隱含層輸出r
for i=1:1:30
for j=1:1:30
r(i,j)=((x(i,:)-c(j,:)))*((x(i,:)-c(j,:))');
r(i,j)=exp(-r(i,j)./delta(j));
endend
p=r;
%建模%r=radbas(p);
err_goal=0.001;
sc=3;
net=newrb(p,tt,err_goal,sc,200,1);
%測試ty=sim(net,p);
te=tt-ty;
tsse=sse(te);
tmse=mse(te);
%**(測試)曲線
figure;
plot(tt,'-+');
hold on;
plot(ty,'r:*');
legend('化驗值','**值');
title('rbf網路模型輸出**曲線');
xlabel('輸入樣本點');
ylabel('澱粉利用率');
axis([1,30,0,1]);
怎樣用python構建卷積神經網路
用keras框架較為方便 首先安裝anaconda,然後通過pip安裝keras 以下 wphh的部落格。coding utf 8 gpu run command theano flags mode fast run,device gpu,floatx float32 python cnn.py c...
在神經網路中weight decay起到的做用是什麼?momentum
主要還是是regularize,壓制過擬合。momentum是什麼意思及用法 體弱,需要復關心和照顧制.帶著我們的 孩子,去關心照顧我們的老人,是對孩子最好的教育.常回家看看,哪怕是幫媽媽洗個碗.可憐天下父母心.母親只知道奉獻,不知索取,只知節儉,不知享受.母愛是擋雨的巨傘,母愛是參天的大樹,母愛是...
執行MATLABBP神經網路後,得到了誤差曲線mse
代表檢驗這個網路的訓練結果。mse表示均方差,當然越小越好。但是這與你訓練樣本的多少,訓練次數都有很大關係。這個其實沒有統一的標準,任何人都知道0偏差當然是最好。但是根絕神經網路本身致命的缺陷,由於它是迭代收斂逼近解析式,所以不可能達到0誤差。這隻有根據使用者的工程技術要求來加以判斷,這個誤差指標肯...