# Voltage recordings for excitatory and readout layers. voltages = {} for layer in set(layers.keys()) - {"X"}: voltages[layer] = Monitor(layers[layer], ["v"], time=plot_interval) # Add all layers and connections to the network. for layer in layers: network.add_layer(layers[layer], name=layer) network.add_connection(input_exc_conn, source="X", target="E") network.add_connection(exc_readout_conn, source="E", target="R") # Add all monitors to the network. for layer in layers: network.add_monitor(spikes[layer], name="%s_spikes" % layer) if layer in voltages: network.add_monitor(voltages[layer], name="%s_voltages" % layer) # Load the Breakout environment. environment = GymEnvironment("BreakoutDeterministic-v4") environment.reset() pipeline = EnvironmentPipeline( network, environment, encoding=bernoulli, time=1, history=5, delta=10,
thresh=-52 + np.random.randn(n_neurons).astype(float)) network.add_layer(output, name="O") C1 = Connection(source=inpt, target=output, w=0.5 * torch.randn(inpt.n, output.n)) C2 = Connection(source=output, target=output, w=0.5 * torch.randn(output.n, output.n)) network.add_connection(C1, source="I", target="O") network.add_connection(C2, source="O", target="O") spikes = {} for l in network.layers: spikes[l] = Monitor(network.layers[l], ["s"], time=time) network.add_monitor(spikes[l], name="%s_spikes" % l) voltages = {"O": Monitor(network.layers["O"], ["v"], time=time)} network.add_monitor(voltages["O"], name="O_voltages") # Directs network to GPU if gpu: network.to("cuda") # Get MNIST training images and labels. # Load MNIST data. dataset = MNIST( PoissonEncoder(time=time, dt=dt), None, root=os.path.join("..", "..", "data", "MNIST"), download=True,