sinabs 3.0.3.dev1__tar.gz → 3.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/.github/workflows/ci-pipeline.yml +15 -8
  2. sinabs-3.0.4/PKG-INFO +106 -0
  3. sinabs-3.0.3.dev1/ChangeLog → sinabs-3.0.4/docs/about/release_notes.md +73 -82
  4. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/utils.rst +1 -0
  5. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/overview.md +3 -0
  6. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/pull_request_template.md +1 -1
  7. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/__init__.py +8 -2
  8. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/discretize.py +0 -1
  9. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/dynapcnn_network.py +2 -3
  10. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/mapping.py +4 -1
  11. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/utils.py +61 -1
  12. sinabs-3.0.4/sinabs/validate_memory_speck.py +144 -0
  13. sinabs-3.0.4/sinabs.egg-info/PKG-INFO +106 -0
  14. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs.egg-info/SOURCES.txt +1 -3
  15. sinabs-3.0.4/sinabs.egg-info/pbr.json +1 -0
  16. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_copy.py +0 -2
  17. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_discover_device.py +0 -1
  18. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_large_net.py +0 -7
  19. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_hooks.py +5 -6
  20. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_alif.py +1 -1
  21. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_iaf.py +2 -2
  22. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_lif.py +3 -3
  23. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_synops_counter.py +1 -1
  24. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_utils.py +49 -0
  25. sinabs-3.0.3.dev1/PKG-INFO +0 -89
  26. sinabs-3.0.3.dev1/Pipfile +0 -17
  27. sinabs-3.0.3.dev1/Pipfile.lock +0 -411
  28. sinabs-3.0.3.dev1/docs/about/release_notes.md +0 -25
  29. sinabs-3.0.3.dev1/sinabs.egg-info/PKG-INFO +0 -89
  30. sinabs-3.0.3.dev1/sinabs.egg-info/pbr.json +0 -1
  31. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/.coveragerc +0 -0
  32. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/.pre-commit-config.yaml +0 -0
  33. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/.readthedocs.yaml +0 -0
  34. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/AUTHORS +0 -0
  35. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/CITATION.cff +0 -0
  36. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/LICENSE +0 -0
  37. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/README.md +0 -0
  38. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/codecov.yml +0 -0
  39. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/Makefile +0 -0
  40. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/dataflow_layers.png +0 -0
  41. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/event_preprocessing_pipeline.png +0 -0
  42. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/memory_constraints.png +0 -0
  43. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/sinabs-dynapcnn-role.png +0 -0
  44. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/speck_dynapcnn.png +0 -0
  45. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/Overview/speck_top_level.png +0 -0
  46. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/devkits_images/dynapcnn_devkit.png +0 -0
  47. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/devkits_images/speck_devkit.png +0 -0
  48. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/devkits_images/speck_module.png +0 -0
  49. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/devkits_images/speck_module_devkit.png +0 -0
  50. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/nmnist_quick_start/dvs_input_flow.png +0 -0
  51. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/nmnist_quick_start/dynapcnn_visualizer.png +0 -0
  52. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/nmnist_quick_start/spike_input_flow.png +0 -0
  53. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/power_monitoring/dynamic_power_samna_graph.png +0 -0
  54. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/power_monitoring/idle_power_samna_graph.png +0 -0
  55. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/power_monitoring/power_plot.png +0 -0
  56. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/sinabs-logo-lowercase-whitebg.png +0 -0
  57. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/sinabs-logo-lowercase.png +0 -0
  58. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/tips_for_training/exceeding_bandwidth.png +0 -0
  59. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/using_readout_layer/handcraft_weights.png +0 -0
  60. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/using_readout_layer/neuron_id_mismatch.png +0 -0
  61. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/using_readout_layer/readout_layer.png +0 -0
  62. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/using_readout_layer/samna_graph.png +0 -0
  63. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/visualize_speck_dvs/samna_graph.png +0 -0
  64. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/visualize_spike_count/samna_graph.png +0 -0
  65. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_static/visualize_spike_count/spike_count.png +0 -0
  66. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_templates/class_activation.rst +0 -0
  67. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/_templates/class_layer.rst +0 -0
  68. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/about/about.rst +0 -0
  69. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/about/contributing.md +0 -0
  70. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/about/differences.md +0 -0
  71. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/about/info.md +0 -0
  72. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/activation.rst +0 -0
  73. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/api.rst +0 -0
  74. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/from_torch.rst +0 -0
  75. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/hooks.rst +0 -0
  76. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/layers.rst +0 -0
  77. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/network.rst +0 -0
  78. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/nir.rst +0 -0
  79. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/api/synopcounter.rst +0 -0
  80. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/conf.py +0 -0
  81. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/contact.md +0 -0
  82. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/README.rst +0 -0
  83. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/README.rst +0 -0
  84. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/plot_alif.py +0 -0
  85. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/plot_exp_leaky.py +0 -0
  86. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/plot_iaf.py +0 -0
  87. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/plot_lif.py +0 -0
  88. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/layers/utils.py +0 -0
  89. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/spike_fns/README.rst +0 -0
  90. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/spike_fns/plot_maxspike.py +0 -0
  91. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/spike_fns/plot_multispike.py +0 -0
  92. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/spike_fns/plot_singlespike.py +0 -0
  93. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/README.rst +0 -0
  94. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/plot_gaussian.py +0 -0
  95. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/plot_heaviside.py +0 -0
  96. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/plot_multigaussian.py +0 -0
  97. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/plot_periodicexponential.py +0 -0
  98. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/gallery/surrogate_grad_fns/plot_singleexponential.py +0 -0
  99. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/fundamentals.rst +0 -0
  100. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/getting_started.rst +0 -0
  101. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/iaf_neuron_model.ipynb +0 -0
  102. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/install.rst +0 -0
  103. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/python_pyenv_pipenv.rst +0 -0
  104. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/getting_started/quickstart.ipynb +0 -0
  105. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/how_tos/activations.ipynb +0 -0
  106. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/how_tos/custom_hooks.ipynb +0 -0
  107. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/how_tos/how_tos.rst +0 -0
  108. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/how_tos/synops_loss_ann.ipynb +0 -0
  109. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/how_tos/synops_loss_snn.ipynb +0 -0
  110. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/index.md +0 -0
  111. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/make.bat +0 -0
  112. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/plugins/plugins.rst +0 -0
  113. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/requirements.txt +0 -0
  114. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/advanced_concepts.rst +0 -0
  115. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/chip_factory.rst +0 -0
  116. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/config_builder.rst +0 -0
  117. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/crop2d.rst +0 -0
  118. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/discretize.rst +0 -0
  119. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/dvs_layer.rst +0 -0
  120. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/dynapcnn.rst +0 -0
  121. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/dynapcnn_layer.rst +0 -0
  122. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/dynapcnn_network.rst +0 -0
  123. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/dynapcnn_visualizer.rst +0 -0
  124. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/exceptions.rst +0 -0
  125. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/flipdims.rst +0 -0
  126. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/io.rst +0 -0
  127. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/mapping.rst +0 -0
  128. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/specksim.rst +0 -0
  129. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/api/dynapcnn/utils.rst +0 -0
  130. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/dangers.md +0 -0
  131. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/add_new_device.md +0 -0
  132. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/available_algorithmic_operation.md +0 -0
  133. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/available_network_arch.md +0 -0
  134. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/chip_errata.md +0 -0
  135. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/device_management.md +0 -0
  136. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/index.rst +0 -0
  137. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/output_monitoring.md +0 -0
  138. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/save_hardware_config_as_binary.md +0 -0
  139. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/faqs/tips_for_training.md +0 -0
  140. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/index.rst +0 -0
  141. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/leak_neuron.ipynb +0 -0
  142. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/nmnist_quick_start.ipynb +0 -0
  143. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/play_with_speck_dvs.ipynb +0 -0
  144. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/power_monitoring.ipynb +0 -0
  145. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/using_readout_layer.ipynb +0 -0
  146. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/visualize_speck_dvs_input.ipynb +0 -0
  147. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/notebooks/visualize_spike_count.ipynb +0 -0
  148. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/specksim.md +0 -0
  149. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/the_basics.md +0 -0
  150. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/tutorials.rst +0 -0
  151. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/speck/visualizer.md +0 -0
  152. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/LeNet_5_EngChinese.ipynb +0 -0
  153. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/bptt.ipynb +0 -0
  154. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/nir_to_speck.ipynb +0 -0
  155. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/nmnist.ipynb +0 -0
  156. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/scnn_mnist.nir +0 -0
  157. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/tutorials.rst +0 -0
  158. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/weight_scaling.md +0 -0
  159. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/docs/tutorials/weight_transfer_mnist.ipynb +0 -0
  160. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/mnist/dynapcnn_network.py +0 -0
  161. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/mnist/mnist_params.pt +0 -0
  162. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/mnist/specksim_network.py +0 -0
  163. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/dvs_gesture_params.pt +0 -0
  164. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/gesture_viz.py +0 -0
  165. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/01_armroll.png +0 -0
  166. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/02_handclap.png +0 -0
  167. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/03_lefthandclockwise.png +0 -0
  168. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/04_lefthandcounterclockwise.png +0 -0
  169. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/05_lefthandwave.png +0 -0
  170. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/06_righthandwave.png +0 -0
  171. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/07_righthandclockwise.png +0 -0
  172. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/08_righthandcounterclockwise.png +0 -0
  173. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/09_airdrums.png +0 -0
  174. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/10_airguitar.png +0 -0
  175. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/examples/visualizer/icons/11_other.png +0 -0
  176. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/jupyterlab-requirements.txt +0 -0
  177. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/requirements.txt +0 -0
  178. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/setup.cfg +0 -0
  179. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/setup.py +0 -0
  180. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/activation/__init__.py +0 -0
  181. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/activation/quantize.py +0 -0
  182. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/activation/reset_mechanism.py +0 -0
  183. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/activation/spike_generation.py +0 -0
  184. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/activation/surrogate_gradient_fn.py +0 -0
  185. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/__init__.py +0 -0
  186. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/__init__.py +0 -0
  187. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/chip_factory.py +0 -0
  188. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/chips/__init__.py +0 -0
  189. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/chips/dynapcnn.py +0 -0
  190. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/chips/speck2e.py +0 -0
  191. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/chips/speck2f.py +0 -0
  192. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/config_builder.py +0 -0
  193. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/crop2d.py +0 -0
  194. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/dvs_layer.py +0 -0
  195. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/dynapcnn_layer.py +0 -0
  196. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/dynapcnn_visualizer.py +0 -0
  197. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/exceptions.py +0 -0
  198. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/flipdims.py +0 -0
  199. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/io.py +0 -0
  200. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/specksim.py +0 -0
  201. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/backend/dynapcnn/utils.py +0 -0
  202. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/cnnutils.py +0 -0
  203. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/conversion.py +0 -0
  204. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/from_torch.py +0 -0
  205. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/hooks.py +0 -0
  206. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/__init__.py +0 -0
  207. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/alif.py +0 -0
  208. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/channel_shift.py +0 -0
  209. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/crop2d.py +0 -0
  210. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/exp_leak.py +0 -0
  211. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/functional/__init__.py +0 -0
  212. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/functional/alif.py +0 -0
  213. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/functional/lif.py +0 -0
  214. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/iaf.py +0 -0
  215. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/lif.py +0 -0
  216. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/merge.py +0 -0
  217. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/neuromorphic_relu.py +0 -0
  218. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/pool2d.py +0 -0
  219. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/quantize.py +0 -0
  220. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/reshape.py +0 -0
  221. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/stateful_layer.py +0 -0
  222. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/layers/to_spike.py +0 -0
  223. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/network.py +0 -0
  224. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/nir.py +0 -0
  225. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs/synopcounter.py +0 -0
  226. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs.egg-info/dependency_links.txt +0 -0
  227. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs.egg-info/not-zip-safe +0 -0
  228. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs.egg-info/requires.txt +0 -0
  229. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/sinabs.egg-info/top_level.txt +0 -0
  230. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/conv_input.pth +0 -0
  231. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/conv_layer_synops.pth +0 -0
  232. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/firing_rates.pth +0 -0
  233. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/firing_rates_per_neuron.pth +0 -0
  234. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/input_diffs.pth +0 -0
  235. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/inputs_and_results/hooks/model_synops.pth +0 -0
  236. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/mnist_params.pt +0 -0
  237. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/models/README.txt +0 -0
  238. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/models/synop_hook_model.pth +0 -0
  239. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/requirements.txt +0 -0
  240. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_activations.py +0 -0
  241. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_batch_mismatch.py +0 -0
  242. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_batch_size_update.py +0 -0
  243. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_conversion.py +0 -0
  244. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/custom_jit_filters.py +0 -0
  245. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/hw_utils.py +0 -0
  246. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_auto_mapping.py +0 -0
  247. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_compatible_layer_build.py +0 -0
  248. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_config_making.py +0 -0
  249. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_device_movement.py +0 -0
  250. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_device_name_mapping.py +0 -0
  251. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_discretized.py +0 -0
  252. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_doorbell.py +0 -0
  253. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_dvs_input.py +0 -0
  254. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_dvs_layer.py +0 -0
  255. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_event_conversion.py +0 -0
  256. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_individual_cases.py +0 -0
  257. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_learning.py +0 -0
  258. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_monitoring.py +0 -0
  259. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_neuron_leak.py +0 -0
  260. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_single_neuron_hardware.py +0 -0
  261. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_speck2e.py +0 -0
  262. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_dynapcnn/test_visualizer.py +0 -0
  263. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_from_model.py +0 -0
  264. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_channelshift.py +0 -0
  265. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_crop2d.py +0 -0
  266. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_exp_leak.py +0 -0
  267. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_img2spk.py +0 -0
  268. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_maxpooling.py +0 -0
  269. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_merge.py +0 -0
  270. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_neuromorphic_relu.py +0 -0
  271. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_reshaping.py +0 -0
  272. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_sig2spk.py +0 -0
  273. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_layers/test_stateful_layer.py +0 -0
  274. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_network_class.py +0 -0
  275. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_nir.py +0 -0
  276. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_normalize_weights.py +0 -0
  277. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_onnx.py +0 -0
  278. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_quantize.py +0 -0
  279. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_specksim/test_specksim_bindings.py +0 -0
  280. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_specksim/test_specksim_conversion.py +0 -0
  281. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_specksim/test_specksim_network.py +0 -0
  282. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/test_surrogate_gradients.py +0 -0
  283. {sinabs-3.0.3.dev1 → sinabs-3.0.4}/tests/weights/README.txt +0 -0
