spikeforge 0.3.2__tar.gz → 0.3.3__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.
- {spikeforge-0.3.2 → spikeforge-0.3.3}/PKG-INFO +1 -1
- {spikeforge-0.3.2 → spikeforge-0.3.3}/pyproject.toml +1 -1
- spikeforge-0.3.3/spikeforge/affect/__init__.py +5 -0
- spikeforge-0.3.3/spikeforge/affect/regulator.py +77 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/PKG-INFO +1 -1
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/SOURCES.txt +2 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/LICENSE +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/README.md +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/main.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/main_encodings.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/setup.cfg +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/__main__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/compare.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/config.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/energy.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/harness.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/memory.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/serving.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/store.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/suite.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/timing.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/backend_cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/extract_cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/fixture.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/onnx_cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/records_cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/verify.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/codec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/errors.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/pruning.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/report.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/config.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/data_loader.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/dataset_spec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/datasets.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/download_cli.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_errors.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_geometry.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_loader.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/image_size.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/sample_source.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/sequence_source.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/delta_trainer.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/latency_trainer.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/random_spikegen.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/spike_encoder.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/dense.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_bridge.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_sample.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_source.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/synthetic.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/tonic_api.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/delta_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_curve_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_raster_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_video_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/plot_utils.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/presentation_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/random_spike_raster_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/random_spike_video_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/raster_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/reconstruction_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/spike_gif_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/video_exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/comparison.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/decoding.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/encoding.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/firing_rate.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/histogram.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/isi.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/metrics.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/sparsity.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/surrogate.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/embedding_readout.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/episode_sampler.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/episodic_trainer.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/few_shot_generalization_poc.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/frozen_classifier.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/hebbian_synapse.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/held_out_digit_poc.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/lockstep_runner.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/one_shot_associative_memory.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/prototypical.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/stdp_synapse.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/stdp_window_poc.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/hidden_frames.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/inference.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_diff.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_search.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_store.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/spiking_net.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/alpha.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/contract.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/handler.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/lapicque.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/leaky.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/recurrent.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/registry.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/spike_grad.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/synaptic.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/api.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/array_codec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/drift.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/errors.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/exporter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/extract.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ingest.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/interpreter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/interpreter_result.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/jsonable.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/mapped_node.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/mapper.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/neuron_kwargs.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/neuron_nodes.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/node_builders.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/node_names.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_common.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_linear.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_neuron.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_registry.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/planner.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/require.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/roundtrip.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/serialization.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stage_builders.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stage_mapping.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stages_unmappable.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/tolerances.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/torch_map.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/validation_report.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/validator.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/json_formatter.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/logging_setup.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/metrics.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/persistence.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/prometheus.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/registry.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/snapshot.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/store.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/timer.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/api.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/errors.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/export.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/import_onnx.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/metadata.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/roundtrip.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/step_module.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/py.typed +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/context_model.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/falsification_poc.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/protocol.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/relation.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/trial_features.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/device.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/execution_mode.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/system_stats.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/bundle.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/bundle_manifest.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/encode_spec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/errors.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/prediction.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/preprocess.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/session.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/state_tree.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/step.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/tensor_codec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/compiled_step.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/execution.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/frames.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/grad_policy.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/input_shape.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/module_spec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/parallel_runner.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/production.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/production_result.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/runner.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/state.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/step_stages.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/trajectory.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/encoding.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/recipe.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/serving.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/stream_source.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/window_spec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/attention.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/builder.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/edge.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/kinds.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/multihead_attention.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/ordering.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/positional_encoding.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/presets.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/registry.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sequence_presets.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sequence_stages.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/spec.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage_module.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage_modules.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sum_pool.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/validation.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/config_hash.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/determinism.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/manifest.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/seed.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink_probe.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink_records.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sinks.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/tensorboard_sink.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/versions.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/wandb_sink.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/__init__.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/amp_controller.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/checkpoint_mixin.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/encoding_mixin.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/eval_mixin.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/event_batches.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/event_engine.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/logger.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/multi_device.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/scaleup_mixin.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/topology_mixin.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/trainer.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/training_engine.py +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/dependency_links.txt +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/entry_points.txt +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/not-zip-safe +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/requires.txt +0 -0
- {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spikeforge
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch.
|
|
5
5
|
Author-email: Capsize LLC <contact@capsizegames.com>
|
|
6
6
|
Maintainer-email: Capsize LLC <contact@capsizegames.com>
|
|
@@ -15,7 +15,7 @@ build-backend = "setuptools.build_meta"
|
|
|
15
15
|
|
|
16
16
|
[project]
|
|
17
17
|
name = "spikeforge"
|
|
18
|
-
version = "0.3.
|
|
18
|
+
version = "0.3.3"
|
|
19
19
|
description = "Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch."
|
|
20
20
|
# ``README.md`` and ``LICENSE`` are committed symlinks to the repository-root
|
|
21
21
|
# files: the distribution metadata points at the root documents while
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""Slow recurrent spiking state for downstream gain modulation."""
|
|
2
|
+
|
|
3
|
+
from typing import NamedTuple, Optional
|
|
4
|
+
|
|
5
|
+
import snntorch as snn
|
|
6
|
+
import torch
|
|
7
|
+
from torch import nn
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AffectiveOutput(NamedTuple):
|
|
11
|
+
"""One regulator step's spikes and continuous broadcast signal."""
|
|
12
|
+
|
|
13
|
+
spikes: torch.Tensor
|
|
14
|
+
broadcast: torch.Tensor
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AffectiveRegulator(nn.Module):
|
|
18
|
+
"""Integrate inputs into a slowly decaying SNN-native affect state.
|
|
19
|
+
|
|
20
|
+
The linear projection turns signals such as novelty or confidence into
|
|
21
|
+
currents. A recurrent LIF membrane integrates those currents and is
|
|
22
|
+
exposed as the continuous ``broadcast`` signal; spikes are provided for
|
|
23
|
+
consumers that want an event-native modulation path.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
input_size: int,
|
|
29
|
+
state_size: int = 2,
|
|
30
|
+
beta: float = 0.98,
|
|
31
|
+
threshold: float = 1.0,
|
|
32
|
+
device: Optional[torch.device] = None,
|
|
33
|
+
) -> None:
|
|
34
|
+
"""Create a regulator with a persistent state per batch item."""
|
|
35
|
+
super().__init__()
|
|
36
|
+
if input_size < 1 or state_size < 1:
|
|
37
|
+
raise ValueError("input_size and state_size must be positive")
|
|
38
|
+
if not 0.0 < beta < 1.0:
|
|
39
|
+
raise ValueError("beta must be between 0 and 1")
|
|
40
|
+
self.projection = nn.Linear(
|
|
41
|
+
input_size, state_size, bias=False, device=device,
|
|
42
|
+
)
|
|
43
|
+
self.neuron = snn.Leaky(
|
|
44
|
+
beta=beta,
|
|
45
|
+
threshold=threshold,
|
|
46
|
+
reset_mechanism="subtract",
|
|
47
|
+
).to(device)
|
|
48
|
+
self._mem: Optional[torch.Tensor] = None
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def state_size(self) -> int:
|
|
52
|
+
"""Return the number of broadcast channels."""
|
|
53
|
+
return self.projection.out_features
|
|
54
|
+
|
|
55
|
+
def reset_state(self, batch_size: int = 1) -> None:
|
|
56
|
+
"""Clear the carried state before a new sequence."""
|
|
57
|
+
if batch_size < 1:
|
|
58
|
+
raise ValueError("batch_size must be positive")
|
|
59
|
+
device = self.projection.weight.device
|
|
60
|
+
self._mem = torch.zeros(batch_size, self.state_size, device=device)
|
|
61
|
+
|
|
62
|
+
def step(self, inputs: torch.Tensor) -> AffectiveOutput:
|
|
63
|
+
"""Advance the regulator for inputs shaped ``[B, input_size]``."""
|
|
64
|
+
if inputs.ndim != 2 or inputs.size(1) != self.projection.in_features:
|
|
65
|
+
raise ValueError(
|
|
66
|
+
"inputs must have shape [B, input_size]"
|
|
67
|
+
)
|
|
68
|
+
batch_size = inputs.size(0)
|
|
69
|
+
if self._mem is None or self._mem.size(0) != batch_size:
|
|
70
|
+
self.reset_state(batch_size)
|
|
71
|
+
current = self.projection(inputs)
|
|
72
|
+
spikes, self._mem = self.neuron(current, self._mem)
|
|
73
|
+
return AffectiveOutput(spikes=spikes, broadcast=self._mem)
|
|
74
|
+
|
|
75
|
+
def forward(self, inputs: torch.Tensor) -> AffectiveOutput:
|
|
76
|
+
"""Alias :meth:`step` for ordinary ``nn.Module`` use."""
|
|
77
|
+
return self.step(inputs)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spikeforge
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch.
|
|
5
5
|
Author-email: Capsize LLC <contact@capsizegames.com>
|
|
6
6
|
Maintainer-email: Capsize LLC <contact@capsizegames.com>
|
|
@@ -13,6 +13,8 @@ spikeforge.egg-info/entry_points.txt
|
|
|
13
13
|
spikeforge.egg-info/not-zip-safe
|
|
14
14
|
spikeforge.egg-info/requires.txt
|
|
15
15
|
spikeforge.egg-info/top_level.txt
|
|
16
|
+
spikeforge/affect/__init__.py
|
|
17
|
+
spikeforge/affect/regulator.py
|
|
16
18
|
spikeforge/benchmark/__init__.py
|
|
17
19
|
spikeforge/benchmark/__main__.py
|
|
18
20
|
spikeforge/benchmark/cli.py
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|