def load_data(training=True): """Adapted from http://g.sweyla.com/blog/2012/mnist-numpy/""" path = "./data" if training: fname_img = os.path.join(path, 'train-images-idx3-ubyte') fname_lbl = os.path.join(path, 'train-labels-idx1-ubyte') else: fname_img = os.path.join(path, 't10k-images-idx3-ubyte') fname_lbl = os.path.join(path, 't10k-labels-idx1-ubyte') # Inputs fimg = open(fname_img, 'rb') magic_nr, size, rows, cols = struct.unpack(">IIII", fimg.read(16)) imgs = pyarray("B", fimg.read()) fimg.close() imgs = [imgs[n:n+784] for n in xrange(0, len(imgs), 784)] inputs = [] for img in imgs: V = Vol(28, 28, 1, 0.0) V.w = [ (px / 255.0) for px in img ] inputs.append(V) # Outputs flbl = open(fname_lbl, 'rb') magic_nr, size = struct.unpack(">II", flbl.read(8)) labels = pyarray("b", flbl.read()) flbl.close() return zip(inputs, labels)
def load_data(training=True): """Adapted from http://g.sweyla.com/blog/2012/mnist-numpy/""" path = './data' if training: fname_img = os.path.join(path, 'train-images-idx3-ubyte') fname_lbl = os.path.join(path, 'train-labels-idx1-ubyte') else: fname_img = os.path.join(path, 't10k-images-idx3-ubyte') fname_lbl = os.path.join(path, 't10k-labels-idx1-ubyte') # Inputs fimg = open(fname_img, 'rb') magic_nr, size, rows, cols = struct.unpack(">IIII", fimg.read(16)) imgs = pyarray("B", fimg.read()) fimg.close() imgs = [imgs[n:n + 784] for n in xrange(0, len(imgs), 784)] inputs = [] V = Vol(28, 28, 1, 0.0) for img in imgs: V.w = [(px / 255.0) for px in img] inputs.append(augment(V, 24)) # Outputs flbl = open(fname_lbl, 'rb') magic_nr, size = struct.unpack(">II", flbl.read(8)) labels = pyarray("b", flbl.read()) flbl.close() return zip(inputs, labels)
def backward(self, reward): self.latest_reward = reward self.average_reward_window.add(reward) self.reward_window.pop(0) self.reward_window.append(reward) if not self.learning: return self.age += 1 #it is time t+1 and we have to store (s_t, a_t, r_t, s_{t+1}) as new experience #(given that an appropriate number of state measurements already exist, of course) if self.forward_passes > self.temporal_window + 1: n = self.window_size e = Experience( self.net_window[n - 2], self.action_window[n - 2], self.reward_window[n - 2], self.net_window[n - 1] ) if len(self.experience) < self.experience_size: self.experience.append(e) else: ri = randi(0, self.experience_size) self.experience[ri] = e #learn based on experience, once we have some samples to go on #this is where the magic happens... if len(self.experience) > self.start_learn_threshold: avcost = 0.0 for k in range(self.tdtrainer.batch_size): re = randi(0, len(self.experience)) e = self.experience[re] x = Vol(1, 1, self.net_inputs) x.w = e.state0 maxact = self.policy(e.state1) r = e.reward0 + self.gamma * maxact['value'] ystruct = {'dim': e.action0, 'val': r} stats = self.tdtrainer.train(x, ystruct) # print(stats['accuracy']) avcost += stats['loss'] avcost /= self.tdtrainer.batch_size self.average_loss_window.add(avcost)
def forward(self, V, is_training): self.in_act = V A = Vol(1, 1, self.out_depth, 0.0) # max activation max_act = max(V.w) # compute exponentials (carefully to not blow up) # normalize exps = [exp(w - max_act) for w in V.w] exps_sum = float(sum(exps)) exps_norm = [elem / exps_sum for elem in exps] self.es = exps_norm A.w = exps_norm self.out_act = A return self.out_act
def forward(self, V, is_training): self.in_act = V A = Vol(1, 1, self.out_depth, 0.0) # max activation max_act = max(V.w) # compute exponentials (carefully to not blow up) # normalize exps = [ exp(w - max_act) for w in V.w ] exps_sum = float(sum(exps)) exps_norm = [ elem / exps_sum for elem in exps ] self.es = exps_norm A.w = exps_norm self.out_act = A return self.out_act
def backward(self, reward): self.latest_reward = reward self.average_reward_window.add(reward) self.reward_window.pop(0) self.reward_window.append(reward) if not self.learning: return self.age += 1 #it is time t+1 and we have to store (s_t, a_t, r_t, s_{t+1}) as new experience #(given that an appropriate number of state measurements already exist, of course) if self.forward_passes > self.temporal_window + 1: n = self.window_size e = Experience(self.net_window[n - 2], self.action_window[n - 2], self.reward_window[n - 2], self.net_window[n - 1]) if len(self.experience) < self.experience_size: self.experience.append(e) else: ri = randi(0, self.experience_size) self.experience[ri] = e #learn based on experience, once we have some samples to go on #this is where the magic happens... if len(self.experience) > self.start_learn_threshold: avcost = 0.0 for k in xrange(self.tdtrainer.batch_size): re = randi(0, len(self.experience)) e = self.experience[re] x = Vol(1, 1, self.net_inputs) x.w = e.state0 maxact = self.policy(e.state1) r = e.reward0 + self.gamma * maxact['value'] ystruct = {'dim': e.action0, 'val': r} stats = self.tdtrainer.train(x, ystruct) avcost += stats['loss'] avcost /= self.tdtrainer.batch_size print avcost self.average_loss_window.add(avcost)
def load_data(): global training_data, testing_data lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4) xs = lfw_people.data ys = lfw_people.target inputs = [] labels = list(ys) for face in xs: V = Vol(50, 37, 1, 0.0) V.w = list(face) inputs.append(augment(V, 30)) x_tr, x_te, y_tr, y_te = train_test_split(inputs, labels, test_size=0.25) training_data = zip(x_tr, y_tr) testing_data = zip(x_te, y_te) print 'Dataset made...'
def load_data(training=True): """Adapted from http://g.sweyla.com/blog/2012/mnist-numpy/""" path = "./data" if training: fname_img = os.path.join(path, 'train-images-idx3-ubyte') fname_lbl = os.path.join(path, 'train-labels-idx1-ubyte') else: fname_img = os.path.join(path, 't10k-images-idx3-ubyte') fname_lbl = os.path.join(path, 't10k-labels-idx1-ubyte') # Inputs fimg = open(fname_img, 'rb') magic_nr, size, rows, cols = struct.unpack(">IIII", fimg.read(16)) imgs = pyarray("B", fimg.read()) fimg.close() imgs = [imgs[n:n + 784] for n in xrange(0, len(imgs), 784)] inputs = [] for img in imgs: V = Vol(28, 28, 1, 0.0) pxs = [0.0] * 784 for n in xrange(784): if n % 28 == 0: pxs[n] = 0 else: pxs[n] = img[n - 1] V.w = pxs inputs.append(V) # Outputs flbl = open(fname_lbl, 'rb') magic_nr, size = struct.unpack(">II", flbl.read(8)) labels = pyarray("b", flbl.read()) flbl.close() return zip(inputs, labels)