Exemplo n.º 1
0
def prepare_all():
    count_questions_len()
    gen_answers_id_mapping()
    gen_question_word_set()
    gen_word_vector_mapping()
    # gen_word_vector_mapping_glove()
    gen_question_word_id_vec()
    gen_data('train')
    gen_data('val')
Exemplo n.º 2
0
    def _train(self, network, iterations):
        bob_decrypt_error, eve_decrypt_error, alice_decrypt_error = 0.0 , 0.0 , 0.0

        bs = self.batch_size
        # Train Eve for two minibatches to give it a slight computational edge
        if network == 'eve':
            bs *= 2

        for i in range(iterations):
            msg_in_val, secret_val, key_val= gen_data(n=bs, msg_len=self.msg_len, secret_len=self.secret_len, key_len=self.random_seed_len)
            if network == 'bob':
                _, decrypt_err_alice, decrypt_err,alice,bob,eve = self.sess.run([self.bob_optimizer, self.decrypt_err_alice, self.decrypt_err_bob,self.alice_output,self.bob_output,self.eve_output],
                                               feed_dict={self.msg: msg_in_val, self.secret: secret_val, self.seed: key_val})
                # bob_decrypt_error = min(bob_decrypt_error, decrypt_err)
                bob_decrypt_error  = bob_decrypt_error + decrypt_err
                alice_decrypt_error = alice_decrypt_error + decrypt_err_alice 

            elif network == 'eve':
                _, decrypt_err,alice,bob,eve = self.sess.run([self.eve_optimizer, self.decrypt_err_eve,self.alice_output,self.bob_output,self.eve_output],
                                               feed_dict={self.msg: msg_in_val, self.secret: secret_val, self.seed: key_val})
                #eve_decrypt_error = min(eve_decrypt_error, decrypt_err)
                eve_decrypt_error = eve_decrypt_error + decrypt_err

            print msg_in_val[0], secret_val[0], alice[0], bob[0], eve[0]

        return bob_decrypt_error/iterations, eve_decrypt_error/iterations , alice_decrypt_error/iterations
Exemplo n.º 3
0
    def _train(self, network, iterations):
        bob_decrypt_error, eve_decrypt_error = 1., 1.

        bs = self.batch_size
        # Train Eve for two minibatches to give it a slight computational edge
        if network == 'eve':
            bs *= 2

        for i in range(iterations):
            msg_in_val, key_val = gen_data(n=bs)

            if network == 'bob':
                _, decrypt_err = self.sess.run(
                    [self.bob_optimizer, self.decrypt_err_bob],
                    feed_dict={
                        self.msg: msg_in_val,
                        self.key: key_val
                    })
                bob_decrypt_error = min(bob_decrypt_error, decrypt_err)

            elif network == 'eve':
                _, decrypt_err = self.sess.run(
                    [self.eve_optimizer, self.decrypt_err_eve],
                    feed_dict={
                        self.msg: msg_in_val,
                        self.key: key_val
                    })
                eve_decrypt_error = min(eve_decrypt_error, decrypt_err)

        return bob_decrypt_error, eve_decrypt_error
Exemplo n.º 4
0
def test(predict, data, language, model_name, seq_len,
         long_letter_reverse_mapping, transliteration, trans_to_index,
         char_to_index, index_to_trans, index_to_char):

    sentence_in = ""
    sentence_real = ""
    sentence_out = ""
    p = 0
    turned = False
    while not turned:
        x, y, non_valids, p, turned = utils.gen_data(p,
                                                     seq_len,
                                                     1,
                                                     data,
                                                     transliteration,
                                                     trans_to_index,
                                                     char_to_index,
                                                     is_train=False)
        sentence_in += utils.one_hot_matrix_to_sentence(
            x, index_to_trans).replace(u'\u2001', '').replace(u'\u2000', '')
        real_without_signs = utils.one_hot_matrix_to_sentence(
            y, index_to_char).replace(u'\u2001', '').replace(u'\u2000', '')
        ind = 0
        real = ""
        for c in real_without_signs:
            if c == '#' and ind < len(non_valids):
                real += non_valids[ind]
                ind += 1
            else:
                real += c
        sentence_real += real
        guess = utils.one_hot_matrix_to_sentence(
            predict(x), index_to_char).replace(u'\u2001',
                                               '').replace(u'\u2000', '')
        ind = 0
        final_guess = ""
        for c in guess:
            if c == '#' and ind < len(non_valids):
                final_guess += non_valids[ind]
                ind += 1
            else:
                final_guess += c
        sentence_out += final_guess
        print(str(100.0 * p / len(data)) + "% done       ", end='\r')
    for letter in long_letter_reverse_mapping:
        sentence_real = sentence_real.replace(
            letter, long_letter_reverse_mapping[letter])
        sentence_out = sentence_out.replace(
            letter, long_letter_reverse_mapping[letter])
    print("Computing editdistance and writing to -> " + 'languages/' +
          language + '/results.' + model_name.split('/')[-1])

    fl = codecs.open('languages/' + language + '/results.' +
                     model_name.split('/')[-1],
                     'w',
                     encoding='utf-8')
    fl.write(sentence_in + '\n' + sentence_real + '\n' + sentence_out + '\n')
    fl.write(
        str(editdistance.eval(sentence_real, sentence_out)) + ' / ' +
        str(len(sentence_real)))
