def load_images(
    path,
    preprocessor=None,
    limit=None,
):
    images = []
    images_id = next(os.walk(path))[2]
    size = limit if limit != None else len(images_id)
    print(f"Loading {size} images")

    prog = ProgressBar(100, size)

    for id in range(size):
        name = images_id[id]

        filename = path + "/" + name
        image = load_img(filename, target_size=(224, 224))
        image = img_to_array(image)
        image = image.reshape(
            (1, image.shape[0], image.shape[1], image.shape[2]))

        if preprocessor != None:
            image = preprocessor.preprocess_input(image)

        image_id = name.split('.')[0]
        images.append([image_id, image])

        prog.update(id)

    print("Loading complete")
    return images
Exemple #2
0
    def create_examples(self, lines, example_type, cached_file, save_cache):
        '''
		Creates examples for data
		'''
        label_list = self.get_labels()
        if cached_file and cached_file.exists():
            logger.info("Loading examples from cached file %s", cached_file)
            examples = torch.load(cached_file)
        else:
            pbar = ProgressBar(n_total=len(lines), desc='create examples')
            examples = []
            for i, line in enumerate(lines):
                #if i>20:break # for quik debug
                guid = '%s-%d' % (example_type, i)
                label = line['tags']
                text_a = line['info']
                text_b = None
                match = line["cira_match"]

                if self.test_mode == 4 and sum(match) < 4:
                    continue
                else:
                    examples.append(
                        InputExample(guid=guid,
                                     text_a=text_a,
                                     text_b=text_b,
                                     label=label,
                                     match=match))
                pbar(step=i)

            if save_cache:
                logger.info("Saving examples into cached file %s", cached_file)

                torch.save(examples, cached_file)
        return examples
Exemple #3
0
def plot_traj(trajs,
              fig_size=(6, 6),
              color="mediumpurple",
              size=5,
              title='',
              is_plot_line=False,
              od_only=False,
              offset=None):
    """plot the traj
    """
    if offset is None:
        offset = [0, 0]
    p = ProgressBar(len(trajs), '绘制轨迹图')
    plt.figure(figsize=fig_size)
    for i in range(len(trajs)):
        p.update(i)
        traj = np.array(trajs[i])
        if od_only:
            traj = [traj[0], traj[-1]]
        x = [x[0] + np.random.uniform(-offset[0], offset[0]) for x in traj]
        y = [y[1] + np.random.uniform(-offset[1], offset[1]) for y in traj]

        if od_only:
            if is_plot_line:
                plt.plot(x[0], y[0], c=color)
                plt.plot(x[1], y[1], c="yellowgreen")
            plt.scatter(x[0], y[0], c=color, s=size)
            plt.scatter(x[1], y[1], c="yellowgreen", s=size)
        else:
            if is_plot_line:
                plt.plot(x, y, c=color)
            plt.scatter(x, y, c=color, s=size)
    plt.title(title)
    plt.show()
Exemple #4
0
 def make_pdb(self, bar_msg=''):
     """
     Returns a pdb-like formatted string. bar_msg is a string with message to show at ProgressBar initialization.
     bar_msg = '' disables the bar.
     :param bar_msg: str
     :return: str
     """
     models = self.models()
     if bar_msg:
         bar = ProgressBar(len(models), bar_msg)
     else:
         bar = None
     if len(models) == 1:
         s = self.__repr__()
     else:
         s = ''
         for m in models:
             s += 'MODEL%9i\n' % m[0].model
             s += m.__repr__()
             s += '\nENDMDL\n'
             if bar:
                 bar.update()
     if bar:
         bar.done(False)
     return s
Exemple #5
0
    def train(self, ts, cm, batchsz=1):
        self.model.train()

        start_time = time.time()

        steps = int(math.floor(len(ts) / float(batchsz)))

        shuffle = np.random.permutation(np.arange(steps))
        pg = ProgressBar(steps)
        cm.reset()

        total_loss = 0
        for i in range(steps):
            self.optimizer.zero_grad()
            si = shuffle[i]
            x, y = self._batch(ts, si, batchsz)
            pred = self.model(x)
            loss = self.crit(pred, y)
            total_loss += loss.data[0]
            loss.backward()
            self._add_to_cm(cm, y, pred)
            self.optimizer.step()
            pg.update()
        pg.done()

        duration = time.time() - start_time
        total_corr = cm.get_correct()
        total = cm.get_total()

        print('Train (Loss %.4f) (Acc %d/%d = %.4f) (%.3f sec)' %
              (float(total_loss) / total, total_corr, total,
               float(total_corr) / total, duration))
        print(cm)
