mirror of
https://github.com/bics-rug/felice-models.git
synced 2026-09-30 21:03:06 +02:00
Deployed 9fabbde with MkDocs version: 1.6.1
This commit is contained in:
1 parent
76339b2417
commit
55f1381105
16 files changed
+1533
-495
No files matched your search
@@ -1564,7 +1564,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [10]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-1">
|
||||
@@ -1583,7 +1583,6 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">jax.random</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">jrand</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">mpl</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">eventpropjax.evnn</span><span class="w"> </span><span class="kn">import</span> <span class="n">FFEvNN</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">felice.neuron_models</span><span class="w"> </span><span class="kn">import</span> <span class="n">WereRabbit</span>
|
||||
|
||||
@@ -1595,7 +1594,6 @@ import jax.numpy as jnp
|
||||
import jax.random as jrand
|
||||
import matplotlib as mpl
|
||||
import matplotlib.pyplot as plt
|
||||
from eventpropjax.evnn import FFEvNN
|
||||
|
||||
from felice.neuron_models import WereRabbit
|
||||
|
||||
@@ -1611,7 +1609,7 @@ jax.config.update("jax_enable_x64", True)</div>
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [11]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-2">
|
||||
@@ -1625,44 +1623,46 @@ jax.config.update("jax_enable_x64", True)</div>
|
||||
</clipboard-copy>
|
||||
</div>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">key</span> <span class="o">=</span> <span class="n">jrand</span><span class="o">.</span><span class="n">key</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">max_time</span> <span class="o">=</span> <span class="mi">100</span>
|
||||
<span class="n">max_time</span> <span class="o">=</span> <span class="mi">40</span>
|
||||
|
||||
<span class="n">init_weights</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">asarray</span><span class="p">([[</span><span class="mf">0.0</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.1</span><span class="p">]])</span>
|
||||
<span class="n">snn</span> <span class="o">=</span> <span class="n">FFEvNN</span><span class="p">(</span>
|
||||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">in_size</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">neuron_model</span><span class="o">=</span><span class="n">WereRabbit</span><span class="p">,</span>
|
||||
<span class="n">solver</span><span class="o">=</span><span class="n">dfx</span><span class="o">.</span><span class="n">Tsit5</span><span class="p">(),</span>
|
||||
<span class="c1"># stepsize_controller=PIDController(</span>
|
||||
<span class="c1"># rtol=1e-6, atol=1e-3, pcoeff=0.1, icoeff=0.3, dcoeff=0.0</span>
|
||||
<span class="c1"># ),</span>
|
||||
<span class="n">max_solver_time</span><span class="o">=</span><span class="n">max_time</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">max_event_steps</span><span class="o">=</span><span class="mi">10000</span><span class="p">,</span>
|
||||
<span class="n">solver_stepsize</span><span class="o">=</span><span class="mf">0.001</span><span class="p">,</span>
|
||||
<span class="n">init_weights</span><span class="o">=</span><span class="n">init_weights</span><span class="p">,</span>
|
||||
<span class="n">dtype</span><span class="o">=</span><span class="n">jnp</span><span class="o">.</span><span class="n">float64</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">WereRabbit</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">jnp</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">state_at_t</span><span class="p">(</span><span class="n">comp_times</span><span class="p">):</span>
|
||||
<span class="n">sol</span> <span class="o">=</span> <span class="n">dfx</span><span class="o">.</span><span class="n">diffeqsolve</span><span class="p">(</span>
|
||||
<span class="n">terms</span><span class="o">=</span><span class="n">dfx</span><span class="o">.</span><span class="n">ODETerm</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">dynamics</span><span class="p">),</span>
|
||||
<span class="n">solver</span><span class="o">=</span><span class="n">dfx</span><span class="o">.</span><span class="n">Tsit5</span><span class="p">(),</span>
|
||||
<span class="n">t0</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
|
||||
<span class="n">t1</span><span class="o">=</span><span class="n">max_time</span><span class="p">,</span>
|
||||
<span class="n">dt0</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">,</span>
|
||||
<span class="n">y0</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">init_state</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="o">+</span> <span class="n">jrand</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="n">minval</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">maxval</span><span class="o">=</span><span class="mf">0.5</span><span class="p">),</span>
|
||||
<span class="n">saveat</span><span class="o">=</span><span class="n">dfx</span><span class="o">.</span><span class="n">SaveAt</span><span class="p">(</span><span class="n">ts</span><span class="o">=</span><span class="n">comp_times</span><span class="p">),</span>
|
||||
<span class="n">max_steps</span><span class="o">=</span><span class="mi">100000</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">sol</span><span class="o">.</span><span class="n">ts</span><span class="p">,</span> <span class="n">sol</span><span class="o">.</span><span class="n">ys</span>
|
||||
</pre></div>
|
||||
<div class="clipboard-copy-txt" id="cell-2">key = jrand.key(0)
|
||||
max_time = 100
|
||||
max_time = 40
|
||||
|
||||
init_weights = jnp.asarray([[0.0], [0.2], [-0.1]])
|
||||
snn = FFEvNN(
|
||||
layers=[1],
|
||||
in_size=2,
|
||||
neuron_model=WereRabbit,
|
||||
solver=dfx.Tsit5(),
|
||||
# stepsize_controller=PIDController(
|
||||
# rtol=1e-6, atol=1e-3, pcoeff=0.1, icoeff=0.3, dcoeff=0.0
|
||||
# ),
|
||||
max_solver_time=max_time,
|
||||
key=key,
|
||||
max_event_steps=10000,
|
||||
solver_stepsize=0.001,
|
||||
init_weights=init_weights,
|
||||
dtype=jnp.float64,
|
||||
)</div>
|
||||
model = WereRabbit(dtype=jnp.float64)
|
||||
|
||||
|
||||
def state_at_t(comp_times):
|
||||
sol = dfx.diffeqsolve(
|
||||
terms=dfx.ODETerm(model.dynamics),
|
||||
solver=dfx.Tsit5(),
|
||||
t0=0.0,
|
||||
t1=max_time,
|
||||
dt0=1e-3,
|
||||
y0=model.init_state(1)
|
||||
+ jrand.uniform(key, shape=(1, 2), minval=0.1, maxval=0.5),
|
||||
saveat=dfx.SaveAt(ts=comp_times),
|
||||
max_steps=100000,
|
||||
)
|
||||
|
||||
return sol.ts, sol.ys</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1674,7 +1674,7 @@ snn = FFEvNN(
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [3]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [12]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-3">
|
||||
@@ -1687,15 +1687,11 @@ snn = FFEvNN(
|
||||
</div>
|
||||
</clipboard-copy>
|
||||
</div>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">in_spikes</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">asarray</span><span class="p">([[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">30</span><span class="p">],</span> <span class="p">[</span><span class="mi">20</span><span class="p">,</span> <span class="mi">21</span><span class="p">]])</span>
|
||||
<span class="n">comp_times</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">max_time</span><span class="p">,</span> <span class="mi">2000</span><span class="p">)</span>
|
||||
<span class="n">state</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">state_at_t</span><span class="p">(</span><span class="n">in_spikes</span><span class="p">,</span> <span class="n">comp_times</span><span class="p">)</span>
|
||||
<span class="n">spikes</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">spikes_until_t</span><span class="p">(</span><span class="n">in_spikes</span><span class="p">,</span> <span class="n">max_time</span><span class="p">)</span>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span><span class="n">comp_times</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">max_time</span><span class="p">,</span> <span class="mi">2000</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">state</span> <span class="o">=</span> <span class="n">state_at_t</span><span class="p">(</span><span class="n">comp_times</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
<div class="clipboard-copy-txt" id="cell-3">in_spikes = jnp.asarray([[10, 30], [20, 21]])
|
||||
comp_times = jnp.linspace(0.0, max_time, 2000)
|
||||
state = snn.state_at_t(in_spikes, comp_times)
|
||||
spikes = snn.spikes_until_t(in_spikes, max_time)</div>
|
||||
<div class="clipboard-copy-txt" id="cell-3">comp_times = jnp.linspace(0.0, max_time, 2000)
|
||||
_, state = state_at_t(comp_times)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1707,7 +1703,7 @@ spikes = snn.spikes_until_t(in_spikes, max_time)</div>
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [13]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-4">
|
||||
@@ -1733,7 +1729,7 @@ spikes = snn.spikes_until_t(in_spikes, max_time)</div>
|
||||
<span class="n">UV</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="n">U</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">V</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">jnp</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">resolution</span> <span class="o">*</span> <span class="n">resolution</span><span class="p">,))],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">dS</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">neuron_model</span><span class="o">.</span><span class="n">vector_field</span><span class="p">(</span><span class="n">UV</span><span class="p">)</span>
|
||||
<span class="n">dS</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">vector_field</span><span class="p">(</span><span class="n">UV</span><span class="p">)</span>
|
||||
<span class="n">dU</span> <span class="o">=</span> <span class="n">dS</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">U</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
|
||||
<span class="n">dV</span> <span class="o">=</span> <span class="n">dS</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">V</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
|
||||
|
||||
@@ -1751,7 +1747,7 @@ spikes = snn.spikes_until_t(in_spikes, max_time)</div>
|
||||
<span class="n">U</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">dU</span><span class="p">,</span> <span class="n">dV</span> <span class="o">=</span> <span class="n">compute_nullclines</span><span class="p">(</span><span class="n">snn</span><span class="p">,</span> <span class="n">u_range</span><span class="p">,</span> <span class="n">v_range</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
|
||||
|
||||
<span class="n">UVs</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="n">Us</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">Vs</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">jnp</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="mi">20</span> <span class="o">*</span> <span class="mi">20</span><span class="p">,))],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">dS</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">neuron_model</span><span class="o">.</span><span class="n">vector_field</span><span class="p">(</span><span class="n">UVs</span><span class="p">)</span>
|
||||
<span class="n">dS</span> <span class="o">=</span> <span class="n">snn</span><span class="o">.</span><span class="n">vector_field</span><span class="p">(</span><span class="n">UVs</span><span class="p">)</span>
|
||||
<span class="n">dUs</span> <span class="o">=</span> <span class="n">dS</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">Us</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
|
||||
<span class="n">dVs</span> <span class="o">=</span> <span class="n">dS</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">Vs</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
|
||||
|
||||
@@ -1790,7 +1786,7 @@ spikes = snn.spikes_until_t(in_spikes, max_time)</div>
|
||||
UV = jnp.stack(
|
||||
[U.reshape(-1), V.reshape(-1), jnp.ones((resolution * resolution,))], axis=1
|
||||
)
|
||||
dS = snn.neuron_model.vector_field(UV)
|
||||
dS = snn.vector_field(UV)
|
||||
dU = dS[:, 0].reshape(U.shape)
|
||||
dV = dS[:, 1].reshape(V.shape)
|
||||
|
||||
@@ -1808,7 +1804,7 @@ def plot_vf(ax, snn, u_range, v_range):
|
||||
U, V, dU, dV = compute_nullclines(snn, u_range, v_range, 200)
|
||||
|
||||
UVs = jnp.stack([Us.reshape(-1), Vs.reshape(-1), jnp.ones((20 * 20,))], axis=1)
|
||||
dS = snn.neuron_model.vector_field(UVs)
|
||||
dS = snn.vector_field(UVs)
|
||||
dUs = dS[:, 0].reshape(Us.shape)
|
||||
dVs = dS[:, 1].reshape(Vs.shape)
|
||||
|
||||
@@ -1844,7 +1840,7 @@ def plot_vf(ax, snn, u_range, v_range):
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [14]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-5">
|
||||
@@ -1859,29 +1855,27 @@ def plot_vf(ax, snn, u_range, v_range):
|
||||
</div>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span><span class="k">with</span> <span class="n">mpl</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">context</span><span class="p">(</span><span class="s2">"boilerplot.ieeetran"</span><span class="p">):</span>
|
||||
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mf">6.9</span><span class="p">,</span> <span class="mf">2.6</span><span class="p">),</span> <span class="n">dpi</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">comp_times</span><span class="p">,</span> <span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s2">"x1"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">comp_times</span><span class="p">,</span> <span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s2">"x2"</span><span class="p">)</span>
|
||||
<span class="p">[</span><span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"g"</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">"--"</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">jnp</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">spikes</span><span class="p">)]</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="s2">"x1"</span><span class="p">,</span> <span class="s2">"x2"</span><span class="p">,</span> <span class="s2">"Spike"</span><span class="p">])</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">comp_times</span><span class="p">,</span> <span class="n">state</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s2">"x1"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">comp_times</span><span class="p">,</span> <span class="n">state</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s2">"x2"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="s2">"x1"</span><span class="p">,</span> <span class="s2">"x2"</span><span class="p">])</span>
|
||||
|
||||
<span class="n">plot_vf</span><span class="p">(</span><span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">snn</span><span class="p">,</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">])</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">plot_vf</span><span class="p">(</span><span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">model</span><span class="p">,</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">])</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">state</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">state</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">"."</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"start"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">"."</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"end"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">"."</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"end"</span><span class="p">)</span>
|
||||
<span class="n">ax</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
<div class="clipboard-copy-txt" id="cell-5">with mpl.style.context("boilerplot.ieeetran"):
|
||||
fig, ax = plt.subplots(1, 2, figsize=(6.9, 2.6), dpi=200)
|
||||
ax[0].plot(comp_times, state[0, :, 0], label="x1")
|
||||
ax[0].plot(comp_times, state[0, :, 1], label="x2")
|
||||
[ax[0].axvline(s, alpha=0.2, color="g", linestyle="--") for s in jnp.unique(spikes)]
|
||||
ax[0].legend(["x1", "x2", "Spike"])
|
||||
ax[0].plot(comp_times, state[:, 0, 0], label="x1")
|
||||
ax[0].plot(comp_times, state[:, 0, 1], label="x2")
|
||||
ax[0].legend(["x1", "x2"])
|
||||
|
||||
plot_vf(ax[1], snn, [-0.2, 0.5], [-0.2, 0.5])
|
||||
ax[1].plot(state[0, :, 0], state[0, :, 1])
|
||||
plot_vf(ax[1], model, [-0.2, 0.5], [-0.2, 0.5])
|
||||
ax[1].plot(state[:, 0, 0], state[:, 0, 1])
|
||||
ax[1].plot(state[0, 0, 0], state[0, 0, 1], ".", label="start")
|
||||
ax[1].plot(state[0, -1, 0], state[0, -1, 1], ".", label="end")
|
||||
ax[1].plot(state[-1, 0, 0], state[-1, 0, 1], ".", label="end")
|
||||
ax[1].legend()
|
||||
plt.show()</div>
|
||||
</div>
|
||||
@@ -1895,80 +1889,7 @@ def plot_vf(ax, snn, u_range, v_range):
|
||||
<div class="jp-OutputArea-child">
|
||||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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qI/H9ddfrwLqKaecoj733HOqVqsNW66goCAw77vvvtvpNgA1MzNTXbt2bdRthd6vVatWRb1fgKrRaNSnnnoq6joefvjhwH599NFHamxsbNR1GAwG9e233+5yHaH8z31nP1999VXYMv7pp5xyStRtdYd/Hddff32H87z99tuB+X73u98Fpn/11VeB6d98841aUlLS4b7/6le/irrudevWdXm/4+Li1AULFkRd/uDBg+qIESO6XMfKlSvbLWu329Vrr7220+UyMjKiLtsdoY/PCy+80OF8t99+e9hrzm/z5s1qfn5+p/t37bXXqk6ns906S0tLA/O8/fbb6oQJE9ot+8ILL6innHJKl49d6L4P5Gs29PEL/Zvj34fOfh5++OFuPktC9J5U9gohhBBCCCHEMaqzvr3l5eXs27cPnU7HiSeeCBCo7o2ct7W1lVWrVgHtq3r379/P7NmzKS0tpaCggOeff54dO3ZQX1/P1q1beeSRRzAajXzwwQfccsstne7vJZdcgslk4t///jdlZWVUVVXx8ccfk5SUBMD8+fO54oorsNlszJw5k3feeYfy8nLq6upYsWIF11xzDQC/+MUveOGFFzrczrZt27jtttuYNm0aH3/8MVVVVZSVlfHXv/41MI9Op+P888/n+eefZ8mSJezevZva2lo2bdrE888/z8iRI6msrOTiiy/Gbrd3er8uu+wydDod//znPykvL6eyspLXX3+doqIivF4vd9xxB59//nmHyzc2NnLNNdeQlZXFG2+8QWVlJeXl5fzjH/8gLS0Np9PJlVdeyZYtWzrdj1Bbtmxh8+bNgevz588PGzCtubmZWbNmdXt9fSn0fuTk5ESd5+qrr6ampoann36aPXv2UFtby+eff864ceMAX0VztIpnRVGYM2cOTzzxBAsXLmTHjh3U1dWxbds2XnnlFaZOnUpzczNXXHFF1H7BP/vZz9i5cydarZaHHnqIdevWUV1dTXV1NWvXruXZZ59tV73qd/311/Pf//4XnU7HnXfeyfLly6mtreXgwYO88cYbjB49mqqqKs4999x+7VUc7fGtr6/njDPOoKysDKPRyCOPPML27dupra1l0aJFfOc73wHgv//9Lz/+8Y87Xf+dd97Jjh07eOSRR9i6dSu1tbWsWLEi8Hprbm4OzBs6kJz/x/86DjXQr9lQzz//PM3NzeTn5wPw85//vN0+33///d1enxC9NthpsxBCCCGEEEKIwdHY2KhqNBoVUG+55Zaw215++WUVUKdNmxaY9sQTT6iAesEFF4TN++WXXwYq2P7973+H3XbBBReogDp27Fi1vr4+6n7Mnz8/rMo1VGgFbEpKilpWVhZ1Ha2trWpGRoYKqFdffbXq9Xqjzvezn/1MBdT09HS1tbU17LbQCr2ZM2eqDocj6jq6o7m5WS0uLo76mETeL5PJpG7ZsqXdPAcOHAjcp7Fjx7a73V+VC6hZWVlqRUVFu3k2bdqkxsTEqIB69tlnd7iOyMpeVQ2vxoys4o3GP29/VvY2NDQEHhONRqOWl5cHbgutvLRYLOrWrVvbLb9///5ABfS999572PvncrnUGTNmqID6i1/8ot3t/grtu++++7DWO2/evMB9+vjjj6PO09DQEKgavu222w5737tT2bts2TJVURQVUEeOHBmYftdddwWWfffdd9st5/F41AsvvDAwz8aNG8NuDz2WAPWjjz7qdF+72k+/gXzNdlTZ6+evhpcqXjHYpLJXCCGEEEIIIY5R/l6g0L5aN7Rfr5//8pIlS8J67IYuG1otXFpayvvvvw/AE088EajAjXTWWWcFem6+8sorHe7vT3/6U/Ly8qLe9tprr1FVVYXJZOKZZ56JWjkJ8PDDD2M2m6murmbBggUdbuuPf/wjBoOhw9u7YrFYuPjiiwH47LPPOp331ltvpaSkpN307OxsHnjgAcA3WNby5cs7XMeDDz5IZmZmu+ljx47lRz/6EQCffPJJvw64paoqqqr2Sy9fm83GZ599xty5c6mqqgLg2muvJTc3N+r8t99+O6NHj243PScnh9NPPx2AlStXHvZ+6HQ6rrrqKiD68+p2uwHfc3c4nnjiCQCuvPJKzjzzzKjzJCQkBI6HV199tcM+1z1RW1vLf/7zHy688MLAen/+858D4PF4An1yzznnHC644IJ2y2s0Gp5++ml0Oh0A//jHPzrc1plnnsnZZ5/dZ/vuN5CvWSGGMgl7hRBCCCGEEOIY5g9nt2zZEjY40eLFi4HwsHfixInExcVRV1cXdoq/P+zNycmhuLg4MP2LL75AVVViYmKYNm0aVqu1wx9/6NxZAHfOOed0eJu/zcH06dPRarUdbsfr9QZCwI62lZKSwgknnNDhtvzcbjcvvfQS559/Pvn5+ZhMprBBmf7whz8AsH379k7X4w+YornkkksCl5cuXdqrdXi93sMa8G0wvfTSS2GPpcVi4YwzzmD16tUAzJ49m2eeeabD5c8666wObxs1ahRAp60Q5s2bLine truncated
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||||
<div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=44e22685">
|
||||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||||
</div>
|
||||
<div class="jp-InputArea jp-Cell-inputArea">
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [6]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-6">
|
||||
<div>
|
||||
<span class="notice" hidden="">Copied!</span>
|
||||
<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewbox="0 0 16 16" width="20">
|
||||
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z" fill="currentColor" fill-rule="evenodd"></path>
|
||||
<path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z" fill="currentColor" fill-rule="evenodd"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</clipboard-copy>
|
||||
</div>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">equinox</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">eqx</span>
|
||||
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">loss_fn</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">spike_times</span><span class="p">,</span> <span class="n">comp_times</span><span class="p">):</span>
|
||||
<span class="n">out_states</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">state_at_t</span><span class="p">(</span><span class="n">spike_times</span><span class="p">,</span> <span class="n">comp_times</span><span class="p">)</span>
|
||||
<span class="n">logits</span> <span class="o">=</span> <span class="n">out_states</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">jnp</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">logits</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">in_spikes</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">asarray</span><span class="p">([[</span><span class="mf">0.01</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.157</span><span class="p">]])</span>
|
||||
<span class="n">comp_times</span> <span class="o">=</span> <span class="n">jnp</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">max_time</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
|
||||
<span class="n">loss</span><span class="p">,</span> <span class="n">gradients</span> <span class="o">=</span> <span class="n">eqx</span><span class="o">.</span><span class="n">filter_value_and_grad</span><span class="p">(</span><span class="n">loss_fn</span><span class="p">)(</span><span class="n">snn</span><span class="p">,</span> <span class="n">in_spikes</span><span class="p">,</span> <span class="n">comp_times</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Loss "</span><span class="p">,</span> <span class="n">loss</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Gradients "</span><span class="p">,</span> <span class="n">gradients</span><span class="o">.</span><span class="n">neuron_model</span><span class="o">.</span><span class="n">weight_u</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
<div class="clipboard-copy-txt" id="cell-6">import equinox as eqx
|
||||
|
||||
|
||||
def loss_fn(model, spike_times, comp_times):
|
||||
out_states = model.state_at_t(spike_times, comp_times)
|
||||
logits = out_states[:, :, 0]
|
||||
|
||||
return jnp.sum(logits)
|
||||
|
||||
|
||||
in_spikes = jnp.asarray([[0.01], [0.157]])
|
||||
comp_times = jnp.linspace(0.0, max_time, 10)
|
||||
|
||||
loss, gradients = eqx.filter_value_and_grad(loss_fn)(snn, in_spikes, comp_times)
|
||||
print("Loss ", loss)
|
||||
print("Gradients ", gradients.neuron_model.weight_u)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jp-Cell-outputWrapper">
|
||||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||||
</div>
|
||||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||||
<div class="jp-OutputArea-child">
|
||||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||||
<pre>Loss 2.78585239490824
|
||||
Gradients [[ 0. ]
|
||||
[-1.81404788]
|
||||
[-1.42144198]]
|
||||
</pre>
|
||||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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WQghhBBCCCFE71BdXa2o1WoFUO6++26P5z777DMFUMaNG+da9sorryiAcsUVV3i0/fnnn10ZbB988IHHc1dccYUCKEOGDFEqKip8jmP+/PkeWa7u3DNgIyMjldzcXJ/baGhoUGJjYxVAueWWWxS73e6z3cMPP6wASkxMjNLQ0ODxnHuG3uTJk5Wmpiaf2+iI2tpaJT093edr0na/jEajsnfvXq82BQUFrn0aMmSI1/POrFxAiY+PVwoLC73a7N69WwkICFAA5eKLL/a7jbaZvYrimY3ZNovXF2fbk5nZW1VV5XpN1Gq1kpeX53rOPfMyKChI2bdvn9f6+fn5rgzoRx555LjH19zcrEyaNEkBlL/+9a9ezzsztB988MHj2u7s2bNd+/TTTz/5bFNVVeXKGr733nuPe+wdyexdu3atolKpFEAZMGCAa/kDDzzgWnfOnDle69lsNuXKK690tdm1a5fH8+7HEqDMmzev3bEea5xO3XnO+svsdXJmw0sWr+huktkrhBBCCCGEEALAVQsUvLN13ev1Ojkfr1692qPGrvu67tnC2dnZ/PDDDwC88sorrgzcti666CJXzc3PP//c73gfeughkpOTfT731VdfUVxcjNFo5M033/SZOQnw1FNPYTKZKCkpYdGiRX77evHFF9Hr9X6fP5agoCCuvvpqABYvXtxu23vuuYeMjAyv5QkJCTz++OOAY7KsDRs2+N3GE088QVxcnNfyIUOG8Ic//AGABQsWnNQJtxRFQVGUk1LL12w2s3jxYqZNm0ZxcTEAt912G0lJST7b33fffQwaNMhreWJiIr/61a8A2LRp03GPQ6vVcvPNNwO+31er1Qo43rvj8corrwBw0003ceGFF/psExoa6joevvjiC791rjujrKyMTz75hCuvvNK13b/85S8A2Gw2V53cSy65hCuuuMJrfbVazRtvvIFWqwXgvffe89vXhRdeyMUXX9xlY3fqznNWiN5Egr1CCCGEEEIIIVycwdm9e/d6TE60atUqwDPYO2LECIKDgykvL/e4xd8Z7E1MTCQ9Pd21fOnSpSiKQkBAAOPGjaOurs7vjzPo3F4A7pJLLvH7nLPMwcSJE9FoNH77sdvtriCgv74iIyMZP368376crFYrH3/8MZdffjkpKSkYjUaPSZleeOEFAA4cONDudpwBJl+uueYa1+M1a9ac0DbsdvtxTfjWkz7++GOP1zIoKIjzzz+fLVu2ADB16lTefPNNv+tfdNFFfp8bOHAgQLulEGbPns31119Penq6ayJA588999wD+H5fncfxCy+8Line truncated
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1983,7 +1904,7 @@ Gradients [[ 0. ]
|
||||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div><div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||||
<div class="CodeMirror cm-s-jupyter">
|
||||
<div class="zeroclipboard-container">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-7">
|
||||
<clipboard-copy ,="" aria-label="Copy to Clipboard" for="cell-6">
|
||||
<div>
|
||||
<span class="notice" hidden="">Copied!</span>
|
||||
<svg aria-hidden="true" class="clipboard-copy-icon" data-view-component="true" height="20" version="1.1" viewbox="0 0 16 16" width="20">
|
||||
@@ -1995,7 +1916,7 @@ Gradients [[ 0. ]
|
||||
</div>
|
||||
<div class="highlight-ipynb hl-python"><pre><span></span>
|
||||
</pre></div>
|
||||
<div class="clipboard-copy-txt" id="cell-7"></div>
|
||||
<div class="clipboard-copy-txt" id="cell-6"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user