def fine_tune_model():
    print(f'\n\nfine tuning model...')
    data_manager = DataManager()

    plotter = Plotter()

    train_manager = get_train_manager(data_manager)
    n_filters_list = []
    train_losses, test_losses = [], []
    for i in range(1, 11):
        n_filters = 4 * i
        net = Net(conv1_out_channels=n_filters)
        optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

        train_manager.init_model(net, optimizer)
        train_and_save_model(train_manager)
        (train_loss,
         train_accuracy), (test_loss,
                           test_accuracy) = train_manager.get_losses()
        n_filters_list.append(n_filters)
        train_losses.append(train_loss)
        test_losses.append(test_loss)
    plotter.plot_filters_losses(n_filters_list, train_losses, test_losses)

    return train_losses, test_losses, n_filters_list
Exemple #2
0
def main():
    """
    main func
    """

    text, x, y, char2idx, idx2char = getty()
    T = 100

    config = {
        'dim_hidden': 300,
        'l': T,
        'clip': 5,
        'mu': 0.9,
        'step_size': 0.001
    }

    #np.random.seed(42)
    r = RNN(config)
    r.accept([27])

    ttb = r.sample('f', char2idx, idx2char)
    r.fit(x[:T], y[:T], 100, char2idx, idx2char)
    tta = r.sample('f', char2idx, idx2char)
    print(ttb)
    print(tta)
    print(text[:T])
    return

    (data, label) = cifar()
    N = 10000
    data = np.array(data, dtype=float)[:N, ]
    label = np.array(label)[:N, ]

    data = normalize(data)

    config = {
        'input_shape': [3, 32, 32],
        'mu': 0.9,
        'step_size': 0.000001,
        'step_decay': 0.95
    }

    nn = Net(config)
    conv1 = Conv([3, 3], 6)
    relu1 = Relu()
    conv2 = Conv([3, 3], 32)
    relu2 = Relu()
    pool = MaxPool()
    fc = FC([10])

    nn.add(conv1)
    nn.add(relu1)
    nn.add(pool)
    nn.add(fc)

    print(nn)
    nn.fit(data, label, 200)
Exemple #3
0
def main():
    """ Step 1: make dataset """
    random.seed()
    # Make 3 inputs - 1 base and 2 added inputs
    sig_len = 10
    y_base = np.array([1, 2, 3, 2,  6,  5, 0, -1, 2, 4])
    y_add1 = np.array([0, 0, 1, 0, -2,  0, 0,  1, 1, 0])
    y_add2 = np.array([1, 0, 0, 1,  2, -1, 0,  0, 0, 0])
    
    # Set up a bunch of random signals to detect
    y_num = 100
    signal1 = np.array([random.randint(0,1) for i in range(y_num)])
    signal2 = np.array([random.randint(0,1) for i in range(y_num)])
    signal = np.array([signal1, signal2])
    
    # Add up the inputs accordingly
    y_list = np.zeros([y_num, len(y_base)])
    for i in range(y_num):
        y_sum = np.array([y_base[j] + signal1[i]*y_add1[j] + signal2[i]*y_add2[j] 
                for j in range(sig_len)])
        y_list[i] = y_sum
    
    # Add noise
    noise = np.random.random([y_num, len(y_base)]) / 10
    y_list += noise
    
    """ Step 2: train neural network """
    # Set up input and signals
    input = np.array(y_list)
    signal = signal.transpose()
    
    # Set up min and max for each input 
    # Can give the network a good idea of input ranges or just a rough range
    limits = [[y_base[i]-2, y_base[i]+2] for i in range(10)]
    #limits = [[-20, 20]]*10
    
    # Make network
    net = Net(limits, 2, 2)
    errorList = net.train_many(input, signal, 0.1, 100, 0.001, True)
    print "\n".join(map(str, errorList))
        
    """ Step 3: check results """
    # Print results by hand
    #for i in range(y_num):
    #    print y_list[i]
    #    print signal1[i]
    #    print signal2[i]
    #    print net.sim(y_list[i, :])
        
    # Plot error vs. training epochs
    plt.semilogy(errorList)
    plt.grid()
    plt.xlabel('Epochs')
    plt.ylabel('SSE')
    plt.show()