Exemple #6
0
def remove_noise(dataset, features, verbose=False):
    sample_0 = dataset['input'][0]
    _, _, F = sample_0.shape
    print 'Removing noise: ',
    pbar = ProgressBar(len(dataset['input']) * (F - 1))
    for f in range(F):
        if (features[f] == 'time'): continue  # no need to filter time
        for sample in dataset['input']:
            y = sample[:, 0, f]
            # compute FT of the feature f
            w = scipy.fftpack.rfft(y)
            # compute mean frequency
            mean = np.mean(np.abs(w))
            # set the threshold to double the mean
            thr = 2 * mean
            # remove high frequency components
            cutoff_idx = np.abs(w) < thr
            w[cutoff_idx] = 0
            # return to time domain by doing inverseFFT
            y = scipy.fftpack.irfft(w)
            sample[:, 0, f] = y
            # update progress bar
            pbar.next()
    # return
    return None
Exemple #7
0
def train(train_loader, model, criterion, optimizer, epoch):
    losses = AverageMeter()
    len_train = len(train_loader)
    pb = ProgressBar(len_train-1)

    print("Training")

    # Switch to train mode
    model.train()
    criterion.cuda()
    for i, ((img,ref), score) in enumerate(train_loader):
        img, ref, score = img.cuda(), ref.cuda(), score.squeeze().cuda()

        # Compute output
        output = model(img, ref)
        loss = criterion(output, score)

        # Measure accuracy and record loss
        losses.update(loss.data, img.shape[0])

        # Compute gradient and do SGD step
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        pb.show(i, '[{0:5d}/{1:5d}]\t'
                'Loss {loss.val:.4f} ({loss.avg:.4f})\t'
                .format(i, len_train, loss=losses))
Exemple #8
0
    def train(self, ts, batchsz):
        self.model.train()

        start_time = time.time()

        steps = int(math.floor(len(ts) / float(batchsz)))
        shuffle = np.random.permutation(np.arange(steps))
        total_loss = total = 0
        pg = ProgressBar(steps)
        for i in range(steps):
            self.optimizer.zero_grad()

            si = shuffle[i]
            ts_i = data.batch(ts, si, batchsz, long_tensor_alloc, tensor_shape,
                              tensor_max)
            src, dst, tgt = self._wrap(ts_i)
            pred = self.model((src, dst))
            loss = self.crit(pred, tgt)
            total_loss += loss.data[0]
            loss.backward()
            torch.nn.utils.clip_grad_norm(self.model.parameters(), self.clip)

            total += self._total(tgt)
            self.optimizer.step()
            pg.update()
        pg.done()
        duration = time.time() - start_time

        avg_loss = float(total_loss) / total

        print('Train (Loss %.4f) (Perplexity %.4f) (%.3f sec)' %
              (avg_loss, np.exp(avg_loss), duration))
Exemple #9
0
 def predict(self, steps):
     print("Forecasting...")
     progress_bar = ProgressBar(len(self.models.items()))
     self.fcst_ds = pd.date_range(
         start=self.train_ds.min(), 
         freq="D", 
         periods=len(self.train_ds)+steps)[-365:]
     for item, model in self.models.items():
         pred = model.predict(
             exogenous=fourier(
                 steps, 
                 seasonality=self.seasonality, 
                 n_terms=self.n_fourier_terms),
             n_periods=steps, 
             return_conf_int=True,
             alpha=(1.0 - self.confidence_interval))
         self.fcst[item] = pd.DataFrame(
             {"yhat":pred[0],
              "yhat_lower":pred[1][:,0],
              "yhat_upper":pred[1][:,1]},
             index=self.fcst_ds)
         if self.use_boxcox:
             self.fcst[item] = inv_boxcox(
                 self.fcst[item], 
                 self.lmbda_boxcox[item])
         progress_bar.update()
     progress_bar.finish()
     return pd.concat(self.fcst, axis=1)