Exemplo n.º 5
0
def main(args):
    # Phase 1: Assemble the graph

    # Step 1: read in data from the .xls file
    theta = (3, 1)
    x_data, y_data = gen_data(100, *theta)

    # Step 2: create placeholders for input X (number of fire) and label Y
    # (number of theft)
    X = tf.placeholder(tf.float32, shape=[None, 1], name="X")
    Y = tf.placeholder(tf.float32, shape=[None, 1], name="Y")

    # Step 3: create weight and bias, initialized to 0
    w = tf.Variable(tf.zeros([1, 1]), name='w')
    b = tf.Variable(tf.zeros([1, 1]), name='b')

    # Step 4: predict Y (number of theft) from the number of fire
    with tf.name_scope("Model"):
        Y_predicted = tf.add(tf.matmul(X, w), b, name='Y_predicted')

    # Step 5: use the square error as the loss function
    with tf.name_scope("Loss"):
        loss = tf.reduce_mean(tf.square(Y - Y_predicted, name='loss'))

    # Step 6: using gradient descent with learning rate of 0.01 to minimize
    # loss
    with tf.name_scope("SDG"):
        optimizer = tf.train.GradientDescentOptimizer(
            learning_rate=0.001).minimize(loss)

    # Create operation to initialize all variables
    init = tf.global_variables_initializer()

    # Create a saver
    saver = tf.train.Saver()

    # Phase 2: Train our model
    with tf.Session() as sess:
        # Step 7: initialize the necessary variables, in this case, w and b
        sess.run(init)

        # Step 8: train the model
        for i in range(500):  # run 500 epochs
            # Session runs optimizer to minimize loss and fetch the value of
            # loss
            _, loss_, = sess.run([optimizer, loss],
                                 feed_dict={
                                     X: x_data,
                                     Y: y_data
                                 })

            if i % 10 == 0:
                print("Epoch {0}: {1}".format(i, loss_))

        # Step 9: output the values of w and b
        w_value, b_value = sess.run([w, b])
        print("w_hat: %0.2f, b_hat: %0.2f" % (w_value, b_value))
        print("w: %0.2f, b: %0.2f" % theta)

        saver.save(sess, os.path.join(args['PATH'], 'model'))
Exemplo n.º 6
0
def prediction(input_data, candidate_answers):

    # 生成词表(word)
    t = open(model_dir + '/vocab_word', 'rb')
    vocab_word = pickle.load(t)
    t.close()
    print("========================word===========================")
    print('dec_vocab_size: ', vocab_word.n_words_for_decoder)
    print('vocab_size: ', vocab_word.n_words)
    print('max_word_length: ', max(map(lambda x: len(x),
                                       vocab_word.word2index)))

    # smn
    embedding = nn.Embedding(vocab_word.n_words, embed_size, padding_idx=0)
    smn = SMN(embed_size,
              hidden_size,
              compression_hidden_size,
              max_num_utterance,
              max_length,
              bidirectional=bidirectional,
              num_layers=num_layers,
              dropout_p=dropout_p)

    embedding = torch.nn.DataParallel(embedding).to(device_cuda)
    smn = torch.nn.DataParallel(smn).to(device_cuda)

    embedding.load_state_dict(
        torch.load(model_dir + '/embedding', map_location='cpu'))
    smn.load_state_dict(torch.load(model_dir + '/smn', map_location='cpu'))

    input_data_with_kb = list(map(lambda x: sentence_with_kb(x), input_data))
    input_data_with_kb = list(
        map(lambda x: word_tokenizer(x), input_data_with_kb))

    pred_probs = []
    for i in range(len(input_data)):
        # score
        candidate_response = candidate_answers[i]
        candidate_utterances = [input_data_with_kb[i]
                                ] * len(candidate_response)
        examples = gen_data(vocab_word, candidate_utterances,
                            candidate_response, 1, max_length,
                            max_num_utterance)
        print(candidate_utterances)
        print(candidate_response)
        print(examples[0][1])
        print(examples[0][2])
        utterances = torch.tensor(examples[0],
                                  dtype=torch.long,
                                  device=device_cuda)
        response = torch.tensor(examples[1],
                                dtype=torch.long,
                                device=device_cuda)
        probs = inference(utterances, response, embedding, smn)
        pred_probs.append(probs)

    return pred_probs
Exemplo n.º 7
0
    def test_(self):
        # Loss Functions
        self.decrypt_err_eve = tf.reduce_mean(tf.square(self.secret - self.eve_output))
        self.decrypt_err_bob = tf.reduce_mean(tf.square(self.secret - self.bob_output))
        self.decrypt_err_alice = tf.reduce_mean(tf.square(self.msg - self.alice_output))


        
        # Train Eve for two minibatches to give it a slight computational edge
        no_of_examples = 20
        alice_test_error = []
        bob_test_error = []
        eve_test_error = []
        for i in range(no_of_examples):
            #alice_decrypt_error, bob_decrypt_error, eve_decrypt_error = 0.0, 0.0, 0.0

            t1 = datetime.now()
            
            bs = self.batch_size
            msg_in_val, secret_val, key_val = gen_data(n=bs, msg_len=self.msg_len, secret_len=self.secret_len, key_len=self.random_seed_len)
            
            alice = self.sess.run(self.alice_output,
                                           feed_dict={self.msg: msg_in_val, self.secret: secret_val, self.seed: key_val})
            #eve_decrypt_error = min(eve_decrypt_error, decrypt_err)

            t2 = datetime.now()
            # eve_decrypt_error = eve_decrypt_error + decrypt_err_eve
            # bob_decrypt_error = bob_decrypt_error + decrypt_err_bob
            # alice_decrypt_error = alice_decrypt_error + decrypt_err_alice

            bob = self.sess.run(self.bob_output,
                                           feed_dict={self.alice_output:alice, self.seed: key_val})



            t3 = datetime.now()

           # print msg_in_val[0], key_val[0], alice[0],bob[0],eve[0]
            bob_test_error.append((t3-t2).microseconds*1.0 /bs)
            #eve_test_error.append(eve_decrypt_error)
            alice_test_error.append( (t2-t1).microseconds*1.0 /bs )

            #visualize_image(convToInt(msg_in_val),self.file_name,bs,steg=False)
            #visualize_image(convToInt(alice),self.file_name,bs,steg=True)


        print bob_test_error
        print alice_test_error



        
        print np.mean(bob_test_error), np.std(bob_test_error)
        #print np.mean(eve_test_error), np.std(eve_test_error)
        print np.mean(alice_test_error), np.std(alice_test_error)
