Ejemplo n.º 1
0
def main():
    seed = 1
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    cuda = True
    train, test = prep_data(pca=True, pca_scale=True, inputation=True,
                            strategy='median', remove_low_variance=False)
    columns_to_drop = ['Response']
    test = test.drop(columns_to_drop, axis=1)
    test_data = CustData(test)
    test_loader = DataLoader(test_data, batch_size=len(test_data), num_workers=6,
                             worker_init_fn=worker_init_fn)
    #with open('../5Others/config.txt', 'rb') as fp:
    with open('../4TrainingWeights/tuning_2/num_node_layer_num/num_nodes_256_layer_number_2/2019-01-15_16_49_59.215415\\2019-01-15_18_54_05.071129.txt', 'rb') as fp:
    #with open('../4TrainingWeights/2019-01-06_09_45_38.867660/2019-01-06_11_28_41.798519.txt', 'rb') as fp:
        param = json.load(fp)
    input_dim = len(test.columns)
    model = Ordinal_regression(create_module, config=param, input_dim=input_dim)
    #state_dic = torch.load('../4TrainingWeights/2019-01-06_20_43_56.362198/2019-01-06_21_04_05.995207.pth')
    #model.load_state_dict(state_dic)
    if cuda:
        model.cuda()
    model.eval()
    final_prediction = prediction(model, test_loader, cuda)
#    test_loader = DataLoader(test_data, batch_size=len(test_data), num_workers=6,
#                             worker_init_fn=worker_init_fn)
#    y, final_prediction = prediction(model, test_loader, cuda, label= True)
#    len(y[abs(y-final_prediction) <= 2]) / len(y)
#    y = list(map(int, y))
#    accuracy_score(y, final_prediction)
    submission = pd.read_csv('../1TestData/sample_submission.csv', index_col=0)
    submission['Response'] = final_prediction.astype('int32')
    submission.to_csv('submit.csv')
Ejemplo n.º 2
0
def main():

    THRESHOLD = 0.0
    print(os.getcwd())

    dream_model = load_dream_model()

    # Image preprocessing
    transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
        transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
    ])

    test_files, test_labels = utils.prep_data(cfg.test_path)
    # test_files, test_labels = load_data_set_test(cfg.test_path)
    test_labels = list(map(int, test_labels))

    test_res = []

    for im_name in test_files:
        # Prepare an image
        image = load_image(im_name, transform)
        image_tensor = image.to(device)
        # test image
        predicted_label = dream_model(image_tensor)
        m = nn.Softmax()
        norm_labels = m(predicted_label)

        norm_labels_np = norm_labels.cpu().data.numpy(
        )  # convert to numpy array
        predicted_label = np.argmax(norm_labels_np)
        if norm_labels_np[0][predicted_label] >= THRESHOLD:
            test_res.append(predicted_label)
        else:
            test_res.append(-1)

        print("Image Name: " + im_name + " Test Res: " +
              cfg.CLASS_LIST[predicted_label] + " Confidence: " +
              str(norm_labels_np[0][predicted_label]))

    # calculate metrics
    score = metrics.accuracy_score(test_labels, test_res)
    cls_report = metrics.classification_report(test_labels, test_res)
    conf_mat = metrics.confusion_matrix(test_labels, test_res)

    print(("Accuracy = " + str(score)))
    print(cls_report)
    print(conf_mat)
Ejemplo n.º 3
0
    def post(self):
        args = self.reqparse.parse_args()

        rabbit = utils.RabbitClient(queue=PUBLISH, host='rabbitmq')

        logger.info('Received data...')
        data = utils.prep_data(args['data'])
        key = hashlib.sha1(''.join(data['sents'])).hexdigest()
        data['pipeline_key'] = key

        logger.info('Sending downstream with key {}...'.format(key))
        rabbit.send(data, PUBLISH)

        logging.info('Sent {}'.format(key))
        return key
