コード例 #1
0
def load_data():
    data = dataloader()
    batch = []
    cti = load_tkn_to_idx(sys.argv[2])  # char_to_idx
    wti = load_tkn_to_idx(sys.argv[3])  # word_to_idx
    print("loading %s..." % sys.argv[4])
    with open(sys.argv[4], "r") as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        for line in block.split("\n"):
            x, y = line.split("\t")
            x = [x.split(":") for x in x.split(" ")]
            y = [int(y)] if HRE else [int(x) for x in y.split(" ")] + [len(x)]
            xc, xw = zip(*[(list(map(int, xc.split("+"))), int(xw))
                           for xc, xw in x])
            data.append_item(xc=xc, xw=xw, y0=y)
        data.append_row()
    data.strip()
    for _batch in data.split():
        xc, xw = data.tensor(*_batch.sort(), eos=True)
        _, y0 = data.tensor(None, _batch.y0)
        batch.append((xc, xw, y0))
    print("data size: %d" % (len(data.y0)))
    print("batch size: %d" % BATCH_SIZE)
    return batch, cti, wti
コード例 #2
0
def load_data():
    data = dataloader()
    batch = []
    cti = load_tkn_to_idx(
        './prepare_data/train.txt.char_to_idx')  # char_to_idx
    wti = load_tkn_to_idx(
        './prepare_data/train.txt.word_to_idx')  # word_to_idx
    itt = load_idx_to_tkn('./prepare_data/train.txt.tag_to_idx')  # idx_to_tkn
    print("loading %s..." % './prepare_data/train.txt.csv')
    with open('./prepare_data/train.txt.csv') as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        for line in block.split("\n"):
            x, y = line.split("\t")
            x = [x.split(":") for x in x.split(" ")]
            y = [int(y)] if HRE else [int(x) for x in y.split(" ")]
            xc, xw = zip(*[(list(map(int, xc.split("+"))), int(xw))
                           for xc, xw in x])
            data.append_item(xc=xc, xw=xw, y0=y)
        data.append_row()
    data.strip()
    for _batch in data.split():
        xc, xw, y0, lens = _batch.sort()
        xc, xw = data.tensor(xc, xw, lens)
        _, y0 = data.tensor(None, y0, sos=True)
        batch.append((xc, xw, y0))
    print("data size: %d" % len(data.y0))
    print("batch size: %d" % BATCH_SIZE)
    return batch, cti, wti, itt
コード例 #3
0
def train():
    #config
    batch_size = 4
    lr = 0.0005
    model_dir = 'model2/'
    logfile = 'second.log'
    fop = open(logfile, 'w')
    #prepare data

    dataline = open('data/train.txt').readlines()
    datalength = len(dataline)
    traindata = dataline[int(datalength / 5):]
    print(len(traindata))
    vecmodel = word2vec.sentence2vec('sgns.weibo.bigram-char')

    a = dataloader(traindata, vecmodel, batch_size)
    a.start()

    #build model
    inputdata = tf.placeholder(tf.float32, [batch_size, None, 300])
    inputpadding = tf.placeholder(tf.float32, [batch_size, None])
    pos = tf.placeholder(tf.float32, [None, 32])
    inputlabel = tf.placeholder(tf.int32, [batch_size])
    classifier = model(True, batch_size)
    outlogit = classifier(inputdata, inputpadding, pos)
    loss = tf.losses.softmax_cross_entropy(tf.one_hot(inputlabel, 2), outlogit)
    print(1)
    train_op = tf.train.AdamOptimizer(lr).minimize(loss)
    saver = tf.train.Saver(max_to_keep=0)

    print('build finished')
    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True
    sess = tf.Session(config=config)

    model_file = tf.train.latest_checkpoint(model_dir)
    saver.restore(sess, model_file)

    #sess.run(tf.global_variables_initializer())
    #sess.run(tf.local_variables_initializer())

    #train step
    for step in tqdm(range(26000, 400000)):
        data, label, padding = a.getdata()
        #data=np.zeros((3,20,300))
        #padding=np.ones((3,20))
        length = data.shape[1]
        trainloss, _ = sess.run(
            [loss, train_op],
            feed_dict={
                inputdata: data,
                inputpadding: padding,
                pos: model_utils.get_position_encoding(length, 32),
                inputlabel: label
            })
        if step % 100 == 0:
            print('loss:' + str(trainloss))
            fop.write('loss:' + str(trainloss) + '\n')
        if step % 1000 == 0:
            saver.save(sess, model_dir + '/transform.ckpt', global_step=step)
コード例 #4
0
ファイル: train.py プロジェクト: toby517/lstm-crf-pytorch
def load_data(args):
    data = dataloader()
    batch = []
    cti = load_tkn_to_idx(args[1])  # char_to_idx
    wti = load_tkn_to_idx(args[2])  # word_to_idx
    itt = load_idx_to_tkn(args[3])  # idx_to_tkn
    print("loading %s..." % args[4])
    with open(args[4]) as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        data.append_row()
        for line in block.split("\n"):
            x, y = line.split("\t")
            x = [x.split(":") for x in x.split(" ")]
            y = tuple(map(int, y.split(" ")))
            xc, xw = zip(*[(list(map(int, xc.split("+"))), int(xw))
                           for xc, xw in x])
            data.append_item(xc=xc, xw=xw, y0=y)
    for _batch in data.split():
        xc, xw, y0, lens = _batch.xc, _batch.xw, _batch.y0, _batch.lens
        xc, xw = data.tensor(bc=xc, bw=xw, lens=lens)
        _, y0 = data.tensor(bw=y0, sos=True)
        batch.append((xc, xw, y0))
    print("data size: %d" % len(data.y0))
    print("batch size: %d" % BATCH_SIZE)
    return batch, cti, wti, itt
