def train(self, epoch): trace('making vocabularies ...') self.trg_vocab = Vocabulary.new(gens.word_list(self.target), self.vocab) trace('making model ...') trace('epoch %d/%d: ' % (epoch + 1, self.epoch)) opt = optimizers.AdaGrad(lr=0.01) opt.setup(self.encdec) opt.add_hook(optimizer.GradientClipping(5)) gen1 = gens.word_list(self.target) gen = gens.batch(gen1, self.minibatch) for trg_batch in gen: self.batch_size = len(trg_batch) self.trg_batch = fill_batch(trg_batch) if len(trg_batch) != self.minibatch: break self.encdec.clear(self.batch_size) self.__forward_img() self.encdec.reset(self.batch_size) loss, hyp_batch = self.__forward_word(self.trg_batch, self.encdec, True, 0) loss.backward() opt.update() K = len(self.trg_batch) - 2 self.print_out(K, hyp_batch, epoch)
def train(self, epoch): trace('making vocabularies ...') self.trg_vocab = Vocabulary.new(gens.word_list(self.target), self.vocab) trace('making model ...') trace('epoch %d/%d: ' % (epoch + 1, self.epoch)) opt = optimizers.AdaGrad(lr=0.01) opt.setup(self.encdec) opt.add_hook(optimizer.GradientClipping(5)) gen1 = gens.word_list(self.target) gen = gens.batch(gen1, self.minibatch) for trg_batch in gen: self.batch_size = len(trg_batch) self.trg_batch = fill_batch(trg_batch) if len(trg_batch) != self.minibatch: break self.encdec.clear(self.batch_size) self.__forward_img() self.encdec.reset(self.batch_size) loss, hyp_batch = self.__forward_word(self.trg_batch, self.encdec, True, 0) loss.backward() opt.update() K = len(self.trg_batch) - 2 self.print_out(K, hyp_batch, epoch)
def __init__(self): self.parameter_dict = {} train_path = APP_ROOT + "/Data/" self.parameter_dict["id2image"] = train_path + "index2img_exclude.txt" self.parameter_dict["id2caption"] = train_path + "index2caption.txt" self.parameter_dict["target"] = train_path + "index2caption.txt" self.parameter_dict["vocab"] = 5000 self.parameter_dict["embed"] = 300 self.parameter_dict["hidden"] = 500 self.parameter_dict["epoch"] = 20 self.parameter_dict["minibatch"] = 64 self.parameter_dict["generation_limit"] = 256 self.parameter_dict["use_gpu"] = False self.parameter_dict["gpu_id"] = -1 self.parameter_dict["choose_model"] = "Alex_Model" if self.parameter_dict["choose_model"] == "Alex_Model": self.insize = 224 if self.parameter_dict["choose_model"] == "AlexBn_Model": self.insize = 227 mean_image = pickle.load(open("mean.npy", 'rb')) cropwidth = 256 - self.insize self.start = cropwidth // 2 self.stop = self.start + self.insize self.mean_image = mean_image[:, self.start:self.stop, self.start:self.stop].copy() self.x_batch = np.ndarray( (self.parameter_dict["minibatch"], 3, self.insize, self.insize), dtype=np.float32) self.y_batch = np.ndarray((self.parameter_dict["minibatch"]), dtype=np.int32) self.trg_vocab = Vocabulary.new( gens.word_list(self.parameter_dict["target"]), self.parameter_dict["vocab"]) self.read_data = Read_Data(self.parameter_dict["id2image"], "Data/val2014_resize", self.parameter_dict["id2caption"]) self.read_data.load_image_list() self.read_data.load_caption_list()
def __init__(self, use_gpu, gpu_id): self.parameter_dict = {} train_path = APP_ROOT + "/../../Chainer_Image_Caption_Neural_Network/Code/Data/" self.resize_image_path = APP_ROOT + "/../../Chainer_Image_Caption_Neural_Network/Code/" self.parameter_dict["id2image"] = train_path + "index2img_exclude.txt" self.parameter_dict["id2caption"] = train_path + "index2caption.txt" self.parameter_dict["target"] = train_path + "index2caption.txt" self.parameter_dict["vocab"] = 5000 self.parameter_dict["embed"] = 300 self.parameter_dict["hidden"] = 200 self.parameter_dict["epoch"] = 20 self.parameter_dict["minibatch"] = 110 self.parameter_dict["generation_limit"] = 256 self.parameter_dict["use_gpu"] = use_gpu self.parameter_dict["gpu_id"] = gpu_id self.parameter_dict["choose_model"] = "Alex_Model" if self.parameter_dict["choose_model"] == "Alex_Model": self.insize = 224 if self.parameter_dict["choose_model"] == "AlexBn_Model": self.insize = 227 mean_image = pickle.load(open("mean.npy", 'rb')) cropwidth = 256 - self.insize self.start = cropwidth // 2 self.stop = self.start + self.insize self.mean_image = mean_image[:, self.start:self.stop, self.start:self.stop].copy() self.x_batch = np.ndarray((self.parameter_dict["minibatch"], 3, self.insize, self.insize), dtype=np.float32) self.y_batch = np.ndarray((self.parameter_dict["minibatch"]), dtype=np.int32) self.trg_vocab = Vocabulary.new(gens.word_list(self.parameter_dict["target"]), self.parameter_dict["vocab"]) self.read_data = Read_Data(self.parameter_dict["id2image"], "Data/val2014_resize", self.parameter_dict["id2caption"]) self.read_data.load_image_list() self.read_data.load_caption_list()
def train(self): trace('making vocabularies ...') trg_vocab = Vocabulary.new(gens.word_list(self.target), self.vocab) trace('making model ...') for epoch in range(self.epoch): trace('epoch %d/%d: ' % (epoch + 1, self.epoch)) trained = 0 opt = optimizers.AdaGrad(lr=0.01) opt.setup(self.encdec) opt.add_hook(optimizer.GradientClipping(5)) gen1 = gens.word_list(self.target) gen = gens.batch(gen1, self.minibatch) random_number = random.randint(0, self.minibatch - 1) for trg_batch in gen: self.trg_batch = fill_batch(trg_batch) if len(self.trg_batch) != self.minibatch: break hyp_batch, loss = self.forward(trg_vocab, self.use_gpu, self.gpu_id) loss.backward() opt.update() K = len(self.trg_batch) if trained == 0: self.print_out(random_number, epoch, trained, hyp_batch) trained += K trace('saving model ...') prefix = self.model trg_vocab.save(prefix + '.trgvocab') self.encdec.save_spec(prefix + '.spec') serializers.save_hdf5(prefix + '.weights', self.encdec) trace('finished.')
def train(self): trace('making vocabularies ...') trg_vocab = Vocabulary.new(gens.word_list(self.target), self.vocab) trace('making model ...') for epoch in range(self.epoch): trace('epoch %d/%d: ' % (epoch + 1, self.epoch)) trained = 0 opt = optimizers.AdaGrad(lr=0.01) opt.setup(self.encdec) opt.add_hook(optimizer.GradientClipping(5)) gen1 = gens.word_list(self.target) gen = gens.batch(gen1, self.minibatch) random_number = random.randint(0, self.minibatch - 1) for trg_batch in gen: self.trg_batch = fill_batch(trg_batch) if len(self.trg_batch) != self.minibatch: break hyp_batch, loss = self.forward(trg_vocab, self.use_gpu, self.gpu_id) loss.backward() opt.update() K = len(self.trg_batch) if trained == 0: self.print_out(random_number, epoch, trained, hyp_batch) trained += K trace('saving model ...') prefix = self.model trg_vocab.save(prefix + '.trgvocab') self.encdec.save_spec(prefix + '.spec') serializers.save_hdf5(prefix + '.weights', self.encdec) trace('finished.')