Conx Development
Here I will record my progress on improving Conx usability. Please post any suggestions on improving Conx below. I will also post any documentation I produce in the course of this project and all the planned and implemented changes. Feel free (and encouraged) to comment on anything.
Current Issues
-
SRNs do not automatically copy hidden activations into the context layer.
-
setInputs() works only with sweep(). setOutputs() may have the same problem.
-
Invalid or useless connections do not produce warnings. In general, Conx should be more informative about possible errors in borderline cases.
-
copyActivations() in line 152 should throw an exception if the array is too short and a warning if it is too long.
-
copyTarget() in line 178 should throw and exception if the array is too short and a warning if it is too long.
-
unArrayify() in line 328 has no way to verify that is the proper length.
-
I think both setInputs() and setOutputs() assume one input and output layer respectively. If there are more then we should throw an exception and the programmer would have to call copyTarget() explicitly layer by layer.
-
getConnection() in line 885 should throw an exception if the connection does not exist.
-
getWeights() in line 739 should perhaps also throw and exception if connection does not exist.
Other Possible Issues and Improvements
-
changeSize() in line 205 should throw a warning that data will be lost.
-
changeSize() in line 78 should throw a warning that current data will be overwritten.
-
Document what information is displayed at each verbosity level.
-
Document method dependencies.
-
Some cosmetic changes to the display() methods. In particular, the connection weights don't really line up in a table, which would be nice for readability.
Proposed Changes
Lisa suggested specific programming modes, one which is as automated as possible and one which is not automated. In the later, we would implement exceptions if error conditions occur such as lack of inputs or targets when needed, improper or extraneous connections, mistakes in the order of calling methods, etc.
We can use the type field for Layer objects in combination with calls to copyActivations() to determine if the inputs have been set. After we propagate we would have to reset the flags to indicate that new inputs need to be loaded.
Implemented Changes
Documentation
Return to DevelopmentalRoboticsSummerLog
