def single_neuron_time(time,
                       dt,
                       scale,
                       step_size,
                       I_function,
                       shape,
                       spike_trace,
                       additive_spike_trace,
                       tau_s,
                       trace_scale,
                       is_inhibitory,
                       learning,
                       R,
                       C,
                       delta_t,
                       threshold_rh,
                       threshold_r=-55):

    I = I_function(time, step_size, scale)
    neuron = ELIFPopulation(shape, spike_trace, additive_spike_trace, tau_s,
                            trace_scale, is_inhibitory, learning, R, C,
                            delta_t, threshold_rh, threshold_r)
    neuron.dt = dt
    monitor = Monitor(neuron, state_variables=["s", "u"])
    monitor.set_time_steps(time, dt)
    monitor.reset_state_variables()
    for i in range(len(I)):
        neuron.forward(I[i][0])
        monitor.record()
    return neuron, I, torch.transpose(monitor.get("s") * 1, 0,
                                      1), monitor.get("u")
Ejemplo n.º 2
0
        shape = shape1, spike_trace = True, additive_spike_trace = True, tau_s = 4, trace_scale = 1.,
        is_inhibitory = False, learning = False, R = 1, C = 20, threshold = -40
    )
n1.dt = dt

n2 = LIFPopulation(
        shape = shape2, spike_trace = True, additive_spike_trace = True, tau_s = 4, trace_scale = 1.,
        is_inhibitory = False, learning = False, R = 1, C = 20, threshold = -40
    )
n2.dt = dt

con1 = ConvolutionalConnection(
        pre = n1, post = n2, kernel = kernel, J = 1000, padding = 0, stride = 1
    )

monitor1 = Monitor(n1, state_variables=["s"])
monitor1.set_time_steps(time, dt)
monitor1.reset_state_variables()

monitor2 = Monitor(n2, state_variables=["s"])
monitor2.set_time_steps(time, dt)
monitor2.reset_state_variables()


I_ex = 0
for i in range(len(I)):
    n1.forward(I[i])
    n2.forward(I_ex)
    I_ex = con1.compute()
    monitor1.record()
    monitor2.record()
Ejemplo n.º 3
0
                  wmean=21.,
                  wstd=5.)

con3 = Connection(pre=pn1,
                  post=pn2,
                  lr=None,
                  weight_decay=0.0,
                  J=1,
                  tau_s=10,
                  trace_scale=1.,
                  dt=dt,
                  connectivity=randomNormalConnect,
                  wmean=20.,
                  wstd=5.)

monitor1 = Monitor(pn1, state_variables=["s", "u"])
monitor1.set_time_steps(time, dt)
monitor1.reset_state_variables()

monitor2 = Monitor(pn2, state_variables=["s", "u"])
monitor2.set_time_steps(time, dt)
monitor2.reset_state_variables()

I_in = 0
I_self = 0
I_ex = 0
for i in range(len(I1)):
    pn1.forward(I1[i] + I_self - I_in)
    pn2.forward(I2[i] + I_ex)
    I_self = con1.compute()
    I_in = con2.compute()
                         connectivity=randomNormalConnect,
                         wmean=20.,
                         wstd=5.)
con_ep2_ep2 = Connection(pre=ep2,
                         post=ep2,
                         lr=None,
                         weight_decay=0.0,
                         J=1,
                         tau_s=10,
                         trace_scale=1.,
                         dt=dt,
                         connectivity=randomNormalConnect,
                         wmean=20.,
                         wstd=5.)

monitor_ep1 = Monitor(ep1, state_variables=["s", "u"])
monitor_ep1.set_time_steps(time, dt)
monitor_ep1.reset_state_variables()

monitor_ep2 = Monitor(ep2, state_variables=["s", "u"])
monitor_ep2.set_time_steps(time, dt)
monitor_ep2.reset_state_variables()

monitor_ip1 = Monitor(ip1, state_variables=["s", "u"])
monitor_ip1.set_time_steps(time, dt)
monitor_ip1.reset_state_variables()

out_ep1_ip1 = 0
out_ep2_ip1 = 0
out_ip1_ep1 = 0
out_ip1_ep2 = 0