def get_models(model_paths, device):
    """Return the contrusted models of the model paths given"""
    hp = hp_dict()

    n_in = 784
    n_hidden = hp["width"][get_hp(model_paths[0], 3)]
    n_layer = hp["depth"][get_hp(model_paths[0], 2)]
    n_out = 10

    seed = get_hp(model_paths[0], 4)
    init = get_hp(model_paths[0], 10)

    n_epoch = len(model_paths)

    torch.manual_seed(seed)

    # path = '../models/mnist/seed_{}_init_{}'.format(seed, init)

    models = [
        Net(n_in, n_hidden, n_out, n_layer, act='relu', init_val=2).to(device)
        for _ in range(n_epoch)
    ]

    for i, model in enumerate(models):
        model.load_state_dict(torch.load(model_paths[i], map_location=device))

    return models
def test_no_spatial_structure():
    print(f'testing no spatial structure...')
    fixed_shuffle_data_manager = DataManager(shuffle_type='fixed')
    fresh_shuffle_data_manager = DataManager(shuffle_type='fresh')

    for name, data_manager in [('fixed_shuffle', fixed_shuffle_data_manager),
                               ('fresh_shuffle', fresh_shuffle_data_manager)]:
        print(f'\ntesting {name}...')
        train_manager = get_train_manager(data_manager)
        net = Net()
        optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
        train_manager.init_model(net, optimizer)
        train_manager.train()
        print(f'\ntesting no spatial...')
        train_res, test_res = train_manager.get_losses()
        print(f'train loss: {train_res[0]}, train accuracy: {train_res[1]}\n'
              f'test loss: {test_res[0]}, test accuracy: {test_res[1]}')
def test_locality_of_receptive_field():
    print(f'testing locality of receptive field...')

    noshuffle_data_manager = DataManager(shuffle_type='none')
    shuffled_data_manager = DataManager(shuffle_type='fixed')

    for name, data_manager in [('no_shuffle', noshuffle_data_manager),
                               ('shuffle', shuffled_data_manager)]:
        print(f'\ntesting {name}...')
        train_manager = get_train_manager(data_manager)
        net = Net()
        optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
        train_manager.init_model(net, optimizer)
        train_manager.train()
        print(f'\ntesting local field...')
        train_res, test_res = train_manager.get_losses()
        print(f'train loss: {train_res[0]}, train accuracy: {train_res[1]}\n'
              f'test loss: {test_res[0]}, test accuracy: {test_res[1]}')
def recreate_model(path, dataset="mnist", act="relu"):
    '''
    Return the recreated model from the given model state
    '''
    device, dtype, _ = get_settings()

    file_name = path.split("/")[-1]
    noise_type, noise_level = path.split("/")[-4:-2]

    hyperparams = file_name.split("_")
    hp = []
    for each in hyperparams[:11]:
        hp.append(int(each))

    hyperparams = get_hyperparameters(hp[:8], noise_type, noise_level)

    # batch_size = hyperparams[1]
    n_hidden = hyperparams[3]
    n_layer = hyperparams[2]
    # seed = hyperparams[4]

    # print("Hyperparams", hyperparams)
    # print("n_layer:", n_layer)

    noise_type, noise_level, init_val = get_experiment([hp[8], hp[9], hp[10]], n_layer)


    if noise_type == 'none':
        noise_type = None
        noise_level = None

    # print(noise_type, noise_level, init_val)

    n_in, n_out = get_data_dimensions(dataset)

    model = Net(n_in, n_hidden, n_out, n_layer, act=act, noise_type=noise_type,
          noise_level=noise_level, init_val=init_val).to(device, dtype)

    model.load_state_dict(torch.load(path, map_location=device)) # NB double check that this doesn't break things on GPU
    # model.load_state_dict(torch.load(path, map_location='cpu'))
    # model.eval()

    return model
