def __init__(self, **kwargs): super(Control, self).__init__(**kwargs) self.old_target = [None, None] # load up our network import glob # this code goes into the weights folder, finds the most # recent trial, and loads up the weights files = sorted(glob.glob('controllers/weights/rnn*')) print 'loading weights from %s'%files[-1] W = np.load(files[-1])['arr_0'] num_states = 4 self.rnn = RNNet(shape=[num_states * 2, 32, 32, num_states, num_states], layers=[Linear(), Tanh(), Tanh(), Linear(), Linear()], rec_layers=[1,2], conns={0:[1, 2], 1:[2], 2:[3], 3:[4]}, load_weights=W, use_GPU=False) offset, W_end, b_end = self.rnn.offsets[(3,4)] self.rnn.mask = np.zeros(self.rnn.W.shape, dtype=bool) self.rnn.mask[offset:b_end] = True self.rnn.W[offset:W_end] = np.eye(4).flatten() self.joint_targets = None self.act = None # set up recorders if self.write_to_file is True: from recorder import Recorder self.u_recorder = Recorder('control signal', self.task, 'hf') self.xy_recorder = Recorder('end-effector position', self.task, 'hf') self.dist_recorder = Recorder('distance from target', self.task, 'hf') self.recorders = [self.u_recorder, self.xy_recorder, self.dist_recorder]