コード例 #5
0
ファイル: LSGAN.py プロジェクト: edchengg/GAN_Test
    def __init__(self, args):

        self.z_dim = 62
        self.sample_num = 100
        self.dataset = args.dataset
        self.batch_size = args.batch_size
        self.input_size = args.input_size
        self.CUDA = args.CUDA
        self.epoch = args.epoch
        self.model_name = args.model_name
        self.save_dir = args.save_dir
        # self.result_dir = args.result_dir

        self.data_loader = dataloader(self.dataset, self.input_size, self.batch_size)
        data = self.data_loader.__iter__().__next__()[0]

        self.G = Generator(input_dim=self.z_dim, output_dim=data.shape[1], input_size=self.input_size)
        # LSGAN: remove the sigmoid layer from the discriminator
        self.D = Discriminator(input_channel=data.shape[1], output_dim=1, input_size=self.input_size, sigmoid=False)
        self.G_optimizer = optim.Adam(self.G.parameters(), lr=args.LR_G, betas=(args.beta1, args.beta2))
        self.D_optimizer = optim.Adam(self.D.parameters(), lr=args.LR_D, betas=(args.beta1, args.beta2))

        self.writer = SummaryWriter(self.model_name)
        if self.CUDA:
            self.G.cuda()
            self.D.cuda()
            # LSGAN: L2 loss
            self.L2_loss = nn.MSELoss().cuda()
        else:
            self.L2_loss = nn.MSELoss()

        self.sample_z_ = torch.rand((self.batch_size, self.z_dim))
        if self.CUDA:
            self.sample_z_ = self.sample_z_.cuda()
コード例 #6
0
def load_data():
    data = dataloader()
    batch = []
    x_cti = load_tkn_to_idx(sys.argv[2])  # source char_to_idx
    x_wti = load_tkn_to_idx(sys.argv[3])  # source word_to_idx
    y_wti = load_tkn_to_idx(sys.argv[4])  # target word_to_idx
    print("loading %s..." % sys.argv[5])
    fo = open(sys.argv[5])
    for line in fo:
        x, y = line.strip().split("\t")
        x = [x.split(":") for x in x.split(" ")]
        y = [int(x) for x in y.split(" ")]
        xc, xw = zip(*[(list(map(int, xc.split("+"))), int(xw))
                       for xc, xw in x])
        data.append_item(xc=xc, xw=xw, y0=y)
        data.append_row()
    fo.close()
    data.strip()
    for _batch in data.split():
        xc, xw, y0, lens = _batch.sort()
        xc, xw = data.tensor(xc, xw, lens, eos=True)
        _, y0 = data.tensor(None, y0, eos=True)
        batch.append((xc, xw, y0))
    print("data size: %d" % (len(data.y0)))
    print("batch size: %d" % BATCH_SIZE)
    return batch, x_cti, x_wti, y_wti
コード例 #7
0
def train(net, pth):
    print('Train start')
    loader = dataloader(minibatch_train, train=True)
    loss_function = torch.nn.CrossEntropyLoss()
    optimizer = torch.optim.SGD(net.parameters(), lr=learning_rate, momentum=0.9)
    for epoch in range(1, epoch_num):
        for i, data in enumerate(loader):
            # get the inputs
            (img, of, target) = data
            img, target, of = img.cuda(), target.cuda(), of.cuda()
            # print(img)
            # print(of)
            # print(target)

            # zero the parameter gradients
            optimizer.zero_grad()

            # forward + backward + optimize
            output = net(img, of)
            #print(output_S, target_S)
            #print(output_T, target_T)
            loss = loss_function(output, target.to(DEVICE, dtype=torch.int64))
            loss.backward()
            optimizer.step()

            print('Net: [{:03}, {:03}] loss:{:.2f}'
                  .format(epoch, i, loss.item()), end='    ', flush=True)
            # get the accuracies
            '''
            result_S = [int(torch.argmax(output_S, 1)[j]) == int(target_S[j]) for j in range(len(target_S))]
            result_T = [int(torch.argmax(output_T, 1)[j]) == int(target_T[j]) for j in range(len(target_T))]
            accuracy_S = round((sum(result_S) / len(result_S)) * 100)
            accuracy_T = round((sum(result_T) / len(result_T)) * 100)
            '''

            # print statistics
            '''
            print('Spatial : [{:03}, {:03}] loss:{:.2f}, accuracy:{:03}%'
                  .format(epoch, i, loss_S.item(), accuracy_S), end='    ', flush=True)
            print('Temporal: [{:03}, {:03}] loss:{:.2f}, accuracy:{:03}%'
                  .format(epoch, i, loss_T.item(), accuracy_T), end='    ', flush=True)
            '''

            if i == len(loader):
                print()
            else:
                print(end='\n')

        if (epoch % save_net) == 0:
            torch.save({'net_state_dict': net.state_dict()}, pth, _use_new_zipfile_serialization=False)
            print('Save Finished')
    print('Train Finished')
