Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import matplotlib.pyplot
- import numpy
- def matrixCreate(rows,columns):
- return [[0 for x in xrange(columns)] for x in xrange(rows)]
- def matrixRandomize(v):
- for row in range(len(v)):
- for column in range(len(v[row])):
- v[row][column] = random.random()
- return v
- def initializeNeurons(neuronValues):
- for column in range(len(neuronValues[0])):
- neuronValues[0][column] = random.random()
- return neuronValues
- def calculateNeuronPositions(matrix):
- numNeurons = len(matrix[0])
- angle = 0.0
- angleUpdate = 2*numpy.pi/numNeurons
- for i in range(0,numNeurons):
- x = numpy.sin(angle)
- y = numpy.cos(angle)
- angle = angle + angleUpdate
- matrix[0][i] = x
- matrix[1][i] = y
- return matrix
- def createSynapses(matrix):
- for row in range(len(matrix)):
- for column in range(len(matrix[row])):
- matrix[row][column] = random.uniform(-1,1)
- return matrix
- def plotNeurons(neuronPositions):
- for i in range(len(neuronPositions[0])):
- matplotlib.pyplot.plot(neuronPositions[0][i],neuronPositions[1][i],'ko',markerfacecolor=[1,1,1], markersize=18)
- matplotlib.pyplot.show()
- return
- def plotSynapses(neuronPositions):
- for i in range(len(neuronPositions[0])):
- for j in range(len(neuronPositions[0])):
- matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=[0,0,0])
- matplotlib.pyplot.show()
- return
- def plotSynapsesWeighted(neuronPositions,synapses):
- for i in range(len(neuronPositions[0])):
- for j in range(len(neuronPositions[0])):
- weight = [0,0,0]
- if synapses[i][j] < 0:
- weight = [.8,.8,.8]
- matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=weight)
- matplotlib.pyplot.show()
- return
- def plotSynapsesWeightedMagnitude(neuronPositions,synapses):
- for i in range(len(neuronPositions[0])):
- for j in range(len(neuronPositions[0])):
- w = int(10*abs(synapses[i][j]))+1
- weight = [0,0,0]
- if synapses[i][j] < 0:
- weight = [.8,.8,.8]
- matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=weight, linewidth=w)
- matplotlib.pyplot.show()
- return
- def Update(neuronValues,synapses,i):
- if i != 0:
- for j in range(len(neuronValues[0])):
- temp = 0
- for k in range(len(neuronValues[0])):
- temp += synapses[j][k]*neuronValues[i-1][k]
- if temp<0:
- temp=0
- if temp>1:
- temp=1
- neuronValues[i][j] = temp
- return neuronValues
- neuronValues = matrixCreate(50, 10)#50 is the number of time steps, and 10 is the number of neurons
- neuronValues = initializeNeurons(neuronValues)
- neuronPositions = matrixCreate(2,10)
- neuronPositions = calculateNeuronPositions(neuronPositions)
- #plotNeurons(neuronPositions)
- synapses = matrixCreate(10,10)
- synapses = createSynapses(synapses)
- #plotSynapses(neuronPositions)
- #plotSynapsesWeighted(neuronPositions,synapses)
- #plotSynapsesWeightedMagnitude(neuronPositions,synapses)
- for i in range(50):
- Update (neuronValues,synapses,i)
- matplotlib.pyplot.imshow(neuronValues, cmap=matplotlib.pyplot.cm.gray, aspect='auto', interpolation='nearest')
- matplotlib.pyplot.show()
Advertisement
Add Comment
Please, Sign In to add comment