Ejemplo n.º 4
0
def main():

    THRESHOLD = 0.0

    # Image preprocessing
    transform = transforms.Compose([
        transforms.Resize((cfg.RESIZE, cfg.RESIZE)),
        transforms.ToTensor(),
        transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
    ])

    test_files, test_labels = utils.prep_data(cfg.test_path)
    # test_files, test_labels = load_data_set_test(test_path)
    test_labels = list(map(int, test_labels))

    for i in range(399, 4, -5):
        test_res = []

        model_name = "art_model-{}.pkl".format(i)
        dream_model = load_dream_model(model_name)
        print "Model Name: " + model_name

        for im_name in test_files:
            # Prepare an image
            image = load_image(im_name, transform)
            image_tensor = image.to(device)
            # test image
            predicted_label = dream_model(
                image_tensor)  # convert to numpy array
            m = nn.Softmax()
            norm_labels = m(predicted_label)

            norm_labels_np = norm_labels.cpu().data.numpy()
            predicted_label = np.argmax(norm_labels_np)
            if norm_labels_np[0][predicted_label] >= THRESHOLD:
                test_res.append(predicted_label)
            else:
                test_res.append(-1)

            # print "Image Name: " + im_name + " Test Res: " + cfg.CLASS_LIST[predicted_label] + " Confidence: " + str(norm_labels_np[0][predicted_label])

        score = metrics.accuracy_score(test_labels, test_res)
        cls_report = metrics.classification_report(test_labels, test_res)
        conf_mat = metrics.confusion_matrix(test_labels, test_res)

        print "Accuracy = " + str(score)
        print cls_report
        print conf_mat
Ejemplo n.º 5
0
    def post(self):
        args = self.reqparse.parse_args()

        rabbit = utils.RabbitClient(queue=PUBLISH, host='rabbitmq')

        logger.info('Received data...')
        data = args['data']
        data = utils.prep_data(data)
        pipeline_key = str(uuid.uuid4())
        data['pipeline_key'] = pipeline_key

        logger.info('Sending to the downstream with key {}...'.format(pipeline_key))
        rabbit.send(data, PUBLISH)

        logging.info('Sent {}'.format(pipeline_key))
        return pipeline_key
Ejemplo n.º 6
0
def init_from_spec(data_path, model_spec_path, **kwargs):

    # load data
    if 'npy' in data_path:
        data = np.load(data_path).astype(DTYPE)
    else:
        raise NotImplementedError(
            'Only datasets with the .npy extension are supported.')

    # Occasionally JSON files accidentally
    # get troublesome whitespace added which
    # can break the JSON loading
    with open(model_spec_path, 'r') as spec_src:
        spec_as_str = spec_src.read().strip()

    spec = json.loads(spec_as_str)

    # If any special arguments have been passed,
    # use them to update the specification for the
    # model fitting.
    for key, value in kwargs.items():
        if key in spec.keys():
            spec[key] = value

    spec.update({'image_dims': data.shape[1:], 'channels': data.shape[-1]})
    describe_spec(spec)

    dataset = prep_data(data, spec)
    model = init_model(spec, dataset)

    #try:
    #  model.train()
    #except KeyboardInterrupt:
    #  return model

    #toggle_training_layers(model)

    #if save:
    #  model.save(SAVED_MODELS_DIR + spec['name'])

    return model
Ejemplo n.º 7
0
                             worker_init_fn=worker_init_fn)
    # Start training
    train(model, optimizer, train_loader, test_loader, scorer_list, cuda,
          optimizer_name.lower())


if __name__ == '__main__':
    for seed in range(1, 2):
        random.seed(seed)
        np.random.seed(seed)
        torch.manual_seed(seed)
        torch.cuda.manual_seed(seed)
        logging.basicConfig(level=logging.DEBUG,
                            format="[%(asctime)s %(filename)s] %(message)s")
        cuda = True
        train_set, test_set = prep_data()
        columns_to_drop = ['Id', 'Response']
        x = train_set.drop(columns_to_drop, axis=1)
        y = train_set.Response - 1
        input_dim = len(x.columns)
        #    with open('../5Others/config.txt', 'w') as fp:
        #            fp.write(json.dumps(param, indent=4))
        with open('../5Others/2019-01-07_00_57_25.027646.txt', 'rb') as fp:
            #        with open('../5Others/config.txt', 'rb') as fp:
            #    with open('../4TrainingWeights/2019-01-06_00_40_22.960024/2019-01-06_02_39_53.326797.txt', 'rb') as fp:
            param = json.load(fp)
        model = Ordinal_regression(create_module,
                                   config=param,
                                   input_dim=input_dim)
        #    if param['pretrain_snapshot']:
        #        state_dic = torch.load(param['pretrain_snapshot'])
