Atree release 2.7 ~~~~~~~~~~~~~~~~~ Changes in 2.7: - Got rid of LFBATCH.EXE, allow LFEDIT.EXE to process and run large files, just not edit them. This is because a Windows 3.1 multiline edit control can only handle about 48K of text. Building my own editor to handle larger files is beyond the purpose of the atree package. (This limitation should disappear in Windows NT, since it uses flat 32bit memory model.) - Now use comman dialogs in LFEDIT.EXE. This should work under Windows 3.0 as well, since I've included commdlg.dll with the package. - Fixed some display bugs and exit problems in the OCR demo. - Used Borland C++ 3.1 for compilation with full speed optimizations in the Windows IDE. Nice product, BC++ 3.1! If we release another version of this demo software, it'll be for Windows 3.1 only, and probably 386 or better only. Which means we can gain additional optimizations and speed increases. - Fixed some documentation errors in atree.hlp, and added a more indepth explanation of the training algorithm. - Finally had the time to really figure out Program Manager DDE, so now setup.exe installs the appropriate icons and nice icon titles. Changes in 2.6: - Moved all documentation into atree.hlp. Documentation updated and clarified. New introduction section. - Fixed small bug in atree_train relating to getting rid of Status box when Cancel was pressed. - Redid the OCR demo. Now you can draw your own characters. Added rotation and translation to make it an authentic OCR demo. It is very impressive! Although training time can be longer, since we are trainingh on 3 characters instead of 1. Changes in 2.51: - Added a setup program to add Program Manager groups. Changes in 2.5: - Big new addition: A character recognition demo that recognizes the letter S in extreme noise, and is able to differentiate between a noisy S and a noisy 5. Training is very fast, about 15-20 minutes, compared to days for a backprop net on similar hardware. - Removed memory mangement routines we wrote for 2.0, now use the Borland C++ 3.0 memory management routines, which are about a zillion times faster. So, no more waiting for encoding building; should take at most a minute on VERY large problems. - Reworked a lot of the I/O routines that are now more compatible with the UNIX version, again due to improved Windows support in BC++ 3.0. - Fixed bug in reading in boolean encodings; it used to set high and low to 1.0 and 0.0 automatically, but now preserves high and low as specified in the training set. After all -1 and 1, or 100 and 0 are just as valid representations of the two boolean states as 1 or 0. - Fixed bug in boolean bit vector memory allocation. - The atree Status Window is MUCH improved, and no longer is ill behaved. Now has a cancel button! Now you don't have to exit out of the program to stop training! - LF rewritten to only keep one tree in memory at a time during training, and only _voter_ number of trees in memory during evaluation. Evaluation is done using fast trees. - The parser code for LF has been changed dramatically to allow it to be well behaved under Windows. It was not re-entrant before, and caused all kinds of problems if you tried to run a buggy program twice from the same session of LFEDIT. - LFEDIT will now highlight parse errors in the edit window. - Renamed LF.EXE to LFBATCH.EXE to differentiate it better from LFEDIT.EXE. - Added Lf Status Dialog to track progress of train set building and test set evaluation. Has cancel button enabled during test evaluation. - LF improved semantically. Added 4 example files that show how to use every lf language feature, with documentation. - Removed sphere.lf. Just too darn big. - Added abs_sine.lf. Learning the absolute value of sine is something backprop has trouble with. - Runs well under Windows 3.1, and I haven't had a UAE or GPF in days. Testing has been a lot more extensive for this product. Changes in 2.0: - Added several new functions to the atree library, including tree and coding I/O, see atree.h. - The atree structures have been totally revamped, and now can fit into 12 bytes (for nodes) and 4 bytes (for leaves). - atree_train() has been changed to present the whole training set during one epoch, although in a shuffled form. Before, we just randomly picked vectors out of the training set, leaving the possiblity of a large number of vectors not being presented during an epoch. Also, we check our estimate of success after adaptation against the whole training set (with no adaptation) to give the ACTUAL number correct. This step only occurs when training has reached the maximum allowed number of epochs, or when the estimator indicates the tree has gotten the necessary amount of vectors correct. If the actual is lower than the estimate, we keep training for another epoch, up until the maximum number of epochs has been reached. - Memory allocation for trees now the same as for bit vectors (and every other dynamically allocated object!): the WinMem_Malloc routine is used! Thanks to Rolf Manderschied for coming up with a better build_tree! Trees are now allocated from free lists, and are returned to the free lists when destroyed. - Changed the multiplexor function in mult.exe: can now specify the number of control bits at compile time. - Because of the C library I/O routines, the atree library is no longer in a .DLL. Instead, atree.c must be compiled into applications. Sorry! But I didn't feel like rewriting the whole standard C I/O library to index data by the data segment only, instead of the stack segment (in .DLL's, ds != ss). - As a result of the above, applications need no longer include every atree library function in the IMPORTS section of their .def files. However, you DO need to include VERBOSITYWNDPROC in the EXPORTS section, along with whatever other Window Procedures your application is exporting. - Improvements to the atree Status window (verbosity output). It doesn't hang around after training is finished. It flickers quite noticeably, though, when calls to atree_train() occur rapidly! If anyone has a better idea... let me know! - Documentation updated. - I still don't know how atree.c compiles with Microsoft C... can anyone doing this please contact me? Changes in 1.2: - Redid atree_train verbosity output, no longer have to click after every epoch - scrolling window flaky when training two trees simultaneously (because of storage of strings in global variables - a quick fix, to be sure, but much better than the old MessageBoxes!) - Mult.exe is not a two-bit multiplexor, it's a three-bit multiplexor! Boy, do I feel embarrased! 2^11 elements in domain, instead of 2^6, which means that it is a lot harder problem than I thought, and would explain the longer training times than one would expect from a two-bit multiplexor. - minor macro name changes to keep Dr. Armstrong happy. Changes in 1.1: - Bug in atree_free() fixed, will free all subtrees now. - Modified ????_flag assignments in build_tree() that caused flaky learning if memory wasn't initialized to zero first. - Mult.exe now has verbosity level 1, so it doesn't look like it's just sitting there doing nothing. -- END --