In [1]:
###########################################################################################################################

In [2]:
import tensorflow as tf
import numpy as np
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn import metrics
from math import sqrt
import time
import csv
import random

In [3]:
# assert helper
# o: object
# t_list: list of type
def assertHelper(o, t_list):
    boolToBeAsserted = False
    stringToBePrinted = ''
    for t in t_list:

        boolToBeAsserted = boolToBeAsserted or isinstance(o, t)

        if (t == int):
            stringToBePrinted += '{} is not an integer '.format(o)
        elif (t == float):
            stringToBePrinted += '{} is not a float '.format(o)
        elif (t == str):
            stringToBePrinted += '{} is not a string '.format(o)
        elif (t == list):
            stringToBePrinted += '{} is not a list '.format(o)
        elif (t == bool):
            stringToBePrinted += '{} is not a boolean '.format(o)
        else:
            print ('assertHelper for {} is not realized'.format(t))
            exit(1)

    assert boolToBeAsserted, stringToBePrinted

In [4]:
# get tensorflow trainer
def getTrainer(trainer, arg_dict = {'learning_rate': 0.1,
                                    'epsilon': 0.1,
                                    'rho': 0,
                                    'global_step': 0,
                                    'initial_gradient_squared_accumulator_value': 0.1}):
    return {
        # TODO: specify more
        #'gradientDescentOptimizer': tf.train.GradientDescentOptimizer(learning_rate = arg_dict['learning_rate']),
        #'adadeltaOptimizer': tf.train.AdadeltaOptimizer(epsilon = arg_dict['epsilon'], 
        #                                                learning_rate = arg_dict['learning_rate']),
        #'adagradOptimizer': tf.train.AdagradOptimizer(learning_rate = arg_dict['learning_rate'],
        #                                              global_step = arg_dict['global_step']),
        #'adagradDAOptimizer': tf.train.AdagradDAOptimizer(learning_rate = arg_dict['learning_rate']),
        #'momentumOptimizer': tf.train.MomentumOptimizer,
        'adamOptimizer': 
                                               )
        #'ftrlOptimizer': tf.train.FtrlOptimizer,
        #'proximalGradientDescentOptimizer': tf.train.ProximalGradientDescentOptimizer,
        #'proximalAdagradOptimizer': tf.train.ProximalAdagradOptimizer,
        #'rmsPropOptimizer': tf.train.RMSPropOptimizer
        }.get(trainer, None)

In [5]:
# helper function to get activation functions
def getActivationFunc(activation):
    return {
        'relu': tf.nn.relu,
        'relu6': tf.nn.relu6,
        'crelu': tf.nn.crelu,
        'elu': tf.nn.elu,
        'softplus': tf.nn.softplus,
        'softsign': tf.nn.softsign,
        'dropout': tf.nn.dropout,
        'bias_add': tf.nn.bias_add,
        'sigmoid': tf.nn.sigmoid,
        'tanh': tf.nn.tanh
    }.get(activation, None)

In [6]:
##########################################################################################################################

In [7]:
# define RNN cell
class RNNCell(object):
    # RNN cell needs ...
    # cell_type: BasicRNN, RNN, BasicLSTM, LSTM, GRU, GRUBlock, etc.
    # input_size: size of input vector
    # state_size: size of hidden states
    # output_size: size of output vector    
    # factory function to define rnn cell
    # arg_dict should be compatible with cell type
    def makeRNNCell(cell_type, 
                    state_size,
                    is_training,
                    state_is_tuple = True, 
                    activation = 'tanh', 
                    keep_in = 1, 
                    keep_states = 1, 
                    keep_out = 1):
        
        arg_dict = {'num_units': state_size,
                     'state_is_tuple': state_is_tuple,
                     'activation': activation}
        
        activation_func = getActivationFunc(arg_dict['activation'])
        if (activation_func == None):
            print('{} activation is not realized'.format(arg_dict['activation']))
            exit(1)
        
        if (cell_type == 'BasicLSTM'):
            cell = tf.contrib.rnn.BasicLSTMCell(num_units = arg_dict['num_units'], 
                                                activation = activation_func)
        elif (cell_type == 'LSTM'):
            cell = tf.contrib.rnn.LSTMCell(num_units = arg_dict['num_units'], 
                                           state_is_tuple = arg_dict['state_is_tuple'],
                                           activation = activation_func,
                                           reuse = tf.get_variable_scope().reuse)
        elif (cell_type == 'GRU'):
            cell = tf.contrib.rnn.GRUCell(num_units = arg_dict['num_units'],
                                          activation = activation_func)
        else:
            print('{} cell type is not realized'.format(cell_type))
            exit(1)
            
        if (is_training and keep_in < 1 or keep_states < 1 or keep_out < 1):
            cell = tf.contrib.rnn.DropoutWrapper(cell, 
                                                 input_keep_prob = keep_in,
                                                 state_keep_prob = keep_states,
                                                 output_keep_prob = keep_out)
        
        return cell

