blob: 16286edb10ef09b1362c5bd9f9c76f90db0ec20a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/*
Copyright (c) 2009 Yahoo! Inc. All rights reserved. The copyrights
embodied in the content of this file are licensed under the BSD
(revised) open source license
*/
#ifndef GLOBAL_DATA_H
#define GLOBAL_DATA_H
#include <vector>
#include "v_array.h"
#include "parse_regressor.h"
using namespace std;
extern string version;
struct int_pair {
int fd;
int id;
};
struct global_data {
size_t thread_bits; // log_2 of the number of threads.
size_t partition_bits; // log_2 of the number of partitions of features.
size_t num_bits; // log_2 of the number of features.
bool default_bits;
bool backprop;
bool corrective;
bool delayed_global;
float global_multiplier;
float active_c0;
float initial_weight;
bool conjugate_gradient;
float regularization;
size_t stride;
size_t numpasses;
size_t passes_complete;
size_t thread_mask; // 1 << num_bits >> thread_bits - 1.
size_t mask; // 1 << num_bits -1
vector<string> pairs; // pairs of features to cross.
size_t ngram;//ngrams to generate.
size_t skips;//skips in ngrams.
size_t queries;
bool audit;//should I print lots of debugging information?
bool quiet;//Should I suppress updates?
bool training;//Should I train if label data is available?
bool active;
bool active_simulation;
bool adaptive;//Should I use adaptive individual learning rates?
double min_label;//minimum label encountered
double max_label;//maximum label encountered
size_t num_threads () { return 1 << thread_bits; };
size_t num_partitions () { return 1 << partition_bits; };
size_t length () { return 1 << num_bits; };
//Prediction output
v_array<int_pair> final_prediction_sink; // set to send global predictions to.
int raw_prediction; // file descriptors for text output.
int local_prediction; //file descriptor to send local prediction to.
size_t unique_id; //unique id for each node in the network, id == 0 means extra io.
void (*print)(int,float,float,v_array<char>);
loss_function* loss;
char* program_name;
//runtime accounting variables.
long long int example_number;
double initial_t;
double weighted_examples;
double weighted_unlabeled_examples;
double old_weighted_examples;
double weighted_labels;
size_t total_features;
double sum_loss;
double sum_loss_since_last_dump;
float dump_interval;// when should I update for the user.
float eta;//learning rate control.
float eta_decay_rate;
regressor* reg;
};
extern pthread_mutex_t io;
extern global_data global;
extern void (*set_minmax)(double label);
void print_result(int f, float res, float weight, v_array<char> tag);
void binary_print_result(int f, float res, float weight, v_array<char> tag);
void noop_mm(double label);
const size_t ring_size = 1 << 11;
#endif
|