def test_non_linearities():
    print(f'testing non linearities...')
    non_linear_net = Net(fc1_out_channels=120, non_linear=True)
    linear_net = Net(fc1_out_channels=120, non_linear=False)
    big_linear_net = Net(fc1_out_channels=240, non_linear=False)

    nets = [
        NetInfo('non_linear', non_linear_net),
        NetInfo('linear', linear_net),
        NetInfo('big_linear', big_linear_net)
    ]

    for net in nets:
        data_manager = DataManager()
        train_manager = get_train_manager(data_manager)

        # if net is not nets[1]: continue
        print(f'\ntesting {net.name}...')
        optimizer = optim.SGD(net.object.parameters(), lr=0.001, momentum=0.9)
        train_manager.init_model(net.object, optimizer)
        train_manager.train()
        train_loss, test_loss = train_manager.get_losses()
        print(f'train loss: {train_loss}\ntest loss: {test_loss}')
Exemple #9
0
def get_score(n_iterations, init_val, model_name, n_epochs, eval_epochs,
              train_loader, test_loader, device):
    all_correlations = list()
    for i in range(n_iterations):
        net = Net(n_in,
                  n_hidden,
                  n_out,
                  n_layer,
                  act='relu',
                  init_val=init_val).to(device)
        corrs = get_correlations(net, '{}_{}'.format(model_name,
                                                     i), n_epochs, eval_epochs,
                                 train_loader, test_loader, device)
        print(corrs)
        all_correlations.append(corrs)
    Y = np.array(all_correlations)
    # trained_net = train(net, train_loader, criterion, optimiser,
    #                      n_epochs, device, save=True, name=model_name, log_interval=1)
    # test(trained_net, test_loader, criterion, device)y(all_correlations)
    return Y
Exemple #10
0
import torch
from src.net import Net
import json
import argparse
from src.load_dataset import load_dataset

PATH = './model.pth'
class_map = {
    0: 'female',
    1: 'male',
}

parser = argparse.ArgumentParser()
parser.add_argument('path', type=str)
args = parser.parse_args()

net = Net()
net.load_state_dict(torch.load(PATH))

loader, names = load_dataset(args.path)
predicted_general = []
for images in loader:
    outputs = net(images)
    _, predicted = torch.max(outputs, 1)
    predicted_general += predicted.tolist()

data = {names[i]: class_map[predicted_general[i]] for i in range(len(names))}

with open('process_results.json', 'w') as outfile:
    json.dump(data, outfile)
Exemple #11
0
import numpy as np

from src.net import Net
from data.data import U0, U1, U2, U3, U4, U5, U6

if __name__ == "__main__":
    network = Net([U0, U1, U2, U3, U4, U5, U6],
                  first_point_id=[0],
                  last_point_id=[5, 6])
    result_representation = ""
    for ind, result in enumerate(network.result):
        result_representation += "Rozwiązanie " + str(ind + 1) + ":\n"
        for point in result:
            result_representation += "\tOptymalizator " + str(
                point[0]) + " -> decyzja: " + str(point[1]) + "\n"

    result_representation += "\nSuma kryterium: " + str(network.maximum)

    print(result_representation)
Exemple #12
0
        "e2e_dump_settings": {
            "enable": True,
            "trans_flag": False
        }
    }
    with open("./data_dump.json", "w", encoding="GBK") as f:
        json.dump(data_dump, f)
    os.environ['MINDSPORE_DUMP_CONFIG'] = abspath + "/data_dump.json"

def set_log_info():
    os.environ['GLOG_v'] = '1'
    os.environ['GLOG_logtostderr'] = '1'
    os.environ['logger_maxBytes'] = '5242880'
    os.environ['GLOG_log_dir'] = 'D:/' if os.name == "nt" else '/var/log/mindspore'
    os.environ['logger_backupCount'] = '10'
    print(logger.get_log_config())