In [8]:
# define RNN class
class RNN(object):
    # RNN needs ...
    # name: name of this RNN graph
    # num_features: size of RNN input vector; int
    # num_classes: size of RNN output vector; int
    # cell_type: RNN cell type; str or str list
    # state_size: size of hidden states; int or int list
    # num_steps: maximum of number of time steps
    # batch_size: size of mini batch
    # keep_in: keep inputs probability: float list of length same as state_size
    # keep_states: keep states probability: float list of length same as state_size
    # keep_out: keep outputs probability: float list of length same as state_size
    # activation_str: activation function to be used; str or str list of length same as state_size
    # trainer_str: optimizer (trainer) to be used; str
    
    def __init__(self, num_features, num_classes, cell_type, state_size, num_steps, batch_size, is_training,
                 activation_str = 'tanh', keep_in = 1., keep_states = 1., keep_out = 1., trainer_str = 'adamOptimizer'):
        assertHelper(num_features, [int])
        assertHelper(num_classes, [int])
        assertHelper(cell_type, [str, list])
        assertHelper(state_size, [list])
        assertHelper(num_steps, [int])
        assertHelper(batch_size, [int])
        assertHelper(is_training, [bool])
        assertHelper(activation_str, [str, list])
        assertHelper(keep_in, [float, list])
        assertHelper(keep_states, [float, list])
        assertHelper(keep_out, [float, list])
        assertHelper(trainer_str, [str])
        
        # additionally assert lenghts of list inputs
        for i in [cell_type, activation_str, keep_in, keep_states, keep_out]:
            if (isinstance(i, list)):
                assert i == len(state_size), '{} does not have the same length as state_size'.format(i)
        
        self.num_features = num_features
        self.num_classes = num_classes
        self.state_size = state_size
        self.num_steps = num_steps
        self.batch_size = batch_size
        
        if (isinstance(activation_str, str)):
            activation_str = [activation_str] * len(state_size)
        
        if (isinstance(cell_type, str)):
            cell_type = [cell_type] * len(state_size)
            
        if (isinstance(keep_in, float)):
            keep_in = [keep_in] * len(state_size)
        
        if (isinstance(keep_states, float)):
            keep_states = [keep_states] * len(state_size)
            
        if (isinstance(keep_out, float)):
            keep_out = [keep_out] * len(state_size)
        
        # placeholder for inputs
        # inputs: batch_size x num_steps x num_features
        self.inputs = inputs = tf.placeholder(dtype = tf.float32, shape = [batch_size, num_steps, num_features])
        
        # placeholder for different time steps for each sequence
        self.seq_len = seq_len = tf.placeholder(dtype = tf.int32, shape = [batch_size])
        
        # placeholder for target_id and target_correctness
        # target_id: batch_size x num_steps
        # target_correctness: batch_size
        self.target_id = target_id = tf.placeholder(dtype = tf.int32, shape = [None])
        self.target_correctness = target_correctness = tf.placeholder(dtype = tf.float32, shape = [None])
        
        # construct rnn cells
        cells = [RNNCell.makeRNNCell(cell_type[layer_index], 
                 state_size[layer_index],
                 is_training,
                 activation = activation_str[layer_index],
                 keep_in = keep_in[layer_index],
                 keep_states = keep_states[layer_index],
                 keep_out = keep_out[layer_index]) for layer_index in range(len(state_size))]
        
        self.cells = cells = tf.contrib.rnn.MultiRNNCell(cells = cells,
                                                         state_is_tuple = True)
        
        # run dynamic rnn
        self.outputs, self.states = outputs, states = tf.nn.dynamic_rnn(cell = cells, 
                                                   inputs = inputs,
                                                   sequence_length = seq_len,
                                                   dtype = tf.float32)
        
        # outputs: batch_size x num_steps x state_size[-1]
        # split outputs into arrays
        # outputs: num_steps x (batch_size x state_size[-1])
        outputs = [tf.squeeze(output, axis = 1) for output in tf.split(value = outputs, 
                                                                       num_or_size_splits = num_steps, 
                                                                       axis = 1)]
        
        # weight and bias
        # weight: state_size[-1] x num_classes
        # bias: num_classes
        self.weight = tf.get_variable('weights', [self.state_size[-1], num_classes])
        self.bias = tf.get_variable('bias', [num_classes])
        
        # produce logit outputs
        # logits: num_steps x (batch_size x num_classes)
        print('num_steps: ', num_steps)
        print('len(output): ', len(outputs))
        print('weight: ', self.weight)
        print('outputs[0]: ', outputs[0])
        self.logits = [tf.matmul(outputs[i], self.weight) + self.bias for i in range(num_steps)]
        
        # stack logits: num_steps x batch_size x num_classes
        self.logits = tf.stack(self.logits)
        print('logits: ', self.logits)
        
        # transpose logits: batch_size x num_steps x num_classes
        self.logits = tf.transpose(self.logits, [1, 0, 2])
        
        # reshape logits: (batch_size x num_steps x num_classes)
        self.logits = tf.reshape(self.logits, [-1])
        
        # need to do ...
        # result = tf.gather(params = self.logits, indices = target_id)
        # result[batch_i x num_steps + step_i] 
        # = logits[batch_i x num_steps x num_classes + step_i x num_classes + class_i]
        # where ...
        # target_id[batch_i x num_steps + step_i] = batch_i x num_steps x num_classes + step_i x num_classes + class_i
        selected_logits = tf.gather(params = self.logits, indices = target_id)
        print('logits selected: ', selected_logits)
        
        # produce prediction outputs
        self.pred = tf.nn.sigmoid(selected_logits)
        print('prediction: ', self.pred)
        print('pred[0]: ', self.pred[0])
        
        print('target_correctness: ', target_correctness)
        print('target_correctness[0]: ', target_correctness[0])
        
        # produce loss functions 
        self.loss = tf.nn.sigmoid_cross_entropy_with_logits(logits = selected_logits, 
                                                            labels = target_correctness)
        print('loss: ', self.loss)
        print('loss[0]: ', self.loss[0])
        
        self.cost = self.loss = tf.reduce_sum(self.loss, [0])
        print('cost: ', self.cost)

