def plot_2d_input_weights(): name = 'XeAe' weights = get_2d_input_weights() fig = b.figure(fig_num, figsize = (18, 18)) im2 = b.imshow(weights, interpolation = "nearest", vmin = 0, vmax = wmax_ee, cmap = cmap.get_cmap('hot_r')) b.colorbar(im2) b.title('weights of connection' + name) fig.canvas.draw() return im2, fig
def plot_2d_excitatory_weights(): name = 'AeAe' + str(n_e) weights = get_2d_excitatory_weights() fig = b.figure(fig_num, figsize=(10, 10)) im2 = b.imshow(weights, interpolation='nearest', vmin=0, vmax=wmax_ee, cmap=cmap.get_cmap('hot_r')) b.colorbar(im2) b.title('weights of connection ' + name) fig.canvas.draw() return im2, fig
def plot_patch_weights(): ''' Plot the weights between convolution patches to view during training. ''' weights = get_patch_weights() fig, ax = b.subplots(figsize=(8, 8)) im = ax.imshow(weights, interpolation='nearest', vmin=0, vmax=wmax_ee, cmap=cmap.get_cmap('hot_r')) b.colorbar(im) b.title('Between-patch connectivity') fig.canvas.draw() return im, fig
def plot_performance(fig_num): num_evaluations = int(num_examples/update_interval) time_steps = range(0, num_evaluations) performance = np.zeros(num_evaluations) fig = b.figure(fig_num, figsize = (5, 5)) fig_num += 1 ax = fig.add_subplot(111) im2, = ax.plot(time_steps, performance) #my_cmap b.ylim(ymax = 100) b.title('Classification performance') fig.canvas.draw() return im2, performance, fig_num, fig
correctionDiffIdxs = np.where(diffLastActivity > 0.5)[0] correctedPopDiff = [1 - diffLastActivity[i] if (i in correctionDiffIdxs) else diffLastActivity[i] for i in xrange(len(diffLastActivity))] print correctedErrorSum rcParams['lines.color'] = 'w' rcParams['text.color'] = 'w' rcParams['xtick.color'] = 'w' rcParams['ytick.color'] = 'w' rcParams['axes.labelcolor'] = 'w' rcParams['axes.edgecolor'] = 'w' b.figure() b.scatter(resultMonitor[start_time:end_time,2], correctedError, c=range(len(error)), cmap=cmap.gray) b.title('Error: ' + str(correctedErrorSum)) b.xlabel('Activity in B') b.ylabel('Error') fi = b.figure(figsize = (5.0,4.6)) ax = plt.subplot(1,1,1) matplotlib.rcParams.update({'font.size': 22}) b.scatter(resultMonitor[start_time:end_time,1]*1600, resultMonitor[start_time:end_time,0]*1600, c='k', cmap=cmap.gray) #range(len(error)) # b.title('Error: ' + str(correctedErrorSum)) # b.xlabel('Desired activity') # b.ylabel('Population activity') ax.set_xticks([0,800,1600]) ax.set_xticklabels(['0', '800', '1600']) ax.set_yticks([0,800,1600]) ax.set_yticklabels(['0', '800', '1600'], va='center')
save_connections() else: np.save(data_path + 'activity/resultPopVecs' + str(num_examples), result_monitor) np.save(data_path + 'activity/inputNumbers' + str(num_examples), input_numbers) #------------------------------------------------------------------------------ # plot results #------------------------------------------------------------------------------ if rate_monitors: b.figure(fig_num) fig_num += 1 for i, name in enumerate(rate_monitors): b.subplot(len(rate_monitors), 1, i) b.plot(rate_monitors[name].times/b.second, rate_monitors[name].rate, '.') b.title('Rates of population ' + name) if spike_monitors: b.figure(fig_num) fig_num += 1 for i, name in enumerate(spike_monitors): b.subplot(len(spike_monitors), 1, i) b.raster_plot(spike_monitors[name]) b.title('Spikes of population ' + name) if spike_counters: b.figure(fig_num) fig_num += 1 for i, name in enumerate(spike_counters): b.subplot(len(spike_counters), 1, i) b.plot(spike_counters['Ae'].count[:])
def plotResults(self): #------------------------------------------------------------------------------ # plot results #------------------------------------------------------------------------------ if self.rateMonitors: b.figure() for i, name in enumerate(self.rateMonitors): b.subplot(len(self.rateMonitors), 1, i) b.plot(self.rateMonitors[name].times/b.second, self.rateMonitors[name].rate, '.') b.title('rates of population ' + name) if self.spikeMonitors: b.figure() for i, name in enumerate(self.spikeMonitors): b.subplot(len(self.spikeMonitors), 1, i) b.raster_plot(self.spikeMonitors[name]) b.title('spikes of population ' + name) if name=='Ce': timePoints = np.linspace(0+(self.singleExampleTime+self.restingTime)/(2*b.second)*1000, self.runtime/b.second*1000-(self.singleExampleTime+self.restingTime)/(2*b.second)*1000, self.numExamples) b.plot(timePoints, self.resultMonitor[:,0]*self.nE, 'g') b.plot(timePoints, self.resultMonitor[:,1]*self.nE, 'r') if self.stateMonitors: b.figure() for i, name in enumerate(self.stateMonitors): b.plot(self.stateMonitors[name].times/b.second, self.stateMonitors[name]['v'][0], label = name + ' v 0') b.legend() b.title('membrane voltages of population ' + name) b.figure() for i, name in enumerate(self.stateMonitors): b.plot(self.stateMonitors[name].times/b.second, self.stateMonitors[name]['ge'][0], label = name + ' v 0') b.legend() b.title('conductances of population ' + name) plotWeights = [ # 'XeAe', # 'XeAi', # 'AeAe', # 'AeAi', # 'AiAe', # 'AiAi', # 'BeBe', # 'BeBi', # 'BiBe', # 'BiBi', # 'CeCe', # 'CeCi', 'CiCe', # 'CiCi', # 'HeHe', # 'HeHi', # 'HiHe', # 'HiHi', 'AeHe', # 'BeHe', # 'CeHe', 'HeAe', # 'HeBe', # 'HeCe', ] for name in plotWeights: b.figure() # my_cmap = matplotlib.colors.LinearSegmentedColormap.from_list('own2',['#f4f4f4', '#000000']) # my_cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list('own2',['#000000', '#f4f4f4']) if name[1]=='e': nSrc = self.nE else: nSrc = self.nI if name[3]=='e': nTgt = self.nE else: nTgt = self.nI w_post = np.zeros((nSrc, nTgt)) connMatrix = self.connections[name][:] for i in xrange(nSrc): w_post[i, connMatrix.rowj[i]] = connMatrix.rowdata[i] im2 = b.imshow(w_post, interpolation="nearest", vmin = 0, cmap=cm.get_cmap('gist_ncar')) #my_cmap b.colorbar(im2) b.title('weights of connection' + name) if self.plotError: error = np.abs(self.resultMonitor[:,1] - self.resultMonitor[:,0]) correctionIdxs = np.where(error > 0.5)[0] correctedError = [1 - error[i] if (i in correctionIdxs) else error[i] for i in xrange(len(error))] correctedErrorSum = np.average(correctedError) b.figure() b.scatter(self.resultMonitor[:,1], self.resultMonitor[:,0], c=range(len(error)), cmap=cm.get_cmap('gray')) b.title('Error: ' + str(correctedErrorSum)) b.xlabel('Desired activity') b.ylabel('Population activity') b.figure() error = np.abs(self.resultMonitor[:,1] - self.resultMonitor[:,0]) correctionIdxs = np.where(error > 0.5)[0] correctedError = [1 - error[i] if (i in correctionIdxs) else error[i] for i in xrange(len(error))] correctedErrorSum = np.average(correctedError) b.scatter(self.resultMonitor[:,1], self.resultMonitor[:,0], c=self.resultMonitor[:,2], cmap=cm.get_cmap('gray')) b.title('Error: ' + str(correctedErrorSum)) b.xlabel('Desired activity') b.ylabel('Population activity') b.ioff() b.show()
rate_monitors[name + 'e'] = b.PopulationRateMonitor(neuron_groups[name + 'e'], bin=(single_example_time + resting_time) / b.second) rate_monitors[name + 'i'] = b.PopulationRateMonitor(neuron_groups[name + 'i'], bin=(single_example_time + resting_time) / b.second) spike_counters[name + 'e'] = b.SpikeCounter(neuron_groups[name + 'e']) if record_spikes: spike_monitors[name + 'e'] = b.SpikeMonitor(neuron_groups[name + 'e']) spike_monitors[name + 'i'] = b.SpikeMonitor(neuron_groups[name + 'i']) if record_spikes: b.figure(fig_num) fig_num += 1 b.ion() b.subplot(211) b.raster_plot(spike_monitors['Ae'], refresh=1000 * b.ms, showlast=1000 * b.ms) b.title('Excitatory Spikes') b.subplot(212) b.raster_plot(spike_monitors['Ai'], refresh=1000 * b.ms, showlast=1000 * b.ms) b.title('Inhibitory Spikes') #------------------------------------------------------------------------------ # create input population and connections from input populations #------------------------------------------------------------------------------ pop_values = [0, 0, 0] for i,name in enumerate(input_population_names): input_groups[name + 'e'] = b.PoissonGroup(n_input, 0) rate_monitors[name + 'e'] = b.PopulationRateMonitor(input_groups[name + 'e'], bin=(single_example_time+resting_time) / b.second) for name in input_connection_names: print 'create connections between', name[0], 'and', name[1]