I find it hard to believe. There is a simple test - if the two implementations give the same vale for the same position, ply 0.
-Joseph On 21 December 2011 09:18, Øystein Schønning-Johansen <[email protected]>wrote: > On Tue, Dec 20, 2011 at 8:41 PM, Philippe Michel > <[email protected]>wrote: > >> In lib/sigmoid.h, there is some code to calculate quickly exp(x) >> including the statement : >> i = (int)x1; >> >> In lib/neuralnetsse.c, the corresponding SSE code is : >> i.i = _mm_cvtps_epi32( x1 ); >> >> Shouldn't that be _mm_cvttps_epi32( x1 ) ? The cast-to-int truncates, it >> doesn't round, does it ? >> > > Hmmm... interesting. I missed that! It seems like you are perfectly right. > > >> Amazingly (to me, at least), it apparently makes very little difference >> in the final net outputs but the current code seems erroneous. >> > > I really tested and tested and tested the code before I committed it to > the repository. I ran thousands of test for output value, and did not find > any significant difference. I checked borderline cases, and and of array > cases. I compared benchmarks and found that my sigmoid implementation > marked exactly the same as the original implementation. I felt pretty safe > my implementation gave the same values. Are there some values that's really > off or was my tests too sloppy? > > It would be rather funny to see if it's possible to find a position where > gnubg makes different moves with the two sigmoid implementations. > > -Øystein > > > _______________________________________________ > Bug-gnubg mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/bug-gnubg > >
_______________________________________________ Bug-gnubg mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-gnubg
