Spike Compressors#
将浮点数表示的脉冲张量转换为更紧凑的表示形式的压缩器。
Compressors that convert spike tensors represented in floating-point numbers into more compact representations.
- class spikingjelly.activation_based.memopt.compress.BaseSpikeCompressor[源代码]#
基类:
ABC
中文
脉冲压缩器的抽象基类。欲实现脉冲压缩器,需继承该抽象基类并实现
_compress和_decompress方法。
English
Abstract base class for spike compressors. To implement a spike compressor, you need to inherit this abstract base class and implement the
_compressand_decompressmethods.- requires_strictly_binary = False#
- class spikingjelly.activation_based.memopt.compress.NullSpikeCompressor[源代码]#
-
中文
空脉冲压缩器。压缩和解压缩过程都是恒等映射。
NullSpikeCompressor是唯一能够无损处理非二进制张量的"脉冲压缩器"模块。例如,SNN的输入层 应该始终使用NullSpikeCompressor,因为其输入是浮点张量而不是二值张量。
English
Null spike compressor. The compression and decompression process are identity mapping.
NullSpikeCompressoris the only compressor module that can deal with non-binary tensors losslessly. For instance, the input layer should always useNullSpikeCompressor, as its input is a float tensor rather than a binary tensor.
代码示例 | Example
import torch from spikingjelly.activation_based.memopt.compress import ( NullSpikeCompressor, ) compressor = NullSpikeCompressor() x = torch.randn(32, 10) compressed = compressor.compress(x) decompressed = compressor.decompress(compressed, x.shape)
- requires_strictly_binary = False#
- class spikingjelly.activation_based.memopt.compress.BooleanSpikeCompressor[源代码]#
-
中文
布尔脉冲压缩器。
将脉冲序列转换为布尔类型以节省内存。要求输入必须是严格的二进制脉冲。
English
Boolean spike compressor.
Convert spike sequences to boolean type to save memory. Requires input to be strictly binary spikes.
代码示例 | Example
import torch from spikingjelly.activation_based.memopt.compress import ( BooleanSpikeCompressor, ) compressor = BooleanSpikeCompressor() spikes = torch.randint(0, 2, (32, 100)).float() compressed = compressor.compress(spikes) decompressed = compressor.decompress(compressed, spikes.shape)
- requires_strictly_binary = True#
- class spikingjelly.activation_based.memopt.compress.Uint8SpikeCompressor[源代码]#
-
中文
Uint8脉冲压缩器。
将脉冲序列转换为uint8类型以节省内存。可以处理非二进制整数数值。
English
Uint8 spike compressor.
Convert spike sequences to uint8 type to save memory. Can handle non-binary integer values.
代码示例 | Example
import torch from spikingjelly.activation_based.memopt.compress import ( Uint8SpikeCompressor, ) compressor = Uint8SpikeCompressor() x = torch.randn(32, 10) compressed = compressor.compress(x) decompressed = compressor.decompress(compressed, x.shape)
- requires_strictly_binary = False#
- class spikingjelly.activation_based.memopt.compress.BitSpikeCompressor[源代码]#
-
中文
比特脉冲压缩器。
使用位压缩技术将8个二进制脉冲压缩到一个字节中,实现极高的内存压缩比。 要求输入必须是严格的二进制脉冲(0或1)。
English
Bit-level spike compressor.
Use bit compression technique to compress 8 binary spikes into one byte, achieving high memory compression ratio. Requires input to be strictly binary spikes (0 or 1).
代码示例 | Example
import torch from spikingjelly.activation_based.memopt.compress import BitSpikeCompressor compressor = BitSpikeCompressor() spikes = torch.randint(0, 2, (32, 1000)).float() compressed = compressor.compress(spikes) decompressed = compressor.decompress(compressed, spikes.shape)
- requires_strictly_binary = True#
- class spikingjelly.activation_based.memopt.compress.SparseSpikeCompressor(dtype=torch.int64)[源代码]#
-
中文
稀疏脉冲压缩器。
只存储非零脉冲的位置索引,适用于稀疏脉冲序列。 要求输入必须是严格的二进制脉冲(0或1)。
- 参数:
dtype (dtype) -- 索引数据类型,默认为
torch.int64
English
Sparse spike compressor.
Only store the position indices of non-zero spikes, suitable for sparse spike sequences. Requires input to be strictly binary spikes (0 or 1).
- 参数:
dtype (dtype) -- index data type. Default to
torch.int64
代码示例 | Example
import torch from spikingjelly.activation_based.memopt.compress import ( SparseSpikeCompressor, ) compressor = SparseSpikeCompressor() spikes = (torch.rand(32, 1000) < 0.04).float() compressed = compressor.compress(spikes) decompressed = compressor.decompress(compressed, spikes.shape)
- requires_strictly_binary = True#