int main()
{
RBM *a = new RBM;

//a->input(stdin);
// for xor
a->build(2,2);  
int x[2],y[2],s[2],sz[2];
x[0] = -1;
x[1] =  1;
y[0] =  1;
y[1] = -1;
s[0] =  1;
s[1] =  1;
sz[0] = -1;
sz[1] = -1;
for( int i=0; i< 100; i++)
	{
a->train((float)1.001,2,x);
a->train((float)1.001,2,y);
printf( "xor %f %f same %f %f\n",a->energy(2,x),a->energy(2,y),a->energy(2,s),a->energy(2,sz));

a->dump(stdout);
	}

s[1] = 0;
a->fillin(2,s);
printf("%d %d\n",s[0],s[1]);
}
int main()
{
RBM *a = new RBM;

//a->input(stdin);
// for xor
a->build(1,4);  
int x[4],y[4],s[4],sz[4];
for( int i=0; i< 4; i++)
{
	x[i] = 1;
	y[i] = -1;
	s[i] = 1;
	sz[i] = -1;
}
for( int i=0; i<4; i+=3)
{
	x[i] = -1;
	y[i] =  1;
}
for( int i=0; i< 100; i++)
	{
a->train((float)1.001,4,x);
a->train((float)1.001,4,y);
printf( "xor %f %f same %f %f\n",a->energy(4,x),a->energy(4,y),a->energy(4,s),a->energy(4,sz));

a->dump(stdout);
	}

}