In [9]:
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]

t = tf.concat(t1, 0)
a = [np.zeros(shape = (3, 4)), np.zeros(shape = (3, 4))]
t3 = tf.concat(a, 1)
with tf.Session() as sess:
    print(sess.run([t]))
    print('hi')
    print(t.get_shape())
    print(sess.run(t3))
    print(t3.get_shape())


[array([1, 2, 3, 4, 5, 6], dtype=int32)]
hi
(6,)
[[ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]]
(3, 8)

In [10]:
##########################################################################################################################

In [11]:
class AssistmentsRun(object):
    def __init__(self,
                 version):
        
        assertHelper(version, [str])
        self.version = version
        
    def setModel(self, model, is_training):
        
        if (is_training):
            self.model = model
        else:
            self.test_model = model
    
    def setDataPath(self, data_path, is_test):
        if (not(is_test)):
            self.train_data_path = data_path
        else:
            self.test_data_path = data_path
    
    def setBatchSize(self, batch_size):
        self.batch_size = batch_size
        
    def setResultFilePath(self):
        self.result_file_path = 'run_logs_{}'.format(str(time.time()))
        
    def setModelName(self, model_name):
        self.model_name = model_name
    
    def runEpoch(self, session, students, is_training, verbose = False):
        
        if (is_training):
            if (self.model == None):
                print('model not yet set')
                exit(1)
            else:
                model = self.model
                op = self.train_op
        else:
            if (self.test_model == None):
                print('test model not yet set')
                exit(1)
            else:
                model = self.test_model
                op = tf.no_op()
        
        start_time = time.time()
        tmpsum = 0
        if (self.version == '2009'):
            batch_start_i = 0
            pred_labels = []
            actual_labels = []

            while (batch_start_i + model.batch_size < len(students)):
                input_x = np.zeros((model.batch_size, model.num_steps, model.num_features))
                target_id = []
                target_correctness = []
                seq_len = np.empty(dtype = np.int32, shape = [model.batch_size])

                for student_i in range(model.batch_size):
                    student = students[batch_start_i + student_i]
                    seq_len[student_i] = problem_num = int(student[0][0]) - 1
                    skill_ids = student[1]
                    correctness = student[2]
                    for skill_i in range(problem_num):
                        skill_id = int(skill_ids[skill_i])
                        is_correct = int(correctness[skill_i])
                        # batch_i x num_steps x num_classes + step_i x num_classes + class_i
                        target_id.append(student_i * model.num_steps * model.num_classes 
                                         + skill_i * model.num_classes + int(skill_ids[skill_i + 1]))
                        target_correctness.append(int(correctness[skill_i + 1]))
                        
                        if (is_correct):
                            input_x[student_i, skill_i, skill_id] = 1
                        else:
                            input_x[student_i, skill_i, skill_id + model.num_features // 2] = 1
                        
                        actual_labels.append(int(correctness[skill_i + 1])) 

                batch_start_i = batch_start_i + model.batch_size
                pred, _ = session.run([model.pred, op], feed_dict = {
                    model.inputs: input_x, model.target_id: target_id,
                    model.target_correctness: target_correctness, model.seq_len: seq_len
                })
                
                # for debugging
                tmpsum += np.sum(seq_len)
                
                for p in pred:
                    pred_labels.append(p)
            
            # print pred labels
            print('len(actual_labels): ', len(actual_labels))
            print('len(pred_lables): ', len(pred_labels))
            print('sum: ', tmpsum)
            rmse = sqrt(mean_squared_error(actual_labels, pred_labels))
            fpr, tpr, thresholds = metrics.roc_curve(actual_labels, pred_labels, pos_label = 1)
            auc = metrics.auc(fpr, tpr)
            
            # calculate r2
            r2 = r2_score(actual_labels, pred_labels)
            
            return rmse, auc, r2
    
    def read_data_from_csv_file(self, fileName):
        inputs = []
        targets = []
        rows = []
        max_skill_num = 0
        max_num_problems = 0
        with open(fileName, "r") as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            for row in reader:
                rows.append(row)
        index = 0
        i = 0
        print ("the number of rows is " + str(len(rows)))
        tuple_rows = []
        #turn list to tuple
        while(index < len(rows)-1):
            problems_num = int(rows[index][0])
            tmp_max_skill = max(map(int, rows[index+1]))
            if(tmp_max_skill > max_skill_num):
                max_skill_num = tmp_max_skill
            if(problems_num <= 2):
                index += 3
            else:
                if problems_num > max_num_problems:
                    max_num_problems = problems_num
                tup = (rows[index], rows[index+1], rows[index+2])
                tuple_rows.append(tup)
                index += 3
        #shuffle the tuple

        random.shuffle(tuple_rows)
        print ("The number of students is " + str(len(tuple_rows)))
        print ("Finish reading data")
        return tuple_rows, max_num_problems, max_skill_num+1
    
    def run(self):
        train_data_path = self.train_data_path
        test_data_path = self.test_data_path
        
        train_students, train_num_steps, train_num_problems = self.read_data_from_csv_file(train_data_path)
        test_students, test_num_steps, test_num_problems = self.read_data_from_csv_file(test_data_path)
        
        self.setBatchSize(100)
        train_batch_size = test_batch_size = self.batch_size
        
        cell_type = 'LSTM'
        
        self.setModelName('DKT')
        
        self.setResultFilePath()
        result_file_path = self.result_file_path
        
        init_scale = 0.05
        
        num_epochs = 150
        
        with tf.Graph().as_default():
            session_conf = tf.ConfigProto(allow_soft_placement = True,
                                          log_device_placement = False)
            session_conf.gpu_options.allow_growth = True
            
            global_step = tf.Variable(0, name = 'global_step', trainable = False)
            
            starter_learning_rate = 0.1
            learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step, 3000, 0.96, staircase=True)

            optimizer = getTrainer('adamOptimizer', {'learning_rate': learning_rate, 'epsilon': 0.1})
            
            with tf.Session(config = session_conf) as sess:
                initializer = tf.random_uniform_initializer(-init_scale, init_scale)
                
                print('train model being set')
                # training model
                with tf.variable_scope('model', reuse = None, initializer = initializer):
                    self.setModel(RNN(train_num_problems * 2, train_num_problems, cell_type, [200], train_num_steps - 1,
                            train_batch_size, is_training = True, keep_out = 0.6), is_training = True)
                    m = self.model
                
                print('test model being set')
                # testing model
                with tf.variable_scope('model', reuse = True, initializer = initializer):
                    self.setModel(RNN(test_num_problems * 2, test_num_problems, cell_type, [200], test_num_steps - 1,
                                test_batch_size, is_training = False, keep_out = 0.6), is_training = False)
                    mtest = self.test_model
                
                # cap gradient
                max_grad_norm = 20.0
                grads_and_vars = optimizer.compute_gradients(m.cost)
                grads_and_vars = [(tf.clip_by_norm(g, max_grad_norm), v) for g, v in grads_and_vars if g is not None]

                # optimizer function
                self.train_op = optimizer.apply_gradients(grads_and_vars, name = 'train_op', global_step = global_step)
                
                
                print('initialize global variables')
                sess.run(tf.global_variables_initializer())
                
                saver = tf.train.Saver(tf.global_variables())
                
                for i in range(num_epochs):
                    rmse, auc, r2 = self.runEpoch(sess, train_students, True, verbose = True)
                    print("Epoch: %d Train Metrics:\n rmse: %.3f \t auc: %.3f \t r2: %.3f \n" % (i + 1, rmse, auc, r2))
                    
                    if ((i + 1) % 5 == 0):
                        print('Save variables to disk')
                        save_path = saver.save(sess, self.model_name)
                        print('*' * 10)
                        print('Start to test model ....')
                        rmse, auc, r2 = self.runEpoch(sess, test_students, False, verbose = False)
                        print("Epoch: %d Test Metrics:\n rmse: %.3f \t auc: %.3f \t r2: %.3f" % (i+1, rmse, auc, r2))
                        with open(result_file_path, "a+") as f:
                            f.write("Epoch: %d Test Metrics:\n rmse: %.3f \t auc: %.3f \t r2: %.3f" % \
                                    ((i+1)/2, rmse, auc, r2))
                            f.write("\n")

                            print("*"*10)

