sinabs 2.0.1.dev10__tar.gz → 2.0.1.dev16__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.
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/ChangeLog +1 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/PKG-INFO +1 -1
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/dynapcnn_visualizer.py +33 -15
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/PKG-INFO +1 -1
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/SOURCES.txt +1 -0
- sinabs-2.0.1.dev16/sinabs.egg-info/pbr.json +1 -0
- sinabs-2.0.1.dev16/tests/test_dynapcnn/custom_jit_filters.py +88 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_visualizer.py +16 -2
- sinabs-2.0.1.dev10/sinabs.egg-info/pbr.json +0 -1
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/.coveragerc +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/.github/workflows/ci-pipeline.yml +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/.pre-commit-config.yaml +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/.readthedocs.yaml +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/AUTHORS +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/CITATION.cff +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/LICENSE +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/Pipfile +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/Pipfile.lock +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/README.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/codecov.yml +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/Makefile +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/dataflow_layers.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/event_preprocessing_pipeline.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/memory_constraints.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/sinabs-dynapcnn-role.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/speck_dynapcnn.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/speck_top_level.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/devkits_images/dynapcnn_devkit.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/devkits_images/speck_devkit.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/devkits_images/speck_module.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/devkits_images/speck_module_devkit.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/dvs_input_flow.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/dynapcnn_visualizer.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/spike_input_flow.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/power_monitoring/dynamic_power_samna_graph.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/power_monitoring/idle_power_samna_graph.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/power_monitoring/power_plot.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/sinabs-logo-lowercase-whitebg.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/sinabs-logo-lowercase.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/tips_for_training/exceeding_bandwidth.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/handcraft_weights.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/neuron_id_mismatch.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/readout_layer.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/samna_graph.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/visualize_speck_dvs/samna_graph.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/visualize_spike_count/samna_graph.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/visualize_spike_count/spike_count.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_templates/class_activation.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_templates/class_layer.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/about/about.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/about/contributing.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/about/differences.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/about/info.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/about/release_notes.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/activation.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/api.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/from_torch.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/hooks.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/layers.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/network.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/nir.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/synopcounter.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/api/utils.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/conf.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/contact.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/README.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/README.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/plot_alif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/plot_exp_leaky.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/plot_iaf.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/plot_lif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/layers/utils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/spike_fns/README.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/spike_fns/plot_maxspike.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/spike_fns/plot_multispike.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/spike_fns/plot_singlespike.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/README.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_gaussian.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_heaviside.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_multigaussian.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_periodicexponential.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_singleexponential.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/fundamentals.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/getting_started.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/iaf_neuron_model.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/install.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/python_pyenv_pipenv.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/getting_started/quickstart.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/how_tos/activations.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/how_tos/custom_hooks.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/how_tos/how_tos.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/how_tos/synops_loss_ann.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/how_tos/synops_loss_snn.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/index.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/make.bat +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/plugins/plugins.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/requirements.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/advanced_concepts.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/chip_factory.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/config_builder.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/crop2d.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/discretize.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/dvs_layer.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/dynapcnn.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/dynapcnn_layer.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/dynapcnn_network.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/dynapcnn_visualizer.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/exceptions.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/flipdims.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/io.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/mapping.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/specksim.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/api/dynapcnn/utils.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/dangers.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/add_new_device.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/available_algorithmic_operation.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/available_network_arch.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/chip_errata.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/device_management.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/index.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/output_monitoring.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/save_hardware_config_as_binary.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/tips_for_training.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/index.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/leak_neuron.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/nmnist_quick_start.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/play_with_speck_dvs.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/power_monitoring.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/using_readout_layer.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/visualize_speck_dvs_input.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/visualize_spike_count.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/overview.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/specksim.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/the_basics.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/tutorials.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/visualizer.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/LeNet_5_EngChinese.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/bptt.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/nir_to_speck.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/nmnist.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/scnn_mnist.nir +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/tutorials.rst +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/weight_scaling.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/tutorials/weight_transfer_mnist.ipynb +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/mnist/dynapcnn_network.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/mnist/mnist_params.pt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/mnist/specksim_network.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/dvs_gesture_params.pt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/gesture_viz.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/01_armroll.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/02_handclap.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/03_lefthandclockwise.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/04_lefthandcounterclockwise.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/05_lefthandwave.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/06_righthandwave.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/07_righthandclockwise.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/08_righthandcounterclockwise.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/09_airdrums.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/10_airguitar.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/examples/visualizer/icons/11_other.png +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/jupyterlab-requirements.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/pull_request_template.md +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/requirements.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/setup.cfg +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/setup.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/activation/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/activation/quantize.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/activation/reset_mechanism.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/activation/spike_generation.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/activation/surrogate_gradient_fn.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chip_factory.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/dynapcnn.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2b.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2cmini.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2dmini.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2e.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/chips/speck2f.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/config_builder.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/crop2d.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/discretize.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/dvs_layer.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/dynapcnn_layer.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/dynapcnn_network.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/exceptions.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/flipdims.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/io.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/mapping.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/specksim.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/backend/dynapcnn/utils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/cnnutils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/conversion.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/from_torch.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/hooks.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/alif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/channel_shift.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/crop2d.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/exp_leak.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/functional/__init__.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/functional/alif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/functional/lif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/iaf.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/lif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/merge.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/neuromorphic_relu.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/pool2d.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/quantize.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/reshape.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/stateful_layer.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/layers/to_spike.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/network.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/nir.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/synopcounter.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs/utils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/dependency_links.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/not-zip-safe +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/requires.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/sinabs.egg-info/top_level.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/conv_input.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/conv_layer_synops.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/firing_rates.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/firing_rates_per_neuron.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/input_diffs.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/inputs_and_results/hooks/model_synops.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/mnist_params.pt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/models/README.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/models/synop_hook_model.pth +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/requirements.txt +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_activations.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_batch_mismatch.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_batch_size_update.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_conversion.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_copy.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/hw_utils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_auto_mapping.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_compatible_layer_build.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_config_making.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_device_movement.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_device_name_mapping.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_discover_device.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_discretized.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_doorbell.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_dvs_input.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_dvs_layer.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_event_conversion.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_individual_cases.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_large_net.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_learning.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_monitoring.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_neuron_leak.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_single_neuron_hardware.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_speck2e.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_dynapcnn/test_speckmini_config_making.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_from_model.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_hooks.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_alif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_channelshift.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_crop2d.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_exp_leak.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_iaf.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_img2spk.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_lif.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_maxpooling.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_merge.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_neuromorphic_relu.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_reshaping.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_sig2spk.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_layers/test_stateful_layer.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_network_class.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_nir.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_normalize_weights.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_onnx.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_quantize.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_specksim/test_specksim_bindings.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_specksim/test_specksim_conversion.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_specksim/test_specksim_network.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_surrogate_gradients.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_synops_counter.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/test_utils.py +0 -0
- {sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/tests/weights/README.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import socket
|
|
2
2
|
import warnings
|
|
3
|
-
from typing import Dict, List, Optional, Tuple
|
|
3
|
+
from typing import Callable, Dict, List, Optional, Tuple, Union
|
|
4
4
|
|
|
5
5
|
import samna
|
|
6
6
|
|
|
@@ -49,6 +49,7 @@ class DynapcnnVisualizer:
|
|
|
49
49
|
feature_names: Optional[List[str]] = None,
|
|
50
50
|
readout_images: Optional[List[str]] = None,
|
|
51
51
|
feature_count: Optional[int] = None,
|
|
52
|
+
readout_node: Union[str, Callable] = "JitMajorityReadout",
|
|
52
53
|
extra_arguments: Optional[Dict[str, Dict[str, any]]] = None,
|
|
53
54
|
):
|
|
54
55
|
"""Quick wrapper around Samna objects to get a basic dynapcnn visualizer.
|
|
@@ -98,6 +99,9 @@ class DynapcnnVisualizer:
|
|
|
98
99
|
If the `feature_names` and `readout_images` was passed, this is not needed. Otherwise this parameter
|
|
99
100
|
should be passed, so that the GUI knows how many lines should be drawn on the `Spike Count Plot` and
|
|
100
101
|
`Readout Layer Plot`.
|
|
102
|
+
readout_node: str or Callable
|
|
103
|
+
Can either be a string "JitMajorityReadout" or a callable that returns a samna JIT filter
|
|
104
|
+
to decide on the readout prediction. Function parameters can be defined freely.
|
|
101
105
|
extra_arguments: Optional[Dict[str, Dict[str, any]]] (defaults to None)
|
|
102
106
|
Extra arguments that can be passed to individual plots. Available keys are:
|
|
103
107
|
- `spike_count`: Arguments that can be passed to `spike_count` plot.
|
|
@@ -105,7 +109,7 @@ class DynapcnnVisualizer:
|
|
|
105
109
|
- `power_measurement`: Arguments that can be passed `power_measurement` plot.
|
|
106
110
|
"""
|
|
107
111
|
# Checks if the configuration passed is valid
|
|
108
|
-
if add_readout_plot and
|
|
112
|
+
if add_readout_plot and readout_images is None:
|
|
109
113
|
raise ValueError(
|
|
110
114
|
"If a readout plot is to be displayed image paths should be passed as a list."
|
|
111
115
|
+ "The order of the images, should match the model output."
|
|
@@ -135,6 +139,7 @@ class DynapcnnVisualizer:
|
|
|
135
139
|
self.readout_default_return_value = readout_default_return_value
|
|
136
140
|
self.readout_default_threshold_low = readout_default_threshold_low
|
|
137
141
|
self.readout_default_threshold_high = readout_default_threshold_high
|
|
142
|
+
self.readout_node = readout_node
|
|
138
143
|
|
|
139
144
|
# Power monitor components
|
|
140
145
|
if power_monitor_number_of_items != 3 and power_monitor_number_of_items != 5:
|
|
@@ -518,19 +523,32 @@ class DynapcnnVisualizer:
|
|
|
518
523
|
|
|
519
524
|
## Readout node
|
|
520
525
|
if "r" in self.gui_type:
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
526
|
+
if self.readout_node == "JitMajorityReadout":
|
|
527
|
+
(_, majority_readout_node, _) = self.streamer_graph.sequential(
|
|
528
|
+
[
|
|
529
|
+
spike_collection_node,
|
|
530
|
+
samna.graph.JitMajorityReadout(samna.ui.Event),
|
|
531
|
+
streamer_node,
|
|
532
|
+
]
|
|
533
|
+
)
|
|
534
|
+
majority_readout_node.set_feature_count(self.feature_count)
|
|
535
|
+
majority_readout_node.set_default_feature(
|
|
536
|
+
self.readout_default_return_value
|
|
537
|
+
)
|
|
538
|
+
majority_readout_node.set_threshold_low(
|
|
539
|
+
self.readout_default_threshold_low
|
|
540
|
+
)
|
|
541
|
+
majority_readout_node.set_threshold_high(
|
|
542
|
+
self.readout_default_threshold_high
|
|
543
|
+
)
|
|
544
|
+
else:
|
|
545
|
+
(_, majority_readout_node, _) = self.streamer_graph.sequential(
|
|
546
|
+
[
|
|
547
|
+
spike_collection_node,
|
|
548
|
+
self.readout_node,
|
|
549
|
+
streamer_node,
|
|
550
|
+
]
|
|
551
|
+
)
|
|
534
552
|
|
|
535
553
|
## Readout layer visualization
|
|
536
554
|
if "o" in self.gui_type:
|
|
@@ -242,6 +242,7 @@ tests/inputs_and_results/hooks/input_diffs.pth
|
|
|
242
242
|
tests/inputs_and_results/hooks/model_synops.pth
|
|
243
243
|
tests/models/README.txt
|
|
244
244
|
tests/models/synop_hook_model.pth
|
|
245
|
+
tests/test_dynapcnn/custom_jit_filters.py
|
|
245
246
|
tests/test_dynapcnn/hw_utils.py
|
|
246
247
|
tests/test_dynapcnn/test_auto_mapping.py
|
|
247
248
|
tests/test_dynapcnn/test_compatible_layer_build.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "b87dce3", "is_release": false}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import samna
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def majority_readout_filter(
|
|
7
|
+
feature_count: int,
|
|
8
|
+
default_feature: Optional[int] = None,
|
|
9
|
+
detection_threshold: int = 0,
|
|
10
|
+
threshold_low: int = 0,
|
|
11
|
+
threshold_high: Optional[int] = None,
|
|
12
|
+
):
|
|
13
|
+
"""
|
|
14
|
+
The default reaodut filter of samna's visualizer counts the total
|
|
15
|
+
number of events received per timestep to decide whether a detection
|
|
16
|
+
should be made or not.
|
|
17
|
+
|
|
18
|
+
The filter defined here allows for an additional `detection_threshold`
|
|
19
|
+
parameter which is compared to the number of spikes of the most
|
|
20
|
+
active class.
|
|
21
|
+
In other words, for a class to be detected, there needs to be
|
|
22
|
+
a minimum number of spikes for this class.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
jit_src = f"""
|
|
26
|
+
using InputT = speck2f::event::Spike;
|
|
27
|
+
using OutputT = ui::Event;
|
|
28
|
+
using ReadoutT = ui::Readout;
|
|
29
|
+
|
|
30
|
+
template<typename Spike>
|
|
31
|
+
class CustomMajorityReadout : public iris::FilterInterface<std::shared_ptr<const std::vector<Spike>>, std::shared_ptr<const std::vector<OutputT>>> {{
|
|
32
|
+
private:
|
|
33
|
+
int featureCount = {feature_count};
|
|
34
|
+
uint32_t defaultFeature = {default_feature if default_feature is not None else feature_count};
|
|
35
|
+
int detectionThreshold = {detection_threshold};
|
|
36
|
+
int thresholdLow = {threshold_low};
|
|
37
|
+
int thresholdHigh = {threshold_high if threshold_high is not None else "std::numeric_limits<int>::max()"};
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
void apply() override
|
|
41
|
+
{{
|
|
42
|
+
while (const auto maybeSpikesPtr = this->receiveInput()) {{
|
|
43
|
+
if (0 == featureCount) {{
|
|
44
|
+
return;
|
|
45
|
+
}}
|
|
46
|
+
|
|
47
|
+
auto outputCollection = std::make_shared<std::vector<OutputT>>();
|
|
48
|
+
if ((*maybeSpikesPtr)->size() >= thresholdLow && (*maybeSpikesPtr)->size() <= thresholdHigh) {{
|
|
49
|
+
std::unordered_map<uint32_t, int> sum; // feature -> count
|
|
50
|
+
int maxCount = 0;
|
|
51
|
+
uint32_t maxCountFeature = 0;
|
|
52
|
+
int maxCountNum = 0;
|
|
53
|
+
|
|
54
|
+
for (const auto& spike : (**maybeSpikesPtr)) {{
|
|
55
|
+
sum[spike.feature]++;
|
|
56
|
+
}}
|
|
57
|
+
|
|
58
|
+
for (const auto& [feature, count] : sum) {{
|
|
59
|
+
if (feature >= featureCount) {{
|
|
60
|
+
continue;
|
|
61
|
+
}}
|
|
62
|
+
|
|
63
|
+
if (count > maxCount) {{
|
|
64
|
+
maxCount = count;
|
|
65
|
+
maxCountFeature = feature;
|
|
66
|
+
maxCountNum = 1;
|
|
67
|
+
}}
|
|
68
|
+
else if (count == maxCount) {{
|
|
69
|
+
maxCountNum++;
|
|
70
|
+
}}
|
|
71
|
+
}}
|
|
72
|
+
|
|
73
|
+
if (maxCount > detectionThreshold && 1 == maxCountNum) {{
|
|
74
|
+
outputCollection->emplace_back(ReadoutT{{maxCountFeature}});
|
|
75
|
+
}}
|
|
76
|
+
else {{
|
|
77
|
+
outputCollection->emplace_back(ReadoutT{{defaultFeature}});
|
|
78
|
+
}}
|
|
79
|
+
}}
|
|
80
|
+
else {{
|
|
81
|
+
outputCollection->emplace_back(ReadoutT{{defaultFeature}});
|
|
82
|
+
}}
|
|
83
|
+
this->forwardResult(std::move(outputCollection));
|
|
84
|
+
}}
|
|
85
|
+
}}
|
|
86
|
+
}};
|
|
87
|
+
"""
|
|
88
|
+
return samna.graph.JitFilter("CustomMajorityReadout", jit_src)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from itertools import product
|
|
2
|
+
from typing import Callable, Union
|
|
2
3
|
|
|
3
4
|
import pytest
|
|
4
5
|
import samna
|
|
6
|
+
from custom_jit_filters import majority_readout_filter as custom_filter
|
|
5
7
|
from hw_utils import find_open_devices, is_any_samna_device_connected
|
|
6
8
|
|
|
7
9
|
from sinabs.backend.dynapcnn.dynapcnn_visualizer import DynapcnnVisualizer
|
|
@@ -15,12 +17,21 @@ def X_available() -> bool:
|
|
|
15
17
|
return p.returncode == 0
|
|
16
18
|
|
|
17
19
|
|
|
20
|
+
vis_init_args = product(
|
|
21
|
+
(True, False),
|
|
22
|
+
(True, False),
|
|
23
|
+
("JitMajorityReadout", custom_filter),
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
18
27
|
@pytest.mark.skipif(
|
|
19
28
|
True,
|
|
20
29
|
reason="A window needs to pop. Needs UI. Makes sense to check this test manually",
|
|
21
30
|
)
|
|
22
|
-
@pytest.mark.parametrize("spike_count_plot",
|
|
23
|
-
def test_visualizer_initialization(
|
|
31
|
+
@pytest.mark.parametrize("spike_count_plot,readout_plot,readout_node", vis_init_args)
|
|
32
|
+
def test_visualizer_initialization(
|
|
33
|
+
spike_count_plot: bool, readout_plot: bool, readout_node: Union[str, Callable]
|
|
34
|
+
):
|
|
24
35
|
dvs_shape = (128, 128)
|
|
25
36
|
spike_collection_interval = 500
|
|
26
37
|
visualizer_id = 3
|
|
@@ -29,6 +40,9 @@ def test_visualizer_initialization(spike_count_plot: bool):
|
|
|
29
40
|
dvs_shape=dvs_shape,
|
|
30
41
|
spike_collection_interval=spike_collection_interval,
|
|
31
42
|
add_spike_count_plot=spike_count_plot,
|
|
43
|
+
add_readout_plot=readout_plot,
|
|
44
|
+
readout_node=readout_node,
|
|
45
|
+
readout_images=[],
|
|
32
46
|
)
|
|
33
47
|
visualizer.create_visualizer_process(
|
|
34
48
|
f"tcp://0.0.0.0:{visualizer.samna_visualizer_port}"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "9b5cf77", "is_release": false}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/Overview/event_preprocessing_pipeline.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/devkits_images/speck_module_devkit.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/dvs_input_flow.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/dynapcnn_visualizer.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/nmnist_quick_start/spike_input_flow.png
RENAMED
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/power_monitoring/idle_power_samna_graph.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/tips_for_training/exceeding_bandwidth.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/handcraft_weights.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/neuron_id_mismatch.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/using_readout_layer/readout_layer.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/visualize_spike_count/samna_graph.png
RENAMED
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/_static/visualize_spike_count/spike_count.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_multigaussian.py
RENAMED
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/gallery/surrogate_grad_fns/plot_singleexponential.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/faqs/available_algorithmic_operation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sinabs-2.0.1.dev10 → sinabs-2.0.1.dev16}/docs/speck/notebooks/visualize_speck_dvs_input.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|