SNABSuite
0.x
Spiking Neural Architecture Benchmark Suite
|
Classes | |
struct | CONVOLUTION_LAYER |
struct | POOLING_LAYER |
Typedefs | |
typedef std::pair< std::vector< std::vector< Real > >, std::vector< uint16_t > > | MNIST_DATA |
typedef std::pair< std::vector< std::vector< std::vector< Real > > >, std::vector< uint16_t > > | SPIKING_MNIST |
typedef std::vector< std::vector< std::vector< std::vector< Real > > > > | CONVOLUTION_FILTER |
typedef struct CONVOLUTION_LAYER | CONVOLUTION_LAYER |
typedef struct POOLING_LAYER | POOLING_LAYER |
Enumerations |
Functions | |
MNIST_DATA | loadMnistData (const size_t num_data, const std::string path) |
Read in MNIST data from files. More... | |
void | print_image (const std::vector< Real > &img, size_t wrap) |
Prints image to std::cout. More... | |
std::vector< std::vector< std::vector< Real > > > | image_to_rate (const std::vector< std::vector< Real >> &images, const Real duration, const Real max_freq, size_t num_images, bool poisson=true) |
Converts a vector of images to a rate based representation. More... | |
SPIKING_MNIST | mnist_to_spike (const MNIST_DATA &mnist_data, const Real duration, const Real max_freq, size_t num_images, bool poisson=true) |
Converts the full MNIST dataset to a spiking MNIST dataset. More... | |
std::vector< MNIST_DATA > | create_batches (const SPIKING_MNIST &mnist_data, const size_t batch_size, Real duration, Real pause, const bool shuffle=false, unsigned seed=0) |
Creates batches of spikes representing the MNIST data. More... | |
cypress::Population< SpikeSourceArray > | create_spike_source (Network &netw, const MNIST_DATA &spikes) |
Creates Spike sources in network from spikes. More... | |
cypress::Population< SpikeSourceArray > & | update_spike_source (cypress::Population< SpikeSourceArray > &source, const MNIST_DATA &spikes) |
Update Spike sources in network from spikes. More... | |
Json | read_network (std::string path, bool msgpack=true) |
Read in the network file from json of msgpack. The Repo provides a script which creates compatible files. More... | |
template<typename T > | |
Real | max_weight (const T &json) |
Calculate the max weight, ignore negative values. More... | |
template<typename T > | |
Real | max_weight (const Matrix< T > &mat) |
Calculate the max weight, ignore negative values. More... | |
template<typename T > | |
Real | min_weight (const T &json) |
Calculate the min weight. More... | |
template<typename T > | |
Real | min_weight (const Matrix< T > &json) |
Calculate the min weight. More... | |
template<typename T > | |
Real | max_weight_abs (const T &json) |
Calculate the max absolute weight. More... | |
template<typename T > | |
Real | max_weight_abs (const Matrix< T > &json) |
Calculate the max absolute weight. More... | |
std::vector< LocalConnection > | dense_weights_to_conn (const Matrix< Real > &mat, Real scale, Real delay) |
Convert a dense layer to list of Local Connections. More... | |
std::vector< LocalConnection > | conv_weights_to_conn (const mnist_helper::CONVOLUTION_LAYER &layer, Real scale, Real delay) |
Converts a conv layer to list of Local Connections. More... | |
std::vector< std::vector< LocalConnection > > | pool_to_conn (const mnist_helper::POOLING_LAYER &layer, Real max_pool_weight, Real pool_inhib_weight, Real delay, Real pool_delay) |
std::vector< uint16_t > | spikes_to_labels (const PopulationBase &pop, Real duration, Real pause, size_t batch_size) |
Converts the simulation results into label data. More... | |
void | conv_spikes_per_kernel (const std::string &filename, const PopulationBase &pop, Real duration, Real pause, size_t batch_size, Real norm=0.0) |
Saves the spikes of a convolution layer in a file. More... | |
std::vector< std::vector< Real > > | spikes_to_rates (const PopulationBase pop, Real duration, Real pause, size_t batch_size, Real norm=0.0) |
Converts the simulation results into values between 0 and 1. More... | |
size_t | compare_labels (std::vector< uint16_t > &label, std::vector< uint16_t > &res) |
Compare original labels with simulation labels, return number of correct labels. More... | |
std::vector< Real > | av_pooling_image (std::vector< Real > &image, size_t height, size_t width, size_t pooling_size) |
Downscale an image by average pooling. More... | |
MNIST_DATA | scale_mnist (MNIST_DATA &data, size_t pooling_size=3) |
downscale the complete MNIST dataset More... | |
SPIKING_MNIST | read_data_to_spike (const size_t num_images, bool train_data, const Real duration, const Real max_freq, bool poisson=true, bool scale_down=false) |
Reads in MNIST test or train data. More... | |
std::vector< LocalConnection > | conns_from_mat (const cypress::Matrix< Real > &weights, Real delay, Real scale_factor=0.0) |
Generate connection from given weight matrix. More... | |
void | update_conns_from_mat (const std::vector< cypress::Matrix< Real >> &weights, Network &netw, Real delay=1.0, Real scale_factor=0.0) |
Updates the connector is a given network with the weights provided. More... | |
struct mnist_helper::CONVOLUTION_LAYER |
Definition at line 38 of file helper_functions.hpp.
Class Members | ||
---|---|---|
CONVOLUTION_FILTER | filter | |
vector< size_t > | input_sizes | |
vector< size_t > | output_sizes | |
size_t | padding | |
size_t | stride |
struct mnist_helper::POOLING_LAYER |
Definition at line 46 of file helper_functions.hpp.
Class Members | ||
---|---|---|
vector< size_t > | input_sizes | |
vector< size_t > | output_sizes | |
vector< size_t > | size | |
size_t | stride |
typedef std::vector<std::vector<std::vector<std::vector<Real> > > > mnist_helper::CONVOLUTION_FILTER |
Definition at line 37 of file helper_functions.hpp.
typedef struct CONVOLUTION_LAYER mnist_helper::CONVOLUTION_LAYER |
Definition at line 45 of file helper_functions.hpp.
typedef std::pair<std::vector<std::vector<Real> >, std::vector<uint16_t> > mnist_helper::MNIST_DATA |
Definition at line 32 of file helper_functions.hpp.
typedef struct POOLING_LAYER mnist_helper::POOLING_LAYER |
Definition at line 52 of file helper_functions.hpp.
typedef std::pair<std::vector<std::vector<std::vector<Real> > >, std::vector<uint16_t> > mnist_helper::SPIKING_MNIST |
Definition at line 35 of file helper_functions.hpp.
Enumerator | |
---|---|
Dense | |
Conv | |
Pooling |
Definition at line 53 of file helper_functions.hpp.
std::vector<Real> mnist_helper::av_pooling_image | ( | std::vector< Real > & | image, |
size_t | height, | ||
size_t | width, | ||
size_t | pooling_size | ||
) |
Downscale an image by average pooling.
image | the image itself |
height | height of the image |
width | width of the image |
pooling_size | size of the pooling window (e.g. 2) |
size_t mnist_helper::compare_labels | ( | std::vector< uint16_t > & | label, |
std::vector< uint16_t > & | res | ||
) |
Compare original labels with simulation labels, return number of correct labels.
label | data label |
res | label from simulation |
std::vector<LocalConnection> mnist_helper::conns_from_mat | ( | const cypress::Matrix< Real > & | weights, |
Real | delay, | ||
Real | scale_factor = 0.0 |
||
) |
Generate connection from given weight matrix.
weights | the weight matrix, type cypress::Matrix<double> |
delay | synaptic delay, use 1.0 is unsure |
scale_factor | scale all weights, do not scale if set to zero |
void mnist_helper::conv_spikes_per_kernel | ( | const std::string & | filename, |
const PopulationBase & | pop, | ||
Real | duration, | ||
Real | pause, | ||
size_t | batch_size, | ||
Real | norm = 0.0 |
||
) |
Saves the spikes of a convolution layer in a file.
filename | the file to save to |
pop | the neuron population to count spikes from |
duration | presentation time of a sample |
pause | pause time in between samples |
batch_size | number of samples interpreted by these neurons (batch size) |
norm | divide the number of spikes in bin by this value, ignore if it is set to zero |
std::vector<LocalConnection> mnist_helper::conv_weights_to_conn | ( | const mnist_helper::CONVOLUTION_LAYER & | layer, |
Real | scale, | ||
Real | delay | ||
) |
Converts a conv layer to list of Local Connections.
layer | struct of convolution layer information |
scale | scale factor for weights |
delay | synaptic delay |
std::vector<MNIST_DATA> mnist_helper::create_batches | ( | const SPIKING_MNIST & | mnist_data, |
const size_t | batch_size, | ||
Real | duration, | ||
Real | pause, | ||
const bool | shuffle = false , |
||
unsigned | seed = 0 |
||
) |
Creates batches of spikes representing the MNIST data.
mnist_data | Spiking MNIST data |
batch_size | number of images per batch |
duration | duration of every image |
pause | time in between images |
shuffle | True for shuffling images. Defaults to false. |
seed | Seed for shuffling images Defaults to 0. |
cypress::Population<SpikeSourceArray> mnist_helper::create_spike_source | ( | Network & | netw, |
const MNIST_DATA & | spikes | ||
) |
Creates Spike sources in network from spikes.
netw | a cypress network |
spikes | One batch from the return value of "create_batch" |
std::vector<LocalConnection> mnist_helper::dense_weights_to_conn | ( | const Matrix< Real > & | mat, |
Real | scale, | ||
Real | delay | ||
) |
Convert a dense layer to list of Local Connections.
mat | cypress matrix of weights |
scale | scale factor for weights |
delay | synaptic delay |
std::vector<std::vector<std::vector<Real> > > mnist_helper::image_to_rate | ( | const std::vector< std::vector< Real >> & | images, |
const Real | duration, | ||
const Real | max_freq, | ||
size_t | num_images, | ||
bool | poisson = true |
||
) |
Converts a vector of images to a rate based representation.
images | vector of images |
duration | duration of the rate |
max_freq | maximal rate/frequency |
num_images | number of images to read in |
poisson | False: regular spiking. True: poisson rates. Defaults to true. |
MNIST_DATA mnist_helper::loadMnistData | ( | const size_t | num_data, |
const std::string | path | ||
) |
Read in MNIST data from files.
num_data | Number of images |
path | path to file, without end, e.g. /path/to/data/train for training data, /path/to/data/t10k for test data |
Real mnist_helper::max_weight | ( | const T & | json | ) |
Calculate the max weight, ignore negative values.
json | json array containing the weights |
Definition at line 157 of file helper_functions.hpp.
Real mnist_helper::max_weight | ( | const Matrix< T > & | mat | ) |
Calculate the max weight, ignore negative values.
mat | cypress Matrix containing the weights |
Definition at line 178 of file helper_functions.hpp.
Real mnist_helper::max_weight_abs | ( | const T & | json | ) |
Calculate the max absolute weight.
json | json array containing the weights |
Definition at line 237 of file helper_functions.hpp.
Real mnist_helper::max_weight_abs | ( | const Matrix< T > & | json | ) |
Calculate the max absolute weight.
mat | cypress Matrix containing the weights |
Definition at line 258 of file helper_functions.hpp.
Real mnist_helper::min_weight | ( | const T & | json | ) |
Calculate the min weight.
json | json array containing the weights |
Definition at line 197 of file helper_functions.hpp.
Real mnist_helper::min_weight | ( | const Matrix< T > & | json | ) |
Calculate the min weight.
mat | cypress Matrix containing the weights |
Definition at line 218 of file helper_functions.hpp.
SPIKING_MNIST mnist_helper::mnist_to_spike | ( | const MNIST_DATA & | mnist_data, |
const Real | duration, | ||
const Real | max_freq, | ||
size_t | num_images, | ||
bool | poisson = true |
||
) |
Converts the full MNIST dataset to a spiking MNIST dataset.
mnist_data | data container from loadMnistData |
duration | duration of spikes per image |
max_freq | Maximal rate (e.g. for px = 1) |
num_images | number of images to read in |
poisson | False: regular spiking. True: poisson rates. Defaults to true. |
std::vector<std::vector<LocalConnection> > mnist_helper::pool_to_conn | ( | const mnist_helper::POOLING_LAYER & | layer, |
Real | max_pool_weight, | ||
Real | pool_inhib_weight, | ||
Real | delay, | ||
Real | pool_delay | ||
) |
layer | struct of pooling layer information |
max_pool_weight | scale factor for pooling weights |
pool_inhib_weight | scale factor for cross inhibitory weights |
delay | synaptic delay |
void mnist_helper::print_image | ( | const std::vector< Real > & | img, |
size_t | wrap | ||
) |
Prints image to std::cout.
img | the image |
wrap | line wrap -> width of the image |
SPIKING_MNIST mnist_helper::read_data_to_spike | ( | const size_t | num_images, |
bool | train_data, | ||
const Real | duration, | ||
const Real | max_freq, | ||
bool | poisson = true , |
||
bool | scale_down = false |
||
) |
Reads in MNIST test or train data.
num_images | number of images to read in |
train_data | true for training data, false for test |
duration | duration of spikes per image |
max_freq | Maximal rate (e.g. px = 1) |
poisson | False: regular spiking. True: poisson rates. Defaults to true. |
scale_down | Scales down the image by a factor of 3 in each dim |
Json mnist_helper::read_network | ( | std::string | path, |
bool | msgpack = true |
||
) |
Read in the network file from json of msgpack. The Repo provides a script which creates compatible files.
path | full path to file |
msgpack | True: Compressed msgpack. False: plain Json. Defaults to true. |
MNIST_DATA mnist_helper::scale_mnist | ( | MNIST_DATA & | data, |
size_t | pooling_size = 3 |
||
) |
std::vector<uint16_t> mnist_helper::spikes_to_labels | ( | const PopulationBase & | pop, |
Real | duration, | ||
Real | pause, | ||
size_t | batch_size | ||
) |
Converts the simulation results into label data.
pop | the label population |
duration | presentation time of a sample |
pause | pause time in between samples |
batch_size | number of samples interpreted by these neurons (batch size) |
std::vector<std::vector<Real> > mnist_helper::spikes_to_rates | ( | const PopulationBase | pop, |
Real | duration, | ||
Real | pause, | ||
size_t | batch_size, | ||
Real | norm = 0.0 |
||
) |
Converts the simulation results into values between 0 and 1.
pop | the population to be converted to rates |
duration | presentation time of a sample |
pause | pause time in between samples |
batch_size | number of samples interpreted by these neurons (batch size) norm divide the number of spikes in bin by this value, ignore if it is set to zero |
void mnist_helper::update_conns_from_mat | ( | const std::vector< cypress::Matrix< Real >> & | weights, |
Network & | netw, | ||
Real | delay = 1.0 , |
||
Real | scale_factor = 0.0 |
||
) |
Updates the connector is a given network with the weights provided.
weights | the new weight in weights[layer](input, output) |
netw | the network to alter |
delay | synaptic delay Defaults to 1.0. |
scale_factor | Scales the weights during conversion, no scale if set to zero |
cypress::Population<SpikeSourceArray>& mnist_helper::update_spike_source | ( | cypress::Population< SpikeSourceArray > & | source, |
const MNIST_DATA & | spikes | ||
) |
Update Spike sources in network from spikes.
source | a cypress source array |
spikes | One batch from the return value of "create_batch" |