Exemplo n.º 8
0
def gen_data_fun(key):
    """
    根据关键字选择数据生成方式并返回
    :param key:
    :return:
    """
    global global_price, global_unit, global_tax
    global_price = float(global_price)
    global_tax = float(global_tax)

    if "YEAR/MONTH/DAY" == key:
        return utils.gen_data()
    elif "12_10_LEN" == key:
        return utils.gen_len_digit([12, 10])
    elif "8_LEN" == key:
        return utils.gen_len_digit([8])
    elif "ENTERPRISE" == key:
        return utils.gen_enterprise()
    elif "15_18_20_LEN" == key:
        return utils.gen_len_digit([15, 18, 20])
    elif "11_LEN" == key:
        return utils.gen_len_digit([11])
    elif "16_17_19_LEN" == key:
        return utils.gen_len_digit([16, 17, 19])
    elif "NONE" == key:
        return ""
    elif "PERSON_NAME" == key:
        return utils.gen_person_name()
    elif "PROVINCE" == key:
        return utils.gen_province()
    elif "GOOD_NAME" == key:
        good, global_unit = utils.gen_good_name_and_unit()
        return good
    elif "UNIT" == key:
        return global_unit
    elif "NUMS" == key:
        if "Kg" == global_unit:
            global_price = float("{:.2f}".format(0.1 + random.random() * 5))
        else:
            global_price = random.randint(1, 20)
        return "{:.2f}".format(global_price)
    elif "PRICE_TAX" == key:
        tax_one = float("{:.2f}".format(0.5 + random.random()))
        global_price *= tax_one
        return "{:.2f}".format(tax_one)
    elif "PRICE" == key:
        return "{:.2f}".format(global_price)
    elif "RATE" == key:
        global_tax = float("{:.2f}".format(0.1 + random.random() * 10.0))
        return "{:.2f}".format(global_tax)
    elif "TAX_SUM" == key:
        return "{:.2f}".format(global_price * global_tax / 100)
Exemplo n.º 9
0
def percentAccuracy(filename, ns, times):
	global zones, data
	with open(filename, 'wb') as csvfile:
		spamwriter = csv.writer(csvfile, delimiter=',',
			 quotechar='|', quoting=csv.QUOTE_MINIMAL)
		spamwriter.writerow(["NUM", "PERCENT ACCURACY"])
		for n in ns:
			print n
			for i in range(times):
				print "-", i
				zones, data = utils.gen_data(n, 1000)
				acc, _ = getCrossCorrelation(True)
				spamwriter.writerow([n, acc*100])
Exemplo n.º 10
0
def main():
    print("Testing KD Tree...")
    test_times = 100
    run_time_1 = run_time_2 = 0

    for _ in range(test_times):
        # 随机生成数据
        low = 0
        high = 100
        n_rows = 1000
        n_cols = 2
        X = gen_data(low, high, n_rows, n_cols)
        y = gen_data(low, high, n_rows)
        Xi = gen_data(low, high, n_cols)

        # 创建Kd树
        tree = KDTree()
        tree.build_tree(X, y)

        # Kd树查找
        start = time()
        nd = tree.nearest_neighbour_search(Xi)
        run_time_1 += time() - start
        ret1 = get_eu_dist(Xi, nd.split[0])

        # 普通线性查找
        start = time()
        row = exhausted_search(X, Xi)
        run_time_2 += time() - start
        ret2 = get_eu_dist(Xi, row)

        # 比较结果
        assert ret1 == ret2, "target:%s\nrestult1:%s\nrestult2:%s\ntree:\n%s" % (
            Xi, nd, row, tree)

    print("%d tests passed!" % test_times)
    print("KD Tree Search %.2f s" % run_time_1)
    print("Exhausted search %.2f s" % run_time_2)