コード例 #8
0
def predict(model, cti, wti, itt, filename):
    data = dataloader()
    fo = open(filename)
    for line in fo:
        data.append_row()
        line = line.strip()
        x0, y0 = re.findall("(.+?)(?:\t(.+))?$", line)[0]
        x1 = list(map(normalize, tokenize(x0)))
        xc = [[cti[c] if c in cti else UNK_IDX for c in w] for w in x1]
        xw = [wti[w] if w in wti else UNK_IDX for w in x1]
        data.append_item(x0 = x0, x1 = x1, xc = xc, xw = xw, y0 = y0)
    fo.close()
    return run_model(model, data, itt)
コード例 #9
0
ファイル: predict.py プロジェクト: pqy000/seq2seq-pytorch
def predict(filename, model, x_cti, x_wti, y_itw):
    data = dataloader()
    fo = open(filename)
    for x0 in fo:
        x0 = x0.strip()
        x1 = tokenize(x0, UNIT)
        xc = [[x_cti[c] if c in x_cti else UNK_IDX for c in w] for w in x1]
        xw = [x_wti[w] if w in x_wti else UNK_IDX for w in x1]
        data.append_item(x0, x1, xc, xw)
        for _ in range(BEAM_SIZE - 1):
            data.append_row()
            data.append_item(x0, x1, xc, xw)
        data.append_row()
    fo.close()
    data.strip()
    return run_model(model, data, y_itw)
コード例 #10
0
def predict(filename, model, x_cti, x_wti, y_itw):
    data = dataloader()
    fo = open(filename)
    for x0 in fo:
        x0 = x0.strip()
        y0 = None
        if x0.count("\t") == 1:
            x0, y0 = x0.split("\t")
        x1 = tokenize(x0, UNIT)
        xc = [[x_cti.get(c, UNK_IDX) for c in w] for w in x1]
        xw = [x_wti.get(w, UNK_IDX) for w in x1]
        data.append_item(x0, x1, xc, xw, y0)
        for _ in range(BEAM_SIZE - 1):
            data.append_row()
            data.append_item(x0, x1, xc, xw, y0)
        data.append_row()
    fo.close()
    data.strip()
    return run_model(model, data, y_itw)
コード例 #11
0
def predict(filename, model, cti, wti, itt):
    data = dataloader()
    with open(filename) as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        for x0 in block.split("\n"):
            if re.match("\S+/\S+( \S+/\S+)*$", x0):  # word/tag
                x0, y0 = zip(
                    *[re.split("/(?=[^/]+$)", x) for x in x0.split(" ")])
                x0 = " ".join(x0)
            elif re.match("[^\t]+\t\S+$", x0):  # sentence \t label
                x0, *y0 = x0.split("\t")
            else:  # no ground truth provided
                y0 = []
            x1 = tokenize(x0)
            xc = [[cti[c] if c in cti else UNK_IDX for c in w] for w in x1]
            xw = [wti[w] if w in wti else UNK_IDX for w in x1]
            data.append_item(x0, x1, xc, xw, y0)
        data.append_row()
    data.strip()
    return run_model(model, data, itt)
コード例 #12
0
ファイル: predict.py プロジェクト: toby517/lstm-crf-pytorch
def predict(model, cti, wti, itt, filename):
    data = dataloader()
    with open(filename) as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        data.append_row()
        for x0 in block.split("\n"):
            if re.match("\S+/\S+( \S+/\S+)*$", x0):  # word/tag
                x0, y0 = zip(
                    *[re.split("/(?=[^/]+$)", x) for x in x0.split(" ")])
                x1 = list(map(normalize, x0))
            else:
                y0 = []
                if re.match("[^\t]+\t\S+$", x0):  # sentence \t label
                    x0, *y0 = x0.split("\t")
                x0 = tokenize(x0)
                x1 = list(map(normalize, x0))
            xc = [[cti[c] if c in cti else UNK_IDX for c in w] for w in x1]
            xw = [wti[w] if w in wti else UNK_IDX for w in x1]
            data.append_item(x0=x0, x1=x1, xc=xc, xw=xw, y0=y0)
    return run_model(model, data, itt)
コード例 #13
0
def train_model():
    fcn_model.train()
    for epoch in epochs:
        scheduler.step()

        train_data = dataloader(training=True)
        train_loader = torch.utils.data.DataLoader(train_data,
                                                   batch_size=batch_size_train,
                                                   shuffle=True,
                                                   num_workers=0)
        len_traindata = len(train_loader)

        loss_running = 0
        for iter, batch in enumerate(train_loader):
            optimizer.zero_grad()
            inputs = batch['img'].cuda()
            labels = batch['mask'].cuda()

            outputs = fcn_model(inputs)

            loss = criterion(outputs, labels)
            loss.backward()

            optimizer.step()
            loss_running += loss.data.cpu().item() * batch_size_train
            print("epoch={},iter={},loss={}".format(epoch, iter,
                                                    loss.data.cpu().item()))
            del loss

        loss_epoch = loss_running / len_traindata
        print("~~train data~~~~~~~loss_epoch" + str(epoch) +
              "={}".format(loss_epoch))
        np.save(score_dir + "\\loss_epoch" + str(epoch), loss_epoch)
        del loss_epoch
        del loss_running

        if epoch >= 10 and epoch % 10 == 0:
            torch.save(fcn_model, model_dir + "\\model_epoch" + str(epoch))
            with torch.no_grad():
                val_model(epoch)