if __name__ == "__main__":
    set_dump_info()
    set_log_info()
    context.set_context(mode=context.GRAPH_MODE)
    train_dataset = create_train_dataset()
    eval_dataset = create_eval_dataset()
    net = Net()
    net_opt = Momentum(net.trainable_params(), 0.01, 0.9)
    net_loss = SoftmaxCrossEntropyWithLogits(reduction='mean')
    model = Model(network=net, loss_fn=net_loss, optimizer=net_opt, metrics={'Accuracy': nn.Accuracy()})
    model.train(epoch=100,
                train_dataset=train_dataset,
                callbacks=[LossMonitor(), StopAtTime(3), SaveCallback(model, eval_dataset)])
Exemple #13
0
from src.net import Net
from src.utils import randn, uniform, guass, read_mnist
import numpy as np
import time

inp_dim = 28
out_dim = 10
std = 1.
lr = 1e-3
inp_shape = (inp_dim, inp_dim, 1)

net = Net()
image = net.portal((28, 28, 1))
label = net.portal((10, ))
is_training = net.portal()

k1 = net.variable(guass(0., std, (5, 5, 1, 32)))
b1 = net.variable(np.ones((32, )) * .1)
k2 = net.variable(guass(0., std, (5, 5, 32, 64)))
b2 = net.variable(np.ones((64, )) * .1)
w3 = net.variable(guass(0., std, (7 * 7 * 64, 1024)))
b3 = net.variable(np.ones((1024, )) * .1)
w4 = net.variable(guass(0., std, (1024, 10)))
b4 = net.variable(np.ones((10, )) * .1)

conv1 = net.conv2d(image, k1, pad=(2, 2), stride=(1, 1))
conv1 = net.batch_norm(conv1, net.variable(guass(0., std, (32, ))),
                       is_training)
conv1 = net.plus_b(conv1, b1)
conv1 = net.relu(conv1)
pool1 = net.maxpool2(conv1)
Exemple #14
0
    shuffle=config.test_dataloader.shuffle,
    num_workers=config.test_dataloader.num_workers)
# print("Trainset:")
# for i in range(len(trainset)):
# #     print(trainset[i])
#      print(trainset[i]["sensitive"])

# print("Testset:")
# for i in range(len(testset)):
#     print("testset " + str(i))
#     print(testset[i]["sensitive"])

#
writer = SummaryWriter("runs/noConv1D_ascad_desync_50_3")
#TODO: Change the model for the one of the paper
net = Net()

#TODO: propose NLLloss (Categorical Cross Entropy), Adam optimizer and Cyclic Learning Rate
criterion = nn.NLLLoss()
optimizer = optim.Adam(net.parameters(), lr=float(config.train.lr))

scheduler = optim.lr_scheduler.OneCycleLR(optimizer,
                                          max_lr=float(config.train.lr),
                                          epochs=50,
                                          steps_per_epoch=len(trainloader))
# TODO: plot in tensorboard the curves loss and accuracy for train and val
for epoch in range(
        config.train.epochs):  # loop over the dataset multiple times
    print('Epoch {}/{}'.format(epoch + 1, config.train.epochs))
    print('-' * 10)
    for phase in ["train", "val"]:
Exemple #15
0
        # Load data
        train_loader, test_loader = load_data(dataset,
                                              batch_size=batch_size,
                                              path=os.path.join(
                                                  base_path, '../data'))

        if start_epoch == 0:
            print("results directory is empty, starting test from beginning")

            # create network
            torch.manual_seed(seed)
            n_in, n_out = get_data_dimensions(dataset)
            net = Net(n_in,
                      n_hidden,
                      n_out,
                      n_layer,
                      act=act,
                      noise_type=noise_type,
                      noise_level=noise_level,
                      init_val=init_val).to(device, dtype)

            save_model(net,
                       experiment_name,
                       0,
                       noise_type,
                       noise_level,
                       model_dir=model_dir)
        else:
            print("starting from epoch {}".format(start_epoch))
            net = recreate_model(model_to_load, dataset=dataset, act=act)

        # optimiser parameters
Exemple #16
0
    w = net.variable(guass(0., .1, (inp_size, out_size)))
    regularizer = net.l2_regularize(w, center)
    b = net.variable(np.ones((out_size, )) * .1)
    mul = net.matmul(inp, w)
    biased = net.plus_b(mul, b)
    if drop is not None:
        biased = net.dropout(biased, drop)
    return biased, regularizer