Exemplo n.º 11
0
def main():
    args = utils.get_args()
    
    print("Prepare dataset...")
    mnist = input_data.read_data_sets("mnist/", one_hot = True)
    
    with tf.Graph().as_default(), tf.Session() as session:
        autoencoder = Autoencoder(
            784, args.hid_shape, args.lat_shape,
            optimizer = tf.train.AdagradOptimizer(args.lr),
            batch_size = args.batch_size,
            dropout = args.dropout)
        
        session.run(tf.initialize_all_variables())

        if args.save_model or args.load_model:
            saver = tf.train.Saver()

        if args.load_model:
            try:
                saver.restore(session, utils.SAVER_FILE)
            except ValueError:
                print("Cant find model file")
                sys.exit(1)
                
        if args.make_imgs:
            index = 0
            print("Prepare images directory...")
            utils.prepare_image_folder()
            example = utils.get_example(args.digit, mnist.test)
            
        print("Start training...")
        for epoch in range(args.epoches):
            for i, batch in enumerate(utils.gen_data(args.batch_size, mnist.train.images)):
                autoencoder.fit_on_batch(session, batch)
                if (i+1) % args.log_after == 0:
                    test_cost = autoencoder.evaluate(session, mnist.test.images)
                    print("Test error = {0:.4f} on {1} batch in {2} epoch".format(test_cost, i+1, epoch+1))
                    
                    if args.make_imgs:
                        path = os.path.join(utils.IMG_FOLDER, "{0:03}.png".format(index))
                        autoencoded = autoencoder.encode_decode(session, example.reshape(1, 784))
                        utils.save_image(autoencoded.reshape((28, 28)), path)
                        index += 1
            if args.save_model:
                saver.save(session, utils.SAVER_FILE)
                print("Model saved")
Exemplo n.º 12
0
def run_recurrent(
        # Min/max sequence length
        min_length=50,
        max_length=55,
        # Number of units in the hidden (recurrent) layern
        n_hidden=100,
        # Number of training sequences in each batch
        batch_size=100,
        # Optimization learning rate
        learning_rate=.001,
        # All gradients above this will be clipped
        grad_clipping=100.0,
        # How often should we check the output?
        epoch_size=100,
        # Number of epochs to train the net
        n_epochs=10,
        model_name='single_layer_rnn'):

    #############
    # Load Data #
    #############
    print("Loading data...")
    # We'll use this "validation set" to periodically check progress
    X_val, y_val, mask_val = gen_data(min_length=min_length,
                                      max_length=max_length,
                                      batch_size=batch_size)

    ############################################
    # allocate symbolic variables for the data #
    ############################################
    target_var = T.vector('targets')

    ####################################################
    # BUILD MODEL (The model is a function in Lasagne) #
    ####################################################
    print('... building the model')
    model = None

    if model_name == 'single_layer_rnn':
        model = single_layer_rnn(shape=(batch_size, max_length, 2),
                                 n_hidden=n_hidden,
                                 grad_clipping=grad_clipping)
    elif model_name == 'two_layer_rnn':
        model = two_layer_rnn(shape=(batch_size, max_length, 2),
                              n_hidden=n_hidden,
                              grad_clipping=grad_clipping)
    elif model_name == 'single_layer_bidirectional_rnn':
        model = single_layer_bidirectional_rnn(shape=(batch_size, max_length,
                                                      2),
                                               n_hidden=n_hidden,
                                               grad_clipping=grad_clipping)
    elif model_name == 'two_layer_bidirectional_rnn':
        model = two_layer_bidirectional_rnn(shape=(batch_size, max_length, 2),
                                            n_hidden=n_hidden,
                                            grad_clipping=grad_clipping)
    elif model_name == 'single_layer_lstm':
        model = single_layer_lstm(shape=(batch_size, max_length, 2),
                                  n_hidden=n_hidden,
                                  grad_clipping=grad_clipping)
    elif model_name == 'single_layer_bidirectional_lstm':
        model = single_layer_bidirectional_lstm(shape=(batch_size, max_length,
                                                       2),
                                                n_hidden=n_hidden,
                                                grad_clipping=grad_clipping)

    #####################
    # Training Function #
    #####################
    # lasagne.layers.get_output produces a variable for the output of the net
    network_output = lasagne.layers.get_output(model.l_out)

    # The network output will have shape (batch_size, 1); let's flatten to get a
    # 1-dimensional vector of predicted values
    prediction = network_output.flatten()
    # Our cost will be mean-squared error
    loss = T.mean((prediction - target_var)**2)

    # Retrieve all parameters from the network
    params = lasagne.layers.get_all_params(model.l_out)
    updates = lasagne.updates.adagrad(loss,
                                      params,
                                      learning_rate=learning_rate)
    # Theano functions for training and computing loss

    train_model = theano.function(
        inputs=[model.l_in.input_var, target_var, model.l_mask.input_var],
        outputs=loss,
        updates=updates,
        name='train')

    ##################################
    # Validation & Testing Functions #
    ##################################
    validate_model = theano.function(
        inputs=[model.l_in.input_var, target_var, model.l_mask.input_var],
        outputs=loss,
        name='validate')

    ###############
    # TRAIN MODEL #
    ###############
    print('... Starting training')
    try:
        for epoch in range(n_epochs):
            for _ in range(epoch_size):
                X, y, m = gen_data(min_length=min_length,
                                   max_length=max_length,
                                   batch_size=batch_size)
                train_model(X, y, m)
            val_err = validate_model(X_val, y_val, mask_val)
            print("Epoch {} validation error = {}".format(epoch, val_err))
    except KeyboardInterrupt:
        pass