コード例 #14
0
def load_data(args):
    data = dataloader()
    batch = []
    cti = load_tkn_to_idx(args[1])  # char_to_idx
    wti = load_tkn_to_idx(args[2])  # word_to_idx
    itt = load_idx_to_tkn(args[3])  # idx_to_tkn
    print("loading %s..." % args[4])
    with open(args[4], "r") as fo:
        for line in fo:
            line = line.strip()
            *x, y = [x.split(":") for x in line.split(" ")]
            xc, xw = zip(*[(list(map(int, xc.split("+"))), int(xw))
                           for xc, xw in x])
            data.append_row()
            data.append_item(xc=xc, xw=xw, y0=int(y[0]))
    for _batch in data.split():
        xc, xw, y0, lens = _batch.xc, _batch.xw, _batch.y0, _batch.lens
        xc, xw = data.tensor(bc=xc, bw=xw, sos=True, eos=True)
        _, y0 = data.tensor(bw=y0)
        batch.append((xc, xw, y0))
    print("data size: %d" % len(data.y0))
    print("batch size: %d" % BATCH_SIZE)
    return batch, cti, wti, itt
コード例 #15
0
def predict(filename, model, cti, wti):
    data = dataloader()
    with open(filename) as fo:
        text = fo.read().strip().split("\n" * (HRE + 1))
    for block in text:
        for x0 in block.split("\n"):
            if re.match("[^\t]+\t[0-9]+( [0-9]+)*$", x0):
                x0, y0 = x0.split("\t")
                y0 = [int(x) for x in y0.split(" ")]
            else:  # no ground truth provided
                y0 = []
            x1 = tokenize(x0)
            xc = [[cti[c] if c in cti else UNK_IDX for c in w] for w in x1]
            xw = [wti[w] if w in wti else UNK_IDX for w in x1]
            data.append_item(x0, x1, xc, xw, y0)
        for _ in range(BEAM_SIZE - 1):
            data.x0.append(data.x0[-1])
            data.x1.append(data.x1[-1])
            data.xc.append(data.xc[-1])
            data.xw.append(data.xw[-1])
            data.y0.append(data.y0[-1])
        data.append_row()
    data.strip()
    return run_model(model, data)
コード例 #16
0
    else:
        print('Creating model with fresh parameters.')
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
    return model, merged, writer


if __name__ == '__main__':
    ####################  data load  ####################################
    #with K.get_session():
    dataset = ['yelp', 'amazon']
    #对原来amazon的截断情况
    #trunc = [70000,-1]#对每个数据集取数据的长度,-1则不截断
    #对amazon1的截断情况
    trunc = [60000, 60000]
    dataloader = dataloader(dataset, trunc)

    FLAGS.vocab_size = dataloader.vocab_size
    word_embeddings = load_embeddings(dataloader, FLAGS.embedding_path)
    print("data preparation finished")

    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True
    sess = tf.Session(config=config)
    model, merged, writer = create_model(sess,
                                         FLAGS,
                                         pretrained=False,
                                         data=dataloader,
                                         word_embeddings=word_embeddings)

    var_list = model.get_trainable_weights()
コード例 #17
0
    sliceNum = 16  #24
    n_class = 2

    use_gpu = torch.cuda.is_available()
    num_gpu = list(range(torch.cuda.device_count()))

    print('use_gpu:', use_gpu)
    print('num_gpu:', num_gpu)

    fcn_model = FCNmodel_3pool(n_class)
    fcn_model.cuda()
    criterion = nn.BCEWithLogitsLoss()
    criterion.cuda()
    optimizer = optim.SGD(fcn_model.parameters(), lr=lr, momentum=0.9)

    train_data = dataloader(training=True)
    train_loader = torch.utils.data.DataLoader(train_data,
                                               batch_size=train_batch_size,
                                               shuffle=False,
                                               num_workers=num_workers)

    test_data = dataloader(training=False)
    test_loader = torch.utils.data.DataLoader(test_data,
                                              batch_size=test_batch_size,
                                              shuffle=False,
                                              num_workers=num_workers)

    fcn_model.train()
    for i, batch in enumerate(test_loader):

        if i == 0:
