def build_stdp(model, stdp, rule): conn = rule.connection pre_activities = model.sig[get_pre_ens(conn).neurons]['out'] post_activities = model.sig[get_post_ens(conn).neurons]['out'] pre_trace = Signal(np.zeros(pre_activities.size), name="pre_trace") post_trace = Signal(np.zeros(post_activities.size), name="post_trace") model.add_op(SimSTDP( pre_activities, post_activities, pre_trace, post_trace, model.sig[conn]['weights'], model.sig[rule]['delta'], pre_tau=stdp.pre_tau, post_tau=stdp.post_tau, alf_p=stdp.alf_p, alf_n=stdp.alf_n, beta_p=stdp.beta_p, beta_n=stdp.beta_n, max_weight=stdp.max_weight, min_weight=stdp.min_weight, learning_rate=stdp.learning_rate, )) # expose these for probes model.sig[rule]['pre_trace'] = pre_trace model.sig[rule]['post_trace'] = post_trace model.params[rule] = None # no build-time info to return
def build_moja(model, moja, rule): conn = rule.connection pre_activities = model.sig[get_pre_ens(conn).neurons]["out"] post_activities = model.sig[get_post_ens(conn).neurons]["out"] pre_filtered = build_or_passthrough(model, moja.pre_synapse, pre_activities) post_filtered = build_or_passthrough(model, moja.post_synapse, post_activities) pos_memristors, \ neg_memristors, \ r_min_noisy, \ r_max_noisy, \ exponent_noisy = initialise_memristors( moja, pre_filtered.shape[ 0 ], post_filtered.shape[ 0 ] ) model.sig[conn]["pos_memristors"] = pos_memristors model.sig[conn]["neg_memristors"] = neg_memristors model.add_op( SimmOja(pre_filtered, post_filtered, moja.beta, model.sig[conn]["pos_memristors"], model.sig[conn]["neg_memristors"], model.sig[conn]["weights"], moja.noise_percentage, moja.gain, r_min_noisy, r_max_noisy, exponent_noisy, moja.voltage, moja.initial_state)) # expose these for probes model.sig[rule]["pre_filtered"] = pre_filtered model.sig[rule]["post_filtered"] = post_filtered model.sig[rule]["pos_memristors"] = pos_memristors model.sig[rule]["neg_memristors"] = neg_memristors
def build_stdp(model, stdp, rule): conn = rule.connection pre_activities = model.sig[get_pre_ens(conn).neurons]["out"] post_activities = model.sig[get_post_ens(conn).neurons]["out"] pre_trace = Signal(np.zeros(pre_activities.size), name="pre_trace") post_trace = Signal(np.zeros(post_activities.size), name="post_trace") pre_scale = Signal(np.zeros(model.sig[conn]["weights"].shape), name="pre_scale") post_scale = Signal(np.zeros(model.sig[conn]["weights"].shape), name="post_scale") model.add_op( SimSTDP( pre_activities, post_activities, pre_trace, post_trace, pre_scale, post_scale, model.sig[conn]["weights"], model.sig[rule]["delta"], learning_rate=stdp.learning_rate, pre_tau=stdp.pre_tau, post_tau=stdp.post_tau, pre_amp=stdp.pre_amp, post_amp=stdp.post_amp, bounds=stdp.bounds, max_weight=stdp.max_weight, min_weight=stdp.min_weight, )) # expose these for probes model.sig[rule]["pre_trace"] = pre_trace model.sig[rule]["post_trace"] = post_trace model.sig[rule]["pre_scale"] = pre_scale model.sig[rule]["post_scale"] = post_scale model.params[rule] = None # no build-time info to return
def build_tripletstdp(model, stdp, rule): conn = rule.connection pre_activities = model.sig[get_pre_ens(conn).neurons]["out"] post_activities = model.sig[get_post_ens(conn).neurons]["out"] pre_trace1 = Signal(np.zeros(pre_activities.size), name="pre_trace1") post_trace1 = Signal(np.zeros(post_activities.size), name="post_trace1") pre_trace2 = Signal(np.zeros(pre_activities.size), name="pre_trace2") post_trace2 = Signal(np.zeros(post_activities.size), name="post_trace2") model.add_op( SimTripletSTDP( pre_activities, post_activities, pre_trace1, post_trace1, pre_trace2, post_trace2, model.sig[rule]["delta"], learning_rate=stdp.learning_rate, pre_tau=stdp.pre_tau, pre_taux=stdp.pre_taux, post_tau=stdp.post_tau, post_tauy=stdp.post_tauy, pre_amp2=stdp.pre_amp2, pre_amp3=stdp.pre_amp3, post_amp2=stdp.post_amp2, post_amp3=stdp.post_amp3, nearest_spike=stdp.nearest_spike, )) # expose these for probes model.sig[rule]["pre_trace1"] = pre_trace1 model.sig[rule]["post_trace1"] = post_trace1 model.sig[rule]["pre_trace2"] = pre_trace2 model.sig[rule]["post_trace2"] = post_trace2 model.params[rule] = None # no build-time info to return