Exemplo n.º 13
0
def run_train():
    data = {
        'trainAnswers': [],
        'devAnswers': [],
        'trainQuestions': [],
        'devQuestions': []
    }
    data['trainAnswers'].extend(
        map(
            lambda x: x.split(' '),
            open('opennmt-kb-char-' + str(dev_id) + '/train.txt.tgt',
                 encoding="utf-8").read().strip().split('\n')))
    data['trainQuestions'].extend(
        map(
            lambda x: x.split(' '),
            open('opennmt-kb-char-' + str(dev_id) + '/train.txt.src',
                 encoding="utf-8").read().strip().split('\n')))
    data['devAnswers'].extend(
        map(
            lambda x: x.split(' '),
            open('opennmt-kb-char-' + str(dev_id) + '/val.txt.tgt',
                 encoding="utf-8").read().strip().split('\n')))
    data['devQuestions'].extend(
        map(
            lambda x: x.split(' '),
            open('opennmt-kb-char-' + str(dev_id) + '/val.txt.src',
                 encoding="utf-8").read().strip().split('\n')))

    # for debug
    '''
    data['trainAnswers'] = data['trainAnswers'][:5]
    data['trainQuestions'] = data['trainQuestions'][:5]
    data['devAnswers'] = [list(x) for x in data['trainAnswers']]
    data['devQuestions'] = [list(x) for x in data['trainQuestions']]
    '''

    # 生成词表(word)
    if os.path.exists(model_dir + '/vocab_word'):
        t = open(model_dir + '/vocab_word', 'rb')
        vocab_word = pickle.load(t)
        t.close()
    else:
        vocab_word = prepare_vocabulary(data, cut=cut)
        t = open(model_dir + '/vocab_word', 'wb')
        pickle.dump(vocab_word, t)
        t.close()
    print("========================word===========================")
    print('dec_vocab_size: ', vocab_word.n_words_for_decoder)
    print('vocab_size: ', vocab_word.n_words)
    print('max_word_length: ', max(map(lambda x: len(x),
                                       vocab_word.word2index)))

    # 生成数据(截断,生成负例)
    if os.path.exists(model_dir + '/data'):
        t = open(model_dir + '/data', 'rb')
        train_examples, dev_examples = pickle.load(t)
        t.close()
    else:
        train_examples = gen_data(vocab_word, data['trainQuestions'],
                                  data['trainAnswers'], 1, max_length,
                                  max_num_utterance)
        dev_examples = gen_data(vocab_word, data['devQuestions'],
                                data['devAnswers'], 10, max_length,
                                max_num_utterance)
        t = open(model_dir + '/data', 'wb')
        pickle.dump((train_examples, dev_examples), t)
        t.close()
    print(train_examples[0][1])
    print(train_examples[0][2])
    print(dev_examples[0][1])
    print(dev_examples[0][2])
    print("========================dataset===========================")
    print('train: ', len(train_examples[0]), len(train_examples[1]),
          len(train_examples[2]))
    print('dev: ', len(dev_examples[0]), len(dev_examples[1]),
          len(dev_examples[2]))

    embed = init_embedding(embed_size, vocab_word.n_words,
                           vocab_word.word2index, True)
    embedding = nn.Embedding(vocab_word.n_words, embed_size,
                             padding_idx=0).from_pretrained(embed,
                                                            freeze=False)
    dam = DAM(embed_size, max_num_utterance, max_length, max_stacks)

    embedding = torch.nn.DataParallel(embedding).to(device_cuda)
    dam = torch.nn.DataParallel(dam).to(device_cuda)

    if os.path.isfile(model_dir + '/embedding'):
        embedding.load_state_dict(torch.load(model_dir + '/embedding'))

    if os.path.isfile(model_dir + '/dam'):
        dam.load_state_dict(torch.load(model_dir + '/dam'))

    optimizer = optim.Adam([{
        "params": embedding.parameters()
    }, {
        "params": dam.parameters()
    }],
                           lr=lr,
                           amsgrad=True)

    if os.path.isfile(model_dir + '/optimizer'):
        optimizer.load_state_dict(torch.load(model_dir + '/optimizer'))

    trainIters(vocab_word,
               embedding,
               dam,
               optimizer,
               train_examples,
               dev_examples,
               n_epochs,
               lr,
               batch_size,
               infer_batch_size,
               print_every=1)
Exemplo n.º 14
0
                                   sparsity=s,
                                   seed=s).ravel()
            if len(np.nonzero(subset)[0]) == 0:
                eta[i1, nidx, rep, i3, :] = np.nan
                eta2[i1, nidx, rep, i3] = np.nan
                continue

            else:
                eta2[i1, nidx, rep,
                     i3] = calc_irrep_const(sigma_rep,
                                            np.nonzero(subset)[0])

                for rep2 in range(nreps2):

                    X, _, _, _, _ = gen_data(2000,
                                             p,
                                             covariance=sigma_rep,
                                             beta=subset.ravel())
                    # Normalize X
                    X = StandardScaler().fit_transform(X)
                    C = 1 / n_ * X.T @ X
                    eta[i1, nidx, rep, i3,
                        rep2] = calc_irrep_const(C,
                                                 np.nonzero(subset)[0])

        if comm.rank == 0:
            print(time.time() - t0)

        print('%d/%d' % (i1 + 1, len(task_chunk[comm.rank])))

    # Gather and save results
    rho = Gatherv_rows(rho, comm, root=0)
Exemplo n.º 15
0
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import paddle.fluid as fluid
from nets import mlp
from utils import gen_data

input_x = fluid.layers.data(name="x", shape=[32], dtype='float32')
input_y = fluid.layers.data(name="y", shape=[1], dtype='int64')

cost = mlp(input_x, input_y)
optimizer = fluid.optimizer.SGD(learning_rate=0.01)
optimizer.minimize(cost)
place = fluid.CPUPlace()

exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
step = 1001
for i in range(step):
    cost_val = exe.run(feed=gen_data(),
                       fetch_list=[cost.name])
    print("step%d cost=%f" % (i, cost_val[0]))



Exemplo n.º 16
0
    """Perform animation step."""
    x, y, z, count = data

    particles.set_data(x, y)
    particles_3d.set_data(x, y)
    particles_3d.set_3d_properties(z)
    title.set_text("Epochs: {}".format(count))

    return particles, particles_3d, title


