Formats
Home
Introduction
Licensing
Installation
Quick Tour
Networks
Patterns
Training
Analyzing
Files
Formats
Examples
# Kernel File Interface ### The ASCII Network File Format The ASCII representation of a network consists of the following parts: a header, which contains information about the net the definition of the teaching function the definition of the sites the definition of cell types the definition of the default values for cells the enumeration of the cells with all their characteristics the list of connections a list of subnet numbers a list of layer numbers All parts, except the header and the enumeration of the cells, may be omitted. Each part may also be empty. It then consists only of the part title, the header line and the boarder marks (e.g.: ----|---|------). Entries in the site definition section do not contain any empty columns. The only empty column in the type definition section may be the sites column, in which case the cells of this type do not have sites. Entries in the unit definition section have at least the columns no. (cell number) and position filled. The entries (rows) are sorted by increasing cell number. If column typeName is filled, the columns act func, out func, and sites remain empty. Entries in the connection definition section have all columns filled. The respective cell does not have a site, if the column site is empty. The entries are sorted by increasing number of the target cell (column target). Each entry may have multiple entries in the column sources. In this case, the entries (number of the source cell and the connection strength) are separated by a comma and a blank, or by a comma and a newline (see example in the Appendix B). The file may contain comment lines. Each line beginning with # is skipped by the SNNS-kernel. ### Form of the Network File Eries Columns are separated by the string " " (without ") . A row never exceeds 250 characters. Strings may have arbitrary length. The compiler determines the length of each row containing strings (maximum string length + 2). Within the columns, the strings are stored left adjusted. Strings may not contain blanks, but all special characters except |. The first character of a string has to be a letter. Integers may have an arbitrary number of digits. Cell numbers arealways positive and not zero. Position coordinates may be positive or negative. The compiler determines the length of each row containing integers (maximum digit number + 2). Within the columns, the numbers are stored right adjusted. Floats are always stored in fixed length with the format Vx.yyyyy, where V is the sign (+, - or blank), x is 0 or 1 and y is the rational part (5 digits behind the decimal point). Rows containing floats are therefore always 10 characters long (8 + 1 blank on each side). If a row contains several sites in the type or unit definition section, they are wri ten below each other. They are separated in the following way: Directly after the first site fo lows a comma and a newline \n. The next line starts with an arbitrary number of blanks or tabs in front of the next site. The source of a connection is described by a pair, the cell number and the strength of the connection. It always has the format nnn:Vx.yyyyy with the following meaning: nnn Number of the source Vx.yyyyy Strength of the connection as a float value (format as discribed above) The compiler determines the width of the column nnn by the highest cell number present. The cell numbers are written into the column right adjusted (according to the rules for integers). The column Vx.yyyyy has fixed width. Several source pairs in an entry to the connection definition section/ are separated by a comma and a blank. If the list of source pairs exceeds the length of one line, the line has to be parted after the following rule: Separation is always between pairs, never within them. The comma between pairs is always directly behind the last pair,i.e. remains in the old line. After a newline (\n) an arbitrary number of blanks or tabs may precede the next pair. ### Grammar of the Network Files ### Conventions ### Lexical Elements of the Grammar The lexical elements of the grammar which defines network files are listed as regular expresions. The first column lists the name of the symbol, the second the regular expresion defining it. The third column may contain comments. All terminals (characters) are put between ". . .". Elements of sets are put between square brackets. Within the brackets, the characters represent themselves (even without ", and - defines a range of values. The class of digits is defined, e.g. as ["0"-"9"]. Characters can be combined into groups with parenteses (). x* means, that the character or group x can occur zero or more times. x+ means, that the character or group x must occur at least once, but may occur several times. x? means, that x can be omitted. x{n} means, that x has to occur exactly n times. x|y means, that either x or y has to occur. *, + and {} bind strongest, ? is second, | binds weakest. Groups or classes of characters are treated like a single character with respect to priority. ### Definition of the Grammar The Grammar defining the interface is listed in a special form of EBNF. Parts between square brackets [] are facultative. | separates alternatives (like with terminal symbols). {x} means, that x may occur zero or more times. CSTRING is everything that is recognized as string by the C programming language. ### Terminal Symbols WHITESPACE {" "|"\n"|"\t"} /* whitespaces */ BLANKS_TABS {" "|"\t"} /* only blanks or tabs */ W_COL_SEP (" "|"\n"|"\t") {" "|"\n"|"\t"} "|" {" "|"\n"|"\t"} /* at least one blank and the column separation */ COL_SEP {" "|"\n"|"\t"} "|" {" "|"\n"|"\t"} /* column separation */ COMMA {" "|"\n"|"\t"} "," {" "|"\n"|"\t"} /* at least the comma */ EOL {" "|"\n"|"\t"} "\n" {" "|"\n"|"\t"} /* at least "\n" */ CUT {" "|"\n"|"\t"} (" "|"\n"|"\t") {" "|"\n"|"\t"} /* at least a blank, "\t", or "\n" */ COLON ":" /* separation lines for different tables */ TWO_COLUMN_LINE "-"+"|""-"+ THREE_COLUMN_LINE "-"+"|""-"+"|""-"+ FOUR_COLUMN_LINE "-"+"|""-"+"|""-"+"|""-"+ SIX_COLUMN_LINE "-"+"|""-"+"|""-"+"|""-"+"|""-"+"|""-"+ SEVEN_COLUMN_LINE "-"+"|""-"+"|""-"+"|""-"+"|""-"+"|""-"+"|""-"+ TEN_COLUMN_LINE "-"+"|""-"+"|""-"+"|""-"+"|""-"+"|""-"+"|""-"+ "|""-"+"|""-"+"|""-"+ COMMENT {{" "|"\n"|"\t"} "#" CSTRING "\n" {" "|"\n"|"\t"}} VERSION "V1.4-3D" | "V2.1" | "V3.0" /* version of SNNS */ SNNS "SNNS network definition file" /* output file header */ /* eleven different headers */ GENERATED_AT "generated at" NETWORK_NAME "network name :" SOURCE_FILES "source files" NO.OF_UNITES "no. of unites :" NO.OF_CONNECTIONS "no. of connections :" NO.OF_UNIT_TYPES "no. of unit types :" NO.OF_SITE_TYPES "no. of site types :" LEARNING_FUNCTION "learning function :" PRUNING_FUNCTION "pruning function :" FF_LEARNING_FUNCTION "subordinate learning function :" UPDATE_FUNCTION "update function :" /* titles of the different sections */ UNIT_SECTION_TITLE "unit definition section" DEFAULT_SECTION_TITLE "unit default section" SITE_SECTION_TITLE "site definition section" TYPE_SECTION_TITLE "type definition section" CONNECTION_SECTION_TITLE "connection definition section" LAYER_SECTION_TITLE "layer definition section" SUBNET_SECTION_TITLE "subnet definition section" TRANSLATION_SECTION_TITLE "3D translation section" TIME_DELAY_SECTION_TITLE "time delay section" /* column-titles of the different tables */ NO "no." TYPE_NAME "type name" UNIT_NAME "unit name" ACT "act" BIAS "bias" ST "st" POSITION "position" SUBNET "subnet" LAYER "layer" ACT_FUNC "act func" OUT_FUNC "out func" SITES "sites" SITE_NAME "site name" SITE_FUNCTION "site function" NAME "name" TARGET "target" SITE "site" SOURCE:WEIGHT "source:weight" UNIT_NO "unitNo." DELTA_X "delta x" DELTA_Y "delta y" Z "z" LLN "LLN" LUN "LUN" TROFF "Troff" SOFF "Soff" CTYPE "Ctype" INTEGER ["0"-"9"]+ /*integer */ SFLOAT ["+" | " " | "-"] ["1" | "0"] "." ["0"-"9"]{5} /*signed float*/ STRING ("A"-"Z" | "a"-"z" | "|")+ /*string */ ### Grammar: out_file ::= file_header sections file_header := WHITESPACE COMMENT h_snns EOL COMMENT h_generated_at EOL COMMENT h_network_name EOL COMMENT h_source_files EOL COMMENT h_no.of_unites EOL COMMENT h_no.of_connections EOL COMMENT h_no.of_unit_types EOL COMMENT h_no.of_site_types EOL COMMENT h_learning_function EOL COMMENT h_update_function EOL COMMENT h_pruning_function EOL COMMENT ff_learning_function EOL /* parts of the file-header */ h_snns ::= SNNS BLANKS_TABS VERSION h_generated_at ::= GENERATED_AT BLANKS_TABS CSTRING h_network_name ::= NETWORK_NAME BLANKS_TABS STRING h_source_files ::= SOURCE_FILES [BLANKS_TABS COLON BLANKS_TABS CSTRING] h_no.of_unites ::= NO.OF_UNITES BLANKS_TABS INTEGER h_no.of_connections ::= NO.OF_CONNECTIONS BLANKS_TABS INTEGER h_no.of_unit_types ::= NO.OF_UNIT_TYPES BLANKS_TABS INTEGER h_no.of_site_types ::= NO.OF_SITE_TYPES BLANKS_TABS INTEGER h_learning_function ::= LEARNING_FUNCTION BLANKS_TABS STRING h_pruning_function ::= PRUNING_FUNCTION BLANKS_TABS STRING h_ff_learning_function ::= FF_LEARNING_FUNCTION BLANKS_TABS STRING h_update_function ::= UPDATE_FUNCTION BLANKS_TABS STRING sections ::= COMMENT unit_section [COMMENT default_section] [COMMENT site_section] [COMMENT type_section] [COMMENT subnet_section] [COMMENT conn_section] [COMMENT layer_section] [COMMENT trans_section] [COMMENT time_delay_section] COMMENT /* unit default section */ default_section ::= DEFAULT_SECTION_TITLE CUT COMMENT WHITESPACE default_block default_block ::= default_header SEVEN_COLUMN_LINE EOL {COMMENT default_def} SEVEN_COLUMN_LINE EOL default_header ::= ACT COL_SEP BIAS COL_SEP ST COL_SEP SUBNET COL_SEP LAYER COL_SEP ACT_FUNC COL_SEP OUT_FUNC CUT default_def ::= SFLOAT W_COL_SEP SFLOAT W_COL_SEP STRING W_COL_SEP INTEGER W_COL_SEP INTEGER W_COL_SEP STRING W_COL_SEP STRING CUT /* site definition section */ site_section ::= SITE_SECTION_TITLE CUT COMMENT WHITESPACE site_block site_block ::= site_header TWO_COLUMN_LINE EOL {COMMENT site_def} TWO_COLUMN_LINE EOL site_header ::= SITE_NAME SITE_FUNCTION CUT site_def ::= STRING W_COL_SEP STRING CUT /* type definition section */ type_section ::= TYPE_SECTION_TITLE CUT COMMENT WHITESPACE type_block type_block ::= type_header FOUR_COLUMN_LINE EOL {COMMENT type_def} FOUR_COLUMN_LINE EOL type_header ::= NAME COL_SEP ACT_FUNC COL_SEP OUT_FUNC COL_SEP SITES CUT type_def ::= STRING W_COL_SEP STRING W_COL_SEP STRING W_COL_SEP [{STRING COMMA} STRING] CUT /* subnet definition section */ subnet_section ::= SUBNET_SECTION_TITLE CUT COMMENT WHITESPACE subnet_block subnet_block ::= subnet_header TWO_COLUMN_LINE EOL {COMMENT subnet_def} TWO_COLUMN_LINE EOL subnet_header ::= SUBNET COL_SEP UNIT_NO CUT subnet_def ::= INTEGER W_COL_SEP {INTEGER COMMA} INTEGER CUT /* unit definition section /* unit_section ::= UNIT_SECTION_TITLE CUT COMMENT WHITESPACE unit_block unit_block ::= unit_header TEN_COLUMN_LINE EOL {COMMENT unit_def} TEN_COLUMN_LINE EOL unit_header ::= NO COL_SEP TYPE_NAME COL_SEP UNIT_NAME COL_SEP ACT COL_SEP BIAS COL_SEP ST COL_SEP POSITION COL_SEP ACT_FUNC COL_SEP OUT_FUNC COL_SEP SITES CUT unit_def ::= INTEGER W_COL_SEP ((STRING W_COL_SEP) | COL_SEP) ((STRING W_COL_SEP) | COL_SEP) ((SFLOAT W_COL_SEP) | COL_SEP) ((SFLOAT W_COL_SEP) | COL_SEP) ((STRING W_COL_SEP) | COL_SEP) INTEGER COMMENT INTEGER COMMENT INTEGER W_COL_SEP ((STRING W_COL_SEP) | COL_SEP) ((STRING W_COL_SEP) | COL_SEP) [{STRING COMMA} STRING] /* connection definition section */ connection_section ::= CONNECTION_SECTION_TITLE CUT COMMENT WHITESPACE connection_block connection_block ::= connection_header THREE_COLUMN_LINE EOL {COMMENT connection_def} THREE_COLUMN_LINE EOL connection_header ::= TARGET COL_SEP SITE COL_SEP SOURCE:WEIGHT CUT connection_def ::= ((INTEGER W_COL_SEP) | COL_SEP) STRING W_COL_SEP {INTEGER WHITESPACE COLON WHITESPACE SFLOAT COMMA} INTEGER WHITESPACE COLON WHITESPACE SFLOAT CUT /* layer definition section */ layer_section ::= LAYER_SECTION_TITLE CUT COMMENT WHITESPACE layer_block layer_block ::= layer_header TWO_COLUMN_LINE EOL {COMMENT layer_def} TWO_COLUMN_LINE EOL layer_header ::= LAYER COL_SEP UNIT_NO CUT layer_def ::= INTEGER W_COL_SEP {INTEGER COMMENT} INTEGER CUT /* 3D translation section */ translation_section ::= TRANSLATION_SECTION_TITLE CUT COMMENT WHITESPACE translation_block translation_block ::= translation_header THREE_COLUMN_LINE EOL {COMMENT translation_def} THREE_COLUMN_LINE EOL translation_header ::= DELTA_X COL_SEP DELTA_Y COL_SEP Z CUT translation_def ::= INTEGER W_COL_SEP INTEGER W_COL_SEP INTEGER /* time delay section */ td_section ::= TIME_DELAY_SECTION_TITLE CUT COMMENT WHITESPACE td_block td_block ::= td_header SIX_COLUMN_LINE EOL {COMMENT td_def} SIX_COLUMN_LINE EOL td_header ::= NO COL_SEP LLN COL_SEP LUN COL_SEP TROFF COL_SEP SOFF COL_SEP CTYPE CUT td_def ::= INTEGER W_COL_SEP INTEGER W_COL_SEP INTEGER W_COL_SEP INTEGER W_COL_SEP INTEGER W_COL_SEP INTEGER W_COL_SEP ### Grammar of the Pattern Files The typographic conventions used for the pattern file grammar are the same as for the network file grammar (see section A.3.1.1). ### Terminal Symbols WHITE {" " | "\t"} FREE {^"\n"} /* anything up to EOL */ COMMENT "#" FREE "\n" L_BRACKET "[" R_BRACKET "]" INT ["0"-"9"] V_NUMBER [Vv]{INT}+"."{INT}+ /* version number */ NUMBER [-+]?{{INT}+ | {INT}+{EXP} |{INT}+"."{INT}*({EXP})? | {INT}*"."{INT}+({EXP})?} EXP [Ee][-+]?{INT}+ VERSION_HEADER "SNNS pattern definition file" GENERATED_AT "generated at" {FREE}* "\n" NO_OF_PATTERN "No. of patterns" {WHITE}* ":" NO_OF_INPUT "No. of input units" {WHITE}* ":" NO_OF_OUTPUT "No. of output units" {WHITE}* ":" NO_OF_VAR_IDIM "No. of variable input dimensions" {WHITE}* ":" NO_OF_VAR_ODIM "No. of variable output dimensions" {WHITE}* ":" MAXIMUM_IDIM "Maximum input dimensions" {WHITE}* ":" MAXIMUM_ODIM "Maximum output dimensions" {WHITE}* ":" NO_OF_CLASSES "No. of classes" {WHITE}* ":" CLASS_REDISTRIB "Class redistribution" {WHITE}* ":" REMAPFUNCTION "Remap function" {WHITE}* ":" REMAP_PARAM "Remap parameters" {WHITE}* ":" ### Grammar pattern_file ::= header pattern_list header ::= VERSION_HEADER V_NUMBER GENERATED_AT NO_OF_PATTERN NUMBER i_head [o_head] [vi_head] [vo_head] [cl_head] [rm_head] i_head ::= NO_OF_INPUT NUMBER o_head ::= NO_OF_OUTPUT NUMBER vi_head ::= NO_OF_VAR_IDIM NUMBER MAXIMUM_IDIM actual_dim vo_head ::= NO_OF_VAR_ODIM NUMBER MAXIMUM_ODIM actual_dim cl_head ::= NO_OF_CLASSES NUMBER [cl_distrib] rm_head ::= REMAPFUNCTION NAME [rm_params] actual_dim ::= L_BRACKET actual_dim_rest R_BRACKET | L_BRACKET R_BRACKET actual_dim_rest ::= NUMBER | actual_dim_rest NUMBER cl_distrib ::= CLASS_REDISTRIB L_BRACKET paramlist R_BRACKET rm_params ::= REMAP_PARAM L_BRACKET paramlist R_BRACKET paramlis ::= NUMBER | paramlist NUMBER pattern_list ::= pattern | pattern_list pattern pattern ::= pattern_start pattern_body pattern_class pattern_start ::= [actual_dim] pattern_body ::= NUMBER | pattern_body NUMBER pattern_class ::= NUMBER | NAME Last change: Igor Fischer, Thu May 16 14:13:36 2002 GMT Page 11: JavaNNS-manual-10.html © 2001-2002 Universität Tübingen