Hopfield-style network simulator -------------------------------- Arun Jagota (jagota@cs.buffalo.edu) What is the simulator for ------------------------- The simulator is for a Hopfield-style net, a variant on the Hopfield net developed specifically for content-addressable memories. It is not intended for optimization problems. As is, the simulator does not support the standard Hopfield net, although you might modify the source code to do. Send e-mail to me for suggestions if so. We suggest that for content-addressable memories, the Hopfield-style network might be more practical than the Hopfield network depending on the problem you are modeling. How to get it ------------- Available in the compressed tar file hst.tar.Z To acquire it from here, once you have 'ftp'ed type > binary > get hst.tar.Z > quit and then, uncompress hst.tar mkdir hst cd hst tar xf ../hst.tar . How might this be used ---------------------- 1. As an instructional tool - To learn hands-on about the Hopfield-style net- provides simple and flexible user interface, rapid training of even moderate-sized examples and rapid, even interactive testing. Will work on machines from PCs to 32-bit Unix machines (like Sun 4s). 2. As a research/development tool - To explore it's content-addressable memory (CAM) properties, especially in the limits, like capacity/spurious memories, at a theoretical level or perhaps on specific applications. Some possible areas of use are character image restoration, dictionary matching, schema storage and retrieval. Some of these have been studied. Supplied documentation will include info on such previous study. To explore it's use as a kind of filter (has been studied and shown promise). Because of it's real-time performance, we think applications on which it shows promise can even be prototyped on sequential machines, we view it as more than a simulator, it may hold it's own against conventional sequential programs. Simulator details ----------------- status - simulator has been in extensive use for more than a year on various machines and at least two moderate sized applications s/w - in standard C (no system calls). Should install without change on any 32-bit Unix machine (probably non-Unix too). Has been used on Sun Sparc-stations, multi-max encore, sperry-univac etc.. Briefly tested on IBM PC XT also. Distribution/Installation - Also available by e-mail to if you are unable to use 'ftp'. 'Makefile' provided for automatic installation. - Comes with documentation, examples, utilities User interface -------------- * Allows any size 1-layer net to be created by specifying parameters in configuration file. Exact size need not be specified. simulator uses as many units as needed based on # of distinct symbols in training set. * Provides symbolic interface. Net can be trained on sets of symbols, eg training set might be { a b c } { c b d } A test i/p could then be { a b d } and net might retrieve { a b c } or { c b d } * test I/P to net from stdin, Net O/P to stdout. Use Unix 'pipe's if you want to use it as a component in a more complex system. Internal details ---------------- * Dynamic allocation allows executable size to be a function of net size (fn of # distinct symbols in training set). * No inner products computed. Signals propagated forward, allowing efficient implementation of net algorithms. * symbol to unit mapping done by hashing.