コード例 #18
0
ファイル: infoGAN.py プロジェクト: arita37/gan-vae-zero-shot
    def __init__(self, args, SUPERVISED=False):
        # parameters
        print(SUPERVISED, 'supervised')
        self.missing_mixt = args.missing_mixt
        self.epoch = args.epoch
        self.batch_size = args.batch_size
        self.save_dir = args.save_dir
        self.result_dir = args.result_dir
        self.dataset = args.dataset
        self.log_dir = args.log_dir
        self.gpu_mode = args.gpu_mode
        self.model_name = args.gan_type
        self.input_size = args.input_size
        self.z_dim = 62
        self.SUPERVISED = SUPERVISED  # if it is true, label info is directly used for code
        self.len_discrete_code = 7  # categorical distribution (i.e. label)
        self.len_continuous_code = 2  # gaussian distribution (e.g. rotation, thickness)
        self.sample_num = self.len_discrete_code**2

        # load dataset
        #remove samples for zero-shot
        self.data_loader = dataloader(self.dataset, self.input_size,
                                      self.batch_size, self.missing_mixt)
        self.data_batch = self.data_loader.__iter__().__next__()
        data = self.data_batch[0]
        labels = self.data_batch[1]

        # networks init
        self.G = generator(input_dim=self.z_dim,
                           output_dim=data.shape[1],
                           input_size=self.input_size,
                           len_discrete_code=self.len_discrete_code,
                           len_continuous_code=self.len_continuous_code)
        self.D = discriminator(input_dim=data.shape[1],
                               output_dim=1,
                               input_size=self.input_size,
                               len_discrete_code=self.len_discrete_code,
                               len_continuous_code=self.len_continuous_code)
        self.G_optimizer = optim.Adam(self.G.parameters(),
                                      lr=args.lrG,
                                      betas=(args.beta1, args.beta2))
        self.D_optimizer = optim.Adam(self.D.parameters(),
                                      lr=args.lrD,
                                      betas=(args.beta1, args.beta2))
        self.info_optimizer = optim.Adam(itertools.chain(
            self.G.parameters(), self.D.parameters()),
                                         lr=args.lrD,
                                         betas=(args.beta1, args.beta2))

        if self.gpu_mode:
            self.G.cpu()
            self.D.cpu()
            self.BCE_loss = nn.BCELoss().cpu()
            self.CE_loss = nn.CrossEntropyLoss().cpu()
            self.MSE_loss = nn.MSELoss().cpu()
        else:
            self.BCE_loss = nn.BCELoss()
            self.CE_loss = nn.CrossEntropyLoss()
            self.MSE_loss = nn.MSELoss()

        print('---------- Networks architecture -------------')
        utils.print_network(self.G)
        utils.print_network(self.D)
        print('-----------------------------------------------')

        # fixed noise & condition
        self.sample_z_ = torch.zeros((self.sample_num, self.z_dim))
        for i in range(self.len_discrete_code):
            self.sample_z_[i * self.len_discrete_code] = torch.rand(
                1, self.z_dim)
            for j in range(1, self.len_discrete_code):
                self.sample_z_[i * self.len_discrete_code +
                               j] = self.sample_z_[i * self.len_discrete_code]

        temp = torch.zeros((self.len_discrete_code, 1))
        for i in range(self.len_discrete_code):
            temp[i, 0] = i

        temp_y = torch.zeros((self.sample_num, 1))
        for i in range(self.len_discrete_code):
            temp_y[i * self.len_discrete_code:(i + 1) *
                   self.len_discrete_code] = temp

        self.sample_y_ = torch.zeros(
            (self.sample_num,
             self.len_discrete_code)).scatter_(1,
                                               temp_y.type(torch.LongTensor),
                                               1)
        self.sample_c_ = torch.zeros(
            (self.sample_num, self.len_continuous_code))

        # manipulating two continuous code
        self.sample_z2_ = torch.rand(
            (1, self.z_dim)).expand(self.sample_num, self.z_dim)
        self.sample_y2_ = torch.zeros(self.sample_num, self.len_discrete_code)
        self.sample_y2_[:, 0] = 1

        temp_c = torch.linspace(-1, 1, 7)
        self.sample_c2_ = torch.zeros((self.sample_num, 2))
        for i in range(self.len_discrete_code):
            for j in range(self.len_discrete_code):
                self.sample_c2_[i * self.len_discrete_code + j, 0] = temp_c[i]
                self.sample_c2_[i * self.len_discrete_code + j, 1] = temp_c[j]

        if self.gpu_mode:
            self.sample_z_, self.sample_y_, self.sample_c_, self.sample_z2_, self.sample_y2_, self.sample_c2_ = \
                self.sample_z_.cpu(), self.sample_y_.cpu(), self.sample_c_.cpu(), self.sample_z2_.cpu(), \
                self.sample_y2_.cpu(), self.sample_c2_.cpu()
コード例 #19
0
from model_factory import *
import argparse
import warnings
from sklearn.model_selection import cross_val_score
warnings.filterwarnings("ignore")

pareser = argparse.ArgumentParser()
pareser.add_argument("--model_name", type=str, help='The classifier name')
pareser.add_argument('--train_path', type=str, default='./data/adult.data', help='The path of train data')
pareser.add_argument('--test_path', type=str, default='./data/adult.test', help='The path of test data')
args = pareser.parse_args()

if __name__ == "__main__":
    train_path = args.train_path
    test_path = args.test_path
    dataloader = dataloader(train_path, test_path)
    print('==> processing test')
    dataloader.process_test()
    print("==> generating train and test data")
    train_data, train_y, test_data, test_y = dataloader.gen_dataset()

    def score_LR(model, test_data, test_y):
        pred = list(map(lambda x: 0 if x < 0.5 else 1, list(model.predict(test_data))))
        label = test_y
        return list((np.array(pred) - np.array(label))).count(0) /  len(pred)

    classifier_factory = classifier_model(args.model_name)
    print('training ' + args.model_name)
    clf = classifier_factory.get_classifier_fn()
    clf.fit(train_data.as_matrix(), train_y.as_matrix())
    labels = clf.predict(test_data)