if __name__ == "__main__":
    out_mode = get_out_mode()

    for f in INFO.keys():
        print("\n" + f.__name__.capitalize() + " function")

        swarm = Swarm([(INFO[f]["x_min"], INFO[f]["x_max"]),
                       (INFO[f]["y_min"], INFO[f]["y_max"])], f, 1e-4)

        if out_mode == ANIMATION:
            display(f)
            fig, title, particles, particles_3d = init(f)
            anim = animate(fig, update, lambda: gen_data(swarm),
                           INFO[f]["fps"])
#            save(anim, f.__name__, INFO[f]["fps"], ".mp4")
        elif out_mode == TEXT:
            swarm.minimize()

    print()
Exemplo n.º 17
0
def gen_data_(params, subcomm, subrank):
    ''' Use the seeds provided from the arg file to generate regression design and data'''

    seed = params['seed']

    if subrank == 0:
        # Generate covariance
        sigma = gen_covariance(params['n_features'],
                               params['cov_params']['correlation'],
                               params['cov_params']['block_size'],
                               params['cov_params']['L'],
                               params['cov_params']['t'])


        # Sparsify the beta - seed with the block size
        beta = sparsify_beta(params['betadict']['beta'], params['cov_params']['block_size'],
                             params['sparsity'], seed=params['cov_params']['block_size'])

    else:

        sigma = None
        beta = None

    sigma = Bcast_from_root(sigma, subcomm)
    beta = Bcast_from_root(beta, subcomm)

    params['sigma'] = sigma
    params['betas'] = beta

    # If all betas end up zero for this sparsity level, output a warning and skip
    # this iteration (Make sure all ranks are instructed to continue!)
    if np.count_nonzero(beta) == 0:
        print('Warning, all betas were 0!')
        print(params)

    if subrank == 0:

        # Generate data
        X, X_test, y, y_test, ss = gen_data(params['n_samples'], params['n_features'],
                                        params['kappa'], sigma, beta, seed)

        # Standardize
        X = StandardScaler().fit_transform(X)
        X_test = StandardScaler().fit_transform(X_test)
        y -= np.mean(y)
        y_test -= np.mean(y_test)

    else:
        X = None
        X_test = None
        y = None
        y_test = None
        ss = None


    X = Bcast_from_root(X, subcomm)
    X_test = Bcast_from_root(X_test, subcomm)
    y = Bcast_from_root(y, subcomm)
    y_test = Bcast_from_root(y_test, subcomm)
    ss = Bcast_from_root(ss, subcomm)

    params['ss'] = ss

    return X, X_test, y, y_test, params
Exemplo n.º 18
0
    def __call__(self, task_tuple):

        cov_param_idx = task_tuple[0]
        rep = task_tuple[1]
        algorithm = task_tuple[2]

        n_features = self.n_features
        n_samples = self.n_samples

        beta = gen_beta2(n_features,
                         n_features,
                         sparsity=1,
                         betawidth=-1,
                         seed=1234)

        cov_param = self.cov_params[cov_param_idx]

        sigma = gen_covariance(n_features, cov_param['correlation'],
                               cov_param['block_size'], cov_param['L'],
                               cov_param['t'])

        beta_ = sparsify_beta(beta,
                              cov_param['block_size'],
                              sparsity=0.25,
                              seed=cov_param['block_size'])

        # Follow the procedure of generating beta with a fixed betaseed at the getgo
        # and then sparsifying as one goes on. Is this reproducible subsequently?

        t0 = time.time()
        X, X_test, y, y_test, ss = gen_data(n_samples,
                                            n_features,
                                            kappa=5,
                                            covariance=sigma,
                                            beta=beta_)

        # Standardize
        X = StandardScaler().fit_transform(X)
        y -= np.mean(y)

        if algorithm == 0:
            lasso = LassoCV(fit_intercept=False, cv=5)
            lasso.fit(X, y.ravel())
            beta_hat = lasso.coef_

        elif algorithm == 1:

            uoi = UoI_Lasso(fit_intercept=False, estimation_score='r2')
            uoi.fit(X, y)
            beta_hat = uoi.coef_

        elif algorithm == 2:
            scad = PycassoCV(penalty='scad',
                             fit_intercept=False,
                             nfolds=5,
                             n_alphas=100)
            scad.fit(X, y)
            beta_hat = scad.coef_

        elif algorithm == 3:

            mcp = PycassoCV(penalty='mcp',
                            fit_intercept=False,
                            nfolds=5,
                            n_alphas=100)

            mcp.fit(X, y)
            beta_hat = mcp.coef_

        self.beta.append(beta_)
        self.beta_hat.append(beta_hat)
        self.task_signature.append((cov_param_idx, rep, algorithm))
        print('call successful, algorithm %d took %f seconds' %
              (algorithm, time.time() - t0))
Exemplo n.º 19
0
from paddle.fluid.incubate.fleet.base import role_maker

input_x = fluid.layers.data(name="x", shape=[32], dtype='float32')
input_y = fluid.layers.data(name="y", shape=[1], dtype='int64')

cost = mlp(input_x, input_y)
optimizer = fluid.optimizer.Adagrad(learning_rate=0.01)

role = role_maker.PaddleCloudRoleMaker()
fleet.init(role)

optimizer = fleet.distributed_optimizer(optimizer)
optimizer.minimize(cost)

if fleet.is_server():
    fleet.init_server()
    fleet.run_server()
