示例#1
0
 def __init__(self, input_size, params):
     super(SNNCategoricalPolicy, self).__init__()
     self.slayer = snn.layer(params["neuron"], params["simulation"])
     # self.encoder = CartPoleEncoder(200)
     self.encoder = ImageEncoder()
     self.fc1 = self.slayer.dense((input_size[0] * input_size[1] * 3), 50)
     self.fc2 = self.slayer.dense(50, 2)  # output of 2 classes
示例#2
0
    def __init__(self, netParams):
        super(Network, self).__init__()
        # initialize slayer
        slayer = snn.layer(netParams['neuron'], netParams['simulation'])
        self.slayer = slayer

        self.conv = torch.nn.ModuleList([
            slayer.conv(1, 8, (1, 3), padding=(0, 0), stride=(1, 2)),
            slayer.conv(8, 16, (1, 3), padding=(0, 1), stride=(1, 2)),
            slayer.conv(16, 32, (1, 3), padding=(0, 1), stride=(1, 2)),
            slayer.conv(32, 64, (1, 3), padding=(0, 1), stride=(1, 2)),
        ])

        self.fc = torch.nn.ModuleList([
            slayer.dense(44 * 64, 512),
            slayer.dense(512, 35),
        ])

        self.convDelay = torch.nn.ModuleList([
            slayer.delay(8),
            slayer.delay(16),
            slayer.delay(32),
            slayer.delay(64),
        ])

        self.delay = torch.nn.ModuleList([
            slayer.delay(512),
        ])
示例#3
0
    def __init__(self, netParams):
        super(Network, self).__init__()
        # initialize slayer
        slayer = snn.layer(netParams['neuron'], netParams['simulation'])

        self.slayer = slayer
        # define network functions
        self.fc1 = slayer.dense(Nin, Nhid)
        self.fc2 = slayer.dense(Nhid, Nout)
示例#4
0
    def __init__(self, config, inputs, outputs):
        super(Network, self).__init__()

        # Initialize SLAYER
        slayer = snn.layer(config["neuron"], config["simulation"])
        self.slayer = slayer

        # Define network layers
        self.fc1 = slayer.dense(inputs, config["network"]["hiddenSize"])
        self.fc2 = slayer.dense(config["network"]["hiddenSize"], outputs)
示例#5
0
 def __init__(self, netParams):
     super(Network, self).__init__()
     # Initialize slayer
     slayer = snn.layer(netParams['neuron'], netParams['simulation'])
     self.slayer = slayer
     # Define network functions
     # The commented line below should be used if the input spikes were not reshaped
     # self.fc1   = slayer.dense((34, 34, 2), 512)
     self.fc1   = slayer.dense((34*34*2), 512)
     self.fc2   = slayer.dense(512, 10)
 def __init__(self, netParams):
     super(Network, self).__init__()
     # Inicializacia slayer-u
     slayer = snn.layer(netParams['neuron'], netParams['simulation'])
     self.slayer = slayer
     # Definicia jednotlivych vrstiev siete
     self.fc1   = slayer.dense((34*34*2), 2000)
     self.fc2   = slayer.dense(2000,1500)
     self.fc3   = slayer.dense(1500, 1000)
     self.fc4   = slayer.dense(1000,500)
     self.fc5   = slayer.dense(500,100)
     self.fc6   = slayer.dense(100,10)
示例#7
0
 def __init__(self, netParams):
     super(Network, self).__init__()
     # initialize slayer
     slayer = snn.layer(netParams['neuron'], netParams['simulation'])
     self.slayer = slayer
     # define network functions
     self.conv1 = slayer.conv(2, 16, 5, padding=1)
     self.conv2 = slayer.conv(16, 32, 3, padding=1)
     self.conv3 = slayer.conv(32, 64, 3, padding=1)
     self.pool1 = slayer.pool(2)
     self.pool2 = slayer.pool(2)
     self.fc1 = slayer.dense((8, 8, 64), 10)
 def __init__(self, netParams):
     super(Network, self).__init__()
     # Inicializacia slayer-u
     slayer = snn.layer(netParams['neuron'], netParams['simulation'])
     self.slayer = slayer
     # Definicia jednotlivych vrstiev siete
     self.conv1 = slayer.conv(2, 16, 5, padding=1)
     self.conv2 = slayer.conv(16, 32, 3, padding=1)
     self.conv3 = slayer.conv(32, 64, 3, padding=1)
     self.pool1 = slayer.pool(2)
     self.pool2 = slayer.pool(2)
     self.dr1 = slayer.dropout(0.5)
     self.fc1 = slayer.dense((8, 8, 64), 10)
示例#9
0
 def __init__(
     self,
     params,
     tact_input_size,
     vis_input_size,
     tact_output_size,
     vis_output_size,
     output_size,
 ):
     super(SlayerMM, self).__init__()
     self.slayer = snn.layer(params["neuron"], params["simulation"])
     self.tactile = EncoderTact(params, tact_input_size, tact_output_size)
     self.vision = EncoderVis(params, vis_input_size, vis_output_size)
     self.fc1 = self.slayer.dense(60, output_size)
示例#10
0
CURRENT_TEST_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.append(CURRENT_TEST_DIR + "/../src")

import unittest
import numpy as np
import matplotlib.pyplot as plt
import torch
import slayerSNN as snn
import slayerCuda

device = torch.device('cuda')
Ts = 0.1

netParams = snn.params('test_files/nmnistNet.yaml')

slayer = snn.layer(netParams['neuron'], netParams['simulation']).to(device)

# (N, C, H, W, D) = (2, 5, 6, 7, 50)
(N, C, H, W, D) = (5, 10, 20, 30, 500)
# Uncomment this to test large neuron sizes
# (N, C, H, W, D) = (5, 16, 128, 128, 500)

delay = slayer.delay((C, H, W)).to(device)

inTensor = torch.randn((N, C, H, W, D)).to(device)

def checkShift(inTensor, outTensor, shift, verbose=False):
	if shift > 0:
		error = torch.norm(inTensor[:-shift] - outTensor[shift:]).item()
	elif shift == 0:
		error = torch.norm(inTensor - outTensor).item()
示例#11
0
 def __init__(self, params, input_size, hidden_size, output_size):
     super(SlayerMLP, self).__init__()
     self.slayer = snn.layer(params["neuron"], params["simulation"])
     self.fc1 = self.slayer.dense(input_size, hidden_size)
     self.fc2 = self.slayer.dense(hidden_size, output_size)
示例#12
0
 def __init__(self, params, input_size, output_size):
     super(EncoderTact, self).__init__()
     self.slayer = snn.layer(params["neuron"], params["simulation"])
     self.fc1 = self.slayer.dense(input_size, output_size)
示例#13
0
 def __init__(self, params):
     super(SumPool, self).__init__()
     self.slayer = snn.layer(params["neuron"], params["simulation"])
     self.pool = self.slayer.pool(4)