smbauer@acsu.buffalo.edu (stephen m bauer) (07/03/90)
Hopfield-style network simulator
--------------------------------
In a previous posting a month or so back, it was briefly mentioned
that the above simulator was available (free) upon request. Since then,
we've felt that it may be of interest to a larger group of people and
have decided to make a more 'elaborate' announcement providing more
details.
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
- By e-mail only, 'shar' format. '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.
Serious requests for the simulator should be sent to <jagota@cs.buffalo.edu>
(as opposed to poster)