@@ -16,8 +16,15 @@ jobs:
16
16
  fail-fast: false
17
17
  matrix:
18
18
  os: [ubuntu-latest]
19
- python-version: ["3.8","3.10"]
20
- torch-version: ["2.0.0",]
19
+ python-version: ["3.10", "3.11", "3.12"]
20
+ torch-version: ["2.0.0", "2.8.0"]
21
+ exclude:
22
+ - python-version: "3.10"
23
+ torch-version: "2.8.0"
24
+ - python-version: "3.11"
25
+ torch-version: "2.8.0"
26
+ - python-version: "3.12"
27
+ torch-version: "2.0.0"
21
28
  steps:
22
29
  - uses: actions/checkout@v4
23
30
  - name: Set up Python ${{ matrix.python-version }}
@@ -41,10 +48,10 @@ jobs:
41
48
  runs-on: ubuntu-latest
42
49
  steps:
43
50
  - uses: actions/checkout@v4
44
- - name: Setup Python 3.8
51
+ - name: Setup Python 3.12
45
52
  uses: actions/setup-python@v5
46
53
  with:
47
- python-version: 3.8
54
+ python-version: 3.12
48
55
  - name: Generate coverage report
49
56
  run: |
50
57
  sudo apt-get update && sudo apt-get -y install libglu1-mesa