dat = TRECvn(holdout=0)  # set holdout > 0 for early stopping
max_len, nclass = dat.max_len, dat.nclass
lstm_cell = 300
fc_size = 128

net = Net()
# Set up the portals and recurrent layer
x, y, keep, lens = portals(net, max_len, nclass)
lstmed = lstm_layer(net, dat.embeddings, x, True, lens, lstm_cell)

# Setup two fully-connected layer with middle dropout
# And L2 weight decay for both of them.
center = net.portal((1, ))  # to be fed by zero.
penultimate, regularizer1 = fully_connected(lstmed,
                                            lstm_cell,
                                            fc_size,
                                            center,
                                            drop=keep)
penultimate = net.relu(penultimate)
predict, regularizer2 = fully_connected(penultimate, fc_size, nclass, center)
Exemple #17
0
import numpy as np
from src.net import Net

batch = 8
out_dim = inp_dim = 10
hid_dim = 300
mem_size = 128
vec_size = 30
max_seq_len = 20

start_symbol = np.zeros([batch, 1, inp_dim])
stop_symbol = np.zeros([batch, 1, inp_dim])
start_symbol[:, 0, 0] = np.ones([batch])
stop_symbol[:, 0, 1] = np.ones([batch])

net = Net()
x = net.portal((inp_dim, ))
y = net.portal((inp_dim, ))
y = net.reshape(y, [-1, inp_dim], over_batch=True)
ntm_out = net.turing(x, out_dim, mem_size, vec_size, hid_dim, shift=1)

start, end = net.portal(), net.portal()
copy = net.dynamic_slice(ntm_out, start=start, end=end, axis=0)
logits = net.reshape(copy, [-1, inp_dim], over_batch=True)

loss = net.logistic(logits, y)
net.optimize(loss, 'adam', 1e-2)


def generate_random_input(batch, seq_length, inp_dim):
    x = np.random.rand(batch, seq_length, inp_dim).round()
Exemple #18
0
from src.net import Net
from src.utils import randn, uniform, guass, read_mnist
import numpy as np
import time

inp_dim = 784
hid_dim = 64
out_dim = 10
std = 1e-3
lr = 1e-2
batch = 128

net = Net()
image = net.portal((784, ))
keep_prob = net.portal()
target = net.portal((10, ))

w1 = net.variable(guass(0., std, (inp_dim, hid_dim)))
b1 = net.variable(np.ones(hid_dim) * .1)
w2 = net.variable(guass(0., std, (hid_dim, out_dim)))
b2 = net.variable(np.ones(out_dim) * .1)

fc1 = net.matmul(image, w1)
bias = net.plus_b(fc1, b1)
relu = net.relu(bias)
dropped = net.dropout(relu, keep_prob)
fc2 = net.matmul(dropped, w2)
bias = net.plus_b(fc2, b2)
loss = net.softmax_crossent(bias, target)

net.optimize(loss, 'sgd', lr)
 def get_saved_model(model_name):
     print(f'loading model...')
     model = Net()
     model.load_state_dict(torch.load(TrainManager.get_model_path(model_name)))
     return model
Exemple #20
0
def build_infer(net, inp):
    def _fc(inp, act):
        weight, bias = next(infer_weights)
        weight, bias = map(net.variable, [weight, bias])
        lineared = net.matmul(inp, weight)
        return act(net.plus_b(lineared, bias))

    fc1 = _fc(inp, net.tanh)
    fc2 = _fc(fc1, net.tanh)
    fc3 = _fc(fc2, net.tanh)
    fc4 = _fc(fc3, net.softmax)
    return fc4


# Build the net.
net = Net()
image = net.portal((224, 224, 3))
question = net.portal((40, 300))
real_len = net.portal((1, ))

vgg16_feat = build_vgg16(net, image)
lstm3_feat = build_lstm3(net, question, real_len)
infer_feat = net.concat([lstm3_feat, vgg16_feat])
answer = build_infer(net, infer_feat)

image_feed = read_image('test.jpg')
queries = [u"What is the animal in the picture?"]

import time

query_feed = list()