def get_most_common(a1, a2):
    temp_dict1 = {}
    temp_dict2 = {}
    pb = ProgressBar(worksum=len(a1), auto_display=False)
    pb.startjob()
    num = 0
    for s1, s2 in zip(a1, a2):
        num += 1
        pb.complete(1)
        if args.max_words != -1 and (len(s1) > args.max_words
                                     or len(s2) > args.max_words):
            continue
        for w1 in s1:
            temp_dict1.setdefault(w1, 0)
            temp_dict1[w1] += 1
        for w2 in s2:
            temp_dict2.setdefault(w2, 0)
            temp_dict2[w2] += 1

        if num % 32 == 0:
            pb.display_progress_bar()
    sorted1 = sorted(temp_dict1.items(), key=lambda i: i[1], reverse=True)
    sorted2 = sorted(temp_dict2.items(), key=lambda i: i[1], reverse=True)
    #print(sorted1[:100])
    #print(sorted2[:100])
    return [i[0] for i in sorted1[:args.vac_dict_ch]
            ], [i[0] for i in sorted2[:args.vac_dict_en]]
Exemple #11
0
    def train(self, data):
        merged = tf.summary.merge_all()
        train_writer = tf.summary.FileWriter(self.logdir + "/train", self.sess.graph)

        N = int(math.ceil(len(data) / self.batch_size))
        cost = 0

        x = np.ndarray([self.batch_size, self.win_size], dtype=np.float32)
        target = np.zeros([self.batch_size, self.nwords]) # one-hot-encoded

        if self.show:
            from utils import ProgressBar
            bar = ProgressBar('Train', max=N)

        m = self.win_size;
        clean_data = np.concatenate((np.zeros(self.win_size, dtype=np.int32), data)) #padding head
        clean_data = np.concatenate((clean_data, np.zeros(self.batch_size, dtype=np.int32))) #padding tail
        for idx in xrange(N): #interations
            if self.show: bar.next()
            target.fill(0)
            for b in xrange(self.batch_size):
                target[b][clean_data[m]] = 1 #one-batch, one example
                x[b] = clean_data[m-self.win_size : m] # we need padding here!
                m += 1

            summary, _, loss = self.sess.run([merged, self.optim, self.loss], feed_dict={
                                                        self.input: x,
                                                        self.targets: target})
            cost += np.sum(loss)
            train_writer.add_summary(summary, idx)

        train_writer.close()
        if self.show: bar.finish()
        return cost / N 
Exemple #12
0
def train(net, lr, trainloader, epoch):
  """
  Train SSD

  @args
    net: (nn.Module) network
    lr: (float) learning rate
    trainloader: (DataLoader) dataloader
    epoch: (int) training epoch
  """
  net.train()
  optimizer = optim.SGD(net.parameters(), lr=args.lr, momentum=0.9, weight_decay=1e-4)
  criterion = MultiBoxLoss(num_classes=config[args.dataset]['num_classes']+1)

  progress_bar = ProgressBar(total=len(trainloader))
  train_loss = 0
  torch.set_printoptions(threshold=10000)
  for batch_idx, (images, loc_targets, conf_targets) in enumerate(trainloader):
    images = Variable(images.cuda())
    loc_targets = Variable(loc_targets.cuda())
    conf_targets = Variable(conf_targets.cuda())

    optimizer.zero_grad()
    loc_preds, conf_preds = net(images)
    loc_loss, conf_loss, loss = criterion(loc_preds, loc_targets, conf_preds, conf_targets)
    loss.backward()
    optimizer.step()

    writer.add_scalar('train/loss_loc', loc_loss, batch_idx + epoch * len(trainloader))
    writer.add_scalar('train/loss_conf', conf_loss, batch_idx + epoch * len(trainloader))
    writer.add_scalar('train/loss_total', loss, batch_idx + epoch * len(trainloader))

    train_loss += loss.item()
    progress_bar.move(leftmsg="training epoch " + str(epoch), rightmsg="loss: %.6f" % (train_loss/(batch_idx+1)))
Exemple #13
0
def evaluate(epoch, model, val_loader, criterion, log_path):
    model.eval()
    val_progressor = ProgressBar(log_path,
                                 mode="Val  ",
                                 epoch=epoch,
                                 total_epoch=config.epochs,
                                 model_name=config.model_name,
                                 total=len(val_loader))
    losses = AverageMeter()
    top1 = AverageMeter()

    with torch.no_grad():
        for index, (data, label) in enumerate(val_loader):
            val_progressor.current = index
            data = Variable(data).cuda()
            label = Variable(torch.from_numpy(np.asarray(label))).cuda()
            output = model(data)
            loss = criterion(output, label)

            p_top1, p_top2 = accuracy(output, label, topk=(1, 2))
            losses.update(loss.item(), data.size(0))
            top1.update(p_top1[0], data.size(0))
            val_progressor.current_loss = losses.avg
            val_progressor.current_top1 = top1.avg
            val_progressor()
            #print('epoch %d validate iteration %d: loss: %.3f' % (epoch + 1, index + 1, it_loss.data))
            #correct += (output == label).sum()
        val_progressor.done()
    return losses.avg, top1.avg
Exemple #14
0
    def rmsd_matrix(self, msg=''):
        """
        Calculates rmsd matrix with no fitting for all pairs od models in trajectory.
        :return: np.array
        """
        def rmsd(m1, m2, ml):
            return np.sqrt(np.sum((m1 - m2)**2) / ml)

        model_length = len(self.template)
        models = self.coordinates.reshape(-1, model_length, 3)
        dim = len(models)
        result = np.zeros((dim, dim))
        if msg:
            bar = ProgressBar((dim * dim - dim) / 2, msg=msg)
        else:
            bar = None
        for i in range(dim):
            for j in range(i + 1, dim):
                if bar:
                    bar.update()
                result[i, j] = result[j, i] = rmsd(models[i], models[j],
                                                   model_length)
        if bar:
            bar.done(True)
        return result
Exemple #15
0
def calc_test_loss(test_x, test_y, display=True):
    accs = []
    worksum = int(len(test_x) / batch_size)
    loss_list = []
    predict_list = []
    target_list = []
    source_list = []
    pb = ProgressBar(worksum=worksum,
                     info="validating...",
                     auto_display=display)
    pb.startjob()
    #test_set = Dataset(test_x,test_y)
    for j in range(0, len(test_x), batch_size):
        batch_x, batch_y = test_x[j:j + batch_size], test_y[
            j:j + batch_size]  #test_set.next_batch(batch_size)
        if len(batch_x) < batch_size:
            continue
        bx = [len(m) + 1 for m in batch_x]
        by = [len(m) + 1 for m in batch_y]

        lx = [max(bx)] * batch_size
        ly = [max(by)] * batch_size

        batch_x = preprocessing.sequence.pad_sequences(
            batch_x, max(bx), padding='post', value=en2ind_oov['<eos>'])
        batch_y = preprocessing.sequence.pad_sequences(
            batch_y, max(by), padding='post', value=ch2ind_oov['<eos>'])

        tmp_loss, tran = session.run(
            [train_loss, translations],
            feed_dict={
                x:
                batch_x,
                y:
                batch_y,
                y_in:
                np.concatenate((np.ones(
                    (batch_y.shape[0], 1), dtype=np.int) * ch2ind['<go>'],
                                batch_y[:, :-1]),
                               axis=1),
                x_len:
                lx,
                y_len:
                ly,
                y_real_len:
                by,
                x_real_len:
                bx,
                y_max_len:
                max(by)
            })
        loss_list.append(tmp_loss)
        tmp_acc = cal_acc(tran[:, :, 0], batch_y)
        accs.append(tmp_acc)
        predict_list += [i for i in tran[:, :, 0]]
        target_list += [i for i in batch_y]
        source_list += [i for i in batch_x]
        pb.complete(1)
    return np.average(loss_list), np.average(accs), get_bleu_score(
        predict_list, target_list), predict_list, target_list, source_list
Exemple #16
0
 def fit(self, train_df, regressors=None):
     print("Fitting...")
     progress_bar = ProgressBar(len(train_df.columns))
     for item in train_df.columns:
         self.models[item] = Prophet(
             yearly_seasonality=self.yearly_seasonality,
             weekly_seasonality=self.weekly_seasonality,
             daily_seasonality=self.daily_seasonality,
             **self.prophet_config)
         target = train_df[item].dropna()
         if self.use_boxcox:
             idx = target.index
             target, self.lmbda_boxcox[item] = boxcox(target)
             target = pd.Series(target, index=idx)
         target.index.name = "ds"
         target.name = "y"
         if self.country_holidays is not None:
             self.models[item].add_country_holidays(country_name=self.country_holidays)
         if regressors is not None:
             target = pd.merge(target, regressors, left_index=True, right_index=True, how="left")
             for reg in regressors.columns:
                 self.models[item].add_regressor(reg)
         target = target.reset_index()
         self.models[item].fit(target)
         progress_bar.update()
     progress_bar.finish()
     return self.models
Exemple #17
0
def test(test_data_loader, model):
    srocc = SROCC()
    plcc = PLCC()
    rmse = RMSE()
    len_test = len(test_data_loader)
    pb = ProgressBar(len_test, show_step=True)

    print("Testing")

    model.eval()
    with torch.no_grad():
        for i, ((img, ref), score) in enumerate(test_data_loader):
            img, ref = img.cuda(), ref.cuda()
            output = model(img, ref).cpu().data.numpy()
            score = score.data.numpy()

            srocc.update(score, output)
            plcc.update(score, output)
            rmse.update(score, output)

            pb.show(
                i, "Test: [{0:5d}/{1:5d}]\t"
                "Score: {2:.4f}\t"
                "Label: {3:.4f}".format(i + 1, len_test, float(output),
                                        float(score)))

    print("\n\nSROCC: {0:.4f}\n"
          "PLCC: {1:.4f}\n"
          "RMSE: {2:.4f}".format(srocc.compute(), plcc.compute(),
                                 rmse.compute()))
Exemple #18
0
def train_batches(model: Model,
                  train: Split,
                  loss,
                  batch_size: int,
                  optimizer,
                  display: bool = True):
    losses = []

    batches = Batches(train, batch_size)

    pb = ProgressBar(batches.batch_N, display=display)

    train.shuffle()
    pb.reset()
    for i in range(batches.batch_N):
        model.zero_grad()
        optimizer.zero_grad()

        y_true = model.get_y(batches, i)
        y_true = torch.autograd.Variable(torch.from_numpy(y_true)).cuda().type(
            torch.cuda.FloatTensor)
        model_output = model.predict(batches, i)

        l = loss(model_output, y_true)
        l.backward()

        optimizer.step()

        losses.append(l.data.cpu().numpy()[0])

        pb.tick()

    return losses
Exemple #19
0
def validate(val_loader, model, criterion, show_step=False):
    losses = AverageMeter()
    srocc = SROCC()
    len_val = len(val_loader)
    pb = ProgressBar(len_val-1, show_step=show_step)

    print("Validation")

    # Switch to evaluate mode
    model.eval()

    with torch.no_grad():
        for i, ((img,ref), score) in enumerate(val_loader):
            img, ref, score = img.cuda(), ref.cuda(), score.squeeze().cuda()

            # Compute output
            output = model(img, ref)
            
            loss = criterion(output, score)
            losses.update(loss.data, img.shape[0])

            output = output.cpu().data
            score = score.cpu().data
            srocc.update(score.numpy(), output.numpy())

            pb.show(i, '[{0:5d}/{1:5d}]\t'
                    'Loss {loss.val:.4f} ({loss.avg:.4f})\t'
                    'Output {out:.4f}\t'
                    'Target {tar:.4f}\t'
                    .format(i, len_val, loss=losses, 
                    out=output, tar=score))


    return float(1.0-srocc.compute())  # losses.avg
 def _load(self):
     log('[{time}] loading from {path}'.format(time=get_time(),
                                               path=self._source_path))
     for i, label_tag in enumerate(self._label_tags):
         path = os.path.join(self._source_path, label_tag)
         files = sample(
             os.listdir(path)[self._start:self._end], self._max_num
         ) if self._max_num > 0 else os.listdir(path)[self._start:self._end]
         print('start: {}, end: {}'.format(self._start, self._end))
         print(len(files))
         pbar = ProgressBar(len(files))
         for j, filename in enumerate(files):
             filepath = os.path.join(path, filename)
             try:
                 with open(filepath, 'r') as f:
                     log_sequence = json.load(f)
                     feature = self._sequence2feature(log_sequence)
                     self._data_ids.append(
                         filepath.split('/')[-1].split('.')[0].split('_')
                         [0])
                     self._feature_data.append(feature)
                     self._label_data.append(i)
             except:
                 log('[{time}] Failed to load file {filepath}'.format(
                     time=get_time(), filepath=filepath))
                 print('[{time}] Failed to load file {filepath}'.format(
                     time=get_time(), filepath=filepath))
             pbar.updateBar(j)
