c語言bp
1. BP神經網路的預測(回歸)過程c語言程序
神經網路本質也是一種數據回歸模型。我們舉個簡單的例子
y=ax^2+bx+c,
有三個系數要回歸,如果只給你1~2組數據,你覺得能回歸好嗎?
考慮到樣本本身有誤差,為了防止過擬合(或過學習),一般要求神經網路的訓練樣本數是連接權系數(包括閾值)的2~3倍。你用了太多的連接權系數(包括閾值),即使效果不錯,風險仍然很高。
2. 最近在學習人工神經網路演算法,哪位能發一個含有c語言原程序的BP演算法實例哪其它語言的也可以
附件是BP神經網路的C語言實現。
BP(Back Propagation)神經網路是86年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。
3. 你好,請問你有用C語言寫的用BP神經網路去逼近一個函數的程序嗎
#include<stdio.h>
void xu(int n);
void main()
{
int n;
do
{
printf("Input n:\n");
scanf("%d",&n);
}while(n>99999);
xu(n);
}
void xu(int n)
{
int a,i=0,count=0;
int b[10];
while(n!=0)
{
a=n%10;
n=n/10;
count++;
b[i]=a;
i++;
printf("%d",a);
}
printf("\n");
printf("該數為%d位數\n",count);
for(i=count-1;i>=0;i--)
printf("%d\n",b[i]);
printf("下面是奇偶性判斷:\n");
if(b[count-1]/2==0)
printf("1\n");
else
printf("0\n");
}
我用的vc6.0可以處理漢字,如果你用的tc的話自己把漢字換成其他字母描述,否則就是亂碼!希望滿意,不曉得滿足你的最簡不
希望對你有幫助
4. c語言實現*/遺傳演算法改進BP神經網路原理和演算法實現怎麼弄
遺傳演算法有相當大的引用。遺傳演算法在游戲中應用的現狀在遺傳編碼時, 一般將瓦片的坐標作為基因進行實數編碼, 染色體的第一個基因為起點坐標, 最後一個基因為終點坐標, 中間的基因為路徑經過的每一個瓦片的坐標。在生成染色體時, 由起點出發, 隨機選擇當前結點的鄰居節點中的可通過節點, 將其坐標加入染色體, 依此循環, 直到找到目標點為止, 生成了一條染色體。重復上述操作, 直到達到指定的種群規模。遺傳演算法的優點:1、遺傳演算法是以決策變數的編碼作為運算對象,可以直接對集合、序列、矩陣、樹、圖等結構對象進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。另一方面也使得遺傳演算法具有廣泛的應用領域,如函數優化、生產調度、自動控制、圖像處理、機器學習、數據挖掘等領域。2、遺傳演算法直接以目標函數值作為搜索信息。它僅僅使用適應度函數值來度量個體的優良程度,不涉及目標函數值求導求微分的過程。因為在現實中很多目標函數是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。3、遺傳演算法具有群體搜索的特性。它的搜索過程是從一個具有多個個體的初始群體P(0)開始的,一方面可以有效地避免搜索一些不必搜索的點。另一方面由於傳統的單點搜索方法在對多峰分布的搜索空間進行搜索時很容易陷入局部某個單峰的極值點,而遺傳演算法的群體搜索特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全局搜索性。4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜索更為靈活,參數對其搜索效果的影響也盡可能的小。5、遺傳演算法具有可擴展性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。遺傳演算法的缺點:遺傳演算法在進行編碼時容易出現不規范不準確的問題。
5. 用c語言編寫一個程序,產生所有可能的長度為10bp的DNA序列
沒用C寫,用python寫的,道理都一樣。
defgenerate(n)://n為長度
foriinrange(4**n):
a=[0foriinrange(n)]//a為長度為n的一個序列
num=i
z=0
while(num!=0):
a[z]=num%4
z=z+1
num=int(num/4)
forjina:
ifj==0:
print('A',end="")
elifj==1:
print('T',end="")
elifj==2:
print('G',end="")
else:
print('C',end="")
print()
原理就是四進制轉換。
當調用函數generate(2),產生結果AA,TA,GA,CA,AT,TT,GT,CT,AG,TG,GG,CG,AC,TC,GC,CC
6. 如何用C語言編程實現多層前向BP神經網路,用來解
https://zhuanlan.hu.com/p/26089367
看看吧
7. C語言程序設計:圖形時鍾
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "graphics.h"
#include "math.h"
#include "time.h"
#include "dos.h"
#include "stdlib.h"
#include "conio.h"
#define R 200
#define PI 3.1415926
#define X(a,b,c) x=a*cos(b*c*PI/180-PI/2)+300
#define Y(a,b,c) y=a*sin(b*c*PI/180-PI/2)+240
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init(void);
void draw_bp(void);
void close(void);
void draw_kt(void);
int main(void)
{
int x,y,hc=0;
int bx,by,ax,ay;
int h,m,s;
struct time t[1];
init();
draw_bp();
draw_kt();
setwritemode(1);
gettime(t);
h=t[0].ti_hour;
m=t[0].ti_min;
s=t[0].ti_sec;
setcolor(7);
d(150,h,30);
setcolor(14);
d(170,h,6);
setcolor(4);
d(190,s,6);
while(!kbhit())
{
while(t[0].ti_sec==s)
gettime(t);
sound(400);
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(190,s,6);
s=t[0].ti_sec;
setfillstyle(SOLID_FILL,13);
floodfill(1,380,14);
setcolor(4);
d(190,s,6);
if(t[0].ti_min!=m)
{
setcolor(14);
d(170,m,6);
m=t[0].ti_min;
d(170,m,6);
}
if(t[0].ti_hour!=h)
{
setcolor(7);
d(150,h,30);
h=t[0].ti_hour;
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
setcolor(hc++);
if(hc==12) hc=0;
ellipse(300,300,160,340,23,23);
ellipse(220,170,0,360,23,65);
ellipse(380,170,0,360,23,65);
ellipse(300,180,0,180,23,23);
ellipse(380,180,0,180,23,23);
arc(150,80,20,250,59);
}
close();
return 0;
}
void init(void)
{
int driver,mode;
driver=DETECT;
initgraph(&driver,&mode,"c:\\tc");
cleardevice();
}
void draw_bp(void)
{
int x=300,y=240,i,n,l,ax,ay,bx,by;
for(n=0;n<27;n++)
printf("\n");
for(n=0;n<29;n++)
printf(" ");
setbkcolor(0);
setcolor(14);
circle(x,y,R);
setcolor(12);
circle(x,y,190);
setfillstyle(SOLID_FILL,14);
floodfill(x,y,12);
setfillstyle(SOLID_FILL,13);
floodfill(1,1,14);
setcolor(2);
circle(x,y,2);
circle(x,y,5);
for(i=0;i<60;i++)
{
if(i%5==0)
l=15;
else
l=5;
ax=200*cos(i*6*PI/180)+300;
ay=200*sin(i*6*PI/180)+240;
bx=(200-l)*cos(i*6*PI/180)+300;
by=(200-l)*sin(i*6*PI/180)+240;
line(ax,ay,bx,by);
}
settextstyle(3,0,5);
outtextxy(260,380,"MADEIN CHINA");
}
void draw_kt(void)
{
int x=300,y=240;
ellipse(x-80,y-70,0,360,23,65);
ellipse(x+80,y-70,0,360,23,65);
ellipse(x-80,y-60,0,180,23,23);
setfillstyle(SOLID_FILL,0);
floodfill(x-80,y-60,2);
ellipse(x+80,y-60,0,180,23,23);
setfillstyle(SOLID_FILL,0);
floodfill(x+80,y-70,2);
setcolor(5);
circle(150,80,60);
setfillstyle(SOLID_FILL,14);
floodfill(150,80,5);
circle(450,80,60);
setfillstyle(SOLID_FILL,14);
floodfill(450,80,5);
setcolor(14);
arc(150,80,0,360,60);
arc(450,80,0,360,60);
setcolor(0);
ellipse(x,y+60,160,340,23,23);
circle(x+120,y+10,23);
setfillstyle(SOLID_FILL,12);
floodfill(x+120,y+10,0);
setcolor(14);
circle(x+120,y+10,23);
setcolor(0);
circle(x-120,y+10,23);
setfillstyle(SOLID_FILL,12);
floodfill(x-120,y+10,0);
setcolor(14);
circle(x-120,y+10,23);
ellipse(x,y+60,0,180,23,23);
}
void close(void)
{
getch();
closegraph();
}
8. 用C語言解決BP神經網路演算法
囧,用C語言幹嘛,matlab裡面帶有神經網路函數庫的……
55555,我的論文也是用神經網路模擬……
我的隱藏層個數都沒確定……輸入節點數也沒有定……
matlab神經網路函數庫的程序,在ilovematlab論壇上有。
9. C語言返匯編函數處理為子程序為什麼只保存bp而不保存其他寄存器
瞎說,這得看你c語言用的是什麼調用方式
具體的你看下http://ke..com/view/2315027.htm吧
當然,如果你打的開的話我更建議你看這個http://zh.wikipedia.org/zh/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A
「cdecl(C declaration,即C聲明)是源起C語言的一種調用約定,x86架構上的許多C編譯器都使用這個約定。在cdecl中,子常式參數是在堆棧上傳遞的。EAX寄存器返回整型值和內存地址,浮點數則是在x87浮點寄存器ST0上。EAX, ECX和EDX寄存器是由調用者保存的,其餘的寄存器由被調用者保存」
10. C語言:鍵入b、p、k(長整型,b、p>=0、k>0),求b^p mod k的值。咋編
要用「同餘定理」每算一步取余,否則會溢出。
代碼文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int b,p,k,t;
printf("Enter b, p & k(int >=0)... ");
if(scanf("%d%d%d",&b,&p,&k)==3 && b>=0 && p>=0 && k>0){
printf("%d^%d mod %d = ",b,p,k);
for(t = p ? (b%=k) : 1;p>1;(t*=b)%=k,p--);
printf("%d ",t%k);
}
else
printf("Input error, exit... ");
return 0;
}