Spike Compressors#

将浮点数表示的脉冲张量转换为更紧凑的表示形式的压缩器。


Compressors that convert spike tensors represented in floating-point numbers into more compact representations.

class spikingjelly.activation_based.memopt.compress.BaseSpikeCompressor[源代码]#

基类:ABC

API Language: 中文 | English


  • 中文

  • 中文

脉冲压缩器的抽象基类。欲实现脉冲压缩器,需继承该抽象基类并实现 _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 _compress and _decompress methods. :return: None :rtype: None

requires_strictly_binary = False#
compress(s_seq: Tensor) Tensor[源代码]#

API Language: 中文 | English


  • 中文

压缩缩脉冲序列。

参数:

s_seq (torch.Tensor) -- 输入脉冲序列

返回:

压缩后的脉冲序列

返回类型:

torch.Tensor


  • English

Compress spike sequence.

参数:

s_seq (torch.Tensor) -- input spike sequence

返回:

compressed spike sequence

返回类型:

torch.Tensor

decompress(s_seq: Tensor, shape) Tensor[源代码]#

API Language: 中文 | English


  • 中文

解压缩脉冲序列。

参数:
返回:

解压缩后的脉冲序列

返回类型:

torch.Tensor


  • English

Decompress spike sequence.

参数:
返回:

decompressed spike sequence

返回类型:

torch.Tensor

class spikingjelly.activation_based.memopt.compress.NullSpikeCompressor[源代码]#

基类:BaseSpikeCompressor

API Language: 中文 | English


  • 中文

  • 中文

空脉冲压缩器。压缩和解压缩过程都是恒等映射。

NullSpikeCompressor 是唯一能够无损处理非二进制张量的"脉冲压缩器"模块。例如,SNN的输入层 应该始终使用 NullSpikeCompressor ,因为其输入是浮点张量而不是二值张量。


  • English

  • English

Null spike compressor. The compression and decompression process are identity mapping.

NullSpikeCompressor is the only compressor module that can deal with non-binary tensors losslessly. For instance, the input layer should always use NullSpikeCompressor, 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[源代码]#

基类:BaseSpikeCompressor

API Language: 中文 | English


  • 中文

  • 中文

布尔脉冲压缩器。

将脉冲序列转换为布尔类型以节省内存。要求输入必须是严格的二进制脉冲。


  • 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[源代码]#

基类:BaseSpikeCompressor

API Language: 中文 | English


  • 中文

  • 中文

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[源代码]#

基类:BaseSpikeCompressor

API Language: 中文 | English


  • 中文

  • 中文

比特脉冲压缩器。

使用位压缩技术将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)[源代码]#

基类:BaseSpikeCompressor

API Language: 中文 | English


  • 中文

  • 中文

稀疏脉冲压缩器。

只存储非零脉冲的位置索引,适用于稀疏脉冲序列。 要求输入必须是严格的二进制脉冲(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#