コード例 #20
0
lists = open('data list').readlines()
lists = [elm.split('.')[0] for elm in lists]
splits = 'data split path'
batch_size = 64
correlations = 0.
testloss = 0.

n_epoch = 10
for sbj in range(21):
    for splno in range(1, 6):
        train_data = lists[sbj] + '.npy'
        splits = '/mnt/dataset/eeg/seedvig/PSD_LDS_' + str(splno) + '/'
        net = network.cnnvig().cuda()
        trainset = data.DataLoader(dataloader(train_data,
                                              d_type='train',
                                              data_dir=splits),
                                   batch_size=batch_size,
                                   shuffle=True)
        testset = data.DataLoader(dataloader(train_data,
                                             d_type='test',
                                             data_dir=splits),
                                  batch_size=177)

        criterion = torch.nn.MSELoss(size_average=False).cuda()
        optimizer = torch.optim.Adam(net.parameters(), lr=0.0001)
        save_name = '/mnt/EEG/SEED-VIG/model/psd_lds_' + lists[
            sbj] + '_' + str(splno) + '.pth'

        for ep in range(n_epoch):
            net.train()
コード例 #21
0
def main():
    parse = argparse.ArgumentParser()
    # ---------- environment setting: which gpu -------
    parse.add_argument('-gpu',
                       '--gpu',
                       type=str,
                       default='0',
                       help='which gpu to use: 0 or 1')
    parse.add_argument('-folder_name',
                       '--folder_name',
                       type=str,
                       default='datasets/didi-data/data/')
    parse.add_argument('-output_folder_name',
                       '--output_folder_name',
                       type=str,
                       default='output/didi-data/data/')
    # ---------- input/output settings -------
    parse.add_argument('-input_steps',
                       '--input_steps',
                       type=int,
                       default=6,
                       help='number of input steps')
    # ---------- model ----------
    parse.add_argument('-model',
                       '--model',
                       type=str,
                       default='GCN',
                       help='model: GCN, ConvLSTM, flow_ConvLSTM')
    parse.add_argument('-num_layers',
                       '--num_layers',
                       type=int,
                       default=2,
                       help='number of layers in model')
    parse.add_argument('-num_units',
                       '--num_units',
                       type=int,
                       default=64,
                       help='dim of hidden states')
    parse.add_argument('-kernel_size',
                       '--kernel_size',
                       type=int,
                       default=3,
                       help='kernel size in convolutional operations')
    #
    parse.add_argument(
        '-dy_adj',
        '--dy_adj',
        type=int,
        default=1,
        help=
        'whether to use dynamic adjacent matrix for lower feature extraction layer'
    )
    parse.add_argument(
        '-dy_filter',
        '--dy_filter',
        type=int,
        default=0,
        help='whether to use dynamic filter generate region-specific filter ')
    parse.add_argument(
        '-att_dynamic_adj',
        '--att_dynamic_adj',
        type=int,
        default=0,
        help='whether to use dynamic adjacent matrix in attention parts')
    #
    parse.add_argument('-model_save',
                       '--model_save',
                       type=str,
                       default='gcn',
                       help='folder name to save model')
    parse.add_argument('-pretrained_model',
                       '--pretrained_model_path',
                       type=str,
                       default=None,
                       help='path to the pretrained model')
    # ---------- params for CNN ------------
    parse.add_argument('-num_filters',
                       '--num_filters',
                       type=int,
                       default=32,
                       help='number of filters in CNN')
    parse.add_argument('-pooling_units',
                       '--pooling_units',
                       type=int,
                       default=64,
                       help='number of pooling units')
    parse.add_argument('-dropout_keep_prob',
                       '--dropout_keep_prob',
                       type=float,
                       default=0.5,
                       help='keep probability in dropout layer')
    # ---------- training parameters --------
    parse.add_argument('-n_epochs',
                       '--n_epochs',
                       type=int,
                       default=20,
                       help='number of epochs')
    parse.add_argument('-batch_size',
                       '--batch_size',
                       type=int,
                       default=8,
                       help='batch size for training')
    parse.add_argument('-show_batches',
                       '--show_batches',
                       type=int,
                       default=100,
                       help='show how many batches have been processed.')
    parse.add_argument('-lr',
                       '--learning_rate',
                       type=float,
                       default=0.0002,
                       help='learning rate')
    parse.add_argument('-update_rule',
                       '--update_rule',
                       type=str,
                       default='adam',
                       help='update rule')
    # ---------- train or predict -------
    parse.add_argument('-train',
                       '--train',
                       type=int,
                       default=1,
                       help='whether to train')
    parse.add_argument('-test', '--test', type=int, default=0, help='if test')
    #
    args = parse.parse_args()

    os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu
    print('load train, test data...')
    #
    # train: 20161101 - 20161125
    # validate: 20161126 - 20161127
    # test: 20161128 - 20161130
    split = [2400, 192, 288]
    data, train_data, val_data, test_data = load_npy_data(
        filename=[args.folder_name + 'cd_didi_data.npy'], split=split)
    # data: [num, station_num, 2]
    print(data.shape)
    #
    if 'GCN' in args.model or 'FC' in args.model:
        dataloader = DataLoader_graph
    else:
        data = np.reshape(data, (-1, 20, 20, 2))
        train_data = np.reshape(train_data, (-1, 20, 20, 2))
        val_data = np.reshape(val_data, (-1, 20, 20, 2))
        test_data = np.reshape(test_data, (-1, 20, 20, 2))
        # data: [num, height, width, 2]
        print(data.shape)
        #
        dataloader = DataLoader_map
    #
    map_size = data.shape[1:-1]
    input_dim = data.shape[-1]
    num_station = np.prod(data.shape[1:-1])
    #
    f_data, train_f_data, val_f_data, test_f_data = load_npy_data(
        [args.folder_name + 'cd_didi_flow_in.npy'], split=split)
    print(len(f_data))
    print('preprocess train/val/test flow data...')
    #f_preprocessing = StandardScaler()
    f_preprocessing = MinMaxNormalization01()
    f_preprocessing.fit(train_f_data)
    train_f_data = f_preprocessing.transform(train_f_data)
    val_f_data = f_preprocessing.transform(val_f_data)
    test_f_data = f_preprocessing.transform(test_f_data)
    print('preprocess train/val/test data...')
    # pre_process = StandardScaler()
    pre_process = MinMaxNormalization01()
    pre_process.fit(train_data)
    train_data = pre_process.transform(train_data)
    val_data = pre_process.transform(val_data)
    test_data = pre_process.transform(test_data)
    #

    print('number of station: %d' % num_station)
    #
    train_loader = dataloader(train_data,
                              train_f_data,
                              args.input_steps,
                              flow_format='identity')
    val_loader = dataloader(val_data,
                            val_f_data,
                            args.input_steps,
                            flow_format='identity')
    test_loader = dataloader(test_data,
                             test_f_data,
                             args.input_steps,
                             flow_format='identity')
    # f_adj_mx = None
    if os.path.isfile(args.folder_name + 'f_adj_mx.npy'):
        f_adj_mx = np.load(args.folder_name + 'f_adj_mx.npy')
    else:
        f_adj_mx = train_loader.get_flow_adj_mx()
        np.save(args.folder_name + 'f_adj_mx.npy', f_adj_mx)
    #
    # if args.model == 'FC_LSTM':
    #     model = FC_LSTM(num_station, args.input_steps,
    #                     num_layers=args.num_layers, num_units=args.num_units,
    #                     batch_size=args.batch_size)
    if args.model == 'FC_GRU':
        model = FC_GRU(num_station,
                       args.input_steps,
                       num_layers=args.num_layers,
                       num_units=args.num_units,
                       batch_size=args.batch_size)
    if args.model == 'GCN':
        model = GCN(num_station,
                    args.input_steps,
                    num_layers=args.num_layers,
                    num_units=args.num_units,
                    dy_adj=args.dy_adj,
                    dy_filter=args.dy_filter,
                    f_adj_mx=f_adj_mx,
                    batch_size=args.batch_size)
    if args.model == 'ConvGRU':
        model = ConvGRU(input_shape=[map_size[0], map_size[1], input_dim],
                        input_steps=args.input_steps,
                        num_layers=args.num_layers,
                        num_units=args.num_units,
                        kernel_shape=[args.kernel_size, args.kernel_size],
                        batch_size=args.batch_size)
    # if args.model == 'flow_ConvGRU':
    #     model = flow_ConvGRU(input_shape=[20, 20, input_dim], input_steps=args.input_steps,
    #                           num_layers=args.num_layers, num_units=args.num_units, kernel_shape=[args.kernel_size, args.kernel_size],
    #                           f_adj_mx=f_adj_mx,
    #                           batch_size=args.batch_size)
    if args.model == 'Coupled_ConvGRU':
        model = CoupledConvGRU(
            input_shape=[20, 20, input_dim],
            input_steps=args.input_steps,
            num_layers=args.num_layers,
            num_units=args.num_units,
            kernel_shape=[args.kernel_size, args.kernel_size],
            batch_size=args.batch_size)

    ##
    # flow_ConvGRU_2 is Stack_ConvGRU with 2 conv layers.
    if args.model == 'flow_ConvGRU_2':
        model = flow_ConvGRU_2(
            input_shape=[20, 20, input_dim],
            input_steps=args.input_steps,
            num_layers=args.num_layers,
            num_units=args.num_units,
            kernel_shape=[args.kernel_size, args.kernel_size],
            f_adj_mx=f_adj_mx,
            batch_size=args.batch_size)

    if args.model == 'Stack_ConvGRU':
        model = Stack_ConvGRU(
            input_shape=[20, 20, input_dim],
            input_steps=args.input_steps,
            num_layers=args.num_layers,
            num_units=args.num_units,
            kernel_shape=[args.kernel_size, args.kernel_size],
            f_adj_mx=f_adj_mx,
            batch_size=args.batch_size)
    #
    model_path = os.path.join(args.output_folder_name, 'model_save',
                              args.model_save)
    if not os.path.exists(model_path):
        os.makedirs(model_path)
    #model_path = os.path.join(args.folder_name, 'model_save', args.model_save)
    solver = ModelSolver(
        model,
        train_loader,
        val_loader,
        test_loader,
        pre_process,
        batch_size=args.batch_size,
        show_batches=args.show_batches,
        n_epochs=args.n_epochs,
        pretrained_model=args.pretrained_model_path,
        update_rule=args.update_rule,
        learning_rate=args.learning_rate,
        model_path=model_path,
    )
    results_path = os.path.join(model_path, 'results')
    if not os.path.exists(results_path):
        os.makedirs(results_path)
    if args.train:
        print('==================== begin training ======================')
        test_target, test_prediction = solver.train(
            os.path.join(model_path, 'out'))
        np.save(os.path.join(results_path, 'test_target.npy'), test_target)
        np.save(os.path.join(results_path, 'test_prediction.npy'),
                test_prediction)
    if args.test:
        print('==================== begin test ==========================')
        test_target, test_prediction = solver.test()
        np.save(os.path.join(results_path, 'test_target.npy'), test_target)
        np.save(os.path.join(results_path, 'test_prediction.npy'),
                test_prediction)