elif fleet.is_worker():
    fleet.init_worker()
    place = fluid.CPUPlace()
    exe = fluid.Executor(place)
    exe.run(fluid.default_startup_program())
    step = 1001
    for i in range(step):
        cost_val = exe.run(program=fleet.main_program,
                           feed=gen_data(),
                           fetch_list=[cost.name])
        print("worker_index: %d, step%d cost = %f" %
              (fleet.worker_index(), i, cost_val[0]))
    fleet.stop_worker()
Exemplo n.º 20
0
def main():

    parser = argparse.ArgumentParser()
    parser.add_argument('--hdim', default=512, type=int)
    parser.add_argument('--grad_clip', default=100, type=int)
    parser.add_argument('--lr', default=0.01, type=float)
    parser.add_argument('--batch_size', default=50, type=int)
    parser.add_argument('--num_epochs', default=10, type=int)
    parser.add_argument('--seq_len', default=60, type=int)
    parser.add_argument('--depth', default=1, type=int)
    parser.add_argument('--model', default=None)
    parser.add_argument('--model_name_prefix', default='model')
    parser.add_argument('--language', default='hy-AM')
    parser.add_argument('--start_from', default=0, type=float)
    args = parser.parse_args()

    print("Loading Files")

    (char_to_index, index_to_char, vocab_size, trans_to_index, index_to_trans,
     trans_vocab_size) = utils.load_vocabulary(language=args.language)
    (train_text, val_text,
     trans) = utils.load_language_data(language=args.language)
    data_size = len(train_text)

    print("Building Network ...")

    (output_layer, train, cost) = utils.define_model(args.hdim,
                                                     args.depth,
                                                     args.lr,
                                                     args.grad_clip,
                                                     trans_vocab_size,
                                                     vocab_size,
                                                     is_train=True)

    if args.model:
        f = np.load('languages/' + args.language + '/models/' + args.model)
        param_values = [np.float32(f[i]) for i in range(len(f))]
        lasagne.layers.set_all_param_values(output_layer, param_values)

    print("Training ...")
    p = int(len(train_text) * args.start_from) + 1
    step_cnt = 0
    avg_cost = 0
    it = 0
    while it < args.num_epochs:
        avg_cost = 0
        date_at_beginning = datetime.now()
        non_native_skipped = 0
        for _ in range(PRINT_FREQ):
            x, y, p, turned, non_native_sequences = utils.gen_data(
                p, args.seq_len, args.batch_size, train_text, trans,
                trans_to_index, char_to_index)
            if turned:
                it += 1
            avg_cost += train(x, np.reshape(y, (-1, vocab_size)))
            non_native_skipped += non_native_sequences
        date_after = datetime.now()
        print("Epoch {} average loss = {} Time {} sec. Nonnatives skipped {}".
              format(1.0 * it + 1.0 * p / data_size, avg_cost / PRINT_FREQ,
                     (date_after - date_at_beginning).total_seconds(),
                     non_native_skipped))

        step_cnt += 1
        if True:  #step_cnt * args.batch_size > 100000:
            print('computing validation loss...')
            val_turned = False
            val_p = 0
            val_steps = 0.
            val_cost = 0.
            while not val_turned:
                x, y, val_p, val_turned, non_native = utils.gen_data(
                    val_p, args.seq_len, args.batch_size, val_text, trans,
                    trans_to_index, char_to_index)
                val_steps += 1
                val_cost += cost(x, np.reshape(y, (-1, vocab_size)))
            print('validation loss is ' + str(val_cost / val_steps))
            file_name = 'languages/' + args.language + '/models/' + args.model_name_prefix + '.hdim' + str(
                args.hdim) + '.depth' + str(args.depth) + '.seq_len' + str(
                    args.seq_len) + '.bs' + str(
                        args.batch_size) + '.epoch' + str(
                            1.0 * it + 1.0 * p / data_size) + '.loss' + str(
                                avg_cost / PRINT_FREQ) + '.npz'
            print("saving to -> " + file_name)
            np.save(file_name,
                    lasagne.layers.get_all_param_values(output_layer))
            step_cnt = 0
Exemplo n.º 21
0
def getProbs(zn, tn):
	global zones, data
	zones, data = utils.gen_data(zn, tn)
	R = getCrossCorrelation()
	cov_thr = getCovar(R)
	return (cov_thr[0], getTransitionProb(cov_thr))
Exemplo n.º 22
0
    # check_get floor
    brick.control_brick(ord("s"), field)
    can_down = utils.check_valid(field, brick)
    brick.revert()
    if not can_down:
        field.add_brick(brick)
        brick.create_new_brick()

    # clear one row when full
    field.check_and_clear_rows()

    # render screen
    rendered = utils.create_screen(field, brick)
    window.addstr(0, 0, rendered)


def move_set(keys_list):
    global window
    move(keys_list[0])
    for key in keys_list[1:]:
        window.getch()
        move(key)


while True:
    window.getch()
    keys_list = utils.get_moveset(field, brick)
    utils.gen_data(field, brick, keys_list)
    move_set(keys_list)
Exemplo n.º 23
0
import time
from tqdm import tqdm

from sklearn.model_selection import train_test_split

from utils import gen_data, iterModel, MetaClassifier, Sampling

EPOCHS = 3  # arbitrary number of times that the flow will work through the entire dataset.

