⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kohonendraw.cpp

📁 几种神经网络的源程序
💻 CPP
字号:
/* * TODO: needs GL - note in configure .. */#include "KohonenDraw.h"#ifdef HAVE_OPENGL#include <GL/gl.h>#include <GL/glu.h>#include "annie/util/gl_aux.h"#include "Control.h"#endifnamespace annie	{const float INPUT_COLOR[] = { 0., 0., 1. };const float CLUSTERS_COLOR[] = { 0., 1., 0. };const float OUT_CLUSTERS_COLOR[] = { 1., 1., 0. };const float LINES_COLOR[] = { .5, .5, .5 };void KohonenDraw::draw()	{	glPolygonMode(GL_FRONT, GL_FILL);	glLoadIdentity();	gluOrtho2D(0, 1, 1, 0);	/*glBegin(GL_LINES);	glVertex2i(0,0);	glVertex2i(1,1);	glEnd();*/	drawClusters();}void KohonenDraw::warn()	{//	glPushAttrib(GL_COLOR_BUFFER_BIT);	glColor3fv(OUT_CLUSTERS_COLOR);}void KohonenDraw::unWarn()	{//	glPopAttrib();}/* * Plot a vertex point in the input space */void KohonenDraw::drawPosition(const Vector &v)	{	switch(v.size())	{		case 1:		glVertex2d(v[0], 0.); break;		case 2:		{			assert( !(v[0] > 1. || v[0] < 0. ||				v[1] > 1. || v[1] < 0.));/*	{				warn();				glVertex2d(.5, .5); 				unWarn();			} else */glVertex2d(v[0], v[1]); 		}			break;		case 3:		glVertex3d(v[0], v[1], v[2]); break;		default: //TODO...			glVertex2d(v[0], v[1]);	}}void KohonenDraw::drawPosition(const Neuron &n)	{	Vector w(n.getInputCount());	n.getWeights(w);	drawPosition(w);}// draw the current position of clustersvoid KohonenDraw::drawClusters()	{	if(defaultControl["drawLines"])	{	//only points		glPointSize(1.);		glColor3fv(LINES_COLOR);		glBegin(GL_LINES);		for(unsigned int i=0; i<net->getOutputCount(); i++)			//for(unsigned int j=1; j<net->getOutputCount()/2+1; j++)				for(unsigned int j=0; j<net->getOutputCount(); j++)					if(i != j && topology.isGridNeighbor(i, j))	{	//TODO: nbSize or keep e.g. 1. ?					drawPosition(net->getOutputLayer()[i]);					drawPosition(net->getOutputLayer()[j]);				}		glEnd();	}	glPointSize(2.5);	glColor3fv(CLUSTERS_COLOR);		glBegin(GL_POINTS);		for(unsigned int i=0; i<net->getOutputCount(); i++)			drawPosition(net->getOutputLayer()[i]);	glEnd();		glFinish();}void ExKohonenDraw::drawExamples()	{	glPointSize(2.);	glBegin(GL_POINTS);	//if(inputs){		glColor3fv(INPUT_COLOR);		Vector i(inputs.getInputSize()), o(inputs.getInputSize());		inputs.initialize();		while(!inputs.epochOver())	{			inputs.getNextPair(i, o);			drawPosition(i);		}	//}	glEnd();	glFinish();}void ExKohonenDraw::draw()	{	KohonenDraw::draw();	drawExamples();}} //annie

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -