def lstm_init_states(batch_size):
    """ Returns a tuple of names and zero arrays for LSTM init states"""
    hp = Hyperparams()
    init_shapes = lstm.init_states(batch_size=batch_size, num_lstm_layer=hp.num_lstm_layer, num_hidden=hp.num_hidden)
    init_names = [s[0] for s in init_shapes]
    init_arrays = [mx.nd.zeros(x[1]) for x in init_shapes]
    return init_names, init_arrays
def lstm_init_states(batch_size):
    hp = Hyperparams()
    init_shapes = lstm.init_states(batch_size=batch_size, num_lstm_layer=hp.num_lstm_layer, num_hidden=hp.num_hidden)
    init_names = [s[0] for s in init_shapes]
    init_arrays = [mx.nd.zeros(x[1]) for x in init_shapes]
    
    return init_names, init_arrays
Esempio n. 3
0
    def test(epoch):
        global best_acc
        global test_total
        global test_correct
        net.eval()
        test_loss = 0
        correct = 0
        total = 0
        with torch.no_grad():
            for batch_idx, (inputs, targets) in enumerate(testloader):
                inputs, targets = inputs.cuda(), targets.cuda()
                outputs = net(inputs)
                loss = criterion(outputs, targets)

                test_loss += loss.item()
                _, predicted = outputs.max(1)
                total += targets.size(0)
                correct += predicted.eq(targets).sum().item()

                progress_bar(
                    batch_idx, len(testloader),
                    'Loss: %.3f | Acc: %.3f%% (%d/%d)' %
                    (test_loss /
                     (batch_idx + 1), 100. * correct / total, correct, total))

        test_total = total
        test_correct = correct

        # Save checkpoint.
        acc = 100. * correct / total
        if acc > best_acc:
            all_accs.append(acc)
            all_epochs.append(epoch)
            all_times.append(round(time_to_train, 2))
            print('Saving..')
            state = {
                'net': net.state_dict(),
                'acc': all_accs,
                'epoch': all_epochs,
                'time_to_train': all_times,
                'basic_info': hp.get_info_dict()
            }
            if not os.path.isdir('checkpoint'):
                os.mkdir('checkpoint')
            if hp.with_lars:
                torch.save(
                    state,
                    './checkpoint/withLars-' + str(hp.batch_size) + '.pth')
            else:
                torch.save(
                    state,
                    './checkpoint/noLars-' + str(hp.batch_size) + '.pth')
            best_acc = acc
import pandas, logging, sys
from model import Model
import numpy as np
from keras.models import load_model
from data_loader import Test_data_loader
from hyperparams import Hyperparams
from random import shuffle

H = Hyperparams()

#logger configuration
FORMAT = "[%(filename)s: %(lineno)3s] %(levelname)s: %(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)
logger = logging.getLogger(__name__)

# model = Model().get_model()
# model.load_weights("saved_weights/model_epoch_{}.h5".format(sys.argv[1]))
# logger.info("Saved weight model_epoch_{} loaded".format(sys.argv[1]))
model = load_model("batch_14.h5")
test_batch_generator = Test_data_loader(H.test_batch_size)

test_csv = pandas.read_csv("../test.csv")
# shuffle(test_csv['image_name'])
num_test = test_csv["image_name"].shape[0]
# test_csv = test_csv[:num_test]
predictions = np.ones(shape=(num_test, 4))
logger.info("Empty predictions array initialized of shape : {}".format(
    predictions.shape))

for i in range(num_test // H.test_batch_size + 1):
    img_batch = test_batch_generator[i]
Esempio n. 5
0
from hyperparams import Hyperparams
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="Run Consumer")
    parser.add_argument('--server', type=str, required=True)
    parser.add_argument('--model_tag', type=str, required=True)
    args = parser.parse_args()

    server = int(args.server)
    model_tag = args.model_tag

    train_size = {242: 411199, 204: 467903}
    test_size = {242: 372573, 204: 512064}

    hp = Hyperparams(server,
                     model_tag,
                     train_size=train_size[server],
                     test_size=test_size[server])

    logger = logging.getLogger(__name__)
    logging.root.setLevel(level=logging.INFO)

    model_trainer = ModelTrainer(hp)
    logger.info('model trainer initialized.')

    model_trainer.model_train()
    logger.info('model trainer done.')
Esempio n. 6
0
#coding=utf-8

import os
import sys
import tensorflow as tf
import numpy as np
import logging
import time

from hyperparams import Hyperparams
import data_helper as dh

prj_name = sys.argv[1]
model_id = int(sys.argv[2])

hp = Hyperparams(prj_name)
tf.flags.DEFINE_string("test_file", hp.train_params["test_file"],
                       "Data for the training data.")
tf.flags.DEFINE_string("model_path", hp.train_params["model_path"],
                       "Path to save model")
tf.flags.DEFINE_integer("max_seq_len", hp.model_params["max_seq_len"],
                        "Max length for sequence")
tf.flags.DEFINE_integer("batch_size", hp.train_params["batch_size"],
                        "Batch size for validation")

FLAGS = tf.flags.FLAGS


def examples(querys_a, ids_a, querys_b, ids_b, labels):
    logging.info("Load datas like this:\n")
    for query_a, id_a, query_b, id_b, label in zip(querys_a, ids_a, querys_b,
Esempio n. 7
0
                os.mkdir('checkpoint')
            if hp.with_lars:
                torch.save(
                    state,
                    './checkpoint/withLars-' + str(hp.batch_size) + '.pth')
            else:
                torch.save(
                    state,
                    './checkpoint/noLars-' + str(hp.batch_size) + '.pth')
            best_acc = acc

    if hp.with_lars:
        print('Resnet50, data=cifar10, With LARS')
    else:
        print('Resnet50, data=cifar10, Without LARS')
    hp.print_hyperparms()
    for epoch in range(0, hp.num_of_epoch):
        print('\nEpoch: %d' % epoch)
        if epoch <= hp.warmup_epoch:  # for readability
            warmup_scheduler.step()
        if epoch > hp.warmup_epoch:  # after warmup, start decay scheduler with warmup-ed learning rate
            poly_decay_scheduler.base_lrs = warmup_scheduler.get_lr()
        for param_group in optimizer.param_groups:
            print('lr: ' + str(param_group['lr']))
        train(epoch)
        test(epoch)

        epochs.append(epoch)
        train_accs.append(100. * train_correct / train_total)
        test_accs.append(100. * test_correct / test_total)
def main():
    """Program entry point"""
    args = parse_args()
    if not any(args.loss == s for s in ['ctc', 'warpctc']):
        raise ValueError(
            "Invalid loss '{}' (must be 'ctc' or 'warpctc')".format(args.loss))

    hp = Hyperparams()

    # Start a multiprocessor captcha image generator
    mp_captcha = MPDigitCaptcha(font_paths=get_fonts(args.font_path),
                                h=hp.seq_length,
                                w=30,
                                num_digit_min=3,
                                num_digit_max=4,
                                num_processes=args.num_proc,
                                max_queue_size=hp.batch_size * 2)
    try:
        # Must call start() before any call to mxnet module (https://github.com/apache/incubator-mxnet/issues/9213)
        mp_captcha.start()

        if args.gpu:
            contexts = [mx.context.gpu(i) for i in range(args.gpu)]
        else:
            contexts = [mx.context.cpu(i) for i in range(args.cpu)]

        init_states = lstm.init_states(hp.batch_size, hp.num_lstm_layer,
                                       hp.num_hidden)

        data_train = OCRIter(hp.train_epoch_size // hp.batch_size,
                             hp.batch_size,
                             init_states,
                             captcha=mp_captcha,
                             name='train')
        data_val = OCRIter(hp.eval_epoch_size // hp.batch_size,
                           hp.batch_size,
                           init_states,
                           captcha=mp_captcha,
                           name='val')

        symbol = lstm.lstm_unroll(num_lstm_layer=hp.num_lstm_layer,
                                  seq_len=hp.seq_length,
                                  num_hidden=hp.num_hidden,
                                  num_label=hp.num_label,
                                  loss_type=args.loss)

        head = '%(asctime)-15s %(message)s'
        logging.basicConfig(level=logging.DEBUG, format=head)

        module = mx.mod.Module(symbol,
                               data_names=[
                                   'data', 'l0_init_c', 'l0_init_h',
                                   'l1_init_c', 'l1_init_h'
                               ],
                               label_names=['label'],
                               context=contexts)

        metrics = CtcMetrics(hp.seq_length)
        module.fit(
            train_data=data_train,
            eval_data=data_val,
            # use metrics.accuracy or metrics.accuracy_lcs
            eval_metric=mx.gluon.metric.np(metrics.accuracy,
                                           allow_extra_outputs=True),
            optimizer='sgd',
            optimizer_params={
                'learning_rate': hp.learning_rate,
                'momentum': hp.momentum,
                'wd': 0.00001,
            },
            initializer=mx.init.Xavier(factor_type="in", magnitude=2.34),
            num_epoch=hp.num_epoch,
            batch_end_callback=mx.callback.Speedometer(hp.batch_size, 50),
            epoch_end_callback=mx.callback.do_checkpoint(args.prefix),
        )
    except KeyboardInterrupt:
        print("W: interrupt received, stopping...")
    finally:
        # Reset multiprocessing captcha generator to stop processes
        mp_captcha.reset()
Esempio n. 9
0
import torch
import torch.nn as nn
import torch.optim as optim

from simple_nmt.encoder import Encoder
from simple_nmt.decoder import Decoder
from simple_nmt.seq2seq import Seq2Seq
from data_loader import DataLoader
#from train import
from hyperparams import Hyperparams

if __name__ == "__main__":
    hparams = Hyperparams()
    cuda = hparams.use_cuda and torch.cuda.is_available()
    device = torch.device('cuda' if cuda else 'cpu')

    enc, enc_hidden = Encoder()
    dec, dec_hidden = Decoder()
    model = Seq2Seq(enc, dec)

    model.flatten_parameters()  # 일자로 펴 준다
    model = nn.DataParallel(model).to(device)

    optimizer = optim.Adam(model.module.parameters(), lr=hparams.lr)

    # loss function의 변수로 criterion 대게 씀. reduction은 loss를 어떻게 넘길지인데, default는 mean이지만 sum이 더 빠르다고 함. 더 정확한 것은 mean
    # ignore_index는 loss 계산시 무시할 인덱스인데, PADDING 된 것들에는 loss 계산할 필요가 없다.
    criterion = nn.CrossEntropyLoss(reduction='sum',
                                    ignore_index=PAD_token).to(device)

    #########
Esempio n. 10
0
from hyperparams import Hyperparams
from surrogate_model import SurrogateModel
from optimizer import Optimizer
from binarydataset import BinaryDataset
import sys

# get the default hyper parameters
hp = Hyperparams()
config = hp.get_default()
# set any other command line configurations in key=val format
hp.set_command_line_args(argv=sys.argv[2:], config=config)

print('Configuration:', config)

# read the dataset
ds = BinaryDataset(folder_path=sys.argv[1],
                   config=config)

# set the number of features, useful for the feature batch placeholder in the surogate model
config['num_features'] = ds.num_features

# create the surogate model
model = SurrogateModel(config=config)
model.create_model()

# create the optimizer
optimizer = Optimizer(config=config,
                      dataset=ds,
                      model=model)
optimizer.run()
Esempio n. 11
0
def main(hp):
    g = HIN(hp)
    model = NSHE(g, hp)
    if hp.train_on_gpu:
        model.cuda()
    if hp.opt_method == "Adam" or hp.opt_method == "adam":
        optimizer = optim.Adam(model.parameters(), lr=hp.alpha)
    else:
        optimizer = optim.SGD(model.parameters(), lr=hp.alpha)

    node_emb = run(model, g, optimizer)  # 模型训练
    print("Train finished")
    model.eval()
    evaluate(node_emb, g.t_info)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='GCN')
    parser.add_argument("--dataset",
                        type=str,
                        default='dblp',
                        help="dataset to train")
    parser.add_argument("--task",
                        type=str,
                        default='cla',
                        help="task to train")
    args = parser.parse_args()
    hp = Hyperparams(args.dataset, args.task)
    warnings.filterwarnings('ignore')
    main(hp)