Ejemplo n.º 8
0
min_num = -128
n_dim = 160

# just load train data
df_train = pd.read_csv(utils.TRAIN_META)
# set index, it makes the data access much faster
df_train = df_train.set_index(['id_measurement', 'phase'])

# this code is very simple, divide the total size of the df_train into two sets and process it
X = []
y = []

total_size = len(df_train)
#for ini, end in [(0, int(total_size/2)), (int(total_size/2), total_size)]:
#X_temp, y_temp = utils.prep_data(df_train, 0, tatal_size, n_dim, min_num, max_num, sample_size)
X, y = utils.prep_data(df_train, 0, total_size, n_dim, min_num, max_num,
                       sample_size)
# X.append(X_temp)
# y.append(y_temp)

# X = np.concatenate(X)
# y = np.concatenate(y)

print(X.shape, y.shape)
np.save("X.npy", X)
np.save("y.npy", y)

# Here is where the training happens

# First, create a set of indexes of the 5 folds
splits = list(
    StratifiedKFold(n_splits=N_SPLITS, shuffle=True,
Ejemplo n.º 9
0
def main():
    parser = argparse.ArgumentParser(
        description=
        'Train a new network on a dataset and save the model as a checkpoint')
    parser.add_argument('data_dir',
                        metavar='path/to/dataset',
                        type=str,
                        nargs=1,
                        help='path to a data directory')
    parser.add_argument(
        '--save_dir',
        metavar='path/to/save_dir',
        type=str,
        nargs='?',
        help='path to a directory in which to save a checkpoint')
    parser.add_argument('--learning_rate',
                        metavar='learning rate',
                        type=float,
                        nargs='?',
                        default=0.002,
                        help='learning rate value for model training')
    parser.add_argument('--hidden_units',
                        metavar='hidden units',
                        type=int,
                        nargs='?',
                        default=512,
                        help='number of hidden units for model classifier')
    parser.add_argument('--epochs',
                        metavar='epochs',
                        type=int,
                        nargs='?',
                        default=5,
                        help='number of epochs for model training')
    parser.add_argument(
        '--arch',
        metavar='model name',
        type=str,
        nargs='?',
        default='densenet161',
        help='name of transfer model (e.g., resnet18 or densenet161)')
    parser.add_argument('--gpu',
                        action='store_true',
                        help='use GPU for model training (recommended)')
    args = parser.parse_args()
    data_dir = args.data_dir[0]
    save_dir = args.save_dir
    learning_rate = args.learning_rate
    hidden_units = args.hidden_units
    epochs = args.epochs
    model_name = args.arch
    use_gpu = args.gpu
    print('Using the following hyperparameters for training')
    print(f'  Learning rate: {learning_rate}')
    print(f'  Hidden units: {hidden_units}')
    print(f'  Epochs: {epochs}')
    print(f'Transfer model name: {model_name}')
    if use_gpu and not cuda.is_available():
        print('Error: GPU not available. Try again without the --gpu flag')
        exit(1)
    if use_gpu:
        print('Training on GPU...')
    else:
        print('Training on CPU...')
        print(
            'Warning: training on CPU could take a LONG time. Consider using --gpu flag.'
        )
    print('')

    if model_name not in ALLOWED_ARCHS:
        print(
            f'Error: Model architecture {model_name} is not currently supported.'
        )
        print('Please try one of the following:')
        for a in ALLOWED_ARCHS:
            print(f'  {a}')
        exit(1)

    dataloaders, image_datasets = prep_data(data_dir)

    model = build_model_from_pretrained(model_name, hidden_units,
                                        image_datasets['test'].class_to_idx)
    #     print(model.classifier)

    with active_session():
        trained, optimizer = train(model, dataloaders, learning_rate, epochs,
                                   use_gpu)

    if save_dir:
        save_checkpoint(trained, epochs, optimizer, model_name, learning_rate,
                        save_dir)
        f.close()
        ind = d.field('type') == 6
        d = d[ind]

        cmd = np.zeros((len(d.field(0)), 2))
        g = d.field('psfmag_g') - d.field('extinction_g')
        r = d.field('psfmag_r') - d.field('extinction_r')
        cmd[:, 0] = g - r
        cmd[:, 1] = r

        f = open(os.environ['sgdata'] + 'xdmodel_dr10_30000_32_128.pkl')
        model = cPickle.load(f)
        f.close()

        from utils import prep_data
        X, Xcov = prep_data(d, ['psf_minus_model', 'colors'])
        post_alpha, post_mu, post_V = model.posterior(X, Xcov)
        posts = np.zeros_like(X)
        for i in range(X.shape[0]):
            posts[i] = np.median(model.sample(post_alpha[i], post_mu[i], post_V[i],
                                              size=1000), axis=0)
            if post_alpha[i].sum() != post_alpha[i].sum():
                posts[i] = np.zeros_like(X[0])

        r = posts[:, 0]
        gmr = posts[:, 7]
        pcmd = np.zeros((X.shape[0], 2))
        pcmd[:, 0] = posts[:, 7]
        pcmd[:, 1] = posts[:, 0]
        
        cmd_plot(cmd, pcmd, ['DR10', 'XD Post.'], os.environ['xdplots'] + 'foo.png')
Ejemplo n.º 11
0
                        default=False,
                        action='store_true')
    parser.add_argument("--score_as_onnx",
                        dest="score_as_onnx",
                        help="Score as ONNX",
                        default=False,
                        action='store_true')
    args = parser.parse_args()
    print("Arguments:")
    for arg in vars(args):
        print(f"  {arg}: {getattr(args, arg)}")

    print("\n**** Data")
    loader = utils.get_data(False, 10000)
    print("loader.type:", type(loader))
    data = utils.prep_data(loader)
    print("data.type:", type(data))
    print("data.shape:", data.shape)

    print("\n**** pytorch.load_model")

    model_uri = f"runs:/{args.run_id}/pytorch-model"
    model = mlflow.pytorch.load_model(model_uri)
    print("model.type:", type(model))

    outputs = model(data)
    print("outputs.type:", type(outputs))
    outputs = outputs.detach().numpy()
    print("outputs.shape:", outputs.shape)
    utils.display_predictions(outputs)
def main(k_shots, num_tasks, adam_betas, gen_lr, dis_lr, total_epochs, model_folder_path):
    torch.manual_seed(1)
    # Initialize generator and discriminator
    batch_size = 1
    generator = Generator(batch_size=batch_size) 
    discriminator = Discriminator()
    generator.cuda()
    discriminator.cuda()

    # Training the Model

    # optimizer
    optimizer_G = optim.Adam (generator.parameters(), lr= gen_lr,  betas=adam_betas)
    optimizer_D = optim.Adam (discriminator.parameters(), lr= dis_lr,  betas=adam_betas)   

    # define dataloader
    tf = transforms.Compose([transforms.Resize((256,256)),transforms.ToTensor()])

    create_folder(model_folder_path)
        
    generator_path = os.path.join(model_folder_path, str.format("Generator_previous.pt"))
    discriminator_path = os.path.join(model_folder_path, str.format("Discriminator_previous.pt"))

    torch.save(generator.state_dict(), generator_path)
    torch.save(discriminator.state_dict(), discriminator_path)
    previous_generator = generator_path
    previous_discriminator = discriminator_path

    frame_path = '/mnt/creeper/grad/luy2/Meta-Learning/data/shanghaitech-5tasks/training/frames/' 

    # Set Up Training Loop
    for epoch in range(total_epochs):
        train_path_list = createEpochData(frame_path, num_tasks, k_shots)
        train_dataloader = Load_Dataloader(train_path_list, tf, batch_size)
        for _, epoch_of_tasks in enumerate(train_dataloader):
            
            # Create folder for saving results
            epoch_results = 'results'.format(epoch+1)
            create_folder(epoch_results)

            gen_epoch_grads = []
            dis_epoch_grads = []

            print("Epoch: ", epoch+1)

                                    # Meta-Training
            for tidx, task in enumerate(epoch_of_tasks):
                # Copy rGAN
                print ('\n Meta Training \n')
                print("Memory Allocated: ",torch.cuda.memory_allocated()/1e9)
                generator.load_state_dict(torch.load(previous_generator))
                discriminator.load_state_dict(torch.load(previous_discriminator))
                inner_optimizer_G = optim.Adam(generator.parameters(), lr=1e-4)
                inner_optimizer_D = optim.Adam(discriminator.parameters(), lr=1e-4)
                print("Task: ", tidx)
                for kidx, frame_sequence in enumerate(task[:k_shots]):
                    print('k-Shot Training: ', kidx)
                    # Configure input
                    img = frame_sequence[0]
                    gt = frame_sequence[1]
                    img, gt, valid, fake = prep_data(img, gt)

                    # Train Generator
                    inner_optimizer_G.zero_grad()
                    imgs, g_loss, recon_batch, loss, msssim = overall_generator_pass(generator, discriminator, img, gt, valid)
                    img_path = os.path.join(epoch_results,'{}-fig-train{}.png'.format(tidx+1, kidx+1))
                    imsave(img_path , imgs)
                    g_loss.backward()
                    inner_optimizer_G.step()

                    # Train Discriminator
                    inner_optimizer_D.zero_grad()
                    # Measure discriminator's ability to classify real from generated samples
                    d_loss = overall_discriminator_pass(discriminator, recon_batch, gt, valid, fake)
                    d_loss.backward()
                    inner_optimizer_D.step()
                    print ('Epoch [{}/{}], Step [{}/{}], Reconstruction_Loss: {:.4f}, G_Loss: {:.4f}, D_loss: {:.4f},  msssim:{:.4f} '.format(epoch+1, total_epochs, tidx+1, 5, loss.item(), g_loss, d_loss, msssim))
            
                                        # Meta-Validation
                print ('\n Meta Validation \n')
                # Store Loss Values
                gen_validation_loss_store = 0.0
                dis_validation_loss_store = 0.0
                gen_validation_loss = 0.0
                dis_validation_loss = 0.0
                
                dummy_frame_sequence = []
                # forward pass
                for vidx, val_frame_sequence in enumerate(task[-k_shots:]):
                    print(vidx)
                    if vidx == 0:
                        dummy_frame_sequence = val_frame_sequence
                    
                    img = val_frame_sequence[0]
                    gt = val_frame_sequence[1]
                    img, gt, valid, fake = prep_data(img, gt)
                                    
                    # k-Validation Generator
                    imgs, g_loss, recon_batch, loss, msssim = overall_generator_pass(generator, discriminator, img, gt, valid)
                    img_path = os.path.join(epoch_results,'{}-fig-val{}.png'.format(tidx+1, vidx+1))
                    imsave(img_path , imgs)

                    # k-Validation Discriminator
                    d_loss = overall_discriminator_pass(discriminator, recon_batch, gt, valid, fake)
                    
                    # Store Loss Items to reduce memory usage
                    gen_validation_loss_store += g_loss.item()
                    dis_validation_loss_store += d_loss.item()

                    if (vidx == k_shots-1):
                        # Store the loss
                        gen_validation_loss = g_loss
                        dis_validation_loss = d_loss
                        gen_validation_loss.data = torch.FloatTensor([gen_validation_loss_store/k_shots]).cuda()
                        dis_validation_loss.data = torch.FloatTensor([dis_validation_loss_store/k_shots]).cuda()


                    print("Generator Validation Loss: ", gen_validation_loss_store)
                    print("Discriminator Validation Loss: ", dis_validation_loss_store)
                    print ('Epoch [{}/{}], Step [{}/{}], G_Loss: {:.4f}, D_loss: {:.4f}'.format(epoch+1, total_epochs, tidx+1, 5, loss.item(), g_loss, d_loss))
                    print("Memory Allocated: ",torch.cuda.memory_allocated()/1e9)

                # Compute Validation Grad
                print("Memory Allocated: ",torch.cuda.memory_allocated()/1e9)

                generator.load_state_dict(torch.load(previous_generator))
                discriminator.load_state_dict(torch.load(previous_discriminator))

                gen_grads = torch.autograd.grad(gen_validation_loss, generator.parameters())
                dis_grads = torch.autograd.grad(dis_validation_loss, discriminator.parameters())
                
                gen_meta_grads = {name:g for ((name, _), g) in zip(generator.named_parameters(), gen_grads)}
                dis_meta_grads = {name:g for ((name, _), g) in zip(discriminator.named_parameters(), dis_grads)}
                
                gen_epoch_grads.append(gen_meta_grads)
                dis_epoch_grads.append(dis_meta_grads)


            # Meta Update
            print('\n Meta update \n')

            generator.load_state_dict(torch.load(previous_generator))
            discriminator.load_state_dict(torch.load(previous_discriminator))
            
            # Configure input
            img = dummy_frame_sequence[0]
            gt = dummy_frame_sequence[1]
            img, gt, valid, fake = prep_data(img, gt)

            # Dummy Forward Pass
            imgs, g_loss, recon_batch, loss, msssim = overall_generator_pass(generator, discriminator, img, gt, valid)
            d_loss = overall_discriminator_pass(discriminator, recon_batch, gt, valid, fake)

            # Unpack the list of grad dicts
            gen_gradients = {k: sum(d[k] for d in gen_epoch_grads) for k in gen_epoch_grads[0].keys()}
            dis_gradients = {k: sum(d[k] for d in dis_epoch_grads) for k in dis_epoch_grads[0].keys()}
            
            meta_update_model(generator, optimizer_G, g_loss, gen_gradients)
            meta_update_model(discriminator, optimizer_D, d_loss, dis_gradients)

            # Save the Model
            torch.save(generator.state_dict(), previous_generator)
            torch.save(discriminator.state_dict(), previous_discriminator)
            if (epoch % 10 == 0):
                gen_path = os.path.join(model_folder_path, str.format("Generator_{}.pt", epoch+1))
                dis_path = os.path.join(model_folder_path, str.format("Discriminator_{}.pt", epoch+1))
                torch.save(generator.state_dict(), gen_path)
                torch.save(discriminator.state_dict(), dis_path)
            

    print("Training Complete")
            
    gen_path = os.path.join(model_folder_path, str.format("Generator_Final.pt"))
    dis_path = os.path.join(model_folder_path, str.format("Discriminator_Final.pt"))
    torch.save(generator.state_dict(), gen_path)
    torch.save(discriminator.state_dict(), dis_path)
        f.close()
        ind = d.field('type') == 6
        d = d[ind]

        cmd = np.zeros((len(d.field(0)), 2))
        g = d.field('psfmag_g') - d.field('extinction_g')
        r = d.field('psfmag_r') - d.field('extinction_r')
        cmd[:, 0] = g - r
        cmd[:, 1] = r

        f = open(os.environ['sgdata'] + 'xdmodel_dr10_30000_32_128.pkl')
        model = cPickle.load(f)
        f.close()

        from utils import prep_data
        X, Xcov = prep_data(d, ['psf_minus_model', 'colors'])
        post_alpha, post_mu, post_V = model.posterior(X, Xcov)
        posts = np.zeros_like(X)
        for i in range(X.shape[0]):
            posts[i] = np.median(model.sample(post_alpha[i],
                                              post_mu[i],
                                              post_V[i],
                                              size=1000),
                                 axis=0)
            if post_alpha[i].sum() != post_alpha[i].sum():
                posts[i] = np.zeros_like(X[0])

        r = posts[:, 0]
        gmr = posts[:, 7]
        pcmd = np.zeros((X.shape[0], 2))
        pcmd[:, 0] = posts[:, 7]
Ejemplo n.º 14
0
import warnings
warnings.filterwarnings("ignore")


if __name__ == '__main__':
    torch.backends.cudnn.enabled = False
    torch.backends.cudnn.benchmark = False
    for seed in range(1, 2):
        random.seed(seed)
        np.random.seed(seed)
        torch.manual_seed(seed)
        torch.cuda.manual_seed(seed)
        logging.basicConfig(level=logging.DEBUG,
                            format="[%(asctime)s %(filename)s] %(message)s")
        cuda = True
        train, test = prep_data(pca=True, pca_scale=True, inputation=True,
              strategy='median', remove_low_variance=False)
        columns_to_drop = ['Response']
        x = train.drop(columns_to_drop, axis=1)
        y = train.Response-1
        input_dim = len(x.columns)
        #    with open('../5Others/config.txt', 'w') as fp:
#            fp.write(json.dumps(param, indent=4))
#        with open('../5Others/2019-01-07_00_57_25.027646.txt', 'rb') as fp:
#        with open('../5Others/config.txt', 'rb') as fp:
        with open('../5Others/tuning.txt', 'rb') as fp:
    #    with open(         '../4TrainingWeights/2019-01-06_00_40_22.960024/2019-01-06_02_39_53.326797.txt', 'rb') as fp:
            param = json.load(fp)
        w_dir = param['working_dir']
        num_nodes_list = [4, 8, 16, 32, 64, 128, 256]
        layer_numbers = [1, 2, 3, 4]
        for num_nodes in num_nodes_list:
Ejemplo n.º 15
0
from xgboost import XGBClassifier
import pandas as pd
import numpy as np
import xgboost as xgb
from scipy.optimize import fmin_powell
from utils import prep_data, quadratic_weighted_kappa, train_offset, digit,\
    feature_importance_plot
from evaluate import y_transform, cross_validation, Within_n_rank
import random
# =============================================================================
# data
# =============================================================================
train, test = prep_data()
columns_to_drop = ['Response']
x = train.drop(columns_to_drop, axis=1)
y = train.Response - 1
test_x = test.drop(columns_to_drop, axis=1)
Ejemplo n.º 16
0
                                             batch_size=opts.batchSize,
                                             shuffle=False)
    print 'Data loader ready.'

    #Load model
    gen = GEN(imSize=IM_SIZE, nz=opts.nz, fSize=opts.fSize)
    if gen.useCUDA:
        torch.cuda.set_device(opts.gpuNo)
        gen.cuda()
    gen.load_params(opts.exDir, gpuNo=opts.gpuNo)
    gen.eval()
    print 'params loaded'

    # Get the data:
    data = iter(testLoader).next()
    x, y = prep_data(data, useCUDA=gen.useCUDA)

    # Get men with glasses
    idx_men_w_glasses = np.argwhere(
        torch.prod(y.data == torch.Tensor([1, 1]).cuda(), dim=1))[0]
    img_men_w_glasses = x[idx_men_w_glasses[:opts.numSamples]]
    save_image(img_men_w_glasses.data,
               join(
                   exDir, 'img_' + opts.labels[0] + '_w_' + opts.labels[1] +
                   '_original.png'),
               nrow=10,
               normalize=True)

    # Get men without glasses
    idx_men_wout_glasses = np.argwhere(
        torch.prod(y.data == torch.Tensor([1, 0]).cuda(), dim=1))[0]
