Layer of `integrate-and-fire (IF) neurons `_.
| 306 | |
| 307 | |
| 308 | class IFNodes(Nodes): |
| 309 | # language=rst |
| 310 | """ |
| 311 | Layer of `integrate-and-fire (IF) neurons <http://neuronaldynamics.epfl.ch/online/Ch1.S3.html>`_. |
| 312 | """ |
| 313 | |
| 314 | def __init__( |
| 315 | self, |
| 316 | n: Optional[int] = None, |
| 317 | shape: Optional[Iterable[int]] = None, |
| 318 | traces: bool = False, |
| 319 | traces_additive: bool = False, |
| 320 | tc_trace: Union[float, torch.Tensor] = 20.0, |
| 321 | trace_scale: Union[float, torch.Tensor] = 1.0, |
| 322 | sum_input: bool = False, |
| 323 | thresh: Union[float, torch.Tensor] = -52.0, |
| 324 | reset: Union[float, torch.Tensor] = -65.0, |
| 325 | refrac: Union[int, torch.Tensor] = 5, |
| 326 | lbound: float = None, |
| 327 | **kwargs, |
| 328 | ) -> None: |
| 329 | # language=rst |
| 330 | """ |
| 331 | Instantiates a layer of IF neurons. |
| 332 | |
| 333 | :param n: The number of neurons in the layer. |
| 334 | :param shape: The dimensionality of the layer. |
| 335 | :param traces: Whether to record spike traces. |
| 336 | :param traces_additive: Whether to record spike traces additively. |
| 337 | :param tc_trace: Time constant of spike trace decay. |
| 338 | :param trace_scale: Scaling factor for spike trace. |
| 339 | :param sum_input: Whether to sum all inputs. |
| 340 | :param thresh: Spike threshold voltage. |
| 341 | :param reset: Post-spike reset voltage. |
| 342 | :param refrac: Refractory (non-firing) period of the neuron. |
| 343 | :param lbound: Lower bound of the voltage. |
| 344 | """ |
| 345 | super().__init__( |
| 346 | n=n, |
| 347 | shape=shape, |
| 348 | traces=traces, |
| 349 | traces_additive=traces_additive, |
| 350 | tc_trace=tc_trace, |
| 351 | trace_scale=trace_scale, |
| 352 | sum_input=sum_input, |
| 353 | ) |
| 354 | |
| 355 | self.register_buffer( |
| 356 | "reset", torch.tensor(reset, dtype=torch.float) |
| 357 | ) # Post-spike reset voltage. |
| 358 | self.register_buffer( |
| 359 | "thresh", torch.tensor(thresh, dtype=torch.float) |
| 360 | ) # Spike threshold voltage. |
| 361 | self.register_buffer( |
| 362 | "refrac", torch.tensor(refrac) |
| 363 | ) # Post-spike refractory period. |
| 364 | self.register_buffer("v", torch.FloatTensor()) # Neuron voltages. |
| 365 | self.register_buffer( |
no outgoing calls
no test coverage detected