output_spike_train = np.hstack([ost + i * (T / 10) for i in range(20)])

# fix the evolution of specified neurons and force them to spike at with the specified patterns
net.enforce_neurons(enf_nrns, [
    input_spike_train1, input_spike_train2, input_spike_train3,
    output_spike_train
])

# make the connections from all the neurons to the output neuron plastic (able to learn)
plastic_synapses = []
for i in range(N - 1):
    plastic_synapses.append((i, N - 1))
plot_synaptic_traces = deepcopy(plastic_synapses)
net.set_plastic_synapses(plastic_synapses)

net.run(int(T_steps * 1.5))

# remove all the plasticity
net.set_plastic_synapses([])
enf_nrns = [0, 1, 2]
net.enforce_neurons(
    enf_nrns, [input_spike_train1, input_spike_train2, input_spike_train3])
net.run(int(T_steps * 0.5))

# # # Plots
# fig1 = plot_traces(net)
# plt.show(block = True)
# plt.close()

fig2 = plot_spikes(net)
plt.show(block=True)
Exemplo n.º 2
0
from src.Network import Network
from src.Neuron import IzhikevichNeuron
from src.SpikeTrain import UniformSpikeTrain, PoissonSpikeTrain
from src.Synapse import SynapseSTDP
from src.plotting_functions import *
from matplotlib import pyplot as plt

neurons = [IzhikevichNeuron() for i in range(2)]
dt = 0.1
T = 20000  # ms to run the network for
T_steps = int(T / dt)  # time steps to run the network for
variables_to_monitor = ['v']
synapses = dict()
synapses[0, 1] = SynapseSTDP(neurons[0], neurons[1])

net = Network(dt, neurons, synapses, variables_to_monitor)
net.set_plastic_synapses(list_of_tuples=[(0, 1)])
spike_train_uniform = UniformSpikeTrain(T).generate(10)
spike_train_poisson = PoissonSpikeTrain(T).generate(10)
net.enforce_neurons(indices=[0, 1],
                    spike_trains=[spike_train_uniform, spike_train_poisson])
# net.enforce_neurons(indices=[0], spike_trains=[spike_train_uniform])

net.run(T_steps)

fig2 = plot_spikes_and_weights(net)
plt.show(block=True)
Exemplo n.º 3
0
        newLine = []
        for i in range(0, len(tokens)):
            newLine.append(float(tokens[i]))
        learnData.append(newLine)

    for line in lines[84:]:
        tokens = line.split(',')
        newLine = []
        for i in range(0, len(tokens)):
            newLine.append(float(tokens[i]))
        testData.append(newLine)

    return (learnData, testData)

if __name__ == '__main__':
    '''
    P1.Build a system that approximates the quality of a concrete mixture
    based on the used ingredients.
    Input variables: 7
    Output variables: 3
    '''
    learnData, testData = getData("C:\\_MyFiles\\_FMI\\Workspace\\AI\\Lab5\\files\\data.data")

    net = Network(7, 3, [4])

    net.learn(LEARN_RATE, learnData)
    err = net.run(testData)
    err[0] = int(err[0])
    err[1] = int(err[1])
    err[2] = int(err[2])
    print('\nSLUMP, FLOW, 28-day Compressive Strength = ' + str(err))