Spikevision Datasets: NMNIST

Neuromorphic MNIST DataLoader


import snntorch as snn
from snntorch.spikevision import spikedata

from torch.utils.data import DataLoader

# create datasets
train_ds = spikedata.NMNIST("dataset/nmnist", train=True)
test_ds = spikedata.NMNIST("dataset/nmnist", train=False)

# create dataloaders
train_dl = DataLoader(train_ds, shuffle=True, batch_size=64)
test_dl = DataLoader(test_ds, shuffle=False, batch_size=64)

Visualizing the data:

import matplotlib.pyplot as plt
import snntorch.spikeplot as splt
from IPython.display import HTML

# choose a random sample
n = 40000

# index into a single sample and sum the on/off channels
a = (train_dl.dataset[n][0][:, 0] + train_dl.dataset[n][0][:, 1])

#  Plot
fig, ax = plt.subplots()
anim = splt.animator(a, fig, ax, interval=10)

anim.save('nmnist_animator.mp4', writer = 'ffmpeg', fps=50)