Mar 312009
 

Note: Deprecated!

I’ve added support for flow editing, which should be the final ‘big’ editor required to create useful networks. From now on, only finishing functionality and bugfixes. It took a little longer than I had originally planned, mostly because of a struggle
with WPF’s keyboard navigational system, which is crap. I finally got it working though (it also supports drag and drop, copy-paste still needs implementing), hope you like it.  You can download the program from here. Unfortunately it’s still a full install, so it’s the whole 40 and some megs download.  I’ll try to find some time to create an update installer so that the download size can be minimized.

The editor is still a bit rough, but it should be useful. I’ve tried to make it more text oriented, so you can easily navigate/add/remove items from the keyboard.  In the background though it’s still listboxes so coding the view and data was easy and fast, just that creepy WPF navigation system, off course more importantly, it makes certain no illegal input can be provided.

Anyway, here’s a screenshot:

image

Basically, this Flow editor describes how a noun can be found in a stream: a noun should start either with an article (which is either ‘a’ or ‘the’) or a number, followed by 0 or more adjectives finalized with a single noun.  Ok, there are gaps here (it’s still a sketch to show the editor): what’s a number, adjective or noun and how to find them.  These things will be explained in the demo, but basically, you use converters (functions that can transform a neuron into another one, like the object ‘house’ into the neuron ‘noun’) or some other info that can be used in a search function which can be attached to the flow items.

To create one yourself, go to ‘Insert/Flow editor‘, use the toolbar button ‘Create new flow editor‘, use the toolbar button on the ‘Project‘ overview tool frame or use it’s context menu. Press ‘F’ to create a new flow followed by a ‘.’ to select a static or ‘['/'{' for an option/loop (press '|' to add new parts in a loop or option). Here's a complete list of available short cuts:

Shortcut

 

Meaning

arrow left

 

go to the previous flow item

arrow right

 

go to the next flow item.

arrow down

 
  • When on a conditional block: go to the next conditional block
  • When on a static item: go to the first item of the next conditional block.

arrow up

 
  • When on a conditional block: go to the previous conditional block
  • When on a static item: go to the first item of the previous conditional block.

end

 

go to the end of the current list, when at end of current list, go to end of parent list, until the end of the flow is reached.

home

 

go to the start of the current list, when at start of current list, go to start of parent list, until the start of the flow is reached.

Ctrl + arrow/end/home/mouse click on item

 

select multiple neurons.

Alt+arrow down

 

go to the next flow

Alt+arrow up

 

go to the previous flow

.

 

open a popup for selecting a 'named' neuron to add at the end of the current list as static.

ctrl+.

 

open a popup for selecting a 'named' neuron to insert at the current pos as static.

{

 

add a loop at the end of the current list.

ctrl+{

 

insert a loop at the current position.

[

 

add an option at the end of the current list.

ctrl+[

 

insert an option at the current position.

}

 

change the currently surrounding option to a loop.

]

 

change the currently surrounding loop to an option.

R

 

toggle ‘selection Required’ for current option/loop

|

 

add a new part in the first parent loop or option of the currently selected item.

ctrl + |

 

insert a new part in the first parent loop or option of the currently selected item.

del

 

remove the currently selected item from the list, but don’t delete the actual neuron.

ctrl+del

 

delete the actual neuron.

O

 

Add a new object (neuron cluster with meaning ‘Object’) at the end of the current list.

ctrl+O

 

insert a new object (neuron cluster with meaning ‘Object’) at the current position.

N

 

Add a new neuron at the end of the current list.

ctrl+N

 

Insert a new neuron at the current position.

Double click on static

 

Go to the flow.  This is only available when the static is a reference to another flow.  This is indicated by a line underneath the static.

A final note perhaps on how to use these flows in a neural network.  The thing is, this is really up to you, the application doesn’t make any hard-coded use of them. Though, there will probably be a couple of default algorithms that can be reused. 
The basic idea is relatively simple: when the first neuron comes in, search all the clusters to which it belongs with the meaning ‘Flow’, ‘FlowItemConditional’ or ‘FlowItemConditionalPart’ and store the result list in a cluster.  When the second comes in, try to find all the clusters of the previous result set that allow the new neuron to follow the previous one, all clusters that don’t allow this are removed from the result set.  Various clean ups / lookups can be performed during 2 incoming points. When a ‘flow’ cluster is found with code attached to it, execute this. This off course, can be made as simple or as complex as you want. More on this in a later post. Fuel is depleted for today.

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2012 Neural Network Design blog Suffusion theme by Sayontan Sinha