@@ -63,10 +70,10 @@ jobs:
63
70
  - uses: actions/checkout@v4
64
71
  with:
65
72
  fetch-depth: 0
66
- - name: Setup Python 3.10
73
+ - name: Setup Python 3.12
67
74
  uses: actions/setup-python@v5
68
75
  with:
69
- python-version: "3.10.18"
76
+ python-version: "3.12"
70
77
  - name: Install dependencies
71
78
  run: |
72
79
  sudo apt-get update && sudo apt-get -y install libglu1-mesa
@@ -85,10 +92,10 @@ jobs:
85
92
  - uses: actions/checkout@v4
86
93
  with:
87
94
  fetch-depth: 0
88
- - name: Set up Python 3.8
95
+ - name: Set up Python 3.12
89
96
  uses: actions/setup-python@v5
90
97
  with:
91
- python-version: 3.8
98
+ python-version: 3.12
92
99
  - name: Install build packages
93
100
  run: pip install wheel pbr setuptools
94
101
  - name: Build a binary wheel and a source tarball
sinabs-3.0.4/PKG-INFO ADDED
@@ -0,0 +1,106 @@
1
+ Metadata-Version: 2.4
2
+ Name: sinabs
3
+ Version: 3.0.4
4
+ Summary: SynSense Spiking Neural Network simulator for deep neural networks (DNNs).
5
+ Author: SynSense (formerly AiCTX)
6
+ Author-email: support@synsense.ai
7
+ License: Apache 2.0
8
+ Project-URL: Source code, https://github.com/synsense/sinabs
9
+ Project-URL: Documentation, https://readthedocs.org/projects/sinabs/
10
+ Keywords: spiking neural networks,machine learning,SNN,DYNAPCNN,Speck
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ License-File: AUTHORS
20
+ Requires-Dist: pbr
21
+ Requires-Dist: numpy
22
+ Requires-Dist: torch>=1.8
23
+ Requires-Dist: nir<=1.0.4
24
+ Requires-Dist: nirtorch
25
+ Requires-Dist: samna>=0.33
26
+ Dynamic: author
27
+ Dynamic: author-email
28
+ Dynamic: classifier
29
+ Dynamic: description
30
+ Dynamic: description-content-type
31
+ Dynamic: keywords
32
+ Dynamic: license
33
+ Dynamic: license-file
34
+ Dynamic: project-url
35
+ Dynamic: requires-dist
36
+ Dynamic: summary
37
+
38
+ [![PyPI - Package](https://img.shields.io/pypi/v/sinabs.svg)](https://pypi.org/project/sinabs/)
39
+ [![Documentation Status](https://readthedocs.org/projects/sinabs/badge/?version=main)](https://sinabs.readthedocs.io)
40
+ [![codecov](https://codecov.io/gh/synsense/sinabs/branch/develop/graph/badge.svg?token=JPGAW4SH1W)](https://codecov.io/gh/synsense/sinabs)
41
+ [![PyPI - Downloads](https://img.shields.io/pypi/dd/sinabs)](https://pepy.tech/project/sinabs)
42
+ [![Discord](https://img.shields.io/discord/852094154188259338)](https://discord.gg/V6FHBZURkg)
43
+ ![sinabs](docs/_static/sinabs-logo-lowercase-whitebg.png)
44
+
45
+ Sinabs (Sinabs Is Not A Brain Simulator) is a python library for the development and implementation of Spiking Convolutional Neural Networks (SCNNs).
46
+ The library implements several layers that are `spiking` equivalents of CNN layers.
47
+ In addition it provides support to import CNN models implemented in torch conveniently to test their `spiking` equivalent implementation.
48
+ This project is managed by SynSense (former aiCTX AG).
49
+
50
+ The `sinabs-dynapcnn` was incorporated to this project, and it enables porting sinabs models to chips and dev-kits with DYNAP-CNN technology.
51
+
52
+
53
+ Installation
54
+ ------------
55
+ For the stable release on the main branch:
56
+ ```
57
+ pip install sinabs
58
+ ```
59
+ or (thanks to [@Tobias-Fischer](https://github.com/Tobias-Fischer))
60
+ ```
61
+ conda install -c conda-forge sinabs
62
+ ```
63
+
64
+ For the latest pre-release on the develop branch that passed the tests:
65
+ ```
66
+ pip install sinabs --pre
67
+ ```
68
+ The package has been tested on the following configurations
69
+ [![](http://github-actions.40ants.com/synsense/sinabs/matrix.svg?only=ci.multitest)](https://github.com/synsense/sinabs)
70
+
71
+
72
+ Documentation and Examples
73
+ --------------------------
74
+ [https://sinabs.readthedocs.io/](https://sinabs.readthedocs.io/)
75
+
76
+ Questions? Feedback?
77
+ --------------------
78
+ Please join us on the [#sinabs Discord channel](https://discord.gg/V6FHBZURkg)!
79
+
80
+ - If you would like to report bugs or push any changes, you can do this on our [github repository](https://github.com/synsense/sinabs/issues).
81
+
82
+ License
83
+ -------
84
+ Sinabs is published under Apache v2.0. See the LICENSE file for details.
85
+
86
+
87
+ Contributing to Sinabs
88
+ ------------------------
89
+ Checkout the [contributing](https://sinabs.readthedocs.io/en/develop/about/contributing.html) page for more info.
90
+
91
+
92
+ Citation
93
+ --------
94
+
95
+ In case you find this software library useful for your work please consider citing it as follows:
96
+
97
+ ```
98
+ @software{sinabs,
99
+ author = {Sheik, Sadique and Lenz, Gregor and Bauer, Felix and Kuepelioglu, Nogay },
100
+ doi = {10.5281/zenodo.8385545},
101
+ license = {Apache-2.0},
102
+ title = {{SINABS: A simple Pytorch based SNN library specialised for Speck}},
103
+ url = {https://github.com/synsense/sinabs}
104
+ }
105
+ ```
106
+
@@ -1,34 +1,40 @@
1
- CHANGES
2
- =======
1
+ # Release notes
3
2
 
4
- v3.0.2
5
- ------
3
+ ## v3.0.4 (08/09/2025)
4
+
5
+ * Update sinabs code to be consistent with Python 3.12 and Numpy > 2.0.
6
+ * Merge Release Notes and Changelog.
7
+ * Remove Changelog file as it was not being used.
8
+ * Remove Pipfile and Pipfile.lock files as they were not being used anymore.
9
+ * Specific/minimal library versions can be found in requirements.txt
10
+
11
+ ## v3.0.3 (22/07/2025)
12
+
13
+ * Add function in utils to help identify issues with memory constraints when mapping a network on Speck.
14
+ (https://sinabs.readthedocs.io/v3.0.3/api/utils.html#sinabs.utils.validate_memory_mapping_speck)
15
+
16
+ ## v3.0.2 (10/06/2025)
6
17
 
7
18
  * Update contact email. Now, any support requests and information about contributors license agreement needs to be sent to `support@synsense.ai`.
8
19
 
9
- v3.0.1
10
- ------
20
+ ## v3.0.1 (06/06/2025)
11
21
 
12
22
  * Update the release of the project when `main` branch is updated instead of `develop`
13
23
 
14
- v3.0.0
15
- ------
24
+ ## v3.0.0 (06/06/2025)
16
25
 
17
26
  * Remove support for older boards following update on Samna 0.46.0
18
27
 
19
- v2.0.3
20
- ------
28
+ ## v2.0.3 (18/03/2025)
21
29
 
22
30
  * Update Sinabs license to Apache 2.0
23
31
 
24
- v2.0.2
25
- ------
32
+ ## v2.0.2 (23/01/2025)
26
33
 
27
34
  * Spike count plot in 'DynapcnnVisualizer' is optional
28
35
  * `DynapcnnVisualizer` allows custom JIT filters to make readout predictions
29
36
 
30
- v2.0.0
31
- ------
37
+ ## v2.0.0 (14/03/2024)
32
38
 
33
39
  * Fix typos and broken links in the documentation
34
40
  * Move instructions for adding new device to FAQ
@@ -61,8 +67,7 @@ v2.0.0
61
67
  * Remove easy-install command
62
68
  * Add graphviz dependency
63
69
 
64
- v1.2.10
65
- -------
70
+ ## v1.2.10 (07/12/2023)
66
71
 
67
72
  * Update codecov.yml
68
73
  * Update ci-pipeline.yml
@@ -92,8 +97,7 @@ v1.2.10
92
97
  * set default value to 1 for stride in SumPool2d
93
98
  * updated nir to support Flatten and SumPool2d
94
99
 
95
- v1.2.9
96
- ------
100
+ ## v1.2.9 (31/08/2023)
97
101
 
98
102
  * Add unit test to ensure that subract value of MembraneSubtract can be a tensor
99
103
  * Correct test whether subtract value is None
@@ -160,8 +164,7 @@ v1.2.9
160
164
  * add nir IF support
161
165
  * updated Sinabs to latest NIR
162
166
 
163
- 1.2.8
164
- -----
167
+ ## 1.2.8 (10/07/2023)
165
168
 
166
169
  * add nir and nirtorch to requirements
167
170
  * implemented sequential for from\_nir
@@ -176,8 +179,7 @@ v1.2.9
176
179
  * wip conversion from nir to sinabs
177
180
  * Fix issue #99, add unit test
178
181
 
179
- v1.2.6
180
- ------
182
+ ## v1.2.6 (30/06/2023)
181
183
 
182
184
  * change nmnist tutorial title
183
185
  * added NMNIST tutorial
@@ -274,15 +276,13 @@ v1.2.6
274
276
  * try another way install graphviz
275
277
  * fix CI pipeline failure
276
278
 
277
- v1.2.5
278
- ------
279
+ ## v1.2.5 (24/04/2023)
279
280
 
280
281
  * make contact title bold like the others
281
282
  * add contact section to documentation
282
283
  * checked tests pass on mac
283
284
 
284
- v1.2.4
285
- ------
285
+ ## v1.2.4 (05/04/2023)
286
286
 
287
287
  * replace torch.inf with math.inf
288
288
  * ignore data and cache directories
@@ -293,14 +293,12 @@ v1.2.4
293
293
  * added update keyring to gitlab-ci
294
294
  * renamed test
295
295
 
296
- v1.2.3
297
- ------
296
+ ## v1.2.3
298
297
 
299
298
  * fix synops/s for Linear layers when no Squeeze layers are used in network
300
299
  * update pre-commit config
301
300
 
302
- v1.2.2
303
- ------
301
+ ## v1.2.2 (17/03/2023)
304
302
 
305
303
  * expand saved input in spiking layers for analyzer
306
304
  * derive spiking layer stats from single saved output tensor and also save input
@@ -312,16 +310,16 @@ v1.2.2
312
310
  * update ChangeLog
313
311
  * add speck2f module devkit support and remove speck2f characterization board support
314
312
 
315
- v1.2.1
316
- ------
313
+ ## v1.2.1 (23/02/2023)
317
314
 
318
315
  * distinguish between accumulated and mini batch stats for firing rates
319
316
  * distinguish between accumulated and mini batch statistics in SNNAnalyzer for synops
320
317
  * only compute connection\_map once in SynopsHook
321
318
  * detach synops accumulation inbetween mini batches for SNNAnalyzer
322
319
 
323
- v1.2.0
324
- ------
320
+ ## v1.2.0 (15/02/2023)
321
+
322
+ Included the SNNAnalyzer module to collect model statistics such as number of synops or neurons automatically.
325
323
 
326
324
  * update release notes
327
325
  * make sure deconvolve outputs same size as conv input in SNNAnalyzer
@@ -398,8 +396,7 @@ v1.2.0
398
396
  * update synops\_loss\_ann notebook
399
397
  * use consistent American spelling of analyzer
400
398
 
401
- v1.1.6
402
- ------
399
+ ## v1.1.6 (08/12/2022)
403
400
 
404
401
  * make min\_vem and spike\_thresholds parameters do that they're included in state\_dict
405
402
  * Detach recordings before plotting
@@ -443,8 +440,7 @@ v1.1.6
443
440
  * Do not sleep while resetting the states when the function is called. Stop the input graph, while the neuron values are written. Sleep for a bit and then start the graph again
444
441
  * Fix to the bug
445
442
 
446
- v1.1.5
447
- ------
443
+ ## v1.1.5 (25/11/2022)
448
444
 
449
445
  * Fix backward pass for MaxSpike
450
446
  * update ChangeLog after add support of speck2e
@@ -472,8 +468,7 @@ v1.1.5
472
468
  * Requirements for samna version updated
473
469
  * Change to get the same functionality in 'to()' method in samna Version: 0.21.2.0
474
470
 
475
- v1.1.4
476
- ------
471
+ ## v1.1.4 (18/11/2022)
477
472
 
478
473
  * autoformat all docstrings using docformatter
479
474
  * fix bug where added\_spike\_output is a ReLU
@@ -482,14 +477,12 @@ v1.1.4
482
477
  * Update ci-pipeline.yml
483
478
  * Update ci-pipeline.yml
484
479
 
485
- v1.1.3
486
- ------
480
+ ## v1.1.3 (17/11/2022)
487
481
 
488
482
  * Update ci-pipeline.yml
489
483
  * add generic reset\_states and zero\_grad utility functions
490
484
 
491
- v1.1.2
492
- ------
485
+ ## v1.1.2 (16/11/2022)
493
486
 
494
487
  * make sure that add\_spike\_output doesn't add spiking layer in original ANN
495
488
  * removed unused imports
@@ -500,8 +493,7 @@ v1.1.2
500
493
  * add documentation about how to release a new Sinabs version
501
494
  * Hotfix new arg\_dict
502
495
 
503
- v1.1.1
504
- ------
496
+ ## v1.1.1 (02/11/2022)
505
497
 
506
498
  * add arg\_dict property to StatefulLayer
507
499
  * Update ci-pipeline.yml
@@ -513,16 +505,14 @@ v1.1.1
513
505
  * add a replace\_module function that will replace specific layer according to a mapper\_fn. Reworked from\_torch
514
506
  * requirement bumped to 1.0.7
515
507
 
516
- v1.0.7
517
- ------
508
+ ## v1.0.7 (27/10/2022)
518
509
 
519
510
  * check for pytorch version under test and either call testing.assert\_close or assert\_allclose depending on the version
520
511
  * using torch.equal instead of np equal
521
512
  * tests fixed
522
513
  * fixing test
523
514
 
524
- v1.0.6
525
- ------
515
+ ## v1.0.6
526
516
 
527
517
  * added zero\_grad to network
528
518
  * wip enable learning
@@ -532,8 +522,7 @@ v1.0.6
532
522
  * added zero\_grad function
533
523
  * updates to latest sinabs requirements
534
524
 
535
- v1.0.5
536
- ------
525
+ ## v1.0.5 (21/10/2022)
537
526
 
538
527
  * add utils functions to documentation
539
528
  * update tutorial notebooks to use batch\_size or num\_timesteps for from\_model
@@ -542,8 +531,7 @@ v1.0.5
542
531
  * exclude samna log files
543
532
  * get rid of test warnings: Dropout instead of Dropout2d, no autograd fn instantiation, torch.arange
544
533
 
545
- v1.0.4
546
- ------
534
+ ## v1.0.4 (05/10/2022)
547
535
 
548
536
  * more docstring updates for layers plus cross-references in API documentation
549
537
  * add shape and attributes to layer docstrings
@@ -553,27 +541,24 @@ v1.0.4
553
541
  * add Repeat auxiliary layer
554
542
  * Update ci-pipeline.yml
555
543
 
556
- v1.0.3
557
- ------
544
+ ## v1.0.3 (28/09/2022)
558
545
 
559
546
  * exclude generated authors / changelog files
560
547
  * Removed pandas dependency. Adjusted tests accordingly
561
548
  * add speck2e config builder
562
549
 
563
- v1.0.2
564
- ------
550
+ ## v1.0.2 (14/09/2022)
565
551
 
566
552
  * additional minor docstring update
567
553
  * update some more docstrings for activation modules
568
554
  * doc strings updated
569
555
 
570
- v1.0.1
571
- ------
556
+ ## v1.0.1 (26/08/2022)
572
557
 
558
+ Mostly making v0.3.x stable, with a revamped documentation that includes a gallery and how-tos!
573
559
  * add release notes for v1.0.1
574
560
 
575
- v1.0.0
576
- ------
561
+ ## v1.0.0
577
562
 
578
563
  * add complete tutorial notebooks since their execution is deactivated on the docs server
579
564
  * exclude some notebooks from automatic documentation build because they take very long
@@ -585,8 +570,7 @@ v1.0.0
585
570
  * first version of Sinabs gallery instead of tutorial notebook that plots neuron models
586
571
  * added pre-commit hooks for black
587
572
 
588
- v0.3.5
589
- ------
573
+ ## v0.3.5 (18/08/2022)
590
574
 
591
575
  * Bump stable PyTorch version from 1.10 to 1.12 in CI pipeline
592
576
  * Fix bug in tutorial due to API update
@@ -595,8 +579,7 @@ v0.3.5
595
579
  * Fix handling of non-scalar tau\_syn
596
580
  * Prevent non-integer arguments to Squeeze class from breaking code
597
581
 
598
- v0.3.4
599
- ------
582
+ ## v0.3.4 (21/06/2022)
600
583
 
601
584
  * Fix critical bug in LIF synaptic forward dynamics
602
585
  * re-naming from BufferSinkNode to BasicSinkNode
@@ -640,8 +623,7 @@ v0.3.4
640
623
  * Remove tau\_mem as a parameter from IAF
641
624
  * from\_model takes same parameters as IAF
642
625
 
643
- v0.3.3
644
- ------
626
+ ## v0.3.3 (20/04/2022)
645
627
 
646
628
  * update SNN synops tutorial
647
629
  * make SNNSynopsCounter work as a loss function
@@ -653,21 +635,28 @@ v0.3.3
653
635
  * moved parse\_device\_string into utils. No need of samna to run other modules
654
636
  * added speck2b tiny support
655
637
 
656
- v0.3.2
657
- ------
638
+ ## v0.3.2 (314/03/2022)
658
639
 
659
640
  * Rename remaining threshold arguments to spike\_threshold for more consistency
660
641
  * Update .gitlab-ci.yml
661
642
  * Update jupyterlab-requirements.txt
662
643
 
663
- v0.3.1
664
- ------
644
+ ## v0.3.1 (23/03/2022)
665
645
 
666
646
  * Update ci-pipeline.yml
667
647
  * Update requirements.txt
668
648
 
669
- v0.3.0
670
- ------
649
+ ## v0.3.0 (22/03/2022)
650
+
651
+ This is a major overhaul which rewrites a large part of the package.
652
+
653
+ * Addition of leaky models such as Leaky Integrate and Fire (LIF), Exponential Leaky (ExpLeak) and Adaptive LIF (ALIF).
654
+ * Activation module: from sinabs.activation you'll now be able to pick and choose different spike generation, reset mechanism and surrogate gradient functions. You can pass them to the neuron model (LIF, IAF, ...) of your liking if you want to alter the default behavior.
655
+ * new documentation on readthedocs
656
+ * SpikingLayer has been renamed to IAF (Integrate and Fire).
657
+ * State variable names changed and new ones have been added: 'state' is now called 'v_mem' and 'i_syn' is added for neuron layers that use tau_syn.
658
+ * New neuron features: support for recurrent connections, recording internal states, normalising inputs by taus, initialisation with shape and more.
659
+ * We moved our repo to Github and changed the CI pipeline to Github actions.
671
660
 
672
661
  * add basic parameter printing in \_\_repr\_\_
673
662
  * Update ci-pipeline.yml
@@ -786,8 +775,13 @@ v0.3.0
786
775
  * tau\_mem for LIF neurons is now always calculated on CPU and transferred to original device, for better numerical comparison with SLAYER LIF layer
787
776
  * only zero gradients if state is initialised
788
777
 
789
- v0.2.1
790
- ------
778
+ ## v0.2.1 (22/02/2022)
779
+
780
+ * TorchLayer renamed to Layer
781
+ * Added a depricated class TorchLayer with warning
782
+ * Added some new layer types
783
+ * BPTT enabled spike activation layer
784
+ * SpikingTemporalConv1dLayer
791
785
 
792
786
  * added pip install
793
787
  * added requirements
@@ -1139,8 +1133,7 @@ v0.2.1
1139
1133
  * fixed docs, removed commented-out areas
1140
1134
  * removed dependency on samna for validation, and on SpikingLayerBPTT
1141
1135
 
1142
- v0.2.0
1143
- ------
1136
+ ## v0.2.0
1144
1137
 
1145
1138
  * Threshold gradient scaled by threshold (Bug fix)
1146
1139
  * updated docs, removed exclude\_negative\_spikes from fromtorch (no effect)
@@ -1319,8 +1312,7 @@ v0.2.0
1319
1312
  * Depricated TorchLayer added
1320
1313
  * merged master to bptt\_devel
1321
1314
 
1322
- v0.1.dev7
1323
- ---------
1315
+ ## v0.1.dev7 (09/04/2020)
1324
1316
 
1325
1317
  * install m2r with hotfix for new version of sphinx
1326
1318
  * changed membrane\_subtract and reset defaults, some cleanup
@@ -1499,8 +1491,7 @@ v0.1.dev7
1499
1491
  * merged
1500
1492
  * fixed typos in readme
1501
1493
 
1502
- v0.1.0
1503
- ------
1494
+ ## v0.1.0
1504
1495
 
1505
1496
  * fixed version number
1506
1497
  * removed contrib branch
@@ -9,3 +9,4 @@ utils
9
9
  .. autofunction:: sinabs.utils.get_network_activations
10
10
  .. autofunction:: sinabs.utils.normalize_weights
11
11
  .. autofunction:: sinabs.utils.set_batch_size
12
+ .. autofunction:: sinabs.utils.validate_memory_mapping_speck
@@ -151,6 +151,9 @@ The actual Neuron memory entries is then:
151
151
 
152
152
  Where 128Ki neuron exceeds any available neuron memory contrains among 9 layers, thus this layer **CANNOT** be deployed on the chip
153
153
 
154
+ If neuron and kernel memories exceeds the hardware resources, when trying to map the layer a "No valid mapping" error will be thrown.
155
+ When working with Speck and Conv2D layers, we offer a tool to help you to validate if the layer can be mapped: `utils.validate_memory_mapping_speck()`.
156
+
154
157
  #### Leak operation
155
158
 
156
159
  Each layer includes a leak generation block, which will update all the configured neuron states with provided leak values with a clock reference signal. Checkout the [tutorial](notebooks/leak_neuron) on how to use leak feature.
@@ -2,7 +2,7 @@
2
2
  - [ ] Tests for the changes have been added (for bug fixes/features)
3
3
  - [ ] Docs have been added / updated (for bug fixes / features)
4
4
  - [ ] I have performed a self-review of my code
5
- - [ ] Will this be part of a product update? If yes, please write one line about this on the CHANGELOG.md
5
+ - [ ] Will this be part of a product update? If yes, please write one line about this on docs/about/release_notes.md
6
6
 
7
7
 
8
8
  * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...)
@@ -2,9 +2,15 @@ from pbr.version import VersionInfo
2
2
 
3
3
  __version__ = VersionInfo("sinabs").release_string()
4
4
 
5
- from . import conversion, utils
5
+ from . import conversion, utils, validate_memory_speck
6
6
  from .from_torch import from_model
7
7
  from .network import Network
8
8
  from .nir import from_nir, to_nir
9
9
  from .synopcounter import SNNAnalyzer, SynOpCounter
10
- from .utils import reset_states, set_batch_size, zero_grad
10
+ from .utils import (
11
+ reset_states,
12
+ set_batch_size,
13
+ zero_grad,
14
+ validate_memory_mapping_speck,
15
+ )
16
+ from .validate_memory_speck import ValidateMapping
@@ -287,7 +287,6 @@ def _discretize_conv_spk_(
287
287
  conv_bias = torch.zeros(conv_lyr.out_channels)
288
288
 
289
289
  if spike_lyr is None:
290
-
291
290
  discr_spk = False
292
291
 
293
292
  if spk_thr is None or spk_thr_low is None:
@@ -344,7 +344,6 @@ class DynapcnnNetwork(nn.Module):
344
344
  )
345
345
  # Validate config
346
346
  if is_compatible:
347
- print("Network is valid")
348
347
  return config
349
348
  else:
350
349
  raise ValueError(f"Generated config is not valid for {device}")
@@ -361,8 +360,8 @@ class DynapcnnNetwork(nn.Module):
361
360
  try:
362
361
  _, is_compatible = self._make_config(device=device_type)
363
362
  except ValueError as e:
364
- # Catch "No valid mapping found" error
365
- if e.args[0] == ("No valid mapping found"):
363
+ # Catch "No valid mapping found" error, it is the first sentence in the string
364
+ if e.args[0].find("No valid mapping found.") == 0:
366
365
  return False
367
366
  else:
368
367
  raise e
@@ -188,5 +188,8 @@ def recover_mapping(graph, layer_mapping) -> List[Tuple[int, int]]:
188
188
  if edge.flow == 1:
189
189
  mapping.append((i, edge.t - len(layer_mapping) - 1))
190
190
  if len(mapping) != len(layer_mapping):
191
- raise ValueError("No valid mapping found")
191
+ raise ValueError(
192
+ "No valid mapping found. "
193
+ "For Speck family you can use `utils.validate_memory_mapping_speck()` to get more information."
194
+ )
192
195
  return mapping