In [12]:
a = [1, 2, 3]
a.append(1)
print(a)


[1, 2, 3, 1]

In [13]:
with tf.device('/gpu:0'):
    a_run = AssistmentsRun('2009')
    a_run.setDataPath('data/0910_b_train.csv', False)
    a_run.setDataPath('data/0910_b_test.csv', True)
    a_run.run()


the number of rows is 10116
The number of students is 3134
Finish reading data
the number of rows is 2532
The number of students is 786
Finish reading data
train model being set
num_steps:  1218
len(output):  1218
weight:  <tf.Variable 'model/weights:0' shape=(200, 124) dtype=float32_ref>
outputs[0]:  Tensor("model/Squeeze:0", shape=(100, 200), dtype=float32)
logits:  Tensor("model/stack:0", shape=(1218, 100, 124), dtype=float32)
logits selected:  Tensor("model/Gather:0", shape=(?,), dtype=float32)
prediction:  Tensor("model/Sigmoid:0", shape=(?,), dtype=float32)
pred[0]:  Tensor("model/strided_slice:0", shape=(), dtype=float32)
target_correctness:  Tensor("model/Placeholder_3:0", shape=(?,), dtype=float32)
target_correctness[0]:  Tensor("model/strided_slice_1:0", shape=(), dtype=float32)
loss:  Tensor("model/logistic_loss:0", shape=(?,), dtype=float32)
loss[0]:  Tensor("model/strided_slice_2:0", shape=(), dtype=float32)
cost:  Tensor("model/Sum:0", shape=(), dtype=float32)
test model being set
num_steps:  1061
len(output):  1061
weight:  <tf.Variable 'model/weights:0' shape=(200, 124) dtype=float32_ref>
outputs[0]:  Tensor("model_1/Squeeze:0", shape=(100, 200), dtype=float32)
logits:  Tensor("model_1/stack:0", shape=(1061, 100, 124), dtype=float32)
logits selected:  Tensor("model_1/Gather:0", shape=(?,), dtype=float32)
prediction:  Tensor("model_1/Sigmoid:0", shape=(?,), dtype=float32)
pred[0]:  Tensor("model_1/strided_slice:0", shape=(), dtype=float32)
target_correctness:  Tensor("model_1/Placeholder_3:0", shape=(?,), dtype=float32)
target_correctness[0]:  Tensor("model_1/strided_slice_1:0", shape=(), dtype=float32)
loss:  Tensor("model_1/logistic_loss:0", shape=(?,), dtype=float32)
loss[0]:  Tensor("model_1/strided_slice_2:0", shape=(), dtype=float32)
cost:  Tensor("model_1/Sum:0", shape=(), dtype=float32)
initialize global variables
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 1 Train Metrics:
 rmse: 0.466 	 auc: 0.620 	 r2: 0.039 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 2 Train Metrics:
 rmse: 0.434 	 auc: 0.739 	 r2: 0.165 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 3 Train Metrics:
 rmse: 0.412 	 auc: 0.785 	 r2: 0.247 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 4 Train Metrics:
 rmse: 0.407 	 auc: 0.796 	 r2: 0.267 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 5 Train Metrics:
 rmse: 0.402 	 auc: 0.805 	 r2: 0.284 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 5 Test Metrics:
 rmse: 0.398 	 auc: 0.810 	 r2: 0.297
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 6 Train Metrics:
 rmse: 0.400 	 auc: 0.811 	 r2: 0.293 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 7 Train Metrics:
 rmse: 0.397 	 auc: 0.815 	 r2: 0.301 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 8 Train Metrics:
 rmse: 0.395 	 auc: 0.819 	 r2: 0.309 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 9 Train Metrics:
 rmse: 0.393 	 auc: 0.823 	 r2: 0.315 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 10 Train Metrics:
 rmse: 0.392 	 auc: 0.826 	 r2: 0.321 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 10 Test Metrics:
 rmse: 0.396 	 auc: 0.815 	 r2: 0.303
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 11 Train Metrics:
 rmse: 0.389 	 auc: 0.831 	 r2: 0.329 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 12 Train Metrics:
 rmse: 0.388 	 auc: 0.834 	 r2: 0.335 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 13 Train Metrics:
 rmse: 0.386 	 auc: 0.837 	 r2: 0.342 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 14 Train Metrics:
 rmse: 0.384 	 auc: 0.842 	 r2: 0.349 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 15 Train Metrics:
 rmse: 0.381 	 auc: 0.847 	 r2: 0.359 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 15 Test Metrics:
 rmse: 0.402 	 auc: 0.805 	 r2: 0.282
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 16 Train Metrics:
 rmse: 0.379 	 auc: 0.851 	 r2: 0.366 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 17 Train Metrics:
 rmse: 0.377 	 auc: 0.854 	 r2: 0.371 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 18 Train Metrics:
 rmse: 0.375 	 auc: 0.856 	 r2: 0.377 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 19 Train Metrics:
 rmse: 0.373 	 auc: 0.859 	 r2: 0.384 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 20 Train Metrics:
 rmse: 0.371 	 auc: 0.863 	 r2: 0.391 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 20 Test Metrics:
 rmse: 0.410 	 auc: 0.798 	 r2: 0.256
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 21 Train Metrics:
 rmse: 0.369 	 auc: 0.866 	 r2: 0.396 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 22 Train Metrics:
 rmse: 0.367 	 auc: 0.868 	 r2: 0.402 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 23 Train Metrics:
 rmse: 0.365 	 auc: 0.872 	 r2: 0.409 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 24 Train Metrics:
 rmse: 0.363 	 auc: 0.875 	 r2: 0.417 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 25 Train Metrics:
 rmse: 0.361 	 auc: 0.878 	 r2: 0.422 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 25 Test Metrics:
 rmse: 0.416 	 auc: 0.792 	 r2: 0.231
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 26 Train Metrics:
 rmse: 0.360 	 auc: 0.880 	 r2: 0.426 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 27 Train Metrics:
 rmse: 0.358 	 auc: 0.882 	 r2: 0.432 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 28 Train Metrics:
 rmse: 0.357 	 auc: 0.883 	 r2: 0.436 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 29 Train Metrics:
 rmse: 0.356 	 auc: 0.886 	 r2: 0.441 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 30 Train Metrics:
 rmse: 0.355 	 auc: 0.887 	 r2: 0.443 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 30 Test Metrics:
 rmse: 0.418 	 auc: 0.789 	 r2: 0.226
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 31 Train Metrics:
 rmse: 0.353 	 auc: 0.889 	 r2: 0.448 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 32 Train Metrics:
 rmse: 0.353 	 auc: 0.890 	 r2: 0.450 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 33 Train Metrics:
 rmse: 0.350 	 auc: 0.893 	 r2: 0.458 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 34 Train Metrics:
 rmse: 0.348 	 auc: 0.895 	 r2: 0.464 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 35 Train Metrics:
 rmse: 0.349 	 auc: 0.895 	 r2: 0.462 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 35 Test Metrics:
 rmse: 0.423 	 auc: 0.785 	 r2: 0.207
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 36 Train Metrics:
 rmse: 0.348 	 auc: 0.896 	 r2: 0.465 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 37 Train Metrics:
 rmse: 0.346 	 auc: 0.897 	 r2: 0.469 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 38 Train Metrics:
 rmse: 0.346 	 auc: 0.898 	 r2: 0.471 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 39 Train Metrics:
 rmse: 0.345 	 auc: 0.899 	 r2: 0.473 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 40 Train Metrics:
 rmse: 0.344 	 auc: 0.900 	 r2: 0.476 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 40 Test Metrics:
 rmse: 0.427 	 auc: 0.780 	 r2: 0.191
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 41 Train Metrics:
 rmse: 0.342 	 auc: 0.902 	 r2: 0.481 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 42 Train Metrics:
 rmse: 0.341 	 auc: 0.904 	 r2: 0.485 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 43 Train Metrics:
 rmse: 0.340 	 auc: 0.905 	 r2: 0.488 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 44 Train Metrics:
 rmse: 0.338 	 auc: 0.906 	 r2: 0.494 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 45 Train Metrics:
 rmse: 0.336 	 auc: 0.909 	 r2: 0.499 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 45 Test Metrics:
 rmse: 0.430 	 auc: 0.781 	 r2: 0.179
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 46 Train Metrics:
 rmse: 0.336 	 auc: 0.910 	 r2: 0.502 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 47 Train Metrics:
 rmse: 0.337 	 auc: 0.908 	 r2: 0.498 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 48 Train Metrics:
 rmse: 0.336 	 auc: 0.910 	 r2: 0.502 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 49 Train Metrics:
 rmse: 0.334 	 auc: 0.911 	 r2: 0.507 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 50 Train Metrics:
 rmse: 0.334 	 auc: 0.912 	 r2: 0.507 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 50 Test Metrics:
 rmse: 0.431 	 auc: 0.776 	 r2: 0.175
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 51 Train Metrics:
 rmse: 0.334 	 auc: 0.911 	 r2: 0.506 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 52 Train Metrics:
 rmse: 0.332 	 auc: 0.913 	 r2: 0.511 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 53 Train Metrics:
 rmse: 0.331 	 auc: 0.915 	 r2: 0.516 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 54 Train Metrics:
 rmse: 0.328 	 auc: 0.917 	 r2: 0.523 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 55 Train Metrics:
 rmse: 0.329 	 auc: 0.916 	 r2: 0.520 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 55 Test Metrics:
 rmse: 0.433 	 auc: 0.779 	 r2: 0.168
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 56 Train Metrics:
 rmse: 0.329 	 auc: 0.917 	 r2: 0.522 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 57 Train Metrics:
 rmse: 0.331 	 auc: 0.915 	 r2: 0.516 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 58 Train Metrics:
 rmse: 0.338 	 auc: 0.907 	 r2: 0.494 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 59 Train Metrics:
 rmse: 0.333 	 auc: 0.912 	 r2: 0.509 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 60 Train Metrics:
 rmse: 0.330 	 auc: 0.916 	 r2: 0.519 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 60 Test Metrics:
 rmse: 0.433 	 auc: 0.778 	 r2: 0.167
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 61 Train Metrics:
 rmse: 0.329 	 auc: 0.916 	 r2: 0.520 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 62 Train Metrics:
 rmse: 0.328 	 auc: 0.917 	 r2: 0.524 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 63 Train Metrics:
 rmse: 0.325 	 auc: 0.920 	 r2: 0.532 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 64 Train Metrics:
 rmse: 0.325 	 auc: 0.921 	 r2: 0.534 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 65 Train Metrics:
 rmse: 0.325 	 auc: 0.921 	 r2: 0.533 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 65 Test Metrics:
 rmse: 0.434 	 auc: 0.778 	 r2: 0.166
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 66 Train Metrics:
 rmse: 0.323 	 auc: 0.923 	 r2: 0.539 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 67 Train Metrics:
 rmse: 0.322 	 auc: 0.924 	 r2: 0.542 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 68 Train Metrics:
 rmse: 0.321 	 auc: 0.924 	 r2: 0.544 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 69 Train Metrics:
 rmse: 0.322 	 auc: 0.923 	 r2: 0.541 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 70 Train Metrics:
 rmse: 0.320 	 auc: 0.925 	 r2: 0.547 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 70 Test Metrics:
 rmse: 0.439 	 auc: 0.773 	 r2: 0.147
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 71 Train Metrics:
 rmse: 0.321 	 auc: 0.924 	 r2: 0.544 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 72 Train Metrics:
 rmse: 0.322 	 auc: 0.923 	 r2: 0.542 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 73 Train Metrics:
 rmse: 0.320 	 auc: 0.925 	 r2: 0.546 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 74 Train Metrics:
 rmse: 0.320 	 auc: 0.925 	 r2: 0.546 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 75 Train Metrics:
 rmse: 0.319 	 auc: 0.926 	 r2: 0.550 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 75 Test Metrics:
 rmse: 0.436 	 auc: 0.777 	 r2: 0.155
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 76 Train Metrics:
 rmse: 0.318 	 auc: 0.927 	 r2: 0.552 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 77 Train Metrics:
 rmse: 0.317 	 auc: 0.928 	 r2: 0.555 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 78 Train Metrics:
 rmse: 0.317 	 auc: 0.927 	 r2: 0.554 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 79 Train Metrics:
 rmse: 0.317 	 auc: 0.928 	 r2: 0.555 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 80 Train Metrics:
 rmse: 0.315 	 auc: 0.930 	 r2: 0.561 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 80 Test Metrics:
 rmse: 0.441 	 auc: 0.773 	 r2: 0.138
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 81 Train Metrics:
 rmse: 0.313 	 auc: 0.931 	 r2: 0.565 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 82 Train Metrics:
 rmse: 0.312 	 auc: 0.933 	 r2: 0.570 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 83 Train Metrics:
 rmse: 0.311 	 auc: 0.933 	 r2: 0.571 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 84 Train Metrics:
 rmse: 0.313 	 auc: 0.932 	 r2: 0.568 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 85 Train Metrics:
 rmse: 0.313 	 auc: 0.932 	 r2: 0.567 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 85 Test Metrics:
 rmse: 0.443 	 auc: 0.773 	 r2: 0.129
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 86 Train Metrics:
 rmse: 0.311 	 auc: 0.933 	 r2: 0.573 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 87 Train Metrics:
 rmse: 0.311 	 auc: 0.933 	 r2: 0.572 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 88 Train Metrics:
 rmse: 0.310 	 auc: 0.934 	 r2: 0.574 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 89 Train Metrics:
 rmse: 0.309 	 auc: 0.935 	 r2: 0.577 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 90 Train Metrics:
 rmse: 0.309 	 auc: 0.935 	 r2: 0.578 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 90 Test Metrics:
 rmse: 0.443 	 auc: 0.772 	 r2: 0.130
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 91 Train Metrics:
 rmse: 0.310 	 auc: 0.934 	 r2: 0.576 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 92 Train Metrics:
 rmse: 0.312 	 auc: 0.932 	 r2: 0.569 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 93 Train Metrics:
 rmse: 0.311 	 auc: 0.933 	 r2: 0.572 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 94 Train Metrics:
 rmse: 0.311 	 auc: 0.934 	 r2: 0.573 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 95 Train Metrics:
 rmse: 0.309 	 auc: 0.935 	 r2: 0.576 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 95 Test Metrics:
 rmse: 0.441 	 auc: 0.773 	 r2: 0.136
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 96 Train Metrics:
 rmse: 0.309 	 auc: 0.935 	 r2: 0.576 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 97 Train Metrics:
 rmse: 0.308 	 auc: 0.936 	 r2: 0.579 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 98 Train Metrics:
 rmse: 0.305 	 auc: 0.938 	 r2: 0.588 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 99 Train Metrics:
 rmse: 0.304 	 auc: 0.939 	 r2: 0.590 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 100 Train Metrics:
 rmse: 0.304 	 auc: 0.939 	 r2: 0.591 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 100 Test Metrics:
 rmse: 0.445 	 auc: 0.772 	 r2: 0.120
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 101 Train Metrics:
 rmse: 0.302 	 auc: 0.940 	 r2: 0.596 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 102 Train Metrics:
 rmse: 0.303 	 auc: 0.940 	 r2: 0.594 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 103 Train Metrics:
 rmse: 0.299 	 auc: 0.942 	 r2: 0.603 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 104 Train Metrics:
 rmse: 0.300 	 auc: 0.942 	 r2: 0.601 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 105 Train Metrics:
 rmse: 0.300 	 auc: 0.942 	 r2: 0.601 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 105 Test Metrics:
 rmse: 0.444 	 auc: 0.775 	 r2: 0.127
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 106 Train Metrics:
 rmse: 0.300 	 auc: 0.942 	 r2: 0.603 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 107 Train Metrics:
 rmse: 0.298 	 auc: 0.943 	 r2: 0.606 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 108 Train Metrics:
 rmse: 0.299 	 auc: 0.943 	 r2: 0.606 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 109 Train Metrics:
 rmse: 0.298 	 auc: 0.943 	 r2: 0.606 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 110 Train Metrics:
 rmse: 0.297 	 auc: 0.944 	 r2: 0.609 

