Guest User

Untitled

a guest
Aug 15th, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. import random
  2. import matplotlib.pyplot
  3. import numpy
  4.  
  5. def matrixCreate(rows,columns):
  6. return [[0 for x in xrange(columns)] for x in xrange(rows)]
  7.  
  8. def matrixRandomize(v):
  9. for row in range(len(v)):
  10. for column in range(len(v[row])):
  11. v[row][column] = random.random()
  12. return v
  13.  
  14. def initializeNeurons(neuronValues):
  15. for column in range(len(neuronValues[0])):
  16. neuronValues[0][column] = random.random()
  17. return neuronValues
  18.  
  19. def calculateNeuronPositions(matrix):
  20. numNeurons = len(matrix[0])
  21. angle = 0.0
  22. angleUpdate = 2*numpy.pi/numNeurons
  23. for i in range(0,numNeurons):
  24. x = numpy.sin(angle)
  25. y = numpy.cos(angle)
  26. angle = angle + angleUpdate
  27. matrix[0][i] = x
  28. matrix[1][i] = y
  29. return matrix
  30.  
  31. def createSynapses(matrix):
  32. for row in range(len(matrix)):
  33. for column in range(len(matrix[row])):
  34. matrix[row][column] = random.uniform(-1,1)
  35. return matrix
  36.  
  37. def plotNeurons(neuronPositions):
  38. for i in range(len(neuronPositions[0])):
  39. matplotlib.pyplot.plot(neuronPositions[0][i],neuronPositions[1][i],'ko',markerfacecolor=[1,1,1], markersize=18)
  40. matplotlib.pyplot.show()
  41. return
  42.  
  43. def plotSynapses(neuronPositions):
  44. for i in range(len(neuronPositions[0])):
  45. for j in range(len(neuronPositions[0])):
  46. matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=[0,0,0])
  47. matplotlib.pyplot.show()
  48. return
  49.  
  50. def plotSynapsesWeighted(neuronPositions,synapses):
  51. for i in range(len(neuronPositions[0])):
  52. for j in range(len(neuronPositions[0])):
  53. weight = [0,0,0]
  54. if synapses[i][j] < 0:
  55. weight = [.8,.8,.8]
  56. matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=weight)
  57. matplotlib.pyplot.show()
  58. return
  59.  
  60. def plotSynapsesWeightedMagnitude(neuronPositions,synapses):
  61. for i in range(len(neuronPositions[0])):
  62. for j in range(len(neuronPositions[0])):
  63. w = int(10*abs(synapses[i][j]))+1
  64. weight = [0,0,0]
  65. if synapses[i][j] < 0:
  66. weight = [.8,.8,.8]
  67. matplotlib.pyplot.plot([neuronPositions[0][i],neuronPositions[0][j]],[neuronPositions[1][i],neuronPositions[1][j]], color=weight, linewidth=w)
  68. matplotlib.pyplot.show()
  69. return
  70.  
  71. def Update(neuronValues,synapses,i):
  72. if i != 0:
  73. for j in range(len(neuronValues[0])):
  74. temp = 0
  75. for k in range(len(neuronValues[0])):
  76. temp += synapses[j][k]*neuronValues[i-1][k]
  77. if temp<0:
  78. temp=0
  79. if temp>1:
  80. temp=1
  81. neuronValues[i][j] = temp
  82. return neuronValues
  83.  
  84. neuronValues = matrixCreate(50, 10)#50 is the number of time steps, and 10 is the number of neurons
  85. neuronValues = initializeNeurons(neuronValues)
  86. neuronPositions = matrixCreate(2,10)
  87. neuronPositions = calculateNeuronPositions(neuronPositions)
  88. #plotNeurons(neuronPositions)
  89. synapses = matrixCreate(10,10)
  90. synapses = createSynapses(synapses)
  91. #plotSynapses(neuronPositions)
  92. #plotSynapsesWeighted(neuronPositions,synapses)
  93. #plotSynapsesWeightedMagnitude(neuronPositions,synapses)
  94. for i in range(50):
  95. Update (neuronValues,synapses,i)
  96. matplotlib.pyplot.imshow(neuronValues, cmap=matplotlib.pyplot.cm.gray, aspect='auto', interpolation='nearest')
  97. matplotlib.pyplot.show()
Advertisement
Add Comment
Please, Sign In to add comment