from hyperparams import Hyperparams
from surrogate_model import SurrogateModel
from universal_loss.universal_loss_optimizers import UniversalLossOptimizer
from binarydataset import BinaryDataset
import sys

# get the default hyper parameters
hp = Hyperparams()
config = hp.get_default()
# set any other command line configurations in key=val format
for arg in sys.argv[1:]:
    key, raw_value = arg.split('=')
    # set binary values
    if key == 'stratified_batch' or key == 'init_universal_loss':
        value = raw_value.lower() == 'true'
        print('Binary configuration:', key, '=', value)
    # set float configurations
    elif key == 'eta_pred' or key == 'eta_loss' or key == 'max_grad_norm':
        value = float(raw_value)
        print('Float configuration:', key, '=', value)
    # set int configurations
    elif key == 'batch_size' or key == 'num_epochs' or key == 'steps_loss' \
            or key == 'steps_prediction' or key == 'performance_epoch_frequency':
        value = int(raw_value)
        print('Int configuration:', key, '=', value)
    # set list configurations
    elif key == 'prediction_layers' or key == 'loss_embedding_layers' \
            or key == 'loss_aggregation_layers':
        value = list(map(int, raw_value.split(',')))
        print('List configuration:', key, '=', value)
    # set string configurations
def face_detection(net, img_raw):
    cfg = Hyperparams().cfg_mnet
    img = np.float32(img_raw)
    # testing scale
    target_size = 1600
    max_size = 2150
    im_shape = img.shape
    im_size_min = np.min(im_shape[0:2])
    im_size_max = np.max(im_shape[0:2])
    resize = float(target_size) / float(im_size_min)
    # prevent bigger axis from being more than max_size:防止超过最大尺寸
    if np.round(resize * im_size_max) > max_size:
        resize = float(max_size) / float(im_size_max)
    if True:
        resize = 1
    if resize != 1:
        img = cv2.resize(img,
                         None,
                         None,
                         fx=resize,
                         fy=resize,
                         interpolation=cv2.INTER_LINEAR)
    im_height, im_width, _ = img.shape
    scale = np.array([img.shape[1], img.shape[0], img.shape[1],
                      img.shape[0]]).astype(np.float64)

    img -= (104, 117, 123)  # 单通道
    img = img.transpose(2, 0, 1)  # 转置
    img = np.expand_dims(img, 0)

    loc, conf, landms, test_size = net(img)
    # 面框
    priorbox = PriorBox_in_numpy(cfg,
                                 image_size=(im_height, im_width),
                                 test_size=test_size)
    priors = priorbox.forward()

    #prior_data = priors.data
    prior_data = priors

    boxes = decode_in_numpy(loc.squeeze(0), prior_data, cfg['variance'])
    boxes = boxes * scale / resize

    scores = conf.squeeze(0)[:, 1]
    landms = decode_landm_in_numpy(landms.squeeze(0), prior_data,
                                   cfg['variance'])
    scale1 = np.array([
        img.shape[3], img.shape[2], img.shape[3], img.shape[2], img.shape[3],
        img.shape[2], img.shape[3], img.shape[2], img.shape[3], img.shape[2]
    ]).astype(np.float64)
    landms = landms * scale1 / resize

    # ignore low scores
    inds = np.where(scores > 0.02)[0]
    boxes = boxes[inds]
    landms = landms[inds]
    scores = scores[inds]

    # keep top-K before NMS
    order = scores.argsort()[::-1]  # 返回的是从小到大排序的索引
    #if len(order) > 10:
    #    order = order[:10]
    # order = scores.argsort()[::-1][:args.top_k]
    boxes = boxes[order]
    landms = landms[order]
    scores = scores[order]

    # do NMS
    dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32,
                                                            copy=False)
    #print("pre:{}".format(dets.shape))
    keep = py_cpu_nms_in_numpy(dets, 0.4)
    # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu)
    dets = dets[keep, :]
    #print("back:{}".format(dets.shape))
    landms = landms[keep]

    # keep top-K faster NMS
    # dets = dets[:args.keep_top_k, :]
    # landms = landms[:args.keep_top_k, :]

    dets = np.concatenate((dets, landms), axis=1)  # 连接
    faces = []
    for b in dets:
        if b[4] < 0.5:
            continue
        # text = "{:.4f}".format(b[4])
        b = list(map(int, b))
        #cv2.rectangle(img_raw, (b[0], b[1]), (b[2], b[3]), (0, 0, 255), 2)
        faces.append(b)
    #print("facesnum:{}".format(len(faces)))
    return faces