Save variables to disk
**********
Start to test model ....
len(actual_labels):  58674
len(pred_lables):  58674
sum:  58674
Epoch: 110 Test Metrics:
 rmse: 0.448 	 auc: 0.769 	 r2: 0.109
**********
num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 111 Train Metrics:
 rmse: 0.299 	 auc: 0.942 	 r2: 0.603 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 112 Train Metrics:
 rmse: 0.303 	 auc: 0.940 	 r2: 0.594 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 113 Train Metrics:
 rmse: 0.305 	 auc: 0.939 	 r2: 0.589 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
Epoch: 114 Train Metrics:
 rmse: 0.309 	 auc: 0.935 	 r2: 0.577 

num_epochs:  150
len(actual_labels):  254280
len(pred_lables):  254280
sum:  254280
------------------------------------------------------
ValueError           Traceback (most recent call last)
<ipython-input-13-805d32a6899f> in <module>()
      3     a_run.setDataPath('data/0910_b_train.csv', False)
      4     a_run.setDataPath('data/0910_b_test.csv', True)
----> 5     a_run.run()

<ipython-input-11-c109fcf9cc30> in run(self)
    204                 for i in range(num_epochs):
    205                     print('num_epochs: ', num_epochs)
--> 206                     rmse, auc, r2 = self.runEpoch(sess, train_students, True, verbose = True)
    207                     print("Epoch: %d Train Metrics:\n rmse: %.3f \t auc: %.3f \t r2: %.3f \n" % (i + 1, rmse, auc, r2))
    208 