Exemple #21
0
    def train(self, ts):
        self.model.train()

        start_time = time.time()

        steps = int(len(ts))
        shuffle = np.random.permutation(np.arange(steps))

        total_loss = total_corr = total = 0
        pg = ProgressBar(steps)
        for i in range(steps):
            self.optimizer.zero_grad()
            si = shuffle[i]
            src, dst, tgt = self._wrap(ts[si])
            pred = self.model((src, dst))
            loss = self.crit(pred, tgt)
            total_loss += loss.data[0]
            loss.backward()

            total_corr += self._right(pred, tgt)
            total += self._total(tgt)
            self.optimizer.step()
            pg.update()
        pg.done()
        duration = time.time() - start_time

        avg_loss = float(total_loss) / total

        print(
            'Train (Loss %.4f) (Perplexity %.4f) (Acc %d/%d = %.4f) (%.3f sec)'
            % (avg_loss, np.exp(avg_loss), total_corr, total,
               float(total_corr) / total, duration))
Exemple #22
0
    def _preprocess(self):
        self.lang = Lang()
        for text in self._texts:
            self.lang.index_text(text)

        for text in self._texts:
            indexes = indexes_from_text(self.lang, text)
            indexes.append(EOT_token)
            padded_indexes = pad_indexes(indexes, self._max_text_length,
                                         PAD_token)
            self._indexed_texts.append(padded_indexes)

        self._indexed_texts = np.stack(self._indexed_texts, axis=0)

        bar = ProgressBar(len(self._audio_files) - 1, unit='')
        for (audio_files_read, audio_file) in enumerate(self._audio_files):
            # (n_mels, T), (1+n_fft/2, T)
            mel, mag = compute_spectrograms(audio_file)
            padded_mel = pad_time_dim(mel, self._max_audio_length, 0)
            padded_mag = pad_time_dim(mag, self._max_audio_length, 0)
            self._mels.append(padded_mel.transpose())
            self._mags.append(padded_mag.transpose())

            bar.update(audio_files_read)

        self._mels = np.stack(self._mels, axis=0)
        self._mags = np.stack(self._mags, axis=0)
Exemple #23
0
    def generate(self):
        progress_bar = ProgressBar(self.settings.nb_rrd_files)

        self.add_header(self.settings)

        for domain in self.settings.domains:
            for host in self.settings.domains[domain].hosts:
                row = self.add_row("{0} / {1}".format(domain, host))
                for plugin in self.settings.domains[domain].hosts[
                        host].plugins:
                    _plugin = self.settings.domains[domain].hosts[
                        host].plugins[plugin]
                    panel = row.add_panel(
                        _plugin.settings["graph_title"] or plugin, plugin)

                    for field in _plugin.fields:
                        query = panel.add_query(field)
                        if "label" in _plugin.fields[field].settings:
                            query.alias = _plugin.fields[field].settings[
                                "label"]
                        progress_bar.update()

                    panel.width = 12 // self.settings.grafana['graph_per_row']
                    panel.process_graph_settings(_plugin.settings)
                    panel.process_graph_thresholds(_plugin.fields)
                    panel.process_graph_types(_plugin.fields)
