From: Mathieu D. <mat...@li...> - 2009-05-25 14:29:44
|
Hello, Mathieu Dubois wrote: > Hello PCSIMers, > > I would like some advice on the best way to construct the reservoir of > an LSM. > > In the standard LSM literature, the weights of the intra-reservoir > synapses are drawn from a Gamma distribution with parameters depending > on the type of neurons connected (up to now I was using constant > weights but I would like to see if using those weights increase > performance). > I have found the BndGammaDistribution object in PCSIM and the relevant > parameters in [1]. > > The problem is: how can I generate negative weights within the liquid > (to connect an inhibitory neuron to another neuron)? > The Gamma distribution returns positive numbers so I have to do this > by hand. > > I have looked into the (matlab) circuit toolbox and found the code: > if synpar.W > 0 > synpar.W = sign(synpar.W) * bnd_gammarnd(abs(synpar.W), sh(1), > abs(6*synpar.W), 1, m, 'exz A'); > else > synpar.W = sign(synpar.W) * bnd_gammarnd(abs(synpar.W), sh(1), > abs(6*synpar.W), 1, m, 'inh A'); > end > > Under PCSIM, I use 4 SimObjectVariationFactory (one for each type of > synapse: EE, EI, IE, II) and 4 ConnectionsProjection. Only the IE and > II weights have to be negative. I was thinking at using the > setFieldScale method in SimObjectPopulation. For instance for the II > connections this would give: > > liquid_syn[INH][INH] = > ConnectionsProjection(self.liquid_sub_populs[INH], > self.liquid_sub_populs[INH], syn_factory, > PredicateBasedConnections(EuclidianDistanceConnectionPredicate(C[INH][INH], > lambda_conn))) > tmp_pop = SimObjectPopulation( liquid_syn[INH][INH].idVector() ); > tmp_pop.setFieldScale("W", -1); I just wanted to say that I have tested this method and this seems to work (I have gamma-distributed negative weights). Mathieu |