<ipython-input-11-c109fcf9cc30> in runEpoch(self, session, students, is_training, verbose)
     94             print('len(pred_lables): ', len(pred_labels))
     95             print('sum: ', tmpsum)
---> 96             rmse = sqrt(mean_squared_error(actual_labels, pred_labels))
     97             fpr, tpr, thresholds = metrics.roc_curve(actual_labels, pred_labels, pos_label = 1)
     98             auc = metrics.auc(fpr, tpr)

~/anaconda3/envs/rnn_practice_py3/lib/python3.6/site-packages/sklearn/metrics/regression.py in mean_squared_error(y_true, y_pred, sample_weight, multioutput)
    229     """
    230     y_type, y_true, y_pred, multioutput = _check_reg_targets(
--> 231         y_true, y_pred, multioutput)
    232     output_errors = np.average((y_true - y_pred) ** 2, axis=0,
    233                                weights=sample_weight)

~/anaconda3/envs/rnn_practice_py3/lib/python3.6/site-packages/sklearn/metrics/regression.py in _check_reg_targets(y_true, y_pred, multioutput)
     74     check_consistent_length(y_true, y_pred)
     75     y_true = check_array(y_true, ensure_2d=False)
---> 76     y_pred = check_array(y_pred, ensure_2d=False)
     77 
     78     if y_true.ndim == 1:

~/anaconda3/envs/rnn_practice_py3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    405                              % (array.ndim, estimator_name))
    406         if force_all_finite:
--> 407             _assert_all_finite(array)
    408 
    409     shape_repr = _shape_repr(array.shape)

~/anaconda3/envs/rnn_practice_py3/lib/python3.6/site-packages/sklearn/utils/validation.py in _assert_all_finite(X)
     56             and not np.isfinite(X).all()):
     57         raise ValueError("Input contains NaN, infinity"
---> 58                          " or a value too large for %r." % X.dtype)
     59 
     60 

ValueError: Input contains NaN, infinity or a value too large for dtype('float32').