ioam / topographica

A general-purpose neural simulator focusing on topographic maps.
topographica.org
BSD 3-Clause "New" or "Revised" License
53 stars 32 forks source link

Can a map obtained from previous simulation be used an initial condition for V1 processing in GCAL model ? #655

Closed windform2015 closed 8 years ago

windform2015 commented 8 years ago

If I have already obtained a orientation preference map from 20000 iteration simulation, can I use it as an initial condition for V1 activity in the simulation ? Thanks for your attention !

jbednar commented 8 years ago

I'm not sure what you mean exactly, but you can certainly use save_snapshot to save a copy of a map at 20000 iterations, then load_snapshot later to pick up where you left off.

windform2015 commented 8 years ago

sorry I didn't state the question clearly. I meant if I obtain a map for 20000 iteration without using save_snapshot command, can this map matrix be used as initial state of v1 sheet in other simulations, e.g. changing the learning rates ? I am not sure load_snapshot command works for these cases.

jbednar commented 8 years ago

Just to clarify, in a GCAL or LISSOM model, an orientation map array is a description of a model; it is not the model itself. The map array is calculated by presenting a series of test patterns, recording the responses of neurons as the neurons and connections in the network are activated and activate each other. Each pixel in the plot reports the orientation for which that neuron's response was highest. This value is given to the user, but it has no effect on the model -- the model neurons don't know what orientation they prefer; they simply have a set of weights and connections, and blindly compute their activities when activity comes in. So the map array is not something that the model has any use for, and therefore there is no meaningful way to reload that matrix into a new model. If you want to change the learning rates, just run a new model -- the old orientation map array is not going to help anything in the new model, which will have its own orientation map array that summarizes its state at any given time.

But if you mean the huge set of arrays that stores all the weights in the model, that's what save_snapshot saves, and so yes, you can certainly use load_snapshot to restore the weight values and continue learning where you left off.

More usefully, if you want to train the same network with lots of different parameters, you can save it at iteration 0 (do "Run for" 0 in the GUI, or topo.sim.run(0) otherwise). That way all the weights will be initialized(which takes some time) but nothing will have been learned yet. You can then load that as many times as you want and run it with different parameters, eventually measuring orientation maps for each of them.

The results will be very different if you wait until 20000 to save it and re-load and run that, as then the learning effects will be cumulative -- you'll end up learning for 40000 iterations total, 20000 with the old parameters and 20000 with the new ones.

Hope that helps!

windform2015 commented 8 years ago

Thank you so much !