コード例 #22
0
#main.py
#Created by ImKe on 2020/2/28
#Copyright © 2020 ImKe. All rights reserved.
import time
import matplotlib.pyplot as plt
from SVT import *
from dataloader import *

#parameters
num_of_entries = 1000
iter_list = [50,100, 200, 300, 500, 700, 900]
plot = True
if __name__ == '__main__':
    start = time.clock()
    M_original = dataloader('ratings')
    M1 = M_original[:num_of_entries]
    rmse1 = []
    s = 1
    for i in iter_list:
        rmse1.append(SVT(M1, i)[-1])
        print("The %d iteration is completed"%s)
        s += 1
    if plot:
        plt.plot(iter_list, rmse1, '*-')
        plt.xlabel('Number of iterations')
        plt.ylabel('RMSE')
        plt.show()
    print("Time:%f s" %(time.clock() - start))
コード例 #23
0
ファイル: main.py プロジェクト: ynjang/Deep-BCI
from dataloader import *
import torch.optim as optim
from torch.autograd import Variable

data_dir = '../data/'
data_path = 'dlist.txt'  # data list
num_class = 6
learning_rate = 0.001
model_path = '../model/'  # path to save model
model_name_to_save = 'eeg_6class_simple_gru.pth'  # name of model to save
use_saved_model = False
batch_size = 32
nEpoch = 100
prev_acc = 0