for i in tqdm(range(0, EPOCHS)):

    # ------------------------------ I) Load & Process Data ----------------------------------- #

    #    A) Train Set: generate train dataset fro challenge data
    PATH_TRAIN = pjoin("Data", "dataset-challenge.xlsx")
    data_dict = gen_data(PATH_TRAIN, 'train')
    X, y = [data_dict['X'], data_dict['y']]

    #    B) Test Set: generate test dataset from the challenge data (optional)
    #X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15)
    #train_dict = {'X_train': X_train, 'y_train':y_train}
    #test_dict = {'X_test': X_test, 'y_test':y_test}

    #    C) Evaluation Set: generate evaluation dataset
    PATH_EVAL = pjoin("Data", "dataset-evaluation.xlsx")
    eval_dict = gen_data(PATH_EVAL, 'eval')
    X_eval = eval_dict['X']

    train_dict = {'X_train': X, 'y_train': y}
    test_dict = {}
Exemplo n.º 24
0
    def test(self):
        # Loss Functions
        self.decrypt_err_eve = tf.reduce_mean(tf.square(self.secret - self.eve_output))
        self.decrypt_err_bob = tf.reduce_mean(tf.square(self.secret - self.bob_output))
        self.decrypt_err_alice = tf.reduce_mean(tf.square(self.msg - self.alice_output))


        
        # Train Eve for two minibatches to give it a slight computational edge
        no_of_examples = 5
        alice_test_error = []
        bob_test_error = []
        eve_test_error = []
        for i in range(no_of_examples):
            alice_decrypt_error, bob_decrypt_error, eve_decrypt_error = 0.0, 0.0, 0.0
            bs = self.batch_size
            msg_in_val, secret_val, key_val = gen_data(n=bs, msg_len=self.msg_len, secret_len=self.secret_len, key_len=self.random_seed_len)
            
            decrypt_err_alice, decrypt_err_bob, decrypt_err_eve,alice,bob,eve = self.sess.run([self.decrypt_err_alice, self.decrypt_err_bob, self.decrypt_err_eve,self.alice_output,self.bob_output,self.eve_output],
                                           feed_dict={self.msg: msg_in_val, self.secret: secret_val, self.seed: key_val})
            #eve_decrypt_error = min(eve_decrypt_error, decrypt_err)
            eve_decrypt_error = eve_decrypt_error + decrypt_err_eve
            bob_decrypt_error = bob_decrypt_error + decrypt_err_bob
            alice_decrypt_error = alice_decrypt_error + decrypt_err_alice

            print msg_in_val[0], key_val[0], alice[0],bob[0],eve[0]
            bob_test_error.append(bob_decrypt_error)
            eve_test_error.append(eve_decrypt_error)
            alice_test_error.append(alice_decrypt_error)

            visualize_image(convToInt(msg_in_val),self.file_name,bs,steg=False)
            visualize_image(convToInt(alice),self.file_name,bs,steg=True)





        print "here"
    
        f = open(self.file_name+".out.txt" ,'w')
        print "here2"
        for i in bob_test_error:
            f.write(str(i)+",")
        f.write("\n")
        for i in eve_test_error:
            f.write(str(i)+",")
        f.write("\n")
        for i in alice_test_error:
            f.write(str(i)+",")
        f.write("\n")
        f.write(str(np.mean(bob_test_error)) +", "+str(np.std(bob_test_error)))
        f.write("\n")
        f.write(str(np.mean(eve_test_error)) + ", " + str(np.std(eve_test_error)))
        f.write("\n")
        f.write(str(np.mean(alice_test_error)) + ", " + str(np.std(alice_test_error)))
        f.write("\n")
        f.close()
        print np.mean(bob_test_error), np.std(bob_test_error)
        print np.mean(eve_test_error), np.std(eve_test_error)
        print np.mean(alice_test_error), np.std(alice_test_error)

        return bob_decrypt_error, eve_decrypt_error, alice_decrypt_error
            # 释放内存 否则会耗尽资源
            del x_train
            del x_test
            del y_train
            del y_test
            del his
            del score
            del model
            # 真正释放
            gc.collect()
            # 释放Keras
            K.clear_session()

            print '\nEnding Round ' + str(cnt) + ' at ' + time.strftime(
                "%Y-%m-%d %H:%M:%S", time.localtime())


if __name__ == "__main__":
    original_stdout = utils.before('resnet_training_console_output')
    try:
        X, label = utils.gen_data(
            '../../data/whole/sharpened/whole_5_classes.h5')
        train_resnet('../model/resnet', X, label, './')
    # gen_resnet_model()
    except Exception, e:
        print e
        traceback.print_exc()
        raise
    finally:
        utils.after(original_stdout)
Exemplo n.º 26
0
INFO = {  # parameters for the animation
    "quarto_stato": {
        "fps": 10
    },
    "arduino": {
        "fps": 20
    }
}

if __name__ == "__main__":
    out_mode = get_out_mode()

    for name in INFO.keys():
        print("\n" + name + ".png")
        target = mpimg.imread("images/" + name + "/target.png")
        model = mpimg.imread("images/" + name + "/model.png")

        swarm = Swarm([(0, target.shape[1] - model.shape[1]), (0, target.shape[0] - model.shape[0])],
                      lambda x, y: dissimilarity(x, y, model, target), 0.5)

        if out_mode == ANIMATION:
            display(model, target, name)
            fig, title, boxes = init(model, target, name)
            anim = animate(fig, update, lambda: gen_data(swarm), INFO[name]["fps"])
#            save(anim, name + "/" + name, INFO[name]["fps"], ".mp4")
        elif out_mode == TEXT:
            swarm.minimize()

    print()