Exemple #24
0
    def train(self):
        avg_G_loss = 0
        avg_D_loss = 0
        avg_Q_loss = 0
        iterations = int(self.mnist.train.num_examples / self.batch_size)

        if self.show_progress:
            bar = ProgressBar('Train', max=iterations)

        for i in range(iterations):

            if self.show_progress:
                bar.next()

            batch_xs, _ = self.mnist.train.next_batch(self.batch_size)
            feed_dict = {self.X: batch_xs, \
                         self.z: self.z_sampler(self.batch_size), \
                         self.c_i: self.c_cat_sampler(self.batch_size), \
                         self.c_j: self.c_cont_sampler(self.batch_size), \
                         self.training: True}

            for _ in range(self.d_update):
                _, D_loss = self.sess.run([self.D_optim, self.D_loss], feed_dict=feed_dict)
            _, G_loss = self.sess.run([self.G_optim, self.G_loss], feed_dict=feed_dict)
            _, Q_loss = self.sess.run([self.Q_optim, self.Q_loss], feed_dict=feed_dict)

            avg_G_loss += G_loss / iterations
            avg_D_loss += D_loss / iterations
            avg_Q_loss += Q_loss / iterations

        if self.show_progress:
            bar.finish()

        return avg_G_loss, avg_D_loss, avg_Q_loss
Exemple #25
0
def parallel_test(model_cls,
                  model_kwargs,
                  checkpoint,
                  dataset,
                  data_func,
                  gpus,
                  worker_per_gpu=1):
    ctx = multiprocessing.get_context('spawn')
    idx_queue = ctx.Queue()
    result_queue = ctx.Queue()
    num_workers = len(gpus) * worker_per_gpu
    workers = [
        ctx.Process(target=worker_func,
                    args=(model_cls, model_kwargs, checkpoint, dataset,
                          data_func, gpus[i % len(gpus)], idx_queue,
                          result_queue)) for i in range(num_workers)
    ]
    for w in workers:
        w.daemon = True
        w.start()

    for i in range(len(dataset)):
        idx_queue.put(i)

    results = {}
    prog_bar = ProgressBar(task_num=len(dataset))
    for _ in range(len(dataset)):
        img_id, res = result_queue.get()
        results[img_id] = format_ret(res)
        prog_bar.update()
    print('\n')
    for worker in workers:
        worker.terminate()

    return results
def calc_test_loss(test_set = Dataset(test_x,test_y),display=True):
    accs = []
    worksum = int(len(test_x) / batch_size)
    loss_list = []
    predict_list = []
    target_list = []
    source_list = []
    pb = ProgressBar(worksum=worksum,info="validating...",auto_display=display)
    pb.startjob()
    #test_set = Dataset(test_x,test_y)
    for j in range(worksum):
        batch_x,batch_y = test_set.next_batch(batch_size)
        lx = [seq_max_len] * batch_size
        ly = [seq_max_len] * batch_size
        bx = [np.sum(m > 0) for m in batch_x]
        by = [np.sum(m > 0) for m in batch_y]
        tmp_loss,tran = session.run([train_loss,translations],feed_dict={x:batch_x,y:batch_y,
                                                     y_in:
                                                     np.concatenate((
                                                     np.ones((batch_y.shape[0],1),dtype=np.int) * ch2ind['<go>'],batch_y[:,:-1]) ,axis=1)
                                                     ,x_len:lx,y_len:ly,
                                                                        y_real_len:by,
                                                                        x_real_len:bx})
        loss_list.append(tmp_loss)
        tmp_acc = cal_acc(tran,batch_y)
        accs.append(tmp_acc)
        predict_list += [i for i in tran]
        target_list += [i for i in batch_y]
        source_list += [i for i in batch_x]
        pb.complete(1)
    return np.average(loss_list),np.average(accs),get_bleu_score(predict_list,target_list),predict_list,target_list,source_list
