人工智能——神经网络算法初体验

这个程序其实就是让人工智能学习并认识怎么判断一个0~9的数是奇数还是偶数,最简单的人工智能程序

// 感知器判断数字奇偶性 
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int M[10];//权值 
int X[10]={1,2,3,4,5,6,7,8,9,10};//输入向量 
int Y[10]={1,0,1,0,1,0,1,0,1,0};//理想输出向量,0,奇数,1,偶数 
int O[10];//保存输出向量 
int ST=52;//阈值 

void initM(){//初始化权值	
	srand((unsigned int)time(0));
	for(int x=0;x<10;++x)
		M[x]=rand()%100;
} 

int active(int m,int x){// 跃迁型激活函数  
	int o=m*x;
	if(o>ST)return 1;
	else return 0;
}

void calcY(){//计算输出向量 
	for(int x=0;x<10;++x)
		O[x]=active(M[x],X[x]);
}

//根据实际输出向量和理想输出向量调整权向量,
//返回实际输出和理想输出不匹配的数目
int adjustM(){
	int err=0;
	for(int x=0;x<10;++x)
		if(O[x]!=Y[x]){
			err++;
			if(0==O[x])
				M[x]+=X[x];
			else
				M[x]-=X[x];
		} 
	return err;
}

void printM(){//打印权向量 
	for(int x=0;x<10;++x)
		printf("M[%i]=%i\n",x,M[x]);
}

void test(int input){
	printf("[%i][%i]",M[input],X[input]);
	if(active(M[input],X[input]))
		printf("%d 是偶数\n",input);
	else
		printf("%d 是奇数\n",input);
}

int main(){
	int n=0;
	initM();
	while(1){// 一直训练直到能够100%正确为止  
		n++;
		calcY();
		int err=adjustM();
		if(0>=err)break;//能够 100 %正确地回答问题了,结束训练
		printf("错误数%d\n",err);
	}
	printM();
	printf("阈值%d 训练次数%d\n",ST,n);
	
	while(1){
		int a=0;
		scanf("%i",&a);
		if(0>a || 9<a)break;
		test(a);
	}
	return 0;
}
    原文作者:神经网络算法
    原文地址: https://blog.csdn.net/cnyali/article/details/50864942
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