def val_fn(imgs, target, caps): # We only keep the first caps for now caps = [cap[0] for cap in caps] caps = text_utils.pad_to_the_max(caps) res = self.val_fn(caps, target) return res
def train(self, imgs, target, caps): #We only keep the first caps for now caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) res = self.train_fn(caps, target) return res
def val_fn(imgs, target, caps): caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) noise_size = self.options['noise_size'] noise = np.random.normal(size=(len(imgs), noise_size)) imgs = utils.put_in_middle(np.array(imgs), 0.5) res = self.generate_sample_fn(caps, imgs, noise) return 0, res[0]
def train(self, imgs, target, caps): caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) [disc_loss] = self.train_discriminator_fn(caps, target) gen_loss = self.train_generator_fn(caps, target) return disc_loss, gen_loss
def train(self, imgs, target, caps): noise_size = self.options['noise_size'] noise = np.random.normal(size=(len(imgs), noise_size)) caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) imgs = utils.put_in_middle(np.array(imgs), 0.5) [disc_loss] = self.train_discriminator_fn(caps, imgs, noise, target) gen_loss = self.train_generator_fn(caps, imgs, noise, target) return disc_loss, gen_loss
def train(self, imgs, target, caps): # imgs = bagel, target = tim-bit, caps = captions caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) [disc_loss] = self.train_discriminator_fn(caps, target) # inherited from class->GAN i.e captions , gen_loss = self.train_generator_fn(caps, target) # inherited from class->GAN use_wgan = self.options['use_wgan'] if use_wgan: discriminator_params_values = lasagne.layers.get_all_param_values(self.discriminator, trainable=True) clamped_weights = [np.clip(w, -0.05, 0.05) for w in discriminator_params_values] lasagne.layers.set_all_param_values(self.discriminator, clamped_weights, trainable=True) return disc_loss, gen_loss
def val_fn(imgs, target, caps): caps = [cap[np.random.choice(len(cap))] for cap in caps] caps = text_utils.pad_to_the_max(caps) res = self.generate_sample_fn(caps) return 0, res[0]