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
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. :return: None :rtype: None- requires_strictly_binary = False#
- compress(s_seq: Tensor) Tensor[源代码]#
-
中文
压缩缩脉冲序列。
- 参数:
s_seq (torch.Tensor) -- 输入脉冲序列
- 返回:
压缩后的脉冲序列
- 返回类型:
English
Compress spike sequence.
- 参数:
s_seq (torch.Tensor) -- input spike sequence
- 返回:
compressed spike sequence
- 返回类型:
- decompress(s_seq: Tensor, shape) Tensor[源代码]#
-
中文
解压缩脉冲序列。
- 参数:
s_seq (torch.Tensor) -- 压缩的脉冲序列
shape (tuple or torch.Size) -- 原始形状
- 返回:
解压缩后的脉冲序列
- 返回类型:
English
Decompress spike sequence.
- 参数:
s_seq (torch.Tensor) -- compressed spike sequence
shape (tuple or torch.Size) -- original shape
- 返回:
decompressed spike sequence
- 返回类型:
- class spikingjelly.activation_based.memopt.compress.NullSpikeCompressor[源代码]#
-
中文
中文
空脉冲压缩器。压缩和解压缩过程都是恒等映射。
NullSpikeCompressor是唯一能够无损处理非二进制张量的"脉冲压缩器"模块。例如,SNN的输入层 应该始终使用NullSpikeCompressor,因为其输入是浮点张量而不是二值张量。
English
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)
- 返回:
None
- 返回类型:
None
- requires_strictly_binary = False#
- class spikingjelly.activation_based.memopt.compress.BooleanSpikeCompressor[源代码]#
-
中文
中文
布尔脉冲压缩器。
将脉冲序列转换为布尔类型以节省内存。要求输入必须是严格的二进制脉冲。
English
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)
- 返回:
None
- 返回类型:
None
- requires_strictly_binary = True#
- class spikingjelly.activation_based.memopt.compress.Uint8SpikeCompressor[源代码]#
-
中文
中文
Uint8脉冲压缩器。
将脉冲序列转换为uint8类型以节省内存。可以处理非二进制整数数值。
English
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)
- 返回:
None
- 返回类型:
None
- requires_strictly_binary = False#
- class spikingjelly.activation_based.memopt.compress.BitSpikeCompressor[源代码]#
-
中文
中文
比特脉冲压缩器。
使用位压缩技术将8个二进制脉冲压缩到一个字节中,实现极高的内存压缩比。 要求输入必须是严格的二进制脉冲(0或1)。
English
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)
- 返回:
None
- 返回类型:
None
- requires_strictly_binary = True#
- class spikingjelly.activation_based.memopt.compress.SparseSpikeCompressor(dtype=torch.int64)[源代码]#
-
中文
中文
稀疏脉冲压缩器。
只存储非零脉冲的位置索引,适用于稀疏脉冲序列。 要求输入必须是严格的二进制脉冲(0或1)。
- 参数:
dtype (torch.dtype) -- 索引数据类型,默认为
torch.int64
English
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 (torch.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)
- 返回:
None
- 返回类型:
None
- requires_strictly_binary = True#