Ejemplo n.º 17
0
def main():
    # Create model directory
    if not os.path.exists(cfg.PYTORCH_MODELS):
        os.makedirs(cfg.PYTORCH_MODELS)

    # open loss info
    today = datetime.datetime.today()
    rand = random.randint(0,1000000000)
    loss_info = open(cfg.PYTORCH_MODELS + 'loss_' + str(rand) + '.txt', 'w')

    # Image preprocessing
    transform = transforms.Compose([
        transforms.Resize((256, 256)),
        transforms.RandomCrop(cfg.PATCH_SIZE),
        # n_random_crops.NRandomCrop(cfg.PATCH_SIZE, 10),
        # transforms.Resize((cfg.RESIZE, cfg.RESIZE)), # avgpool u 3x3 yapinca 96 olmali.
        transforms.Pad((math.ceil((224-cfg.PATCH_SIZE)/2.0), math.floor((224-cfg.PATCH_SIZE)/2.0)), padding_mode="reflect"),        
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize((0.485, 0.456, 0.406),
                             (0.229, 0.224, 0.225))])

    # Build the models
    art_model = ArtModel()
    # art_model = model_custom.resnet50(pretrained=True, num_classes=cfg.CLASS_COUNT)
    if torch.cuda.is_available():
        art_model.cuda()

    if cfg.LOAD_TRAINED_MODEL:
        art_model.load_state_dict(torch.load(cfg.PYTORCH_MODELS + cfg.MODEL_NAME))

    # load dataset and labels
    # image_path_list, labels_list = load_data_set()
    image_path_list, labels_list = utils.prep_data(cfg.train_path)

    # append main path
    # image_path_list = [image_main_path + imm for imm in image_path_list]

    # Build data loader
    data_loader = get_loader(image_path_list, labels_list, cfg.BATCH_SIZE, shuffle=True, transform=transform, num_workers=cfg.NUM_WORKERS)

    # Loss and Optimizer
    criterion = nn.CrossEntropyLoss()
    optimizer = torch.optim.Adam([x for x in list(art_model.parameters()) if x.requires_grad], lr=cfg.LEARNING_RATE)

    # Train the Models
    total_step = len(data_loader)
    for epoch in range(1, cfg.EPOCH_COUNT):
        for i, (images, label) in enumerate(data_loader):
            # Set mini-batch dataset
            images = to_var(images, volatile=True)
            # Set mini-batch ground truth
            label = to_var(label, volatile=False)
            # Forward, Backward and Optimize
            art_model.zero_grad()
            # feed images to CNN model
            predicted_label = art_model(images)

            loss = criterion(predicted_label, label)
            loss.backward()
            optimizer.step()

            # Print log info
            if i % cfg.LOG_STEP == 0:
                print(('Epoch [%d/%d], Step [%d/%d], Loss: %.7f'
                      % (epoch, cfg.EPOCH_COUNT, i, total_step, loss)))

                loss_info.write('Epoch [%d/%d], Step [%d/%d], Loss: %.7f\n'
                                % (epoch, cfg.EPOCH_COUNT, i, total_step, loss))

        # Save the models
        if (epoch + 1) % cfg.SAVE_PERIOD_IN_EPOCHS == 0:
            torch.save({
                'epoch': epoch,
                'model_state_dict': art_model.state_dict(),
                'optimizer_state_dict': optimizer.state_dict(),
                'loss': loss,
            }, os.path.join(cfg.PYTORCH_MODELS, 'art_model-%d.pkl' % epoch))
Ejemplo n.º 18
0
from evaluate import y_transform, cross_validation, Within_n_rank
import mord
import random
import warnings
import logging
import json
from catboost import CatBoostRegressor, CatBoostClassifier

warnings.filterwarnings("ignore")
logging.basicConfig(level=logging.DEBUG,
                    format="[%(asctime)s %(filename)s] %(message)s")
# =============================================================================
# data
# =============================================================================
train, test, target, validation, valid_target,\
 categorical_variables = prep_data(160)
#train, test, target = prep_data(pca=True, pca_scale=True,
#                                remove_low_variance=False)

# =============================================================================
# Pure regression based
# =============================================================================
# lasso
lasso = Lasso(alpha=0.001, max_iter=5000)
lasso.fit(train, target)
train_y_pred = lasso.predict(train)
test_pred = lasso.predict(test)

# drop non important features (optional)
lasso_feature_importance = pd.Series(data=lasso.coef_,
                                     index=train.columns,