Mạng thần kinh nhân tạo cho phân lớp màu sắc part 6
Số trang: 11
Loại file: pdf
Dung lượng: 194.98 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Dùng hệ thống xác định bằng các trọng số chứa trong " WTSS.DAT" áp dụng trên ảnh "AUTHOR.IMG" 3. Lập lại chương trình 12.3 PERNCONJG.C dùng thuật toán Davidon - Fletcher - Powell để thay thế . Lưu lại chương trình vào file PERNDFP.C. 4. Kiểm tra PERNDFP.C trên TINT2.DAT. 12.7 Quá trình nhận biết Thật không rõ ràng lắm là tại sao sự nhận biết lại chiếm một vị trí quan trọng trong mối quan tâm của con người.
Nội dung trích xuất từ tài liệu:
Mạng thần kinh nhân tạo cho phân lớp màu sắc part 6EPS=1.0;do { EPS/=2.0; tol1=1.0+EPS; } while(tol1>1.0);EPS=(float)sqrt((double)EPS);df=(float *)malloc(N*sizeof(float));dfp=(float *)malloc(N*sizeof(float));S=(float *)malloc(N*sizeof(float));xt=(float *)malloc(N*sizeof(float));dfun(x,df,N);for(i=0;i if( df[i]*S[i]>0.0){ test=-1.0; break; } }if(testfloat f( float alpha, float (*fun)(float *),float*x, float *xt, float *S, int N) { int i; float q; for(i=0;i=y0) { dx=-dx; x1=x0+dx; y1=f(x1,fun,x,xt,s,N); } dx=2.0*dx; x2=x1+dx; y2=f(x2,fun,x,xt,s,N); iter=0 ; while(y2 iter++; dx=2.0*dx; x0=x1; y0=y1; x1=x2; y1=y2; x2=x1+dx; y2=f(x2,fun,x,xt,s,N); } *a=x0; *b=x2; }/* Brents algorithm for obtaining the minimum of a single variable function. */#define CGOLD 0.381966float Brent(float ax, float bx , float (*fun)(float *) , float TOL, float *x,float *xt, float *S, int N){floata,b,u,v,w,xx,e,fx,fv,fu,fw,xm,tol1,tol2,c,r,q,p;int iter;a=ax;b=bx;v=a+CGOLD*(b-a);w=v;xx=v;e=0.0;fx=f(xx,fun,x,xt,S,N);fv=fx;fw=fx;c=0.0;iter=0;while(iterxm=0.5*(a+b);tol1=EPS*(float)fabs((double)xx)+TOL/3.0;tol2=2.0*tol1;if((float)fabs((double)(xx-xm))tol1) { r=(xx-w)*(fx-fv); q=(xx-v)*(fx-fw); p=(xx-v)*q-(xx-w)*r; q=2.0*(q-r); if(q>0.0) p=p;q=(float)fabs((float)q);r=e;e=c;/* is parabola acceptable.*/if(((float)fabs((double)p) q*(a-xx))||(p < q*(b-xx))){/* fit parabola.*/if(q==0.0) q=1.e-10;c=p/q;u=xx+c;/* f must not be evaluated too close to a or b. */if( (((u-a)=xm) e=a-xx; else e=b-xx; c=CGOLD*e; } 314 /* update a,b,v,w, and x. */l2: if(fabs((double)c)>=tol1) u=xx+c; else u=xx+((c>0.0)?tol1:-tol1); fu=f(u,fun,x,xt,S,N); if(fu=xx) a=xx; else b=xx; v=w; fv=fw; w=xx; fw=fx; xx=u ; fx=fu; continue; } else { if(uliÖu cã thÓ biÓu diÔn trªn s¬ ®å mµu nh h×nh 12.13. Ch¬ng tr×nh cã thÓ bÞng¾t t¹i bÊt kú lóc nµo b»ng c¸ch Ên phÝm ESC. KÕt qu¶ cña hÖ thèng sÏ®îc lu mét c¸ch tù ®éng trong mét file ®Æc biÖt cã tªn ban ®Çu do ngêidïng ®Æt. NÕu sau ®ã b¹n muèn tiÕp tôc víi ®µo t¹o, b¹n cÇn quay trë vÒch¬ng tr×nh chÝnh, nhng lÇn nµy tr¶ lêi y khi ch¬ng tr×nh hái b¹n: B¹ncã muèn dïng c¸c träng sè ®îc ®µo t¹o tríc kh«ng? Lý do ph¶i cã phÝmESC lµ ®µo t¹o ®ßi hái mét thêi gian dµi vµ b¹n muèn ng¾t ch¬ng tr×nh,dïng m¸y tÝnh vµo c¸c viÖc kh¸c. §Ó ¸p dông, chóng ta dïng mét métperceptron ba líp (còng cã thÓ dïng perceptron hai líp), víi líp che khuÊt®Çu tiªn cã t¸m nót, líp che khuÊt thø hai cã bèn nót, vµ líp ra chØ cã métnót. Líp vµo, tÊt nhiªn lµ chØ cã hai nót, mét cho x vµ mét cho y - c¸c biÕncña biÓu ®å mµu. TÝn hiÖu ra cña hÖ thèng sÏ lµ 1 nÕu d÷ liÖu biÓu diÔn chos¾c mµu skin, vµ 0 cho c¸c trêng hîp cßn l¹i. Ch¬ng tr×nh b¾t ®Çu b»ngmét sè tÝnh ngÉu nhiªn gi÷a 0 vµ 1, vµ ®ßi hái gÇn 17,000 phÐp lÆp vµ h¬n 5giê tÝnh to¸n trªn m¸y 486-25 MHz. Sai lÖch gi¶m xuèng tõ 32 xuèng0.0057. File chøa hÖ thèng nµy, ch¼ng h¹n nh, sè c¸c líp, sè c¸c ®iÓmtrong mçi líp, vµ träng sè cã s½n trªn ®Üa díi tªn WTSST.DAT. H×nh 12.13 TINT2.DAT dïng thö m¹ng thÇn kinh. B©y giê chóng ta cÇn ph¸t triÓn mét ch¬ng tr×nh ®Ó kiÓm tra c¸ch lµmviÖc thùc sù cña hÖ thèng. LiÖt kª cho tÊt c¶ c¸c thuËt to¸n nµy trong métch¬ng tr×nh ®îc cho ë díi ®©y. Ch¬ng tr×nh 12.4 TESNLYE.C . KiÓm tra. 316/* Program 12.4 TESNLYE.C. Testing a multilayernetwork.*//************************************* Developed by M.A.Sid-Ahmed. ** ver. 1.0, 1992. ** @ 1994 **************************************//* Program for testing a multi-layer perceptron. */void float fun(float *);#include #include #include #include int M,*NL,*NS,L;int *d;float *xp,*y,*net,*delta,theta;void main() { float *w,q,xt; int i,j,N,xd,ind,Nt; char file_name[14],file_name2[14],ch; FILE *fptr,*fptr2; clrscr();printf(\nEnter file_name for weights-->);scanf(%s,file_name);fptr=fopen(file_name,r);if(fptr==NULL) { printf(file %s does not exist. ,file_name); exit(1); }fscanf(fptr,%d ,&L);NL=(int *)malloc(L*sizeof(int));NS=(int *)malloc((L-2)*sizeof(int)); 317for(i=0;i if((fscanf(fptr2,%f ,&xt))==EOF) /* inputdata. */ { ind=0; break; } } if(ind==0) break;for(i=0;ivoid fun(float *w) {int i,j,k,m,n,Nt1,Nt2;float error, E;for(k=0;k
Nội dung trích xuất từ tài liệu:
Mạng thần kinh nhân tạo cho phân lớp màu sắc part 6EPS=1.0;do { EPS/=2.0; tol1=1.0+EPS; } while(tol1>1.0);EPS=(float)sqrt((double)EPS);df=(float *)malloc(N*sizeof(float));dfp=(float *)malloc(N*sizeof(float));S=(float *)malloc(N*sizeof(float));xt=(float *)malloc(N*sizeof(float));dfun(x,df,N);for(i=0;i if( df[i]*S[i]>0.0){ test=-1.0; break; } }if(testfloat f( float alpha, float (*fun)(float *),float*x, float *xt, float *S, int N) { int i; float q; for(i=0;i=y0) { dx=-dx; x1=x0+dx; y1=f(x1,fun,x,xt,s,N); } dx=2.0*dx; x2=x1+dx; y2=f(x2,fun,x,xt,s,N); iter=0 ; while(y2 iter++; dx=2.0*dx; x0=x1; y0=y1; x1=x2; y1=y2; x2=x1+dx; y2=f(x2,fun,x,xt,s,N); } *a=x0; *b=x2; }/* Brents algorithm for obtaining the minimum of a single variable function. */#define CGOLD 0.381966float Brent(float ax, float bx , float (*fun)(float *) , float TOL, float *x,float *xt, float *S, int N){floata,b,u,v,w,xx,e,fx,fv,fu,fw,xm,tol1,tol2,c,r,q,p;int iter;a=ax;b=bx;v=a+CGOLD*(b-a);w=v;xx=v;e=0.0;fx=f(xx,fun,x,xt,S,N);fv=fx;fw=fx;c=0.0;iter=0;while(iterxm=0.5*(a+b);tol1=EPS*(float)fabs((double)xx)+TOL/3.0;tol2=2.0*tol1;if((float)fabs((double)(xx-xm))tol1) { r=(xx-w)*(fx-fv); q=(xx-v)*(fx-fw); p=(xx-v)*q-(xx-w)*r; q=2.0*(q-r); if(q>0.0) p=p;q=(float)fabs((float)q);r=e;e=c;/* is parabola acceptable.*/if(((float)fabs((double)p) q*(a-xx))||(p < q*(b-xx))){/* fit parabola.*/if(q==0.0) q=1.e-10;c=p/q;u=xx+c;/* f must not be evaluated too close to a or b. */if( (((u-a)=xm) e=a-xx; else e=b-xx; c=CGOLD*e; } 314 /* update a,b,v,w, and x. */l2: if(fabs((double)c)>=tol1) u=xx+c; else u=xx+((c>0.0)?tol1:-tol1); fu=f(u,fun,x,xt,S,N); if(fu=xx) a=xx; else b=xx; v=w; fv=fw; w=xx; fw=fx; xx=u ; fx=fu; continue; } else { if(uliÖu cã thÓ biÓu diÔn trªn s¬ ®å mµu nh h×nh 12.13. Ch¬ng tr×nh cã thÓ bÞng¾t t¹i bÊt kú lóc nµo b»ng c¸ch Ên phÝm ESC. KÕt qu¶ cña hÖ thèng sÏ®îc lu mét c¸ch tù ®éng trong mét file ®Æc biÖt cã tªn ban ®Çu do ngêidïng ®Æt. NÕu sau ®ã b¹n muèn tiÕp tôc víi ®µo t¹o, b¹n cÇn quay trë vÒch¬ng tr×nh chÝnh, nhng lÇn nµy tr¶ lêi y khi ch¬ng tr×nh hái b¹n: B¹ncã muèn dïng c¸c träng sè ®îc ®µo t¹o tríc kh«ng? Lý do ph¶i cã phÝmESC lµ ®µo t¹o ®ßi hái mét thêi gian dµi vµ b¹n muèn ng¾t ch¬ng tr×nh,dïng m¸y tÝnh vµo c¸c viÖc kh¸c. §Ó ¸p dông, chóng ta dïng mét métperceptron ba líp (còng cã thÓ dïng perceptron hai líp), víi líp che khuÊt®Çu tiªn cã t¸m nót, líp che khuÊt thø hai cã bèn nót, vµ líp ra chØ cã métnót. Líp vµo, tÊt nhiªn lµ chØ cã hai nót, mét cho x vµ mét cho y - c¸c biÕncña biÓu ®å mµu. TÝn hiÖu ra cña hÖ thèng sÏ lµ 1 nÕu d÷ liÖu biÓu diÔn chos¾c mµu skin, vµ 0 cho c¸c trêng hîp cßn l¹i. Ch¬ng tr×nh b¾t ®Çu b»ngmét sè tÝnh ngÉu nhiªn gi÷a 0 vµ 1, vµ ®ßi hái gÇn 17,000 phÐp lÆp vµ h¬n 5giê tÝnh to¸n trªn m¸y 486-25 MHz. Sai lÖch gi¶m xuèng tõ 32 xuèng0.0057. File chøa hÖ thèng nµy, ch¼ng h¹n nh, sè c¸c líp, sè c¸c ®iÓmtrong mçi líp, vµ träng sè cã s½n trªn ®Üa díi tªn WTSST.DAT. H×nh 12.13 TINT2.DAT dïng thö m¹ng thÇn kinh. B©y giê chóng ta cÇn ph¸t triÓn mét ch¬ng tr×nh ®Ó kiÓm tra c¸ch lµmviÖc thùc sù cña hÖ thèng. LiÖt kª cho tÊt c¶ c¸c thuËt to¸n nµy trong métch¬ng tr×nh ®îc cho ë díi ®©y. Ch¬ng tr×nh 12.4 TESNLYE.C . KiÓm tra. 316/* Program 12.4 TESNLYE.C. Testing a multilayernetwork.*//************************************* Developed by M.A.Sid-Ahmed. ** ver. 1.0, 1992. ** @ 1994 **************************************//* Program for testing a multi-layer perceptron. */void float fun(float *);#include #include #include #include int M,*NL,*NS,L;int *d;float *xp,*y,*net,*delta,theta;void main() { float *w,q,xt; int i,j,N,xd,ind,Nt; char file_name[14],file_name2[14],ch; FILE *fptr,*fptr2; clrscr();printf(\nEnter file_name for weights-->);scanf(%s,file_name);fptr=fopen(file_name,r);if(fptr==NULL) { printf(file %s does not exist. ,file_name); exit(1); }fscanf(fptr,%d ,&L);NL=(int *)malloc(L*sizeof(int));NS=(int *)malloc((L-2)*sizeof(int)); 317for(i=0;i if((fscanf(fptr2,%f ,&xt))==EOF) /* inputdata. */ { ind=0; break; } } if(ind==0) break;for(i=0;ivoid fun(float *w) {int i,j,k,m,n,Nt1,Nt2;float error, E;for(k=0;k
Tìm kiếm theo từ khóa liên quan:
kỹ thuật xử lý ảnh công nghệ xử lý ảnh phương pháp xử lý ảnh hướng dẫn xử lý ảnh kinh nghiệm xử lý ảnhTài liệu có liên quan:
-
Giáo trình Khai thác phần mềm ứng dụng
247 trang 114 0 0 -
65 trang 93 4 0
-
51 trang 86 0 0
-
21 trang 64 0 0
-
Ứng dụng phương pháp xử lý ảnh bằng Matlab để phân tích ảnh chuyển động của một vật thể
8 trang 56 0 0 -
393 trang 55 0 0
-
8 trang 52 0 0
-
Đồ án tốt nghiệp: Thiết kế, thi công bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh
85 trang 50 0 0 -
Xây dựng hệ thống nhận dạng lỗi tự động của tấm pin năng lượng mặt trời
3 trang 47 0 0 -
Đồ án tốt nghiệp: Robot vận chuyển mẫu xét nghiệm trong bệnh viện
117 trang 46 0 0