Exemple #27
0
    def _write_per_dir(self):
        """
        write outputs of each directory to a different file
        """

        bag_of_words = BagOfWordsParser(self._words_filter)
        reviews_per_dir = defaultdict(list)

        flags = Reviewer._get_flags_text(self._output_per_dir,
                                         self._output_in_svm_light,
                                         self._output_in_tfdidf)

        for dir in map(os.path.abspath, self._dirs):
            numoffiles = len(os.listdir(dir))
            filename = Reviewer._get_filename(dir, flags)

            reviews = reviews_per_dir[filename]
            prefix = "crunching reviews for '{}'".format(filename)

            with ProgressBar(prefix, numoffiles) as pb:
                for review in bag_of_words.parse_dir(dir):
                    pb.report()
                    reviews.append(review)

            assert numoffiles == len(reviews)

        # we update here because the bag of words is not updated yet
        # when we're still reading the files in the directories
        for filename, reviews in reviews_per_dir.items():
            self._write(filename, bag_of_words, reviews)
Exemple #28
0
def test(model: nn.Module,
         test_loader: DataLoader,
         use_cuda: bool,
         loss_func: Callable[[Tensor, Tensor], Tensor] = nnf.cross_entropy,
         input_ops: Callable[[Tensor], Tensor] = None,
         output_ops: Callable[..., Tensor] = None) -> Tuple[float, float]:
    model.eval()
    tot_loss = 0.
    correct = 0
    total = 0
    print('\nTest started:')
    sys.stdout.flush()
    pb = ProgressBar()
    for batch_idx, (data, target) in enumerate(test_loader):
        (loss, correct, total,
         tot_loss) = step(model, data, target, use_cuda, correct, total,
                          tot_loss, None, loss_func, input_ops, output_ops)
        pb.progress(batch_idx / len(test_loader))
    pb.complete()
    avg_loss = tot_loss / total
    accuracy = correct / total
    print('\n{0}: Test result: mean loss = {1:f}, accuracy = {2:f}'.format(
        get_timestamp(), avg_loss, accuracy))
    sys.stdout.flush()
    return avg_loss, accuracy
Exemple #29
0
def export_to_xml_in_folder(source, destination=Defaults.MUNIN_XML_FOLDER):
    """
    Calls "rrdtool dump" to convert RRD database files in "source" folder to XML representation
    Converts all *.rrd files in source folder
    """
    assert os.path.exists(source)
    try:
        os.makedirs(destination)
    except OSError as e:
        if e.errno != errno.EEXIST:
            raise

    filelist = [("", os.path.join(source, file)) for file in os.listdir(source)
                if file.endswith(".rrd")]
    nb_files = len(filelist)
    progress_bar = ProgressBar(nb_files)

    print("Exporting {0} RRD databases:".format(nb_files))

    for domain, file in filelist:
        src = os.path.join(source, domain, file)
        dst = os.path.join(
            destination, "{0}-{1}".format(domain,
                                          file).replace(".rrd", ".xml"))
        progress_bar.update()

        code = subprocess.check_call(['rrdtool', 'dump', src, dst])

    return nb_files
Exemple #30
0
    def train(self, ts, cm, dropout, batchsz=1):

        total_loss = 0
        start_time = time.time()
        steps = int(math.floor(len(ts)/float(batchsz)))
        shuffle = np.random.permutation(np.arange(steps))
        pg = ProgressBar(steps)
        cm.reset()

        for i in range(steps):
            si = shuffle[i]
            ts_i = data.batch(ts, si, batchsz)
            feed_dict = self.model.ex2dict(ts_i, 1.0-dropout)
        
            _, step, summary_str, lossv, guess = self.sess.run([self.train_op, self.global_step, self.summary_op, self.loss, self.model.best], feed_dict=feed_dict)
            self.train_writer.add_summary(summary_str, step)
            total_loss += lossv
            cm.add_batch(ts_i.y, guess)
            pg.update()

        pg.done()
        total = cm.get_total()
        total_corr = cm.get_correct()
        duration = time.time() - start_time

        print('Train (Loss %.4f) (Acc %d/%d = %.4f) (%.3f sec)' % (float(total_loss)/total, total_corr, total, float(total_corr)/total, duration))
        print(cm)