trainset = data.DataLoader(dataloader(data_path, dtype='train'),
                           batch_size=batch_size,
                           shuffle=True)
valset = data.DataLoader(dataloader(data_path, dtype='test'),
                         batch_size=batch_size)

net = RNN_Encoder(num_class, model_type='GRU', hidden_dim=70).cuda()
print(net)
criterion = torch.nn.CrossEntropyLoss().cuda()
optimizer = torch.optim.Adam(net.parameters(), lr=learning_rate)

if use_saved_model:
    print('saved model loaded')
    net.load_state_dict(torch.load(model_path + model_name_to_save))

print('start train/test')
コード例 #24
0
	'wc3': tf.get_variable('W2', shape=(3,3,64,128), initializer=tf.contrib.layers.xavier_initializer()), 
	'wd1': tf.get_variable('W3', shape=(4*4*128,128), initializer=tf.contrib.layers.xavier_initializer()), 
	'out': tf.get_variable('W6', shape=(128,num_classes), initializer=tf.contrib.layers.xavier_initializer()), 
	}

	biases = {
	'bc1': tf.get_variable('B0', shape=(32), initializer=tf.contrib.layers.xavier_initializer()),
	'bc2': tf.get_variable('B1', shape=(64), initializer=tf.contrib.layers.xavier_initializer()),
	'bc3': tf.get_variable('B2', shape=(128), initializer=tf.contrib.layers.xavier_initializer()),
	'bd1': tf.get_variable('B3', shape=(128), initializer=tf.contrib.layers.xavier_initializer()),
	'out': tf.get_variable('B4', shape=(10), initializer=tf.contrib.layers.xavier_initializer()),
	}
	return weights, biases


dl = dataloader(data_root,image_size,batch_size,mode, num_classes)

input_batch = tf.placeholder("float", [None, 32,32,3])
ground_truth = tf.placeholder("float", [None, num_classes])

weight, bias = weight_and_biases()
pred = CNN(input_batch, weight, bias)

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=ground_truth))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
init = tf.global_variables_initializer()

#correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
#accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

with tf.Session() as sess:
コード例 #25
0
n_class = 3
batch_size_train = 10
batch_size_test = 1
epochs = range(0, 3001)
lr = 1e-4
momentum = 0.9
L2_factor = 1e-5
L1_factor = 1e-5
step_size = 2000
gamma = 0.1

root = 'E:/project_chop/project_leglength/code_for_training/dataTrain/data5_deep_learning/segmentation/'
model_dir = root + "models_3_segmentation"
score_dir = root + "scores_3_segmentation"  #os.path.join(model_dir,configs)

test_data = dataloader(training=False)
test_loader = torch.utils.data.DataLoader(test_data,
                                          batch_size=batch_size_test,
                                          shuffle=False,
                                          num_workers=0)
len_testdata = len(test_loader)

dir_model = model_dir + "\\model_epoch100"
fcn_model = torch.load(dir_model)

#fcn_model = FCNmodel_3pool(n_class)
cudaNum = torch.device('cuda:1')
fcn_model.cuda(cudaNum)
criterion = nn.CrossEntropyLoss()
criterion.cuda(cudaNum)
optimizer = optim.SGD(fcn_model.parameters(),