def simulation(neuron_count, connectivity, leaking_rate, input_scale, feedback_scale, washout_time, train_time): network = esn.create_network( inputCount=13, neuronCount=neuron_count, outputCount=1, connectivity=connectivity, leakingRate=leaking_rate, useOrthonormalMatrix=True) input_scalings = numpy.ones(13) * input_scale input_scalings[0] *= 0.03 network.set_input_scalings(input_scalings) network.set_feedback_scalings([feedback_scale]) trainer = training.Trainer(network, washout_time=washout_time, train_time=train_time) stable = True error = detecting.Error(0.5 / SIM_STEP, 0.3 / SIM_STEP) try: while trainer.time < train_time: trainer.step(SIM_STEP) while trainer.time < (train_time + FREERUN_TIME): trainer.step(SIM_STEP) ref = trainer.outputs.value out = network.capture_output(1)[0] error.update(ref, out) except esn.OutputIsNotFinite: stable = False return trainer.time, stable, error.count
def __init__(self): print("Generating network...") self.network = esn.create_network( inputCount=INPUT_COUNT, neuronCount=NEURON_COUNT, outputCount=1, connectivity=CONNECTIVITY, useOrthonormalMatrix=True) self.input_audio = input.Audio() self.server = server.Server(self) self.server.start() print("Free running...") self.state = Daemon.RunningState() self.output_queue = None self.input_frames = None
CONNECTIVITY = 0.5 SIM_STEP = 0.01 SLEEP_TIME = 0.02 NORMALIZE_TIME = 50.0 WASHOUT_TIME = 50.0 TRAIN_TIME = 300.0 if __name__ == "__main__": # Create network print("Generating network...") network = esn.create_network( inputCount=INPUT_COUNT, neuronCount=NEURON_COUNT, outputCount=1, connectivity=CONNECTIVITY, useOrthonormalMatrix=True ) # Train the network trainer = training.Trainer(network, washout_time=WASHOUT_TIME, train_time=TRAIN_TIME) # Calculate input scalings print("Normalizing inputs...") inmin = numpy.finfo(float).max inmax = numpy.finfo(float).min for i in range(int(NORMALIZE_TIME / SIM_STEP)): inputs = trainer.inputs